From aa30917e964153a7c7d42f0b19d5d1ce4b65927e Mon Sep 17 00:00:00 2001 From: Tristan Menzel Date: Fri, 31 Jan 2025 15:44:12 -0800 Subject: [PATCH 1/3] fix: Add missing itxn fields and fix compatible type resolution --- package-lock.json | 2 +- packages/algo-ts/package.json | 2 +- packages/algo-ts/src/itxn.ts | 108 +- src/awst/intrinsic-factory.ts | 37 +- src/awst/json-serialize-awst.ts | 6 + src/awst_build/eb/arc4/arrays.ts | 14 +- src/awst_build/eb/index.ts | 21 + .../big-int-literal-expression-builder.ts | 11 +- .../eb/string-expression-builder.ts | 6 +- .../transactions/inner-transaction-params.ts | 12 +- src/awst_build/eb/transactions/txn-fields.ts | 31 +- .../eb/util/resolve-compat-builder.ts | 46 + src/awst_build/ptypes/index.ts | 1 + tests/approvals/itxn.algo.ts | 148 +- .../o1/itxn/ItxnDemoContract.approval.teal | 1378 ++- .../out/o1/itxn/ItxnDemoContract.arc32.json | 94 + .../out/o1/itxn/ItxnDemoContract.arc56.json | 261 + .../ItxnDemoContract.approval.0.ssa.ir | 2641 ++++- tests/approvals/out/o1/itxn/itxn.awst | 104 +- tests/approvals/out/o1/itxn/itxn.awst.json | 9161 +++++++++++++++-- .../o2/itxn/ItxnDemoContract.approval.teal | 1224 ++- .../out/o2/itxn/ItxnDemoContract.arc32.json | 94 + .../out/o2/itxn/ItxnDemoContract.arc56.json | 261 + .../ItxnDemoContract.approval.0.ssa.ir | 2641 ++++- tests/approvals/out/o2/itxn/itxn.awst | 104 +- tests/approvals/out/o2/itxn/itxn.awst.json | 9161 +++++++++++++++-- .../itxn/ItxnDemoContract.approval.teal | 1406 ++- .../itxn/ItxnDemoContract.arc32.json | 94 + .../itxn/ItxnDemoContract.arc56.json | 261 + .../ItxnDemoContract.approval.0.ssa.ir | 2641 ++++- .../approvals/out/unoptimized/itxn/itxn.awst | 104 +- .../out/unoptimized/itxn/itxn.awst.json | 9161 +++++++++++++++-- .../biguint-expressions.algo.ts | 4 +- .../uint64-expressions.algo.ts | 6 +- tests/onchain/itxn.spec.ts | 25 + tests/onchain/util/test-fixture.ts | 3 + 36 files changed, 37401 insertions(+), 3873 deletions(-) create mode 100644 src/awst_build/eb/util/resolve-compat-builder.ts create mode 100644 tests/approvals/out/o1/itxn/ItxnDemoContract.arc32.json create mode 100644 tests/approvals/out/o1/itxn/ItxnDemoContract.arc56.json create mode 100644 tests/approvals/out/o2/itxn/ItxnDemoContract.arc32.json create mode 100644 tests/approvals/out/o2/itxn/ItxnDemoContract.arc56.json create mode 100644 tests/approvals/out/unoptimized/itxn/ItxnDemoContract.arc32.json create mode 100644 tests/approvals/out/unoptimized/itxn/ItxnDemoContract.arc56.json create mode 100644 tests/onchain/itxn.spec.ts diff --git a/package-lock.json b/package-lock.json index 3fb01d960..a8d5d62f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13552,7 +13552,7 @@ }, "packages/algo-ts/dist": { "name": "@algorandfoundation/algorand-typescript", - "version": "1.0.0-beta.14", + "version": "1.0.0-beta.15", "dev": true, "peerDependencies": { "tslib": "^2.6.2" diff --git a/packages/algo-ts/package.json b/packages/algo-ts/package.json index 8cecb40d7..01e6541dd 100644 --- a/packages/algo-ts/package.json +++ b/packages/algo-ts/package.json @@ -1,6 +1,6 @@ { "name": "@algorandfoundation/algorand-typescript", - "version": "1.0.0-beta.14", + "version": "1.0.0-beta.15", "description": "This package contains definitions for the types which comprise Algorand TypeScript which can be compiled to run on the Algorand Virtual Machine using the Puya compiler.", "private": false, "main": "index.js", diff --git a/packages/algo-ts/src/itxn.ts b/packages/algo-ts/src/itxn.ts index b5c17014e..5dc727232 100644 --- a/packages/algo-ts/src/itxn.ts +++ b/packages/algo-ts/src/itxn.ts @@ -3,7 +3,6 @@ import { NoImplementation } from './impl/errors' import { bytes, uint64 } from './primitives' import type { Account, Application, Asset } from './reference' import type * as txnTypes from './transactions' -import { DeliberateAny } from './typescript-helpers' const isItxn = Symbol('isItxn') @@ -26,17 +25,31 @@ export interface ApplicationInnerTxn extends txnTypes.ApplicationTxn { [isItxn]?: true } +type AccountInput = Account | bytes | string +type AssetInput = Asset | uint64 +type ApplicationInput = Application | uint64 + export interface CommonTransactionFields { /** * 32 byte address */ - sender?: Account | string + sender?: AccountInput /** * microalgos */ fee?: uint64 + /** + * round number + */ + firstValid?: uint64 + + /** + * UNIX timestamp of block before txn.FirstValid. Fails if negative + */ + firstValidTime?: uint64 + /** * Any data up to 1024 bytes */ @@ -50,7 +63,7 @@ export interface CommonTransactionFields { /** * 32 byte Sender's new AuthAddr */ - rekeyTo?: Account | string + rekeyTo?: AccountInput } export interface PaymentFields extends CommonTransactionFields { @@ -62,11 +75,11 @@ export interface PaymentFields extends CommonTransactionFields { /** * The address of the receiver */ - receiver?: Account + receiver?: AccountInput /** * If set, bring the sender balance to 0 and send all remaining balance to this address */ - closeRemainderTo?: Account + closeRemainderTo?: AccountInput } export interface KeyRegistrationFields extends CommonTransactionFields { /** @@ -106,22 +119,22 @@ export interface KeyRegistrationFields extends CommonTransactionFields { } export interface AssetTransferFields extends CommonTransactionFields { /** The asset being transferred */ - xferAsset: Asset + xferAsset: AssetInput /** The amount of the asset being transferred */ assetAmount?: uint64 /** The clawback target */ - assetSender?: Account + assetSender?: AccountInput /** The receiver of the asset */ - assetReceiver?: Account + assetReceiver?: AccountInput /** The address to close the asset to */ - assetCloseTo?: Account + assetCloseTo?: AccountInput } export interface AssetConfigFields extends CommonTransactionFields { - configAsset?: Asset - manager?: Account - reserve?: Account - freeze?: Account - clawback?: Account + configAsset?: AssetInput + manager?: AccountInput + reserve?: AccountInput + freeze?: AccountInput + clawback?: AccountInput assetName?: string | bytes unitName?: string | bytes total?: uint64 @@ -131,12 +144,12 @@ export interface AssetConfigFields extends CommonTransactionFields { metadataHash?: bytes } export interface AssetFreezeFields extends CommonTransactionFields { - freezeAsset: Asset | uint64 - freezeAccount?: Account | string + freezeAsset: AssetInput + freezeAccount?: AccountInput frozen?: boolean } export interface ApplicationCallFields extends CommonTransactionFields { - appId?: Application | uint64 + appId?: ApplicationInput approvalProgram?: bytes | readonly [...bytes[]] clearStateProgram?: bytes | readonly [...bytes[]] onCompletion?: OnCompleteAction | uint64 @@ -146,32 +159,55 @@ export interface ApplicationCallFields extends CommonTransactionFields { localNumBytes?: uint64 extraProgramPages?: uint64 appArgs?: readonly [...unknown[]] - accounts?: readonly [...Account[]] - assets?: readonly [...Asset[]] - apps?: readonly [...Application[]] + accounts?: readonly [...AccountInput[]] + assets?: readonly [...AssetInput[]] + apps?: readonly [...ApplicationInput[]] } -export type InnerTransaction = { - submit(): TTransaction - set(p: Partial): void - copy(): InnerTransaction -} +export type InnerTransaction = + | PaymentItxnParams + | KeyRegistrationItxnParams + | AssetConfigItxnParams + | AssetTransferItxnParams + | AssetFreezeItxnParams + | ApplicationCallItxnParams -export type InnerTxnList = [...InnerTransaction[]] +export type InnerTxnList = [...InnerTransaction[]] -export type TxnFor = TFields extends [ - InnerTransaction, - ...infer TRest extends InnerTxnList, -] +export type TxnFor = TFields extends [{ submit(): infer TTxn }, ...infer TRest extends InnerTxnList] ? [TTxn, ...TxnFor] : [] -export type PaymentItxnParams = InnerTransaction -export type KeyRegistrationItxnParams = InnerTransaction -export type AssetConfigItxnParams = InnerTransaction -export type AssetTransferItxnParams = InnerTransaction -export type AssetFreezeItxnParams = InnerTransaction -export type ApplicationCallItxnParams = InnerTransaction +export interface PaymentItxnParams { + submit(): PaymentInnerTxn + set(p: Partial): void + copy(): PaymentItxnParams +} +export interface KeyRegistrationItxnParams { + submit(): KeyRegistrationInnerTxn + set(p: Partial): void + copy(): KeyRegistrationItxnParams +} +export interface AssetConfigItxnParams { + submit(): AssetConfigInnerTxn + set(p: Partial): void + copy(): AssetConfigItxnParams +} +export interface AssetTransferItxnParams { + submit(): AssetTransferInnerTxn + set(p: Partial): void + copy(): AssetTransferItxnParams +} +export interface AssetFreezeItxnParams { + submit(): AssetFreezeInnerTxn + set(p: Partial): void + copy(): AssetFreezeItxnParams +} +export interface ApplicationCallItxnParams { + submit(): ApplicationInnerTxn + set(p: Partial): void + copy(): ApplicationCallItxnParams +} export function submitGroup(...transactionFields: TFields): TxnFor { throw new NoImplementation() diff --git a/src/awst/intrinsic-factory.ts b/src/awst/intrinsic-factory.ts index 18bd0388c..87e408544 100644 --- a/src/awst/intrinsic-factory.ts +++ b/src/awst/intrinsic-factory.ts @@ -1,23 +1,36 @@ +import { concat } from '@algorandfoundation/algorand-typescript/op' import type { DeliberateAny } from '../typescript-helpers' import { bigIntToUint8Array } from '../util' import { nodeFactory } from './node-factory' -import type { Expression } from './nodes' import * as awst from './nodes' -import { BytesEncoding } from './nodes' -import type { SourceLocation } from './source-location' +import type { Expression } from './nodes' +import { BytesConstant, BytesEncoding, StringConstant } from './nodes' +import { SourceLocation } from './source-location' import { wtypes } from './wtypes' export const intrinsicFactory = { - bytesConcat({ - left, - right, - sourceLocation, - }: { - left: awst.Expression - right: awst.Expression - sourceLocation: SourceLocation - }): awst.IntrinsicCall { + bytesConcat({ left, right, sourceLocation }: { left: awst.Expression; right: awst.Expression; sourceLocation: SourceLocation }) { // invariant(left.wtype.equals(right.wtype), 'left and right operand wtypes must match') + + if (left.wtype.equals(right.wtype)) { + if (left instanceof BytesConstant && right instanceof BytesConstant) { + const concatValue = new Uint8Array(left.value.length + right.value.length) + concatValue.set(left.value, 0) + concatValue.set(right.value, left.value.length) + return nodeFactory.bytesConstant({ + value: concatValue, + wtype: left.wtype, + encoding: left.encoding, + sourceLocation: SourceLocation.fromLocations(left.sourceLocation, right.sourceLocation), + }) + } else if (left instanceof StringConstant && right instanceof StringConstant) { + return nodeFactory.stringConstant({ + value: left.value + right.value, + sourceLocation: SourceLocation.fromLocations(left.sourceLocation, right.sourceLocation), + }) + } + } + return nodeFactory.intrinsicCall({ sourceLocation, stackArgs: [left, right], diff --git a/src/awst/json-serialize-awst.ts b/src/awst/json-serialize-awst.ts index c945746cd..dcc2d9dbf 100644 --- a/src/awst/json-serialize-awst.ts +++ b/src/awst/json-serialize-awst.ts @@ -41,6 +41,12 @@ export class AwstSerializer extends SnakeCaseSerializer { protected serializerFunction(key: string, value: unknown): unknown { if (typeof value === 'bigint') { + if (value < 0n) { + if (value < Number.MIN_SAFE_INTEGER) { + throw new InternalError(`Cannot safely serialize ${value} to JSON`) + } + return Number(value) + } return `${value}` } if (value instanceof Set) { diff --git a/src/awst_build/eb/arc4/arrays.ts b/src/awst_build/eb/arc4/arrays.ts index dbddf32d6..e39f40a32 100644 --- a/src/awst_build/eb/arc4/arrays.ts +++ b/src/awst_build/eb/arc4/arrays.ts @@ -33,6 +33,7 @@ import { SliceFunctionBuilder } from '../shared/slice-function-builder' import { UInt64ExpressionBuilder } from '../uint64-expression-builder' import { requireExpressionOfType } from '../util' import { parseFunctionArgs } from '../util/arg-parsing' +import { resolveCompatExpression } from '../util/resolve-compat-builder' import { Arc4EncodedBaseExpressionBuilder } from './base' export class DynamicArrayClassBuilder extends ClassBuilder { @@ -180,7 +181,7 @@ export class StaticBytesClassBuilder extends ClassBuilder { callLocation: sourceLocation, funcName: `${this.ptype.name} constructor`, genericTypeArgs: 1, - argSpec: (a) => [a.optional(bytesPType)], + argSpec: (a) => [a.optional(bytesPType, stringPType)], }) const resultPType = StaticBytesGeneric.parameterise([length]) @@ -196,7 +197,7 @@ export class StaticBytesClassBuilder extends ClassBuilder { resultPType, ) } - const value = initialValue.resolve() + const value = resolveCompatExpression(initialValue, bytesPType) if (value instanceof BytesConstant) { codeInvariant(value.value.length === byteLength, `Value should have byte length of ${byteLength}`, sourceLocation) return instanceEb( @@ -231,7 +232,7 @@ export class DynamicBytesClassBuilder extends ClassBuilder { callLocation: sourceLocation, funcName: `${this.ptype.name} constructor`, genericTypeArgs: 0, - argSpec: (a) => [a.optional(bytesPType)], + argSpec: (a) => [a.optional(bytesPType, stringPType)], }) const resultPType = DynamicBytesType @@ -245,7 +246,8 @@ export class DynamicBytesClassBuilder extends ClassBuilder { resultPType, ) } - const value = initialValue.resolve() + + const value = resolveCompatExpression(initialValue, bytesPType) if (value instanceof BytesConstant) { return instanceEb( nodeFactory.bytesConstant({ @@ -431,7 +433,9 @@ export class AddressExpressionBuilder extends ArrayExpressionBuilder extends Node abstract resolve(): awst.Expression abstract resolveLValue(): awst.LValue + /** + * Returns a boolean indicating if the current builder can be resolved to the target type. + * Resolvable meaning it may have a different type, but would be assignable to the target type in TypeScript + * without a cast. + * @param ptype + */ resolvableToPType(ptype: PTypeOrClass): boolean { return this.ptype.equalsOrInstanceOf(ptype) } + /** + * Attempts to resolve the value held by this builder to the target type. + * @param ptype + */ resolveToPType(ptype: PTypeOrClass): InstanceBuilder { if (this.ptype.equalsOrInstanceOf(ptype)) { return this @@ -177,6 +187,17 @@ export abstract class InstanceBuilder extends Node sourceLocation, }) } + + reinterpretCast(target: PType, sourceLocation?: SourceLocation) { + return instanceEb( + nodeFactory.reinterpretCast({ + expr: this.resolve(), + sourceLocation: sourceLocation ?? this.sourceLocation, + wtype: target.wtypeOrThrow, + }), + target, + ) + } } export abstract class ClassBuilder extends NodeBuilder { diff --git a/src/awst_build/eb/literal/big-int-literal-expression-builder.ts b/src/awst_build/eb/literal/big-int-literal-expression-builder.ts index c6d353626..5b3006073 100644 --- a/src/awst_build/eb/literal/big-int-literal-expression-builder.ts +++ b/src/awst_build/eb/literal/big-int-literal-expression-builder.ts @@ -35,10 +35,17 @@ export class BigIntLiteralExpressionBuilder extends LiteralExpressionBuilder { } resolvableToPType(ptype: PTypeOrClass): boolean { + const isUnsigned = ptype.equals(biguintPType) || ptype.equals(uint64PType) if (this.ptype instanceof NumericLiteralPType || this.ptype.equals(numberPType)) { - return ptype.equals(biguintPType) || ptype.equals(uint64PType) || ptype.equals(numberPType) || ptype.equals(this.ptype) + if (isUnsigned) { + return this.value >= 0n + } + return ptype.equals(numberPType) || ptype.equals(this.ptype) } else if (this.ptype instanceof BigIntLiteralPType || this.ptype.equals(bigIntPType)) { - return ptype.equals(biguintPType) || ptype.equals(uint64PType) || ptype.equals(bigIntPType) || ptype.equals(this.ptype) + if (isUnsigned) { + return this.value >= 0n + } + return ptype.equals(bigIntPType) || ptype.equals(this.ptype) } return false } diff --git a/src/awst_build/eb/string-expression-builder.ts b/src/awst_build/eb/string-expression-builder.ts index 7bf2f8b8d..61e8c2eda 100644 --- a/src/awst_build/eb/string-expression-builder.ts +++ b/src/awst_build/eb/string-expression-builder.ts @@ -84,13 +84,10 @@ export class StringExpressionBuilder extends InstanceExpressionBuilder requireExpressionOfType(i, fieldType)), + items: propValue.getItemBuilders().map((i) => resolveCompatExpression(i, fieldType)), sourceLocation: propValue.sourceLocation, }), ) @@ -95,7 +95,7 @@ function mapTransactionFields( mappedFields.set( txnField, nodeFactory.tupleExpression({ - items: [requireExpressionOfType(propValue, fieldType)], + items: [resolveCompatExpression(propValue, fieldType)], sourceLocation: propValue.sourceLocation, }), ) @@ -103,7 +103,7 @@ function mapTransactionFields( logger.error(propValue.sourceLocation, `Unsupported expression for ${prop}`) } } else { - mappedFields.set(txnField, requireExpressionOfType(propValue, fieldType)) + mappedFields.set(txnField, resolveCompatExpression(propValue, fieldType)) } } else { logger.warn(sourceLocation, `Ignoring additional property: ${prop}`) @@ -212,7 +212,7 @@ class CopyInnerTxnMethodBuilder extends InnerTxnFieldsMethodBuilder { argSpec: () => [], }) - return new InnerTransactionExpressionBuilder( + return new ItxnParamsExpressionBuilder( nodeFactory.copy({ value: this.builder.resolve(), sourceLocation, diff --git a/src/awst_build/eb/transactions/txn-fields.ts b/src/awst_build/eb/transactions/txn-fields.ts index 9c242100d..30d76f410 100644 --- a/src/awst_build/eb/transactions/txn-fields.ts +++ b/src/awst_build/eb/transactions/txn-fields.ts @@ -12,6 +12,8 @@ import { uint64PType, } from '../../ptypes' +type TxnFieldsMeta = Record + const baseTxnFields = { /** * 32 byte address @@ -73,7 +75,7 @@ const baseTxnFields = { * 32 byte Sender's new AuthAddr */ rekeyTo: [TxnField.RekeyTo, accountPType] as const, -} +} satisfies TxnFieldsMeta export const paymentTxnFields = { ...baseTxnFields, @@ -91,7 +93,7 @@ export const paymentTxnFields = { * 32 byte address */ closeRemainderTo: [TxnField.CloseRemainderTo, accountPType] as const, -} satisfies Record +} satisfies TxnFieldsMeta export const keyRegistrationTxnFields = { ...baseTxnFields, @@ -129,7 +131,7 @@ export const keyRegistrationTxnFields = { * 64 byte state proof public key */ stateProofKey: [TxnField.StateProofPK, bytesPType] as const, -} satisfies Record +} satisfies TxnFieldsMeta export const assetConfigTxnFields = { ...baseTxnFields, @@ -197,7 +199,7 @@ export const assetConfigTxnFields = { * 32 byte address */ clawback: [TxnField.ConfigAssetClawback, accountPType] as const, -} satisfies Record +} satisfies TxnFieldsMeta export const assetTransferTxnFields = { ...baseTxnFields, @@ -225,7 +227,7 @@ export const assetTransferTxnFields = { * 32 byte address */ assetCloseTo: [TxnField.AssetCloseTo, accountPType] as const, -} satisfies Record +} satisfies TxnFieldsMeta export const assetFreezeTxnFields = { ...baseTxnFields, @@ -243,7 +245,7 @@ export const assetFreezeTxnFields = { * The new frozen value */ frozen: [TxnField.FreezeAssetFrozen, boolPType] as const, -} satisfies Record +} satisfies TxnFieldsMeta export const applicationCallTxnFields = { ...baseTxnFields, @@ -322,15 +324,28 @@ export const applicationCallTxnFields = { */ lastLog: [TxnField.LastLog, bytesPType] as const, + /** + * Read application logs + */ + logs: [TxnField.Logs, bytesPType] as const, + /** * Number of Approval Program pages */ numApprovalProgramPages: [TxnField.NumApprovalProgramPages, uint64PType] as const, + /** + * Read approval program pages + */ + approvalProgramPages: [TxnField.ApprovalProgramPages, bytesPType] as const, /** * Number of Clear State Program pages */ numClearStateProgramPages: [TxnField.NumClearStateProgramPages, uint64PType] as const, + /** + * Read clear state program pages + */ + clearStateProgramPages: [TxnField.ClearStateProgramPages, bytesPType] as const, /** * Arguments passed to the application in the ApplicationCall transaction @@ -362,7 +377,7 @@ export const applicationCallTxnFields = { * Number of logs */ numLogs: [TxnField.NumLogs, uint64PType] as const, -} satisfies Record +} satisfies TxnFieldsMeta export const anyTxnFields = { ...paymentTxnFields, @@ -371,7 +386,7 @@ export const anyTxnFields = { ...assetTransferTxnFields, ...assetFreezeTxnFields, ...applicationCallTxnFields, -} satisfies Record +} satisfies TxnFieldsMeta export const txnKindToFields = { [TransactionKind.pay]: paymentTxnFields, diff --git a/src/awst_build/eb/util/resolve-compat-builder.ts b/src/awst_build/eb/util/resolve-compat-builder.ts new file mode 100644 index 000000000..b77f8868e --- /dev/null +++ b/src/awst_build/eb/util/resolve-compat-builder.ts @@ -0,0 +1,46 @@ +import { CodeError } from '../../../errors' +import { codeInvariant } from '../../../util' +import type { PType } from '../../ptypes' +import { accountPType, applicationPType, assetPType, bytesPType, onCompleteActionType, stringPType, uint64PType } from '../../ptypes' +import { instanceEb } from '../../type-registry' +import type { NodeBuilder } from '../index' +import { InstanceBuilder } from '../index' + +/** + * Given a builder, attempt to resolve it to the target type converting compatible types as possible + * + * @param builder + * @param targetType + */ +export function resolveCompatBuilder(builder: NodeBuilder, targetType: PType) { + codeInvariant(builder instanceof InstanceBuilder, `Cannot resolve ${builder.typeDescription} to a value`, builder.sourceLocation) + + if (builder.resolvableToPType(targetType)) { + return builder.resolveToPType(targetType) + } + + if (targetType.equals(accountPType)) { + if (builder.resolvableToPType(stringPType)) { + // TODO: account string should be interpreted as base32 + return builder.resolveToPType(stringPType) + } + if (builder.resolvableToPType(bytesPType)) { + // Account bytes should just be cast + return builder.resolveToPType(bytesPType).reinterpretCast(accountPType) + } + } else if (targetType.equals(applicationPType) || targetType.equals(assetPType) || targetType.equals(onCompleteActionType)) { + if (builder.resolvableToPType(uint64PType)) { + return builder.resolveToPType(uint64PType).reinterpretCast(targetType) + } + } else if (targetType.equals(bytesPType)) { + if (builder.resolvableToPType(stringPType)) { + return instanceEb(builder.resolveToPType(stringPType).toBytes(builder.sourceLocation), bytesPType) + } + } + + throw new CodeError(`Cannot resolve ${builder.ptype} to ${targetType}`, { sourceLocation: builder.sourceLocation }) +} + +export function resolveCompatExpression(builder: NodeBuilder, targetType: PType) { + return resolveCompatBuilder(builder, targetType).resolve() +} diff --git a/src/awst_build/ptypes/index.ts b/src/awst_build/ptypes/index.ts index 2c7f5d333..db536fc73 100644 --- a/src/awst_build/ptypes/index.ts +++ b/src/awst_build/ptypes/index.ts @@ -814,6 +814,7 @@ export const bigIntPType = new NativeNumericType({ typeMessage: transientTypeErrors.nativeNumeric('bigint').usedAsType, expressionMessage: transientTypeErrors.nativeNumeric('bigint').usedInExpression, }) + export const stringPType = new InstanceType({ name: 'string', module: 'lib.d.ts', diff --git a/tests/approvals/itxn.algo.ts b/tests/approvals/itxn.algo.ts index 3b8fb01ff..0156aa580 100644 --- a/tests/approvals/itxn.algo.ts +++ b/tests/approvals/itxn.algo.ts @@ -1,30 +1,13 @@ -import { assert, BaseContract, Bytes, Global, GlobalState, itxn, Txn } from '@algorandfoundation/algorand-typescript' +import { assert, Bytes, Contract, Global, GlobalState, itxn, op, Txn } from '@algorandfoundation/algorand-typescript' import { OnCompleteAction } from '@algorandfoundation/algorand-typescript/arc4' -const LOG_1ST_ARG_AND_APPROVE = Bytes('\x09\x36\x1A\x00\xB0\x91\x01') -const APPROVE = Bytes('\x09\x81\x01') +const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') +const APPROVE = Bytes.fromHex('098101') -export class ItxnDemoContract extends BaseContract { +export class ItxnDemoContract extends Contract { name = GlobalState({ initialValue: Bytes() }) - public approvalProgram(): boolean { - if (Txn.numAppArgs) { - switch (Txn.applicationArgs(0)) { - case Bytes('test1'): - this.test1() - break - case Bytes('test2'): - this.test2() - break - case Bytes('test3'): - case Bytes('test4'): - break - } - } - return true - } - - private test1() { + public test1() { this.name.value = Bytes('AST1') const assetParams = itxn.assetConfig({ @@ -49,8 +32,8 @@ export class ItxnDemoContract extends BaseContract { assert(asset2_txn.createdAsset.name === Bytes('AST2'), 'created asset 2 is correct') const appCreateParams = itxn.applicationCall({ - approvalProgram: Bytes.fromHex('098101'), - clearStateProgram: Bytes.fromHex('098101'), + approvalProgram: APPROVE, + clearStateProgram: APPROVE, fee: 0, }) @@ -60,7 +43,7 @@ export class ItxnDemoContract extends BaseContract { const [appCreateTxn, asset3_txn] = itxn.submitGroup(appCreateParams, assetParams) - assert(appCreateTxn.appId, 'app is created') + assert(appCreateTxn.createdApp, 'app is created') assert(asset3_txn.assetName === Bytes('AST3'), 'asset3_txn is correct') appCreateParams.set({ @@ -72,7 +55,7 @@ export class ItxnDemoContract extends BaseContract { itxn.submitGroup(appCreateParams, assetParams) } - private test2() { + public test2() { let createAppParams: itxn.ApplicationCallItxnParams if (Txn.numAppArgs) { const args = [Bytes('1'), Bytes('2')] as const @@ -94,6 +77,117 @@ export class ItxnDemoContract extends BaseContract { const createAppTxn = createAppParams.submit() assert(createAppTxn.appArgs(0) === Bytes('1'), 'correct args used 1') assert(createAppTxn.appArgs(1) === Bytes('2'), 'correct args used 2') - assert(createAppTxn.note === Bytes('with args param set')) + + if (Txn.numAppArgs > 1) { + const createAppTxn2 = itxn + .applicationCall({ + approvalProgram: APPROVE, + clearStateProgram: APPROVE, + onCompletion: OnCompleteAction.DeleteApplication, + appArgs: [Bytes('42')], + }) + .submit() + assert(createAppTxn2.appArgs(0) === Bytes('42'), 'correct args used 2') + assert(createAppTxn.note === Bytes('with args param set')) + } + } + + public test3() { + const appTxn1 = itxn.applicationCall({ + approvalProgram: LOG_1ST_ARG_AND_APPROVE, + clearStateProgram: APPROVE, + onCompletion: OnCompleteAction.DeleteApplication, + appArgs: [Bytes('1')], + }) + + const appTxn2 = appTxn1.copy() + appTxn2.set({ appArgs: [Bytes('2')] }) + const appTxn3 = appTxn1.copy() + appTxn3.set({ appArgs: [Bytes('3')] }) + const appTxn4 = appTxn1.copy() + appTxn4.set({ appArgs: [Bytes('4')] }) + const appTxn5 = appTxn1.copy() + appTxn5.set({ appArgs: [Bytes('5')] }) + const appTxn6 = appTxn1.copy() + appTxn6.set({ appArgs: [Bytes('6')] }) + const appTxn7 = appTxn1.copy() + appTxn7.set({ appArgs: [Bytes('7')] }) + const appTxn8 = appTxn1.copy() + appTxn8.set({ appArgs: [Bytes('8')] }) + const appTxn9 = appTxn1.copy() + appTxn9.set({ appArgs: [Bytes('9')] }) + const appTxn10 = appTxn1.copy() + appTxn10.set({ appArgs: [Bytes('10')] }) + const appTxn11 = appTxn1.copy() + appTxn11.set({ appArgs: [Bytes('11')] }) + const appTxn12 = appTxn1.copy() + appTxn12.set({ appArgs: [Bytes('12')] }) + const appTxn13 = appTxn1.copy() + appTxn13.set({ appArgs: [Bytes('13')] }) + const appTxn14 = appTxn1.copy() + appTxn14.set({ appArgs: [Bytes('14')] }) + const appTxn15 = appTxn1.copy() + appTxn15.set({ appArgs: [Bytes('15')] }) + const appTxn16 = appTxn1.copy() + appTxn16.set({ appArgs: [Bytes('16')] }) + + const [app1, app2, app3, app4, app5, app6, app7, app8, app9, app10, app11, app12, app13, app14, app15, app16] = itxn.submitGroup( + appTxn1, + appTxn2, + appTxn3, + appTxn4, + appTxn5, + appTxn6, + appTxn7, + appTxn8, + appTxn9, + appTxn10, + appTxn11, + appTxn12, + appTxn13, + appTxn14, + appTxn15, + appTxn16, + ) + + assert(app1.logs(0) === Bytes('1')) + assert(app2.logs(0) === Bytes('2')) + assert(app3.logs(0) === Bytes('3')) + assert(app4.logs(0) === Bytes('4')) + assert(app5.logs(0) === Bytes('5')) + assert(app6.logs(0) === Bytes('6')) + assert(app7.logs(0) === Bytes('7')) + assert(app8.logs(0) === Bytes('8')) + assert(app9.logs(0) === Bytes('9')) + assert(app10.logs(0) === Bytes('10')) + assert(app11.logs(0) === Bytes('11')) + assert(app12.logs(0) === Bytes('12')) + assert(app13.logs(0) === Bytes('13')) + assert(app14.logs(0) === Bytes('14')) + assert(app15.logs(0) === Bytes('15')) + assert(app16.logs(0) === Bytes('16')) + } + + public test4() { + const lotsOfBytes = op.bzero(2044) + const approval1 = APPROVE + const approval2 = Bytes.fromHex('80' + 'FC0f') + .concat(lotsOfBytes) + .concat(Bytes.fromHex('48')) + + const appTxn1 = itxn.applicationCall({ + approvalProgram: [approval1, approval2, approval2, approval2], + clearStateProgram: APPROVE, + onCompletion: OnCompleteAction.DeleteApplication, + appArgs: [Bytes('1')], + extraProgramPages: 3, + }) + const app1 = appTxn1.submit() + assert(app1.extraProgramPages === 3, 'extra pages = 3') + assert(app1.numApprovalProgramPages === 2, 'approval pages = 2') + assert(app1.approvalProgramPages(0) === approval1.concat(approval2).concat(approval2.slice(0, -3)), 'expected approval page 0') + assert(app1.approvalProgramPages(1) === approval2.slice(-3).concat(approval2), 'expected approval page 1') + assert(app1.numClearStateProgramPages === 1, 'clear state pages = 1') + assert(app1.clearStateProgramPages(0) === APPROVE, 'expected clear state page') } } diff --git a/tests/approvals/out/o1/itxn/ItxnDemoContract.approval.teal b/tests/approvals/out/o1/itxn/ItxnDemoContract.approval.teal index 62fc1bbf8..d1267775e 100644 --- a/tests/approvals/out/o1/itxn/ItxnDemoContract.approval.teal +++ b/tests/approvals/out/o1/itxn/ItxnDemoContract.approval.teal @@ -1,225 +1,150 @@ #pragma version 10 #pragma typetrack false -// tests/approvals/itxn.algo.ts::ItxnDemoContract.approvalProgram() -> uint64: +// @algorandfoundation/algorand-typescript/arc4/index.d.ts::Contract.approvalProgram() -> uint64: main: - intcblock 0 3 1000 6 - bytecblock "name" "unit" 0x098101 0x "AST1" "AST2" "AST3" "with args param set" "\t\xc2\x81\x01" "3rd" - intc_0 // 0 - dupn 2 - bytec_3 // "" - dupn 2 + intcblock 0 6 5 3 1000 + bytecblock 0x098101 0x09361a00b08101 "name" "1" "unit" "2" "AST1" "AST2" "AST3" "3" "4" "5" "3rd" "with args param set" "42" "10" "11" "12" "13" "14" "15" "16" txn ApplicationID bnz main_after_if_else@2 // tests/approvals/itxn.algo.ts:8 // name = GlobalState({ initialValue: Bytes() }) - bytec_0 // "name" - bytec_3 // 0x + bytec_2 // "name" + pushbytes 0x app_global_put main_after_if_else@2: - // tests/approvals/itxn.algo.ts:11 - // if (Txn.numAppArgs) { + // tests/approvals/itxn.algo.ts:7 + // export class ItxnDemoContract extends Contract { txn NumAppArgs - bz main_after_if_else@15 - // tests/approvals/itxn.algo.ts:12 - // switch (Txn.applicationArgs(0)) { - intc_0 // 0 - txnas ApplicationArgs - // tests/approvals/itxn.algo.ts:13 - // case Bytes('test1'): - pushbytess "test1" "test2" "test3" "test4" // "test1", "test2", "test3", "test4" - // tests/approvals/itxn.algo.ts:12-22 - // switch (Txn.applicationArgs(0)) { - // case Bytes('test1'): - // this.test1() - // break - // case Bytes('test2'): - // this.test2() - // break - // case Bytes('test3'): - // case Bytes('test4'): - // break - // } - uncover 4 - match main_switch_case_0@4 main_switch_case_1@6 main_after_if_else@15 main_after_if_else@15 + bz main_bare_routing@11 + pushbytess 0x20254f91 0xf1908524 0xdf920f37 0x3d46345c // method "test1()void", method "test2()void", method "test3()void", method "test4()void" + txna ApplicationArgs 0 + match main_test1_route@5 main_test2_route@6 main_test3_route@7 main_test4_route@8 main_after_if_else@15: - // tests/approvals/itxn.algo.ts:24 - // return true + // tests/approvals/itxn.algo.ts:7 + // export class ItxnDemoContract extends Contract { + intc_0 // 0 + return + +main_test4_route@8: + // tests/approvals/itxn.algo.ts:171 + // public test4() { + txn OnCompletion + ! + assert // OnCompletion is not NoOp + txn ApplicationID + assert // can only call when not creating + callsub test4 pushint 1 // 1 return -main_switch_case_1@6: - intc_0 // 0 - bury 4 - bytec_3 // "" - bury 1 - // tests/approvals/itxn.algo.ts:77 - // if (Txn.numAppArgs) { - txn NumAppArgs - bz main_else_body@18 - // tests/approvals/itxn.algo.ts:78 - // const args = [Bytes('1'), Bytes('2')] as const - pushbytes "1" - bury 6 - pushbytes "2" - bury 5 - // tests/approvals/itxn.algo.ts:82 - // appArgs: args, - pushint 2 // 2 - bury 3 - // tests/approvals/itxn.algo.ts:83 - // onCompletion: OnCompleteAction.NoOp, - intc_0 // 0 - bury 1 +main_test3_route@7: + // tests/approvals/itxn.algo.ts:95 + // public test3() { + txn OnCompletion + ! + assert // OnCompletion is not NoOp + txn ApplicationID + assert // can only call when not creating + callsub test3 pushint 1 // 1 - bury 2 - // tests/approvals/itxn.algo.ts:84 - // note: 'with args param set', - bytec 7 // "with args param set" + return -main_after_if_else@19: - // tests/approvals/itxn.algo.ts:94 - // const createAppTxn = createAppParams.submit() - itxn_begin - itxn_field Note - dig 1 - bz main_next_field@21 - dup - itxn_field OnCompletion +main_test2_route@6: + // tests/approvals/itxn.algo.ts:58 + // public test2() { + txn OnCompletion + ! + assert // OnCompletion is not NoOp + txn ApplicationID + assert // can only call when not creating + callsub test2 + pushint 1 // 1 + return -main_next_field@21: - dig 5 - itxn_field ApplicationArgs - dig 4 - itxn_field ApplicationArgs - dig 2 - intc_1 // 3 - >= - // tests/approvals/itxn.algo.ts:94 - // const createAppTxn = createAppParams.submit() - bz main_next_field@23 - dig 3 - itxn_field ApplicationArgs +main_test1_route@5: + // tests/approvals/itxn.algo.ts:10 + // public test1() { + txn OnCompletion + ! + assert // OnCompletion is not NoOp + txn ApplicationID + assert // can only call when not creating + callsub test1 + pushint 1 // 1 + return -main_next_field@23: - // tests/approvals/itxn.algo.ts:5 - // const APPROVE = Bytes('\x09\x81\x01') - bytec 8 // "\t\xc2\x81\x01" - itxn_field ClearStateProgramPages - bytec 8 // "\t\xc2\x81\x01" - itxn_field ApprovalProgramPages - // tests/approvals/itxn.algo.ts:79-85 - // createAppParams = itxn.applicationCall({ - // approvalProgram: APPROVE, - // clearStateProgram: APPROVE, - // appArgs: args, - // onCompletion: OnCompleteAction.NoOp, - // note: 'with args param set', - // }) - intc_3 // 6 - itxn_field TypeEnum - intc_0 // 0 - itxn_field Fee - // tests/approvals/itxn.algo.ts:94 - // const createAppTxn = createAppParams.submit() - itxn_submit - itxn Note - // tests/approvals/itxn.algo.ts:95 - // assert(createAppTxn.appArgs(0) === Bytes('1'), 'correct args used 1') - itxna ApplicationArgs 0 - pushbytes "1" - == - assert // correct args used 1 - // tests/approvals/itxn.algo.ts:96 - // assert(createAppTxn.appArgs(1) === Bytes('2'), 'correct args used 2') - itxna ApplicationArgs 1 - pushbytes "2" - == - assert // correct args used 2 - // tests/approvals/itxn.algo.ts:97 - // assert(createAppTxn.note === Bytes('with args param set')) - bytec 7 // "with args param set" - == - assert - // tests/approvals/itxn.algo.ts:18 - // break - b main_after_if_else@15 +main_bare_routing@11: + // tests/approvals/itxn.algo.ts:7 + // export class ItxnDemoContract extends Contract { + txn OnCompletion + bnz main_after_if_else@15 + txn ApplicationID + ! + assert // can only call when creating + pushint 1 // 1 + return -main_else_body@18: - // tests/approvals/itxn.algo.ts:90 - // appArgs: [Bytes('3'), '4', Bytes('5')], - pushbytes "3" - bury 6 - pushbytes "4" - bury 5 - pushbytes "5" - bury 4 - intc_1 // 3 - bury 3 - // tests/approvals/itxn.algo.ts:91 - // note: 'no args param set', - pushbytes "no args param set" - // tests/approvals/itxn.algo.ts:87 - // createAppParams = itxn.applicationCall({ - intc_0 // 0 - bury 3 - b main_after_if_else@19 -main_switch_case_0@4: +// tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: +test1: + // tests/approvals/itxn.algo.ts:10 + // public test1() { + proto 0 0 // tests/approvals/itxn.algo.ts:8 // name = GlobalState({ initialValue: Bytes() }) - bytec_0 // "name" - // tests/approvals/itxn.algo.ts:28 + bytec_2 // "name" + // tests/approvals/itxn.algo.ts:11 // this.name.value = Bytes('AST1') - bytec 4 // "AST1" + bytec 6 // "AST1" app_global_put - // tests/approvals/itxn.algo.ts:32 + // tests/approvals/itxn.algo.ts:15 // assetName: this.name.value, intc_0 // 0 // tests/approvals/itxn.algo.ts:8 // name = GlobalState({ initialValue: Bytes() }) - bytec_0 // "name" - // tests/approvals/itxn.algo.ts:32 + bytec_2 // "name" + // tests/approvals/itxn.algo.ts:15 // assetName: this.name.value, app_global_get_ex assert // check GlobalState exists - // tests/approvals/itxn.algo.ts:35 + // tests/approvals/itxn.algo.ts:18 // manager: Global.currentApplicationAddress, global CurrentApplicationAddress - // tests/approvals/itxn.algo.ts:36 + // tests/approvals/itxn.algo.ts:19 // reserve: Global.currentApplicationAddress, dup // tests/approvals/itxn.algo.ts:8 // name = GlobalState({ initialValue: Bytes() }) - bytec_0 // "name" - // tests/approvals/itxn.algo.ts:39 + bytec_2 // "name" + // tests/approvals/itxn.algo.ts:22 // this.name.value = Bytes('AST2') - bytec 5 // "AST2" + bytec 7 // "AST2" app_global_put - // tests/approvals/itxn.algo.ts:40 + // tests/approvals/itxn.algo.ts:23 // const asset1_txn = assetParams.submit() itxn_begin dup itxn_field ConfigAssetReserve dig 1 itxn_field ConfigAssetManager - // tests/approvals/itxn.algo.ts:34 + // tests/approvals/itxn.algo.ts:17 // decimals: 3, - intc_1 // 3 + intc_3 // 3 itxn_field ConfigAssetDecimals - // tests/approvals/itxn.algo.ts:33 + // tests/approvals/itxn.algo.ts:16 // unitName: 'unit', - bytec_1 // "unit" + bytec 4 // "unit" itxn_field ConfigAssetUnitName uncover 2 itxn_field ConfigAssetName - // tests/approvals/itxn.algo.ts:31 + // tests/approvals/itxn.algo.ts:14 // total: 1000, - intc_2 // 1000 + intc 4 // 1000 itxn_field ConfigAssetTotal - // tests/approvals/itxn.algo.ts:30-37 + // tests/approvals/itxn.algo.ts:13-20 // const assetParams = itxn.assetConfig({ // total: 1000, // assetName: this.name.value, @@ -228,46 +153,46 @@ main_switch_case_0@4: // manager: Global.currentApplicationAddress, // reserve: Global.currentApplicationAddress, // }) - intc_1 // 3 + intc_3 // 3 itxn_field TypeEnum intc_0 // 0 itxn_field Fee - // tests/approvals/itxn.algo.ts:40 + // tests/approvals/itxn.algo.ts:23 // const asset1_txn = assetParams.submit() itxn_submit itxn ConfigAssetName itxn CreatedAssetID - // tests/approvals/itxn.algo.ts:42 + // tests/approvals/itxn.algo.ts:25 // assetName: this.name.value, intc_0 // 0 // tests/approvals/itxn.algo.ts:8 // name = GlobalState({ initialValue: Bytes() }) - bytec_0 // "name" - // tests/approvals/itxn.algo.ts:42 + bytec_2 // "name" + // tests/approvals/itxn.algo.ts:25 // assetName: this.name.value, app_global_get_ex assert // check GlobalState exists - // tests/approvals/itxn.algo.ts:44 + // tests/approvals/itxn.algo.ts:27 // const asset2_txn = assetParams.submit() itxn_begin dig 3 itxn_field ConfigAssetReserve dig 4 itxn_field ConfigAssetManager - // tests/approvals/itxn.algo.ts:34 + // tests/approvals/itxn.algo.ts:17 // decimals: 3, - intc_1 // 3 + intc_3 // 3 itxn_field ConfigAssetDecimals - // tests/approvals/itxn.algo.ts:33 + // tests/approvals/itxn.algo.ts:16 // unitName: 'unit', - bytec_1 // "unit" + bytec 4 // "unit" itxn_field ConfigAssetUnitName itxn_field ConfigAssetName - // tests/approvals/itxn.algo.ts:31 + // tests/approvals/itxn.algo.ts:14 // total: 1000, - intc_2 // 1000 + intc 4 // 1000 itxn_field ConfigAssetTotal - // tests/approvals/itxn.algo.ts:30-37 + // tests/approvals/itxn.algo.ts:13-20 // const assetParams = itxn.assetConfig({ // total: 1000, // assetName: this.name.value, @@ -276,89 +201,87 @@ main_switch_case_0@4: // manager: Global.currentApplicationAddress, // reserve: Global.currentApplicationAddress, // }) - intc_1 // 3 + intc_3 // 3 itxn_field TypeEnum intc_0 // 0 itxn_field Fee - // tests/approvals/itxn.algo.ts:44 + // tests/approvals/itxn.algo.ts:27 // const asset2_txn = assetParams.submit() itxn_submit itxn ConfigAssetName itxn CreatedAssetID - // tests/approvals/itxn.algo.ts:46 + // tests/approvals/itxn.algo.ts:29 // assert(asset1_txn.assetName === Bytes('AST1'), 'asset1_txn is correct') uncover 3 - bytec 4 // "AST1" + bytec 6 // "AST1" == assert // asset1_txn is correct - // tests/approvals/itxn.algo.ts:47 + // tests/approvals/itxn.algo.ts:30 // assert(asset2_txn.assetName === Bytes('AST2'), 'asset2_txn is correct') swap - bytec 5 // "AST2" + bytec 7 // "AST2" == assert // asset2_txn is correct - // tests/approvals/itxn.algo.ts:48 + // tests/approvals/itxn.algo.ts:31 // assert(asset1_txn.createdAsset.name === Bytes('AST1'), 'created asset 1 is correct') swap asset_params_get AssetName assert // asset exists - bytec 4 // "AST1" + bytec 6 // "AST1" == assert // created asset 1 is correct - // tests/approvals/itxn.algo.ts:49 + // tests/approvals/itxn.algo.ts:32 // assert(asset2_txn.createdAsset.name === Bytes('AST2'), 'created asset 2 is correct') asset_params_get AssetName assert // asset exists - bytec 5 // "AST2" + bytec 7 // "AST2" == assert // created asset 2 is correct - // tests/approvals/itxn.algo.ts:61 + // tests/approvals/itxn.algo.ts:44 // const [appCreateTxn, asset3_txn] = itxn.submitGroup(appCreateParams, assetParams) itxn_begin - // tests/approvals/itxn.algo.ts:53 - // clearStateProgram: Bytes.fromHex('098101'), - bytec_2 // 0x098101 + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 itxn_field ClearStateProgramPages - // tests/approvals/itxn.algo.ts:52 - // approvalProgram: Bytes.fromHex('098101'), - bytec_2 // 0x098101 + bytec_0 // 0x098101 itxn_field ApprovalProgramPages - // tests/approvals/itxn.algo.ts:51-55 + // tests/approvals/itxn.algo.ts:34-38 // const appCreateParams = itxn.applicationCall({ - // approvalProgram: Bytes.fromHex('098101'), - // clearStateProgram: Bytes.fromHex('098101'), + // approvalProgram: APPROVE, + // clearStateProgram: APPROVE, // fee: 0, // }) - intc_3 // 6 + intc_1 // 6 itxn_field TypeEnum - // tests/approvals/itxn.algo.ts:54 + // tests/approvals/itxn.algo.ts:37 // fee: 0, intc_0 // 0 itxn_field Fee - // tests/approvals/itxn.algo.ts:61 + // tests/approvals/itxn.algo.ts:44 // const [appCreateTxn, asset3_txn] = itxn.submitGroup(appCreateParams, assetParams) itxn_next dup itxn_field ConfigAssetReserve dig 1 itxn_field ConfigAssetManager - // tests/approvals/itxn.algo.ts:34 + // tests/approvals/itxn.algo.ts:17 // decimals: 3, - intc_1 // 3 + intc_3 // 3 itxn_field ConfigAssetDecimals - // tests/approvals/itxn.algo.ts:33 + // tests/approvals/itxn.algo.ts:16 // unitName: 'unit', - bytec_1 // "unit" + bytec 4 // "unit" itxn_field ConfigAssetUnitName - // tests/approvals/itxn.algo.ts:58 + // tests/approvals/itxn.algo.ts:41 // assetName: 'AST3', - bytec 6 // "AST3" + bytec 8 // "AST3" itxn_field ConfigAssetName - // tests/approvals/itxn.algo.ts:31 + // tests/approvals/itxn.algo.ts:14 // total: 1000, - intc_2 // 1000 + intc 4 // 1000 itxn_field ConfigAssetTotal - // tests/approvals/itxn.algo.ts:30-37 + // tests/approvals/itxn.algo.ts:13-20 // const assetParams = itxn.assetConfig({ // total: 1000, // assetName: this.name.value, @@ -367,76 +290,74 @@ main_switch_case_0@4: // manager: Global.currentApplicationAddress, // reserve: Global.currentApplicationAddress, // }) - intc_1 // 3 + intc_3 // 3 itxn_field TypeEnum intc_0 // 0 itxn_field Fee - // tests/approvals/itxn.algo.ts:61 + // tests/approvals/itxn.algo.ts:44 // const [appCreateTxn, asset3_txn] = itxn.submitGroup(appCreateParams, assetParams) itxn_submit itxn ConfigAssetName - gitxn 0 ApplicationID - // tests/approvals/itxn.algo.ts:63 - // assert(appCreateTxn.appId, 'app is created') + gitxn 0 CreatedApplicationID + // tests/approvals/itxn.algo.ts:46 + // assert(appCreateTxn.createdApp, 'app is created') assert // app is created - // tests/approvals/itxn.algo.ts:64 + // tests/approvals/itxn.algo.ts:47 // assert(asset3_txn.assetName === Bytes('AST3'), 'asset3_txn is correct') - bytec 6 // "AST3" + bytec 8 // "AST3" == assert // asset3_txn is correct - // tests/approvals/itxn.algo.ts:72 + // tests/approvals/itxn.algo.ts:55 // itxn.submitGroup(appCreateParams, assetParams) itxn_begin - // tests/approvals/itxn.algo.ts:67 + // tests/approvals/itxn.algo.ts:50 // note: '3rd', - bytec 9 // "3rd" + bytec 12 // "3rd" itxn_field Note - // tests/approvals/itxn.algo.ts:53 - // clearStateProgram: Bytes.fromHex('098101'), - bytec_2 // 0x098101 + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 itxn_field ClearStateProgramPages - // tests/approvals/itxn.algo.ts:52 - // approvalProgram: Bytes.fromHex('098101'), - bytec_2 // 0x098101 + bytec_0 // 0x098101 itxn_field ApprovalProgramPages - // tests/approvals/itxn.algo.ts:51-55 + // tests/approvals/itxn.algo.ts:34-38 // const appCreateParams = itxn.applicationCall({ - // approvalProgram: Bytes.fromHex('098101'), - // clearStateProgram: Bytes.fromHex('098101'), + // approvalProgram: APPROVE, + // clearStateProgram: APPROVE, // fee: 0, // }) - intc_3 // 6 + intc_1 // 6 itxn_field TypeEnum - // tests/approvals/itxn.algo.ts:54 + // tests/approvals/itxn.algo.ts:37 // fee: 0, intc_0 // 0 itxn_field Fee - // tests/approvals/itxn.algo.ts:72 + // tests/approvals/itxn.algo.ts:55 // itxn.submitGroup(appCreateParams, assetParams) itxn_next - // tests/approvals/itxn.algo.ts:70 + // tests/approvals/itxn.algo.ts:53 // note: '3rd', - bytec 9 // "3rd" + bytec 12 // "3rd" itxn_field Note itxn_field ConfigAssetReserve itxn_field ConfigAssetManager - // tests/approvals/itxn.algo.ts:34 + // tests/approvals/itxn.algo.ts:17 // decimals: 3, - intc_1 // 3 + intc_3 // 3 itxn_field ConfigAssetDecimals - // tests/approvals/itxn.algo.ts:33 + // tests/approvals/itxn.algo.ts:16 // unitName: 'unit', - bytec_1 // "unit" + bytec 4 // "unit" itxn_field ConfigAssetUnitName - // tests/approvals/itxn.algo.ts:58 + // tests/approvals/itxn.algo.ts:41 // assetName: 'AST3', - bytec 6 // "AST3" + bytec 8 // "AST3" itxn_field ConfigAssetName - // tests/approvals/itxn.algo.ts:31 + // tests/approvals/itxn.algo.ts:14 // total: 1000, - intc_2 // 1000 + intc 4 // 1000 itxn_field ConfigAssetTotal - // tests/approvals/itxn.algo.ts:30-37 + // tests/approvals/itxn.algo.ts:13-20 // const assetParams = itxn.assetConfig({ // total: 1000, // assetName: this.name.value, @@ -445,13 +366,972 @@ main_switch_case_0@4: // manager: Global.currentApplicationAddress, // reserve: Global.currentApplicationAddress, // }) - intc_1 // 3 + intc_3 // 3 itxn_field TypeEnum intc_0 // 0 itxn_field Fee - // tests/approvals/itxn.algo.ts:72 + // tests/approvals/itxn.algo.ts:55 // itxn.submitGroup(appCreateParams, assetParams) itxn_submit - // tests/approvals/itxn.algo.ts:15 - // break - b main_after_if_else@15 + retsub + + +// tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() -> void: +test2: + // tests/approvals/itxn.algo.ts:58 + // public test2() { + proto 0 0 + intc_0 // 0 + dupn 2 + pushbytes "" + dup + intc_0 // 0 + pushbytes "" + // tests/approvals/itxn.algo.ts:60 + // if (Txn.numAppArgs) { + txn NumAppArgs + bz test2_else_body@2 + // tests/approvals/itxn.algo.ts:61 + // const args = [Bytes('1'), Bytes('2')] as const + bytec_3 // "1" + frame_bury 0 + bytec 5 // "2" + frame_bury 1 + // tests/approvals/itxn.algo.ts:65 + // appArgs: args, + pushint 2 // 2 + frame_bury 3 + // tests/approvals/itxn.algo.ts:66 + // onCompletion: OnCompleteAction.NoOp, + intc_0 // 0 + frame_bury 6 + pushint 1 // 1 + frame_bury 4 + // tests/approvals/itxn.algo.ts:67 + // note: 'with args param set', + bytec 13 // "with args param set" + +test2_after_if_else@3: + // tests/approvals/itxn.algo.ts:77 + // const createAppTxn = createAppParams.submit() + itxn_begin + itxn_field Note + frame_dig 4 + bz test2_next_field@5 + frame_dig 6 + itxn_field OnCompletion + +test2_next_field@5: + frame_dig 0 + itxn_field ApplicationArgs + frame_dig 1 + itxn_field ApplicationArgs + frame_dig 3 + intc_3 // 3 + >= + // tests/approvals/itxn.algo.ts:77 + // const createAppTxn = createAppParams.submit() + bz test2_next_field@7 + frame_dig 5 + itxn_field ApplicationArgs + +test2_next_field@7: + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + bytec_0 // 0x098101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:62-68 + // createAppParams = itxn.applicationCall({ + // approvalProgram: APPROVE, + // clearStateProgram: APPROVE, + // appArgs: args, + // onCompletion: OnCompleteAction.NoOp, + // note: 'with args param set', + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:77 + // const createAppTxn = createAppParams.submit() + itxn_submit + itxn Note + frame_bury 2 + // tests/approvals/itxn.algo.ts:78 + // assert(createAppTxn.appArgs(0) === Bytes('1'), 'correct args used 1') + itxna ApplicationArgs 0 + bytec_3 // "1" + == + assert // correct args used 1 + // tests/approvals/itxn.algo.ts:79 + // assert(createAppTxn.appArgs(1) === Bytes('2'), 'correct args used 2') + itxna ApplicationArgs 1 + bytec 5 // "2" + == + assert // correct args used 2 + // tests/approvals/itxn.algo.ts:81 + // if (Txn.numAppArgs > 1) { + txn NumAppArgs + pushint 1 // 1 + > + bz test2_after_if_else@11 + // tests/approvals/itxn.algo.ts:82-89 + // const createAppTxn2 = itxn + // .applicationCall({ + // approvalProgram: APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('42')], + // }) + // .submit() + itxn_begin + // tests/approvals/itxn.algo.ts:87 + // appArgs: [Bytes('42')], + bytec 14 // "42" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:86 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + bytec_0 // 0x098101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:82-88 + // const createAppTxn2 = itxn + // .applicationCall({ + // approvalProgram: APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('42')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:82-89 + // const createAppTxn2 = itxn + // .applicationCall({ + // approvalProgram: APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('42')], + // }) + // .submit() + itxn_submit + // tests/approvals/itxn.algo.ts:90 + // assert(createAppTxn2.appArgs(0) === Bytes('42'), 'correct args used 2') + itxna ApplicationArgs 0 + bytec 14 // "42" + == + assert // correct args used 2 + // tests/approvals/itxn.algo.ts:91 + // assert(createAppTxn.note === Bytes('with args param set')) + frame_dig 2 + bytec 13 // "with args param set" + == + assert + +test2_after_if_else@11: + retsub + +test2_else_body@2: + // tests/approvals/itxn.algo.ts:73 + // appArgs: [Bytes('3'), '4', Bytes('5')], + bytec 9 // "3" + frame_bury 0 + bytec 10 // "4" + frame_bury 1 + bytec 11 // "5" + frame_bury 5 + intc_3 // 3 + frame_bury 3 + // tests/approvals/itxn.algo.ts:74 + // note: 'no args param set', + pushbytes "no args param set" + // tests/approvals/itxn.algo.ts:70 + // createAppParams = itxn.applicationCall({ + intc_0 // 0 + frame_bury 4 + b test2_after_if_else@3 + + +// tests/approvals/itxn.algo.ts::ItxnDemoContract.test3() -> void: +test3: + // tests/approvals/itxn.algo.ts:95 + // public test3() { + proto 0 0 + // tests/approvals/itxn.algo.ts:134-151 + // const [app1, app2, app3, app4, app5, app6, app7, app8, app9, app10, app11, app12, app13, app14, app15, app16] = itxn.submitGroup( + // appTxn1, + // appTxn2, + // appTxn3, + // appTxn4, + // appTxn5, + // appTxn6, + // appTxn7, + // appTxn8, + // appTxn9, + // appTxn10, + // appTxn11, + // appTxn12, + // appTxn13, + // appTxn14, + // appTxn15, + // appTxn16, + // ) + itxn_begin + // tests/approvals/itxn.algo.ts:100 + // appArgs: [Bytes('1')], + bytec_3 // "1" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:136 + // appTxn2, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:104 + // appTxn2.set({ appArgs: [Bytes('2')] }) + bytec 5 // "2" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:137 + // appTxn3, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:106 + // appTxn3.set({ appArgs: [Bytes('3')] }) + bytec 9 // "3" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:138 + // appTxn4, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:108 + // appTxn4.set({ appArgs: [Bytes('4')] }) + bytec 10 // "4" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:139 + // appTxn5, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:110 + // appTxn5.set({ appArgs: [Bytes('5')] }) + bytec 11 // "5" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:140 + // appTxn6, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:112 + // appTxn6.set({ appArgs: [Bytes('6')] }) + pushbytes "6" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:141 + // appTxn7, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:114 + // appTxn7.set({ appArgs: [Bytes('7')] }) + pushbytes "7" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:142 + // appTxn8, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:116 + // appTxn8.set({ appArgs: [Bytes('8')] }) + pushbytes "8" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:143 + // appTxn9, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:118 + // appTxn9.set({ appArgs: [Bytes('9')] }) + pushbytes "9" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:144 + // appTxn10, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:120 + // appTxn10.set({ appArgs: [Bytes('10')] }) + bytec 15 // "10" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:145 + // appTxn11, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:122 + // appTxn11.set({ appArgs: [Bytes('11')] }) + bytec 16 // "11" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:146 + // appTxn12, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:124 + // appTxn12.set({ appArgs: [Bytes('12')] }) + bytec 17 // "12" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:147 + // appTxn13, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:126 + // appTxn13.set({ appArgs: [Bytes('13')] }) + bytec 18 // "13" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:148 + // appTxn14, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:128 + // appTxn14.set({ appArgs: [Bytes('14')] }) + bytec 19 // "14" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:149 + // appTxn15, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:130 + // appTxn15.set({ appArgs: [Bytes('15')] }) + bytec 20 // "15" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:150 + // appTxn16, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:132 + // appTxn16.set({ appArgs: [Bytes('16')] }) + bytec 21 // "16" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:134-151 + // const [app1, app2, app3, app4, app5, app6, app7, app8, app9, app10, app11, app12, app13, app14, app15, app16] = itxn.submitGroup( + // appTxn1, + // appTxn2, + // appTxn3, + // appTxn4, + // appTxn5, + // appTxn6, + // appTxn7, + // appTxn8, + // appTxn9, + // appTxn10, + // appTxn11, + // appTxn12, + // appTxn13, + // appTxn14, + // appTxn15, + // appTxn16, + // ) + itxn_submit + // tests/approvals/itxn.algo.ts:153 + // assert(app1.logs(0) === Bytes('1')) + gitxna 0 Logs 0 + bytec_3 // "1" + == + assert + // tests/approvals/itxn.algo.ts:154 + // assert(app2.logs(0) === Bytes('2')) + gitxna 1 Logs 0 + bytec 5 // "2" + == + assert + // tests/approvals/itxn.algo.ts:155 + // assert(app3.logs(0) === Bytes('3')) + gitxna 2 Logs 0 + bytec 9 // "3" + == + assert + // tests/approvals/itxn.algo.ts:156 + // assert(app4.logs(0) === Bytes('4')) + gitxna 3 Logs 0 + bytec 10 // "4" + == + assert + // tests/approvals/itxn.algo.ts:157 + // assert(app5.logs(0) === Bytes('5')) + gitxna 4 Logs 0 + bytec 11 // "5" + == + assert + // tests/approvals/itxn.algo.ts:158 + // assert(app6.logs(0) === Bytes('6')) + gitxna 5 Logs 0 + pushbytes "6" + == + assert + // tests/approvals/itxn.algo.ts:159 + // assert(app7.logs(0) === Bytes('7')) + gitxna 6 Logs 0 + pushbytes "7" + == + assert + // tests/approvals/itxn.algo.ts:160 + // assert(app8.logs(0) === Bytes('8')) + gitxna 7 Logs 0 + pushbytes "8" + == + assert + // tests/approvals/itxn.algo.ts:161 + // assert(app9.logs(0) === Bytes('9')) + gitxna 8 Logs 0 + pushbytes "9" + == + assert + // tests/approvals/itxn.algo.ts:162 + // assert(app10.logs(0) === Bytes('10')) + gitxna 9 Logs 0 + bytec 15 // "10" + == + assert + // tests/approvals/itxn.algo.ts:163 + // assert(app11.logs(0) === Bytes('11')) + gitxna 10 Logs 0 + bytec 16 // "11" + == + assert + // tests/approvals/itxn.algo.ts:164 + // assert(app12.logs(0) === Bytes('12')) + gitxna 11 Logs 0 + bytec 17 // "12" + == + assert + // tests/approvals/itxn.algo.ts:165 + // assert(app13.logs(0) === Bytes('13')) + gitxna 12 Logs 0 + bytec 18 // "13" + == + assert + // tests/approvals/itxn.algo.ts:166 + // assert(app14.logs(0) === Bytes('14')) + gitxna 13 Logs 0 + bytec 19 // "14" + == + assert + // tests/approvals/itxn.algo.ts:167 + // assert(app15.logs(0) === Bytes('15')) + gitxna 14 Logs 0 + bytec 20 // "15" + == + assert + // tests/approvals/itxn.algo.ts:168 + // assert(app16.logs(0) === Bytes('16')) + itxna Logs 0 + bytec 21 // "16" + == + assert + retsub + + +// tests/approvals/itxn.algo.ts::ItxnDemoContract.test4() -> void: +test4: + // tests/approvals/itxn.algo.ts:171 + // public test4() { + proto 0 0 + // tests/approvals/itxn.algo.ts:172 + // const lotsOfBytes = op.bzero(2044) + pushint 2044 // 2044 + bzero + // tests/approvals/itxn.algo.ts:174 + // const approval2 = Bytes.fromHex('80' + 'FC0f') + pushbytes 0x80fc0f + // tests/approvals/itxn.algo.ts:174-175 + // const approval2 = Bytes.fromHex('80' + 'FC0f') + // .concat(lotsOfBytes) + swap + concat + // tests/approvals/itxn.algo.ts:176 + // .concat(Bytes.fromHex('48')) + pushbytes 0x48 + // tests/approvals/itxn.algo.ts:174-176 + // const approval2 = Bytes.fromHex('80' + 'FC0f') + // .concat(lotsOfBytes) + // .concat(Bytes.fromHex('48')) + concat + // tests/approvals/itxn.algo.ts:185 + // const app1 = appTxn1.submit() + itxn_begin + // tests/approvals/itxn.algo.ts:183 + // extraProgramPages: 3, + intc_3 // 3 + itxn_field ExtraProgramPages + // tests/approvals/itxn.algo.ts:182 + // appArgs: [Bytes('1')], + bytec_3 // "1" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:181 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + bytec_0 // 0x098101 + itxn_field ApprovalProgramPages + dup + itxn_field ApprovalProgramPages + dup + itxn_field ApprovalProgramPages + dup + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:178-184 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: [approval1, approval2, approval2, approval2], + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // extraProgramPages: 3, + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:185 + // const app1 = appTxn1.submit() + itxn_submit + itxn NumApprovalProgramPages + itxn NumClearStateProgramPages + itxn ExtraProgramPages + // tests/approvals/itxn.algo.ts:186 + // assert(app1.extraProgramPages === 3, 'extra pages = 3') + intc_3 // 3 + == + assert // extra pages = 3 + // tests/approvals/itxn.algo.ts:187 + // assert(app1.numApprovalProgramPages === 2, 'approval pages = 2') + swap + pushint 2 // 2 + == + assert // approval pages = 2 + // tests/approvals/itxn.algo.ts:188 + // assert(app1.approvalProgramPages(0) === approval1.concat(approval2).concat(approval2.slice(0, -3)), 'expected approval page 0') + itxna ApprovalProgramPages 0 + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + // tests/approvals/itxn.algo.ts:188 + // assert(app1.approvalProgramPages(0) === approval1.concat(approval2).concat(approval2.slice(0, -3)), 'expected approval page 0') + dig 3 + concat + dig 3 + len + intc_0 // 0 + dig 1 + >= + intc_0 // 0 + dig 2 + uncover 2 + select + intc_3 // 3 + dig 2 + >= + intc_3 // 3 + dig 3 + uncover 2 + select + dig 2 + swap + - + dup + dig 2 + < + dig 1 + dig 3 + uncover 2 + select + dig 7 + uncover 3 + uncover 2 + substring3 + uncover 3 + swap + concat + uncover 3 + == + assert // expected approval page 0 + // tests/approvals/itxn.algo.ts:189 + // assert(app1.approvalProgramPages(1) === approval2.slice(-3).concat(approval2), 'expected approval page 1') + itxna ApprovalProgramPages 1 + dig 4 + uncover 2 + uncover 3 + substring3 + uncover 3 + concat + == + assert // expected approval page 1 + // tests/approvals/itxn.algo.ts:190 + // assert(app1.numClearStateProgramPages === 1, 'clear state pages = 1') + pushint 1 // 1 + == + assert // clear state pages = 1 + // tests/approvals/itxn.algo.ts:191 + // assert(app1.clearStateProgramPages(0) === APPROVE, 'expected clear state page') + itxna ClearStateProgramPages 0 + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + // tests/approvals/itxn.algo.ts:191 + // assert(app1.clearStateProgramPages(0) === APPROVE, 'expected clear state page') + == + assert // expected clear state page + retsub diff --git a/tests/approvals/out/o1/itxn/ItxnDemoContract.arc32.json b/tests/approvals/out/o1/itxn/ItxnDemoContract.arc32.json new file mode 100644 index 000000000..d05c7497f --- /dev/null +++ b/tests/approvals/out/o1/itxn/ItxnDemoContract.arc32.json @@ -0,0 +1,94 @@ +{ + "hints": { + "test1()void": { + "call_config": { + "no_op": "CALL" + } + }, + "test2()void": { + "call_config": { + "no_op": "CALL" + } + }, + "test3()void": { + "call_config": { + "no_op": "CALL" + } + }, + "test4()void": { + "call_config": { + "no_op": "CALL" + } + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMCA2IDUgMyAxMDAwCiAgICBieXRlY2Jsb2NrIDB4MDk4MTAxIDB4MDkzNjFhMDBiMDgxMDEgIm5hbWUiICIxIiAidW5pdCIgIjIiICJBU1QxIiAiQVNUMiIgIkFTVDMiICIzIiAiNCIgIjUiICIzcmQiICJ3aXRoIGFyZ3MgcGFyYW0gc2V0IiAiNDIiICIxMCIgIjExIiAiMTIiICIxMyIgIjE0IiAiMTUiICIxNiIKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OAogICAgLy8gbmFtZSA9IEdsb2JhbFN0YXRlKHsgaW5pdGlhbFZhbHVlOiBCeXRlcygpIH0pCiAgICBieXRlY18yIC8vICJuYW1lIgogICAgcHVzaGJ5dGVzIDB4CiAgICBhcHBfZ2xvYmFsX3B1dAoKbWFpbl9hZnRlcl9pZl9lbHNlQDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjcKICAgIC8vIGV4cG9ydCBjbGFzcyBJdHhuRGVtb0NvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE51bUFwcEFyZ3MKICAgIGJ6IG1haW5fYmFyZV9yb3V0aW5nQDExCiAgICBwdXNoYnl0ZXNzIDB4MjAyNTRmOTEgMHhmMTkwODUyNCAweGRmOTIwZjM3IDB4M2Q0NjM0NWMgLy8gbWV0aG9kICJ0ZXN0MSgpdm9pZCIsIG1ldGhvZCAidGVzdDIoKXZvaWQiLCBtZXRob2QgInRlc3QzKCl2b2lkIiwgbWV0aG9kICJ0ZXN0NCgpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIG1haW5fdGVzdDFfcm91dGVANSBtYWluX3Rlc3QyX3JvdXRlQDYgbWFpbl90ZXN0M19yb3V0ZUA3IG1haW5fdGVzdDRfcm91dGVAOAoKbWFpbl9hZnRlcl9pZl9lbHNlQDE1OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3CiAgICAvLyBleHBvcnQgY2xhc3MgSXR4bkRlbW9Db250cmFjdCBleHRlbmRzIENvbnRyYWN0IHsKICAgIGludGNfMCAvLyAwCiAgICByZXR1cm4KCm1haW5fdGVzdDRfcm91dGVAODoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcxCiAgICAvLyBwdWJsaWMgdGVzdDQoKSB7CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgdGVzdDQKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4KCm1haW5fdGVzdDNfcm91dGVANzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTUKICAgIC8vIHB1YmxpYyB0ZXN0MygpIHsKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgY2FsbHN1YiB0ZXN0MwogICAgcHVzaGludCAxIC8vIDEKICAgIHJldHVybgoKbWFpbl90ZXN0Ml9yb3V0ZUA2OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1OAogICAgLy8gcHVibGljIHRlc3QyKCkgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICBjYWxsc3ViIHRlc3QyCiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCgptYWluX3Rlc3QxX3JvdXRlQDU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwCiAgICAvLyBwdWJsaWMgdGVzdDEoKSB7CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgdGVzdDEKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4KCm1haW5fYmFyZV9yb3V0aW5nQDExOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3CiAgICAvLyBleHBvcnQgY2xhc3MgSXR4bkRlbW9Db250cmFjdCBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBPbkNvbXBsZXRpb24KICAgIGJueiBtYWluX2FmdGVyX2lmX2Vsc2VAMTUKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAhCiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIGNyZWF0aW5nCiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0MSgpIC0+IHZvaWQ6CnRlc3QxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMAogICAgLy8gcHVibGljIHRlc3QxKCkgewogICAgcHJvdG8gMCAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgKICAgIC8vIG5hbWUgPSBHbG9iYWxTdGF0ZSh7IGluaXRpYWxWYWx1ZTogQnl0ZXMoKSB9KQogICAgYnl0ZWNfMiAvLyAibmFtZSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEKICAgIC8vIHRoaXMubmFtZS52YWx1ZSA9IEJ5dGVzKCdBU1QxJykKICAgIGJ5dGVjIDYgLy8gIkFTVDEiCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNQogICAgLy8gYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICBpbnRjXzAgLy8gMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4CiAgICAvLyBuYW1lID0gR2xvYmFsU3RhdGUoeyBpbml0aWFsVmFsdWU6IEJ5dGVzKCkgfSkKICAgIGJ5dGVjXzIgLy8gIm5hbWUiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1CiAgICAvLyBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4CiAgICAvLyBtYW5hZ2VyOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5CiAgICAvLyByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIGR1cAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4CiAgICAvLyBuYW1lID0gR2xvYmFsU3RhdGUoeyBpbml0aWFsVmFsdWU6IEJ5dGVzKCkgfSkKICAgIGJ5dGVjXzIgLy8gIm5hbWUiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIyCiAgICAvLyB0aGlzLm5hbWUudmFsdWUgPSBCeXRlcygnQVNUMicpCiAgICBieXRlYyA3IC8vICJBU1QyIgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjMKICAgIC8vIGNvbnN0IGFzc2V0MV90eG4gPSBhc3NldFBhcmFtcy5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgZHVwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0UmVzZXJ2ZQogICAgZGlnIDEKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRNYW5hZ2VyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3CiAgICAvLyBkZWNpbWFsczogMywKICAgIGludGNfMyAvLyAzCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0RGVjaW1hbHMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTYKICAgIC8vIHVuaXROYW1lOiAndW5pdCcsCiAgICBieXRlYyA0IC8vICJ1bml0IgogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFVuaXROYW1lCiAgICB1bmNvdmVyIDIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0CiAgICAvLyB0b3RhbDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMtMjAKICAgIC8vIGNvbnN0IGFzc2V0UGFyYW1zID0gaXR4bi5hc3NldENvbmZpZyh7CiAgICAvLyAgIHRvdGFsOiAxMDAwLAogICAgLy8gICBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIC8vICAgdW5pdE5hbWU6ICd1bml0JywKICAgIC8vICAgZGVjaW1hbHM6IDMsCiAgICAvLyAgIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vIH0pCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIzCiAgICAvLyBjb25zdCBhc3NldDFfdHhuID0gYXNzZXRQYXJhbXMuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIENvbmZpZ0Fzc2V0TmFtZQogICAgaXR4biBDcmVhdGVkQXNzZXRJRAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyNQogICAgLy8gYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICBpbnRjXzAgLy8gMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4CiAgICAvLyBuYW1lID0gR2xvYmFsU3RhdGUoeyBpbml0aWFsVmFsdWU6IEJ5dGVzKCkgfSkKICAgIGJ5dGVjXzIgLy8gIm5hbWUiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI1CiAgICAvLyBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI3CiAgICAvLyBjb25zdCBhc3NldDJfdHhuID0gYXNzZXRQYXJhbXMuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIGRpZyAzCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0UmVzZXJ2ZQogICAgZGlnIDQKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRNYW5hZ2VyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3CiAgICAvLyBkZWNpbWFsczogMywKICAgIGludGNfMyAvLyAzCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0RGVjaW1hbHMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTYKICAgIC8vIHVuaXROYW1lOiAndW5pdCcsCiAgICBieXRlYyA0IC8vICJ1bml0IgogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFVuaXROYW1lCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TmFtZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNAogICAgLy8gdG90YWw6IDEwMDAsCiAgICBpbnRjIDQgLy8gMTAwMAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFRvdGFsCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzLTIwCiAgICAvLyBjb25zdCBhc3NldFBhcmFtcyA9IGl0eG4uYXNzZXRDb25maWcoewogICAgLy8gICB0b3RhbDogMTAwMCwKICAgIC8vICAgYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICAvLyAgIHVuaXROYW1lOiAndW5pdCcsCiAgICAvLyAgIGRlY2ltYWxzOiAzLAogICAgLy8gICBtYW5hZ2VyOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vICAgcmVzZXJ2ZTogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyB9KQogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyNwogICAgLy8gY29uc3QgYXNzZXQyX3R4biA9IGFzc2V0UGFyYW1zLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBDb25maWdBc3NldE5hbWUKICAgIGl0eG4gQ3JlYXRlZEFzc2V0SUQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjkKICAgIC8vIGFzc2VydChhc3NldDFfdHhuLmFzc2V0TmFtZSA9PT0gQnl0ZXMoJ0FTVDEnKSwgJ2Fzc2V0MV90eG4gaXMgY29ycmVjdCcpCiAgICB1bmNvdmVyIDMKICAgIGJ5dGVjIDYgLy8gIkFTVDEiCiAgICA9PQogICAgYXNzZXJ0IC8vIGFzc2V0MV90eG4gaXMgY29ycmVjdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozMAogICAgLy8gYXNzZXJ0KGFzc2V0Ml90eG4uYXNzZXROYW1lID09PSBCeXRlcygnQVNUMicpLCAnYXNzZXQyX3R4biBpcyBjb3JyZWN0JykKICAgIHN3YXAKICAgIGJ5dGVjIDcgLy8gIkFTVDIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGFzc2V0Ml90eG4gaXMgY29ycmVjdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozMQogICAgLy8gYXNzZXJ0KGFzc2V0MV90eG4uY3JlYXRlZEFzc2V0Lm5hbWUgPT09IEJ5dGVzKCdBU1QxJyksICdjcmVhdGVkIGFzc2V0IDEgaXMgY29ycmVjdCcpCiAgICBzd2FwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TmFtZQogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgYnl0ZWMgNiAvLyAiQVNUMSIKICAgID09CiAgICBhc3NlcnQgLy8gY3JlYXRlZCBhc3NldCAxIGlzIGNvcnJlY3QKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzIKICAgIC8vIGFzc2VydChhc3NldDJfdHhuLmNyZWF0ZWRBc3NldC5uYW1lID09PSBCeXRlcygnQVNUMicpLCAnY3JlYXRlZCBhc3NldCAyIGlzIGNvcnJlY3QnKQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE5hbWUKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIGJ5dGVjIDcgLy8gIkFTVDIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNyZWF0ZWQgYXNzZXQgMiBpcyBjb3JyZWN0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQ0CiAgICAvLyBjb25zdCBbYXBwQ3JlYXRlVHhuLCBhc3NldDNfdHhuXSA9IGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fYmVnaW4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzQtMzgKICAgIC8vIGNvbnN0IGFwcENyZWF0ZVBhcmFtcyA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgZmVlOiAwLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjM3CiAgICAvLyBmZWU6IDAsCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDQKICAgIC8vIGNvbnN0IFthcHBDcmVhdGVUeG4sIGFzc2V0M190eG5dID0gaXR4bi5zdWJtaXRHcm91cChhcHBDcmVhdGVQYXJhbXMsIGFzc2V0UGFyYW1zKQogICAgaXR4bl9uZXh0CiAgICBkdXAKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRSZXNlcnZlCiAgICBkaWcgMQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE1hbmFnZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcKICAgIC8vIGRlY2ltYWxzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXREZWNpbWFscwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNgogICAgLy8gdW5pdE5hbWU6ICd1bml0JywKICAgIGJ5dGVjIDQgLy8gInVuaXQiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VW5pdE5hbWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDEKICAgIC8vIGFzc2V0TmFtZTogJ0FTVDMnLAogICAgYnl0ZWMgOCAvLyAiQVNUMyIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0CiAgICAvLyB0b3RhbDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMtMjAKICAgIC8vIGNvbnN0IGFzc2V0UGFyYW1zID0gaXR4bi5hc3NldENvbmZpZyh7CiAgICAvLyAgIHRvdGFsOiAxMDAwLAogICAgLy8gICBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIC8vICAgdW5pdE5hbWU6ICd1bml0JywKICAgIC8vICAgZGVjaW1hbHM6IDMsCiAgICAvLyAgIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vIH0pCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQ0CiAgICAvLyBjb25zdCBbYXBwQ3JlYXRlVHhuLCBhc3NldDNfdHhuXSA9IGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIENvbmZpZ0Fzc2V0TmFtZQogICAgZ2l0eG4gMCBDcmVhdGVkQXBwbGljYXRpb25JRAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0NgogICAgLy8gYXNzZXJ0KGFwcENyZWF0ZVR4bi5jcmVhdGVkQXBwLCAnYXBwIGlzIGNyZWF0ZWQnKQogICAgYXNzZXJ0IC8vIGFwcCBpcyBjcmVhdGVkCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQ3CiAgICAvLyBhc3NlcnQoYXNzZXQzX3R4bi5hc3NldE5hbWUgPT09IEJ5dGVzKCdBU1QzJyksICdhc3NldDNfdHhuIGlzIGNvcnJlY3QnKQogICAgYnl0ZWMgOCAvLyAiQVNUMyIKICAgID09CiAgICBhc3NlcnQgLy8gYXNzZXQzX3R4biBpcyBjb3JyZWN0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjU1CiAgICAvLyBpdHhuLnN1Ym1pdEdyb3VwKGFwcENyZWF0ZVBhcmFtcywgYXNzZXRQYXJhbXMpCiAgICBpdHhuX2JlZ2luCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUwCiAgICAvLyBub3RlOiAnM3JkJywKICAgIGJ5dGVjIDEyIC8vICIzcmQiCiAgICBpdHhuX2ZpZWxkIE5vdGUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzQtMzgKICAgIC8vIGNvbnN0IGFwcENyZWF0ZVBhcmFtcyA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgZmVlOiAwLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjM3CiAgICAvLyBmZWU6IDAsCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTUKICAgIC8vIGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1MwogICAgLy8gbm90ZTogJzNyZCcsCiAgICBieXRlYyAxMiAvLyAiM3JkIgogICAgaXR4bl9maWVsZCBOb3RlCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0UmVzZXJ2ZQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE1hbmFnZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcKICAgIC8vIGRlY2ltYWxzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXREZWNpbWFscwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNgogICAgLy8gdW5pdE5hbWU6ICd1bml0JywKICAgIGJ5dGVjIDQgLy8gInVuaXQiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VW5pdE5hbWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDEKICAgIC8vIGFzc2V0TmFtZTogJ0FTVDMnLAogICAgYnl0ZWMgOCAvLyAiQVNUMyIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0CiAgICAvLyB0b3RhbDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMtMjAKICAgIC8vIGNvbnN0IGFzc2V0UGFyYW1zID0gaXR4bi5hc3NldENvbmZpZyh7CiAgICAvLyAgIHRvdGFsOiAxMDAwLAogICAgLy8gICBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIC8vICAgdW5pdE5hbWU6ICd1bml0JywKICAgIC8vICAgZGVjaW1hbHM6IDMsCiAgICAvLyAgIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vIH0pCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjU1CiAgICAvLyBpdHhuLnN1Ym1pdEdyb3VwKGFwcENyZWF0ZVBhcmFtcywgYXNzZXRQYXJhbXMpCiAgICBpdHhuX3N1Ym1pdAogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0MigpIC0+IHZvaWQ6CnRlc3QyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1OAogICAgLy8gcHVibGljIHRlc3QyKCkgewogICAgcHJvdG8gMCAwCiAgICBpbnRjXzAgLy8gMAogICAgZHVwbiAyCiAgICBwdXNoYnl0ZXMgIiIKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIHB1c2hieXRlcyAiIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo2MAogICAgLy8gaWYgKFR4bi5udW1BcHBBcmdzKSB7CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogdGVzdDJfZWxzZV9ib2R5QDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjEKICAgIC8vIGNvbnN0IGFyZ3MgPSBbQnl0ZXMoJzEnKSwgQnl0ZXMoJzInKV0gYXMgY29uc3QKICAgIGJ5dGVjXzMgLy8gIjEiCiAgICBmcmFtZV9idXJ5IDAKICAgIGJ5dGVjIDUgLy8gIjIiCiAgICBmcmFtZV9idXJ5IDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjUKICAgIC8vIGFwcEFyZ3M6IGFyZ3MsCiAgICBwdXNoaW50IDIgLy8gMgogICAgZnJhbWVfYnVyeSAzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjY2CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uTm9PcCwKICAgIGludGNfMCAvLyAwCiAgICBmcmFtZV9idXJ5IDYKICAgIHB1c2hpbnQgMSAvLyAxCiAgICBmcmFtZV9idXJ5IDQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjcKICAgIC8vIG5vdGU6ICd3aXRoIGFyZ3MgcGFyYW0gc2V0JywKICAgIGJ5dGVjIDEzIC8vICJ3aXRoIGFyZ3MgcGFyYW0gc2V0IgoKdGVzdDJfYWZ0ZXJfaWZfZWxzZUAzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3NwogICAgLy8gY29uc3QgY3JlYXRlQXBwVHhuID0gY3JlYXRlQXBwUGFyYW1zLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICBpdHhuX2ZpZWxkIE5vdGUKICAgIGZyYW1lX2RpZyA0CiAgICBieiB0ZXN0Ml9uZXh0X2ZpZWxkQDUKICAgIGZyYW1lX2RpZyA2CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKdGVzdDJfbmV4dF9maWVsZEA1OgogICAgZnJhbWVfZGlnIDAKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBmcmFtZV9kaWcgMQogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGZyYW1lX2RpZyAzCiAgICBpbnRjXzMgLy8gMwogICAgPj0KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzcKICAgIC8vIGNvbnN0IGNyZWF0ZUFwcFR4biA9IGNyZWF0ZUFwcFBhcmFtcy5zdWJtaXQoKQogICAgYnogdGVzdDJfbmV4dF9maWVsZEA3CiAgICBmcmFtZV9kaWcgNQogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCnRlc3QyX25leHRfZmllbGRANzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjItNjgKICAgIC8vIGNyZWF0ZUFwcFBhcmFtcyA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgYXBwQXJnczogYXJncywKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLk5vT3AsCiAgICAvLyAgIG5vdGU6ICd3aXRoIGFyZ3MgcGFyYW0gc2V0JywKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjc3CiAgICAvLyBjb25zdCBjcmVhdGVBcHBUeG4gPSBjcmVhdGVBcHBQYXJhbXMuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIE5vdGUKICAgIGZyYW1lX2J1cnkgMgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3OAogICAgLy8gYXNzZXJ0KGNyZWF0ZUFwcFR4bi5hcHBBcmdzKDApID09PSBCeXRlcygnMScpLCAnY29ycmVjdCBhcmdzIHVzZWQgMScpCiAgICBpdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgYnl0ZWNfMyAvLyAiMSIKICAgID09CiAgICBhc3NlcnQgLy8gY29ycmVjdCBhcmdzIHVzZWQgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3OQogICAgLy8gYXNzZXJ0KGNyZWF0ZUFwcFR4bi5hcHBBcmdzKDEpID09PSBCeXRlcygnMicpLCAnY29ycmVjdCBhcmdzIHVzZWQgMicpCiAgICBpdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnl0ZWMgNSAvLyAiMiIKICAgID09CiAgICBhc3NlcnQgLy8gY29ycmVjdCBhcmdzIHVzZWQgMgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4MQogICAgLy8gaWYgKFR4bi5udW1BcHBBcmdzID4gMSkgewogICAgdHhuIE51bUFwcEFyZ3MKICAgIHB1c2hpbnQgMSAvLyAxCiAgICA+CiAgICBieiB0ZXN0Ml9hZnRlcl9pZl9lbHNlQDExCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgyLTg5CiAgICAvLyBjb25zdCBjcmVhdGVBcHBUeG4yID0gaXR4bgogICAgLy8gICAuYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgICBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICAgIGFwcEFyZ3M6IFtCeXRlcygnNDInKV0sCiAgICAvLyAgIH0pCiAgICAvLyAgIC5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4NwogICAgLy8gYXBwQXJnczogW0J5dGVzKCc0MicpXSwKICAgIGJ5dGVjIDE0IC8vICI0MiIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjg2CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6ODItODgKICAgIC8vIGNvbnN0IGNyZWF0ZUFwcFR4bjIgPSBpdHhuCiAgICAvLyAgIC5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICAgIGFwcHJvdmFsUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgICAgYXBwQXJnczogW0J5dGVzKCc0MicpXSwKICAgIC8vICAgfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6ODItODkKICAgIC8vIGNvbnN0IGNyZWF0ZUFwcFR4bjIgPSBpdHhuCiAgICAvLyAgIC5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICAgIGFwcHJvdmFsUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgICAgYXBwQXJnczogW0J5dGVzKCc0MicpXSwKICAgIC8vICAgfSkKICAgIC8vICAgLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5MAogICAgLy8gYXNzZXJ0KGNyZWF0ZUFwcFR4bjIuYXBwQXJncygwKSA9PT0gQnl0ZXMoJzQyJyksICdjb3JyZWN0IGFyZ3MgdXNlZCAyJykKICAgIGl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBieXRlYyAxNCAvLyAiNDIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNvcnJlY3QgYXJncyB1c2VkIDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTEKICAgIC8vIGFzc2VydChjcmVhdGVBcHBUeG4ubm90ZSA9PT0gQnl0ZXMoJ3dpdGggYXJncyBwYXJhbSBzZXQnKSkKICAgIGZyYW1lX2RpZyAyCiAgICBieXRlYyAxMyAvLyAid2l0aCBhcmdzIHBhcmFtIHNldCIKICAgID09CiAgICBhc3NlcnQKCnRlc3QyX2FmdGVyX2lmX2Vsc2VAMTE6CiAgICByZXRzdWIKCnRlc3QyX2Vsc2VfYm9keUAyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3MwogICAgLy8gYXBwQXJnczogW0J5dGVzKCczJyksICc0JywgQnl0ZXMoJzUnKV0sCiAgICBieXRlYyA5IC8vICIzIgogICAgZnJhbWVfYnVyeSAwCiAgICBieXRlYyAxMCAvLyAiNCIKICAgIGZyYW1lX2J1cnkgMQogICAgYnl0ZWMgMTEgLy8gIjUiCiAgICBmcmFtZV9idXJ5IDUKICAgIGludGNfMyAvLyAzCiAgICBmcmFtZV9idXJ5IDMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzQKICAgIC8vIG5vdGU6ICdubyBhcmdzIHBhcmFtIHNldCcsCiAgICBwdXNoYnl0ZXMgIm5vIGFyZ3MgcGFyYW0gc2V0IgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3MAogICAgLy8gY3JlYXRlQXBwUGFyYW1zID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgaW50Y18wIC8vIDAKICAgIGZyYW1lX2J1cnkgNAogICAgYiB0ZXN0Ml9hZnRlcl9pZl9lbHNlQDMKCgovLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzKCkgLT4gdm9pZDoKdGVzdDM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk1CiAgICAvLyBwdWJsaWMgdGVzdDMoKSB7CiAgICBwcm90byAwIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTM0LTE1MQogICAgLy8gY29uc3QgW2FwcDEsIGFwcDIsIGFwcDMsIGFwcDQsIGFwcDUsIGFwcDYsIGFwcDcsIGFwcDgsIGFwcDksIGFwcDEwLCBhcHAxMSwgYXBwMTIsIGFwcDEzLCBhcHAxNCwgYXBwMTUsIGFwcDE2XSA9IGl0eG4uc3VibWl0R3JvdXAoCiAgICAvLyAgIGFwcFR4bjEsCiAgICAvLyAgIGFwcFR4bjIsCiAgICAvLyAgIGFwcFR4bjMsCiAgICAvLyAgIGFwcFR4bjQsCiAgICAvLyAgIGFwcFR4bjUsCiAgICAvLyAgIGFwcFR4bjYsCiAgICAvLyAgIGFwcFR4bjcsCiAgICAvLyAgIGFwcFR4bjgsCiAgICAvLyAgIGFwcFR4bjksCiAgICAvLyAgIGFwcFR4bjEwLAogICAgLy8gICBhcHBUeG4xMSwKICAgIC8vICAgYXBwVHhuMTIsCiAgICAvLyAgIGFwcFR4bjEzLAogICAgLy8gICBhcHBUeG4xNCwKICAgIC8vICAgYXBwVHhuMTUsCiAgICAvLyAgIGFwcFR4bjE2LAogICAgLy8gKQogICAgaXR4bl9iZWdpbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDAKICAgIC8vIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIGJ5dGVjXzMgLy8gIjEiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTM2CiAgICAvLyBhcHBUeG4yLAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwNAogICAgLy8gYXBwVHhuMi5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzInKV0gfSkKICAgIGJ5dGVjIDUgLy8gIjIiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTM3CiAgICAvLyBhcHBUeG4zLAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwNgogICAgLy8gYXBwVHhuMy5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzMnKV0gfSkKICAgIGJ5dGVjIDkgLy8gIjMiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTM4CiAgICAvLyBhcHBUeG40LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwOAogICAgLy8gYXBwVHhuNC5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzQnKV0gfSkKICAgIGJ5dGVjIDEwIC8vICI0IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzOQogICAgLy8gYXBwVHhuNSwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTAKICAgIC8vIGFwcFR4bjUuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc1JyldIH0pCiAgICBieXRlYyAxMSAvLyAiNSIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDAKICAgIC8vIGFwcFR4bjYsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEyCiAgICAvLyBhcHBUeG42LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnNicpXSB9KQogICAgcHVzaGJ5dGVzICI2IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0MQogICAgLy8gYXBwVHhuNywKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTQKICAgIC8vIGFwcFR4bjcuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc3JyldIH0pCiAgICBwdXNoYnl0ZXMgIjciCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQyCiAgICAvLyBhcHBUeG44LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExNgogICAgLy8gYXBwVHhuOC5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzgnKV0gfSkKICAgIHB1c2hieXRlcyAiOCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDMKICAgIC8vIGFwcFR4bjksCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTE4CiAgICAvLyBhcHBUeG45LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnOScpXSB9KQogICAgcHVzaGJ5dGVzICI5IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0NAogICAgLy8gYXBwVHhuMTAsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTIwCiAgICAvLyBhcHBUeG4xMC5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzEwJyldIH0pCiAgICBieXRlYyAxNSAvLyAiMTAiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQ1CiAgICAvLyBhcHBUeG4xMSwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMjIKICAgIC8vIGFwcFR4bjExLnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTEnKV0gfSkKICAgIGJ5dGVjIDE2IC8vICIxMSIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDYKICAgIC8vIGFwcFR4bjEyLAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEyNAogICAgLy8gYXBwVHhuMTIuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcxMicpXSB9KQogICAgYnl0ZWMgMTcgLy8gIjEyIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0NwogICAgLy8gYXBwVHhuMTMsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTI2CiAgICAvLyBhcHBUeG4xMy5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzEzJyldIH0pCiAgICBieXRlYyAxOCAvLyAiMTMiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQ4CiAgICAvLyBhcHBUeG4xNCwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMjgKICAgIC8vIGFwcFR4bjE0LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTQnKV0gfSkKICAgIGJ5dGVjIDE5IC8vICIxNCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDkKICAgIC8vIGFwcFR4bjE1LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzMAogICAgLy8gYXBwVHhuMTUuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcxNScpXSB9KQogICAgYnl0ZWMgMjAgLy8gIjE1IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1MAogICAgLy8gYXBwVHhuMTYsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMyCiAgICAvLyBhcHBUeG4xNi5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzE2JyldIH0pCiAgICBieXRlYyAyMSAvLyAiMTYiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTM0LTE1MQogICAgLy8gY29uc3QgW2FwcDEsIGFwcDIsIGFwcDMsIGFwcDQsIGFwcDUsIGFwcDYsIGFwcDcsIGFwcDgsIGFwcDksIGFwcDEwLCBhcHAxMSwgYXBwMTIsIGFwcDEzLCBhcHAxNCwgYXBwMTUsIGFwcDE2XSA9IGl0eG4uc3VibWl0R3JvdXAoCiAgICAvLyAgIGFwcFR4bjEsCiAgICAvLyAgIGFwcFR4bjIsCiAgICAvLyAgIGFwcFR4bjMsCiAgICAvLyAgIGFwcFR4bjQsCiAgICAvLyAgIGFwcFR4bjUsCiAgICAvLyAgIGFwcFR4bjYsCiAgICAvLyAgIGFwcFR4bjcsCiAgICAvLyAgIGFwcFR4bjgsCiAgICAvLyAgIGFwcFR4bjksCiAgICAvLyAgIGFwcFR4bjEwLAogICAgLy8gICBhcHBUeG4xMSwKICAgIC8vICAgYXBwVHhuMTIsCiAgICAvLyAgIGFwcFR4bjEzLAogICAgLy8gICBhcHBUeG4xNCwKICAgIC8vICAgYXBwVHhuMTUsCiAgICAvLyAgIGFwcFR4bjE2LAogICAgLy8gKQogICAgaXR4bl9zdWJtaXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTUzCiAgICAvLyBhc3NlcnQoYXBwMS5sb2dzKDApID09PSBCeXRlcygnMScpKQogICAgZ2l0eG5hIDAgTG9ncyAwCiAgICBieXRlY18zIC8vICIxIgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTQKICAgIC8vIGFzc2VydChhcHAyLmxvZ3MoMCkgPT09IEJ5dGVzKCcyJykpCiAgICBnaXR4bmEgMSBMb2dzIDAKICAgIGJ5dGVjIDUgLy8gIjIiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1NQogICAgLy8gYXNzZXJ0KGFwcDMubG9ncygwKSA9PT0gQnl0ZXMoJzMnKSkKICAgIGdpdHhuYSAyIExvZ3MgMAogICAgYnl0ZWMgOSAvLyAiMyIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU2CiAgICAvLyBhc3NlcnQoYXBwNC5sb2dzKDApID09PSBCeXRlcygnNCcpKQogICAgZ2l0eG5hIDMgTG9ncyAwCiAgICBieXRlYyAxMCAvLyAiNCIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU3CiAgICAvLyBhc3NlcnQoYXBwNS5sb2dzKDApID09PSBCeXRlcygnNScpKQogICAgZ2l0eG5hIDQgTG9ncyAwCiAgICBieXRlYyAxMSAvLyAiNSIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU4CiAgICAvLyBhc3NlcnQoYXBwNi5sb2dzKDApID09PSBCeXRlcygnNicpKQogICAgZ2l0eG5hIDUgTG9ncyAwCiAgICBwdXNoYnl0ZXMgIjYiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1OQogICAgLy8gYXNzZXJ0KGFwcDcubG9ncygwKSA9PT0gQnl0ZXMoJzcnKSkKICAgIGdpdHhuYSA2IExvZ3MgMAogICAgcHVzaGJ5dGVzICI3IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjAKICAgIC8vIGFzc2VydChhcHA4LmxvZ3MoMCkgPT09IEJ5dGVzKCc4JykpCiAgICBnaXR4bmEgNyBMb2dzIDAKICAgIHB1c2hieXRlcyAiOCIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTYxCiAgICAvLyBhc3NlcnQoYXBwOS5sb2dzKDApID09PSBCeXRlcygnOScpKQogICAgZ2l0eG5hIDggTG9ncyAwCiAgICBwdXNoYnl0ZXMgIjkiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2MgogICAgLy8gYXNzZXJ0KGFwcDEwLmxvZ3MoMCkgPT09IEJ5dGVzKCcxMCcpKQogICAgZ2l0eG5hIDkgTG9ncyAwCiAgICBieXRlYyAxNSAvLyAiMTAiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2MwogICAgLy8gYXNzZXJ0KGFwcDExLmxvZ3MoMCkgPT09IEJ5dGVzKCcxMScpKQogICAgZ2l0eG5hIDEwIExvZ3MgMAogICAgYnl0ZWMgMTYgLy8gIjExIgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjQKICAgIC8vIGFzc2VydChhcHAxMi5sb2dzKDApID09PSBCeXRlcygnMTInKSkKICAgIGdpdHhuYSAxMSBMb2dzIDAKICAgIGJ5dGVjIDE3IC8vICIxMiIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTY1CiAgICAvLyBhc3NlcnQoYXBwMTMubG9ncygwKSA9PT0gQnl0ZXMoJzEzJykpCiAgICBnaXR4bmEgMTIgTG9ncyAwCiAgICBieXRlYyAxOCAvLyAiMTMiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2NgogICAgLy8gYXNzZXJ0KGFwcDE0LmxvZ3MoMCkgPT09IEJ5dGVzKCcxNCcpKQogICAgZ2l0eG5hIDEzIExvZ3MgMAogICAgYnl0ZWMgMTkgLy8gIjE0IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjcKICAgIC8vIGFzc2VydChhcHAxNS5sb2dzKDApID09PSBCeXRlcygnMTUnKSkKICAgIGdpdHhuYSAxNCBMb2dzIDAKICAgIGJ5dGVjIDIwIC8vICIxNSIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTY4CiAgICAvLyBhc3NlcnQoYXBwMTYubG9ncygwKSA9PT0gQnl0ZXMoJzE2JykpCiAgICBpdHhuYSBMb2dzIDAKICAgIGJ5dGVjIDIxIC8vICIxNiIKICAgID09CiAgICBhc3NlcnQKICAgIHJldHN1YgoKCi8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDQoKSAtPiB2b2lkOgp0ZXN0NDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcxCiAgICAvLyBwdWJsaWMgdGVzdDQoKSB7CiAgICBwcm90byAwIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcyCiAgICAvLyBjb25zdCBsb3RzT2ZCeXRlcyA9IG9wLmJ6ZXJvKDIwNDQpCiAgICBwdXNoaW50IDIwNDQgLy8gMjA0NAogICAgYnplcm8KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTc0CiAgICAvLyBjb25zdCBhcHByb3ZhbDIgPSBCeXRlcy5mcm9tSGV4KCc4MCcgKyAnRkMwZicpCiAgICBwdXNoYnl0ZXMgMHg4MGZjMGYKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTc0LTE3NQogICAgLy8gY29uc3QgYXBwcm92YWwyID0gQnl0ZXMuZnJvbUhleCgnODAnICsgJ0ZDMGYnKQogICAgLy8gICAuY29uY2F0KGxvdHNPZkJ5dGVzKQogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3NgogICAgLy8gLmNvbmNhdChCeXRlcy5mcm9tSGV4KCc0OCcpKQogICAgcHVzaGJ5dGVzIDB4NDgKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTc0LTE3NgogICAgLy8gY29uc3QgYXBwcm92YWwyID0gQnl0ZXMuZnJvbUhleCgnODAnICsgJ0ZDMGYnKQogICAgLy8gICAuY29uY2F0KGxvdHNPZkJ5dGVzKQogICAgLy8gICAuY29uY2F0KEJ5dGVzLmZyb21IZXgoJzQ4JykpCiAgICBjb25jYXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg1CiAgICAvLyBjb25zdCBhcHAxID0gYXBwVHhuMS5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxODMKICAgIC8vIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTgyCiAgICAvLyBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICBieXRlY18zIC8vICIxIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTgxCiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIGR1cAogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgZHVwCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICBkdXAKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTc4LTE4NAogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBbYXBwcm92YWwxLCBhcHByb3ZhbDIsIGFwcHJvdmFsMiwgYXBwcm92YWwyXSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gICBleHRyYVByb2dyYW1QYWdlczogMywKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4NQogICAgLy8gY29uc3QgYXBwMSA9IGFwcFR4bjEuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIE51bUFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICBpdHhuIE51bUNsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGl0eG4gRXh0cmFQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg2CiAgICAvLyBhc3NlcnQoYXBwMS5leHRyYVByb2dyYW1QYWdlcyA9PT0gMywgJ2V4dHJhIHBhZ2VzID0gMycpCiAgICBpbnRjXzMgLy8gMwogICAgPT0KICAgIGFzc2VydCAvLyBleHRyYSBwYWdlcyA9IDMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg3CiAgICAvLyBhc3NlcnQoYXBwMS5udW1BcHByb3ZhbFByb2dyYW1QYWdlcyA9PT0gMiwgJ2FwcHJvdmFsIHBhZ2VzID0gMicpCiAgICBzd2FwCiAgICBwdXNoaW50IDIgLy8gMgogICAgPT0KICAgIGFzc2VydCAvLyBhcHByb3ZhbCBwYWdlcyA9IDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg4CiAgICAvLyBhc3NlcnQoYXBwMS5hcHByb3ZhbFByb2dyYW1QYWdlcygwKSA9PT0gYXBwcm92YWwxLmNvbmNhdChhcHByb3ZhbDIpLmNvbmNhdChhcHByb3ZhbDIuc2xpY2UoMCwgLTMpKSwgJ2V4cGVjdGVkIGFwcHJvdmFsIHBhZ2UgMCcpCiAgICBpdHhuYSBBcHByb3ZhbFByb2dyYW1QYWdlcyAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxODgKICAgIC8vIGFzc2VydChhcHAxLmFwcHJvdmFsUHJvZ3JhbVBhZ2VzKDApID09PSBhcHByb3ZhbDEuY29uY2F0KGFwcHJvdmFsMikuY29uY2F0KGFwcHJvdmFsMi5zbGljZSgwLCAtMykpLCAnZXhwZWN0ZWQgYXBwcm92YWwgcGFnZSAwJykKICAgIGRpZyAzCiAgICBjb25jYXQKICAgIGRpZyAzCiAgICBsZW4KICAgIGludGNfMCAvLyAwCiAgICBkaWcgMQogICAgPj0KICAgIGludGNfMCAvLyAwCiAgICBkaWcgMgogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIGludGNfMyAvLyAzCiAgICBkaWcgMgogICAgPj0KICAgIGludGNfMyAvLyAzCiAgICBkaWcgMwogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIGRpZyAyCiAgICBzd2FwCiAgICAtCiAgICBkdXAKICAgIGRpZyAyCiAgICA8CiAgICBkaWcgMQogICAgZGlnIDMKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBkaWcgNwogICAgdW5jb3ZlciAzCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIHVuY292ZXIgMwogICAgc3dhcAogICAgY29uY2F0CiAgICB1bmNvdmVyIDMKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgYXBwcm92YWwgcGFnZSAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4OQogICAgLy8gYXNzZXJ0KGFwcDEuYXBwcm92YWxQcm9ncmFtUGFnZXMoMSkgPT09IGFwcHJvdmFsMi5zbGljZSgtMykuY29uY2F0KGFwcHJvdmFsMiksICdleHBlY3RlZCBhcHByb3ZhbCBwYWdlIDEnKQogICAgaXR4bmEgQXBwcm92YWxQcm9ncmFtUGFnZXMgMQogICAgZGlnIDQKICAgIHVuY292ZXIgMgogICAgdW5jb3ZlciAzCiAgICBzdWJzdHJpbmczCiAgICB1bmNvdmVyIDMKICAgIGNvbmNhdAogICAgPT0KICAgIGFzc2VydCAvLyBleHBlY3RlZCBhcHByb3ZhbCBwYWdlIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTkwCiAgICAvLyBhc3NlcnQoYXBwMS5udW1DbGVhclN0YXRlUHJvZ3JhbVBhZ2VzID09PSAxLCAnY2xlYXIgc3RhdGUgcGFnZXMgPSAxJykKICAgIHB1c2hpbnQgMSAvLyAxCiAgICA9PQogICAgYXNzZXJ0IC8vIGNsZWFyIHN0YXRlIHBhZ2VzID0gMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxOTEKICAgIC8vIGFzc2VydChhcHAxLmNsZWFyU3RhdGVQcm9ncmFtUGFnZXMoMCkgPT09IEFQUFJPVkUsICdleHBlY3RlZCBjbGVhciBzdGF0ZSBwYWdlJykKICAgIGl0eG5hIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTkxCiAgICAvLyBhc3NlcnQoYXBwMS5jbGVhclN0YXRlUHJvZ3JhbVBhZ2VzKDApID09PSBBUFBST1ZFLCAnZXhwZWN0ZWQgY2xlYXIgc3RhdGUgcGFnZScpCiAgICA9PQogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIGNsZWFyIHN0YXRlIHBhZ2UKICAgIHJldHN1Ygo=", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCg==" + }, + "state": { + "global": { + "num_byte_slices": 1, + "num_uints": 0 + }, + "local": { + "num_byte_slices": 0, + "num_uints": 0 + } + }, + "schema": { + "global": { + "declared": { + "name": { + "type": "bytes", + "key": "name" + } + }, + "reserved": {} + }, + "local": { + "declared": {}, + "reserved": {} + } + }, + "contract": { + "name": "ItxnDemoContract", + "methods": [ + { + "name": "test1", + "args": [], + "readonly": false, + "returns": { + "type": "void" + } + }, + { + "name": "test2", + "args": [], + "readonly": false, + "returns": { + "type": "void" + } + }, + { + "name": "test3", + "args": [], + "readonly": false, + "returns": { + "type": "void" + } + }, + { + "name": "test4", + "args": [], + "readonly": false, + "returns": { + "type": "void" + } + } + ], + "networks": {} + }, + "bare_call_config": { + "no_op": "CREATE" + } +} \ No newline at end of file diff --git a/tests/approvals/out/o1/itxn/ItxnDemoContract.arc56.json b/tests/approvals/out/o1/itxn/ItxnDemoContract.arc56.json new file mode 100644 index 000000000..9985e6c8d --- /dev/null +++ b/tests/approvals/out/o1/itxn/ItxnDemoContract.arc56.json @@ -0,0 +1,261 @@ +{ + "name": "ItxnDemoContract", + "structs": {}, + "methods": [ + { + "name": "test1", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + }, + "readonly": false, + "events": [], + "recommendations": {} + }, + { + "name": "test2", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + }, + "readonly": false, + "events": [], + "recommendations": {} + }, + { + "name": "test3", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + }, + "readonly": false, + "events": [], + "recommendations": {} + }, + { + "name": "test4", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + }, + "readonly": false, + "events": [], + "recommendations": {} + } + ], + "arcs": [ + 22, + 28 + ], + "networks": {}, + "state": { + "schema": { + "global": { + "ints": 0, + "bytes": 1 + }, + "local": { + "ints": 0, + "bytes": 0 + } + }, + "keys": { + "global": { + "name": { + "keyType": "AVMString", + "valueType": "AVMBytes", + "key": "bmFtZQ==" + } + }, + "local": {}, + "box": {} + }, + "maps": { + "global": {}, + "local": {}, + "box": {} + } + }, + "bareActions": { + "create": [ + "NoOp" + ], + "call": [] + }, + "sourceInfo": { + "approval": { + "sourceInfo": [ + { + "pc": [ + 160, + 173, + 186, + 199 + ], + "errorMessage": "OnCompletion is not NoOp" + }, + { + "pc": [ + 384 + ], + "errorMessage": "app is created" + }, + { + "pc": [ + 1140 + ], + "errorMessage": "approval pages = 2" + }, + { + "pc": [ + 324, + 331 + ], + "errorMessage": "asset exists" + }, + { + "pc": [ + 315 + ], + "errorMessage": "asset1_txn is correct" + }, + { + "pc": [ + 320 + ], + "errorMessage": "asset2_txn is correct" + }, + { + "pc": [ + 388 + ], + "errorMessage": "asset3_txn is correct" + }, + { + "pc": [ + 217 + ], + "errorMessage": "can only call when creating" + }, + { + "pc": [ + 163, + 176, + 189, + 202 + ], + "errorMessage": "can only call when not creating" + }, + { + "pc": [ + 231, + 276 + ], + "errorMessage": "check GlobalState exists" + }, + { + "pc": [ + 1219 + ], + "errorMessage": "clear state pages = 1" + }, + { + "pc": [ + 528 + ], + "errorMessage": "correct args used 1" + }, + { + "pc": [ + 535, + 571 + ], + "errorMessage": "correct args used 2" + }, + { + "pc": [ + 328 + ], + "errorMessage": "created asset 1 is correct" + }, + { + "pc": [ + 335 + ], + "errorMessage": "created asset 2 is correct" + }, + { + "pc": [ + 1200 + ], + "errorMessage": "expected approval page 0" + }, + { + "pc": [ + 1215 + ], + "errorMessage": "expected approval page 1" + }, + { + "pc": [ + 1225 + ], + "errorMessage": "expected clear state page" + }, + { + "pc": [ + 1135 + ], + "errorMessage": "extra pages = 3" + } + ], + "pcOffsetMethod": "none" + }, + "clear": { + "sourceInfo": [], + "pcOffsetMethod": "none" + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMCA2IDUgMyAxMDAwCiAgICBieXRlY2Jsb2NrIDB4MDk4MTAxIDB4MDkzNjFhMDBiMDgxMDEgIm5hbWUiICIxIiAidW5pdCIgIjIiICJBU1QxIiAiQVNUMiIgIkFTVDMiICIzIiAiNCIgIjUiICIzcmQiICJ3aXRoIGFyZ3MgcGFyYW0gc2V0IiAiNDIiICIxMCIgIjExIiAiMTIiICIxMyIgIjE0IiAiMTUiICIxNiIKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OAogICAgLy8gbmFtZSA9IEdsb2JhbFN0YXRlKHsgaW5pdGlhbFZhbHVlOiBCeXRlcygpIH0pCiAgICBieXRlY18yIC8vICJuYW1lIgogICAgcHVzaGJ5dGVzIDB4CiAgICBhcHBfZ2xvYmFsX3B1dAoKbWFpbl9hZnRlcl9pZl9lbHNlQDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjcKICAgIC8vIGV4cG9ydCBjbGFzcyBJdHhuRGVtb0NvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE51bUFwcEFyZ3MKICAgIGJ6IG1haW5fYmFyZV9yb3V0aW5nQDExCiAgICBwdXNoYnl0ZXNzIDB4MjAyNTRmOTEgMHhmMTkwODUyNCAweGRmOTIwZjM3IDB4M2Q0NjM0NWMgLy8gbWV0aG9kICJ0ZXN0MSgpdm9pZCIsIG1ldGhvZCAidGVzdDIoKXZvaWQiLCBtZXRob2QgInRlc3QzKCl2b2lkIiwgbWV0aG9kICJ0ZXN0NCgpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIG1haW5fdGVzdDFfcm91dGVANSBtYWluX3Rlc3QyX3JvdXRlQDYgbWFpbl90ZXN0M19yb3V0ZUA3IG1haW5fdGVzdDRfcm91dGVAOAoKbWFpbl9hZnRlcl9pZl9lbHNlQDE1OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3CiAgICAvLyBleHBvcnQgY2xhc3MgSXR4bkRlbW9Db250cmFjdCBleHRlbmRzIENvbnRyYWN0IHsKICAgIGludGNfMCAvLyAwCiAgICByZXR1cm4KCm1haW5fdGVzdDRfcm91dGVAODoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcxCiAgICAvLyBwdWJsaWMgdGVzdDQoKSB7CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgdGVzdDQKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4KCm1haW5fdGVzdDNfcm91dGVANzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTUKICAgIC8vIHB1YmxpYyB0ZXN0MygpIHsKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgY2FsbHN1YiB0ZXN0MwogICAgcHVzaGludCAxIC8vIDEKICAgIHJldHVybgoKbWFpbl90ZXN0Ml9yb3V0ZUA2OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1OAogICAgLy8gcHVibGljIHRlc3QyKCkgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICBjYWxsc3ViIHRlc3QyCiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCgptYWluX3Rlc3QxX3JvdXRlQDU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwCiAgICAvLyBwdWJsaWMgdGVzdDEoKSB7CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgdGVzdDEKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4KCm1haW5fYmFyZV9yb3V0aW5nQDExOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3CiAgICAvLyBleHBvcnQgY2xhc3MgSXR4bkRlbW9Db250cmFjdCBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBPbkNvbXBsZXRpb24KICAgIGJueiBtYWluX2FmdGVyX2lmX2Vsc2VAMTUKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAhCiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIGNyZWF0aW5nCiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0MSgpIC0+IHZvaWQ6CnRlc3QxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMAogICAgLy8gcHVibGljIHRlc3QxKCkgewogICAgcHJvdG8gMCAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgKICAgIC8vIG5hbWUgPSBHbG9iYWxTdGF0ZSh7IGluaXRpYWxWYWx1ZTogQnl0ZXMoKSB9KQogICAgYnl0ZWNfMiAvLyAibmFtZSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEKICAgIC8vIHRoaXMubmFtZS52YWx1ZSA9IEJ5dGVzKCdBU1QxJykKICAgIGJ5dGVjIDYgLy8gIkFTVDEiCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNQogICAgLy8gYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICBpbnRjXzAgLy8gMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4CiAgICAvLyBuYW1lID0gR2xvYmFsU3RhdGUoeyBpbml0aWFsVmFsdWU6IEJ5dGVzKCkgfSkKICAgIGJ5dGVjXzIgLy8gIm5hbWUiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1CiAgICAvLyBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4CiAgICAvLyBtYW5hZ2VyOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5CiAgICAvLyByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIGR1cAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4CiAgICAvLyBuYW1lID0gR2xvYmFsU3RhdGUoeyBpbml0aWFsVmFsdWU6IEJ5dGVzKCkgfSkKICAgIGJ5dGVjXzIgLy8gIm5hbWUiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIyCiAgICAvLyB0aGlzLm5hbWUudmFsdWUgPSBCeXRlcygnQVNUMicpCiAgICBieXRlYyA3IC8vICJBU1QyIgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjMKICAgIC8vIGNvbnN0IGFzc2V0MV90eG4gPSBhc3NldFBhcmFtcy5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgZHVwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0UmVzZXJ2ZQogICAgZGlnIDEKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRNYW5hZ2VyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3CiAgICAvLyBkZWNpbWFsczogMywKICAgIGludGNfMyAvLyAzCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0RGVjaW1hbHMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTYKICAgIC8vIHVuaXROYW1lOiAndW5pdCcsCiAgICBieXRlYyA0IC8vICJ1bml0IgogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFVuaXROYW1lCiAgICB1bmNvdmVyIDIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0CiAgICAvLyB0b3RhbDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMtMjAKICAgIC8vIGNvbnN0IGFzc2V0UGFyYW1zID0gaXR4bi5hc3NldENvbmZpZyh7CiAgICAvLyAgIHRvdGFsOiAxMDAwLAogICAgLy8gICBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIC8vICAgdW5pdE5hbWU6ICd1bml0JywKICAgIC8vICAgZGVjaW1hbHM6IDMsCiAgICAvLyAgIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vIH0pCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIzCiAgICAvLyBjb25zdCBhc3NldDFfdHhuID0gYXNzZXRQYXJhbXMuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIENvbmZpZ0Fzc2V0TmFtZQogICAgaXR4biBDcmVhdGVkQXNzZXRJRAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyNQogICAgLy8gYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICBpbnRjXzAgLy8gMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4CiAgICAvLyBuYW1lID0gR2xvYmFsU3RhdGUoeyBpbml0aWFsVmFsdWU6IEJ5dGVzKCkgfSkKICAgIGJ5dGVjXzIgLy8gIm5hbWUiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI1CiAgICAvLyBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI3CiAgICAvLyBjb25zdCBhc3NldDJfdHhuID0gYXNzZXRQYXJhbXMuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIGRpZyAzCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0UmVzZXJ2ZQogICAgZGlnIDQKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRNYW5hZ2VyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3CiAgICAvLyBkZWNpbWFsczogMywKICAgIGludGNfMyAvLyAzCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0RGVjaW1hbHMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTYKICAgIC8vIHVuaXROYW1lOiAndW5pdCcsCiAgICBieXRlYyA0IC8vICJ1bml0IgogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFVuaXROYW1lCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TmFtZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNAogICAgLy8gdG90YWw6IDEwMDAsCiAgICBpbnRjIDQgLy8gMTAwMAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFRvdGFsCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzLTIwCiAgICAvLyBjb25zdCBhc3NldFBhcmFtcyA9IGl0eG4uYXNzZXRDb25maWcoewogICAgLy8gICB0b3RhbDogMTAwMCwKICAgIC8vICAgYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICAvLyAgIHVuaXROYW1lOiAndW5pdCcsCiAgICAvLyAgIGRlY2ltYWxzOiAzLAogICAgLy8gICBtYW5hZ2VyOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vICAgcmVzZXJ2ZTogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyB9KQogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyNwogICAgLy8gY29uc3QgYXNzZXQyX3R4biA9IGFzc2V0UGFyYW1zLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBDb25maWdBc3NldE5hbWUKICAgIGl0eG4gQ3JlYXRlZEFzc2V0SUQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjkKICAgIC8vIGFzc2VydChhc3NldDFfdHhuLmFzc2V0TmFtZSA9PT0gQnl0ZXMoJ0FTVDEnKSwgJ2Fzc2V0MV90eG4gaXMgY29ycmVjdCcpCiAgICB1bmNvdmVyIDMKICAgIGJ5dGVjIDYgLy8gIkFTVDEiCiAgICA9PQogICAgYXNzZXJ0IC8vIGFzc2V0MV90eG4gaXMgY29ycmVjdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozMAogICAgLy8gYXNzZXJ0KGFzc2V0Ml90eG4uYXNzZXROYW1lID09PSBCeXRlcygnQVNUMicpLCAnYXNzZXQyX3R4biBpcyBjb3JyZWN0JykKICAgIHN3YXAKICAgIGJ5dGVjIDcgLy8gIkFTVDIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGFzc2V0Ml90eG4gaXMgY29ycmVjdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozMQogICAgLy8gYXNzZXJ0KGFzc2V0MV90eG4uY3JlYXRlZEFzc2V0Lm5hbWUgPT09IEJ5dGVzKCdBU1QxJyksICdjcmVhdGVkIGFzc2V0IDEgaXMgY29ycmVjdCcpCiAgICBzd2FwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TmFtZQogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgYnl0ZWMgNiAvLyAiQVNUMSIKICAgID09CiAgICBhc3NlcnQgLy8gY3JlYXRlZCBhc3NldCAxIGlzIGNvcnJlY3QKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzIKICAgIC8vIGFzc2VydChhc3NldDJfdHhuLmNyZWF0ZWRBc3NldC5uYW1lID09PSBCeXRlcygnQVNUMicpLCAnY3JlYXRlZCBhc3NldCAyIGlzIGNvcnJlY3QnKQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE5hbWUKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIGJ5dGVjIDcgLy8gIkFTVDIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNyZWF0ZWQgYXNzZXQgMiBpcyBjb3JyZWN0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQ0CiAgICAvLyBjb25zdCBbYXBwQ3JlYXRlVHhuLCBhc3NldDNfdHhuXSA9IGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fYmVnaW4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzQtMzgKICAgIC8vIGNvbnN0IGFwcENyZWF0ZVBhcmFtcyA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgZmVlOiAwLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjM3CiAgICAvLyBmZWU6IDAsCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDQKICAgIC8vIGNvbnN0IFthcHBDcmVhdGVUeG4sIGFzc2V0M190eG5dID0gaXR4bi5zdWJtaXRHcm91cChhcHBDcmVhdGVQYXJhbXMsIGFzc2V0UGFyYW1zKQogICAgaXR4bl9uZXh0CiAgICBkdXAKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRSZXNlcnZlCiAgICBkaWcgMQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE1hbmFnZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcKICAgIC8vIGRlY2ltYWxzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXREZWNpbWFscwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNgogICAgLy8gdW5pdE5hbWU6ICd1bml0JywKICAgIGJ5dGVjIDQgLy8gInVuaXQiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VW5pdE5hbWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDEKICAgIC8vIGFzc2V0TmFtZTogJ0FTVDMnLAogICAgYnl0ZWMgOCAvLyAiQVNUMyIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0CiAgICAvLyB0b3RhbDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMtMjAKICAgIC8vIGNvbnN0IGFzc2V0UGFyYW1zID0gaXR4bi5hc3NldENvbmZpZyh7CiAgICAvLyAgIHRvdGFsOiAxMDAwLAogICAgLy8gICBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIC8vICAgdW5pdE5hbWU6ICd1bml0JywKICAgIC8vICAgZGVjaW1hbHM6IDMsCiAgICAvLyAgIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vIH0pCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQ0CiAgICAvLyBjb25zdCBbYXBwQ3JlYXRlVHhuLCBhc3NldDNfdHhuXSA9IGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIENvbmZpZ0Fzc2V0TmFtZQogICAgZ2l0eG4gMCBDcmVhdGVkQXBwbGljYXRpb25JRAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0NgogICAgLy8gYXNzZXJ0KGFwcENyZWF0ZVR4bi5jcmVhdGVkQXBwLCAnYXBwIGlzIGNyZWF0ZWQnKQogICAgYXNzZXJ0IC8vIGFwcCBpcyBjcmVhdGVkCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQ3CiAgICAvLyBhc3NlcnQoYXNzZXQzX3R4bi5hc3NldE5hbWUgPT09IEJ5dGVzKCdBU1QzJyksICdhc3NldDNfdHhuIGlzIGNvcnJlY3QnKQogICAgYnl0ZWMgOCAvLyAiQVNUMyIKICAgID09CiAgICBhc3NlcnQgLy8gYXNzZXQzX3R4biBpcyBjb3JyZWN0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjU1CiAgICAvLyBpdHhuLnN1Ym1pdEdyb3VwKGFwcENyZWF0ZVBhcmFtcywgYXNzZXRQYXJhbXMpCiAgICBpdHhuX2JlZ2luCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUwCiAgICAvLyBub3RlOiAnM3JkJywKICAgIGJ5dGVjIDEyIC8vICIzcmQiCiAgICBpdHhuX2ZpZWxkIE5vdGUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzQtMzgKICAgIC8vIGNvbnN0IGFwcENyZWF0ZVBhcmFtcyA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgZmVlOiAwLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjM3CiAgICAvLyBmZWU6IDAsCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTUKICAgIC8vIGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1MwogICAgLy8gbm90ZTogJzNyZCcsCiAgICBieXRlYyAxMiAvLyAiM3JkIgogICAgaXR4bl9maWVsZCBOb3RlCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0UmVzZXJ2ZQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE1hbmFnZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcKICAgIC8vIGRlY2ltYWxzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXREZWNpbWFscwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNgogICAgLy8gdW5pdE5hbWU6ICd1bml0JywKICAgIGJ5dGVjIDQgLy8gInVuaXQiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VW5pdE5hbWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDEKICAgIC8vIGFzc2V0TmFtZTogJ0FTVDMnLAogICAgYnl0ZWMgOCAvLyAiQVNUMyIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0CiAgICAvLyB0b3RhbDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMtMjAKICAgIC8vIGNvbnN0IGFzc2V0UGFyYW1zID0gaXR4bi5hc3NldENvbmZpZyh7CiAgICAvLyAgIHRvdGFsOiAxMDAwLAogICAgLy8gICBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIC8vICAgdW5pdE5hbWU6ICd1bml0JywKICAgIC8vICAgZGVjaW1hbHM6IDMsCiAgICAvLyAgIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vIH0pCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjU1CiAgICAvLyBpdHhuLnN1Ym1pdEdyb3VwKGFwcENyZWF0ZVBhcmFtcywgYXNzZXRQYXJhbXMpCiAgICBpdHhuX3N1Ym1pdAogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0MigpIC0+IHZvaWQ6CnRlc3QyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1OAogICAgLy8gcHVibGljIHRlc3QyKCkgewogICAgcHJvdG8gMCAwCiAgICBpbnRjXzAgLy8gMAogICAgZHVwbiAyCiAgICBwdXNoYnl0ZXMgIiIKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIHB1c2hieXRlcyAiIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo2MAogICAgLy8gaWYgKFR4bi5udW1BcHBBcmdzKSB7CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogdGVzdDJfZWxzZV9ib2R5QDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjEKICAgIC8vIGNvbnN0IGFyZ3MgPSBbQnl0ZXMoJzEnKSwgQnl0ZXMoJzInKV0gYXMgY29uc3QKICAgIGJ5dGVjXzMgLy8gIjEiCiAgICBmcmFtZV9idXJ5IDAKICAgIGJ5dGVjIDUgLy8gIjIiCiAgICBmcmFtZV9idXJ5IDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjUKICAgIC8vIGFwcEFyZ3M6IGFyZ3MsCiAgICBwdXNoaW50IDIgLy8gMgogICAgZnJhbWVfYnVyeSAzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjY2CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uTm9PcCwKICAgIGludGNfMCAvLyAwCiAgICBmcmFtZV9idXJ5IDYKICAgIHB1c2hpbnQgMSAvLyAxCiAgICBmcmFtZV9idXJ5IDQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjcKICAgIC8vIG5vdGU6ICd3aXRoIGFyZ3MgcGFyYW0gc2V0JywKICAgIGJ5dGVjIDEzIC8vICJ3aXRoIGFyZ3MgcGFyYW0gc2V0IgoKdGVzdDJfYWZ0ZXJfaWZfZWxzZUAzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3NwogICAgLy8gY29uc3QgY3JlYXRlQXBwVHhuID0gY3JlYXRlQXBwUGFyYW1zLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICBpdHhuX2ZpZWxkIE5vdGUKICAgIGZyYW1lX2RpZyA0CiAgICBieiB0ZXN0Ml9uZXh0X2ZpZWxkQDUKICAgIGZyYW1lX2RpZyA2CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKdGVzdDJfbmV4dF9maWVsZEA1OgogICAgZnJhbWVfZGlnIDAKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBmcmFtZV9kaWcgMQogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGZyYW1lX2RpZyAzCiAgICBpbnRjXzMgLy8gMwogICAgPj0KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzcKICAgIC8vIGNvbnN0IGNyZWF0ZUFwcFR4biA9IGNyZWF0ZUFwcFBhcmFtcy5zdWJtaXQoKQogICAgYnogdGVzdDJfbmV4dF9maWVsZEA3CiAgICBmcmFtZV9kaWcgNQogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCnRlc3QyX25leHRfZmllbGRANzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjItNjgKICAgIC8vIGNyZWF0ZUFwcFBhcmFtcyA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgYXBwQXJnczogYXJncywKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLk5vT3AsCiAgICAvLyAgIG5vdGU6ICd3aXRoIGFyZ3MgcGFyYW0gc2V0JywKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjc3CiAgICAvLyBjb25zdCBjcmVhdGVBcHBUeG4gPSBjcmVhdGVBcHBQYXJhbXMuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIE5vdGUKICAgIGZyYW1lX2J1cnkgMgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3OAogICAgLy8gYXNzZXJ0KGNyZWF0ZUFwcFR4bi5hcHBBcmdzKDApID09PSBCeXRlcygnMScpLCAnY29ycmVjdCBhcmdzIHVzZWQgMScpCiAgICBpdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgYnl0ZWNfMyAvLyAiMSIKICAgID09CiAgICBhc3NlcnQgLy8gY29ycmVjdCBhcmdzIHVzZWQgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3OQogICAgLy8gYXNzZXJ0KGNyZWF0ZUFwcFR4bi5hcHBBcmdzKDEpID09PSBCeXRlcygnMicpLCAnY29ycmVjdCBhcmdzIHVzZWQgMicpCiAgICBpdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnl0ZWMgNSAvLyAiMiIKICAgID09CiAgICBhc3NlcnQgLy8gY29ycmVjdCBhcmdzIHVzZWQgMgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4MQogICAgLy8gaWYgKFR4bi5udW1BcHBBcmdzID4gMSkgewogICAgdHhuIE51bUFwcEFyZ3MKICAgIHB1c2hpbnQgMSAvLyAxCiAgICA+CiAgICBieiB0ZXN0Ml9hZnRlcl9pZl9lbHNlQDExCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgyLTg5CiAgICAvLyBjb25zdCBjcmVhdGVBcHBUeG4yID0gaXR4bgogICAgLy8gICAuYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgICBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICAgIGFwcEFyZ3M6IFtCeXRlcygnNDInKV0sCiAgICAvLyAgIH0pCiAgICAvLyAgIC5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4NwogICAgLy8gYXBwQXJnczogW0J5dGVzKCc0MicpXSwKICAgIGJ5dGVjIDE0IC8vICI0MiIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjg2CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6ODItODgKICAgIC8vIGNvbnN0IGNyZWF0ZUFwcFR4bjIgPSBpdHhuCiAgICAvLyAgIC5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICAgIGFwcHJvdmFsUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgICAgYXBwQXJnczogW0J5dGVzKCc0MicpXSwKICAgIC8vICAgfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6ODItODkKICAgIC8vIGNvbnN0IGNyZWF0ZUFwcFR4bjIgPSBpdHhuCiAgICAvLyAgIC5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICAgIGFwcHJvdmFsUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgICAgYXBwQXJnczogW0J5dGVzKCc0MicpXSwKICAgIC8vICAgfSkKICAgIC8vICAgLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5MAogICAgLy8gYXNzZXJ0KGNyZWF0ZUFwcFR4bjIuYXBwQXJncygwKSA9PT0gQnl0ZXMoJzQyJyksICdjb3JyZWN0IGFyZ3MgdXNlZCAyJykKICAgIGl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBieXRlYyAxNCAvLyAiNDIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNvcnJlY3QgYXJncyB1c2VkIDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTEKICAgIC8vIGFzc2VydChjcmVhdGVBcHBUeG4ubm90ZSA9PT0gQnl0ZXMoJ3dpdGggYXJncyBwYXJhbSBzZXQnKSkKICAgIGZyYW1lX2RpZyAyCiAgICBieXRlYyAxMyAvLyAid2l0aCBhcmdzIHBhcmFtIHNldCIKICAgID09CiAgICBhc3NlcnQKCnRlc3QyX2FmdGVyX2lmX2Vsc2VAMTE6CiAgICByZXRzdWIKCnRlc3QyX2Vsc2VfYm9keUAyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3MwogICAgLy8gYXBwQXJnczogW0J5dGVzKCczJyksICc0JywgQnl0ZXMoJzUnKV0sCiAgICBieXRlYyA5IC8vICIzIgogICAgZnJhbWVfYnVyeSAwCiAgICBieXRlYyAxMCAvLyAiNCIKICAgIGZyYW1lX2J1cnkgMQogICAgYnl0ZWMgMTEgLy8gIjUiCiAgICBmcmFtZV9idXJ5IDUKICAgIGludGNfMyAvLyAzCiAgICBmcmFtZV9idXJ5IDMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzQKICAgIC8vIG5vdGU6ICdubyBhcmdzIHBhcmFtIHNldCcsCiAgICBwdXNoYnl0ZXMgIm5vIGFyZ3MgcGFyYW0gc2V0IgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3MAogICAgLy8gY3JlYXRlQXBwUGFyYW1zID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgaW50Y18wIC8vIDAKICAgIGZyYW1lX2J1cnkgNAogICAgYiB0ZXN0Ml9hZnRlcl9pZl9lbHNlQDMKCgovLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzKCkgLT4gdm9pZDoKdGVzdDM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk1CiAgICAvLyBwdWJsaWMgdGVzdDMoKSB7CiAgICBwcm90byAwIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTM0LTE1MQogICAgLy8gY29uc3QgW2FwcDEsIGFwcDIsIGFwcDMsIGFwcDQsIGFwcDUsIGFwcDYsIGFwcDcsIGFwcDgsIGFwcDksIGFwcDEwLCBhcHAxMSwgYXBwMTIsIGFwcDEzLCBhcHAxNCwgYXBwMTUsIGFwcDE2XSA9IGl0eG4uc3VibWl0R3JvdXAoCiAgICAvLyAgIGFwcFR4bjEsCiAgICAvLyAgIGFwcFR4bjIsCiAgICAvLyAgIGFwcFR4bjMsCiAgICAvLyAgIGFwcFR4bjQsCiAgICAvLyAgIGFwcFR4bjUsCiAgICAvLyAgIGFwcFR4bjYsCiAgICAvLyAgIGFwcFR4bjcsCiAgICAvLyAgIGFwcFR4bjgsCiAgICAvLyAgIGFwcFR4bjksCiAgICAvLyAgIGFwcFR4bjEwLAogICAgLy8gICBhcHBUeG4xMSwKICAgIC8vICAgYXBwVHhuMTIsCiAgICAvLyAgIGFwcFR4bjEzLAogICAgLy8gICBhcHBUeG4xNCwKICAgIC8vICAgYXBwVHhuMTUsCiAgICAvLyAgIGFwcFR4bjE2LAogICAgLy8gKQogICAgaXR4bl9iZWdpbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDAKICAgIC8vIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIGJ5dGVjXzMgLy8gIjEiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTM2CiAgICAvLyBhcHBUeG4yLAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwNAogICAgLy8gYXBwVHhuMi5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzInKV0gfSkKICAgIGJ5dGVjIDUgLy8gIjIiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTM3CiAgICAvLyBhcHBUeG4zLAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwNgogICAgLy8gYXBwVHhuMy5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzMnKV0gfSkKICAgIGJ5dGVjIDkgLy8gIjMiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTM4CiAgICAvLyBhcHBUeG40LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwOAogICAgLy8gYXBwVHhuNC5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzQnKV0gfSkKICAgIGJ5dGVjIDEwIC8vICI0IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzOQogICAgLy8gYXBwVHhuNSwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTAKICAgIC8vIGFwcFR4bjUuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc1JyldIH0pCiAgICBieXRlYyAxMSAvLyAiNSIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDAKICAgIC8vIGFwcFR4bjYsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEyCiAgICAvLyBhcHBUeG42LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnNicpXSB9KQogICAgcHVzaGJ5dGVzICI2IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0MQogICAgLy8gYXBwVHhuNywKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTQKICAgIC8vIGFwcFR4bjcuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc3JyldIH0pCiAgICBwdXNoYnl0ZXMgIjciCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQyCiAgICAvLyBhcHBUeG44LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExNgogICAgLy8gYXBwVHhuOC5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzgnKV0gfSkKICAgIHB1c2hieXRlcyAiOCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDMKICAgIC8vIGFwcFR4bjksCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTE4CiAgICAvLyBhcHBUeG45LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnOScpXSB9KQogICAgcHVzaGJ5dGVzICI5IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0NAogICAgLy8gYXBwVHhuMTAsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTIwCiAgICAvLyBhcHBUeG4xMC5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzEwJyldIH0pCiAgICBieXRlYyAxNSAvLyAiMTAiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQ1CiAgICAvLyBhcHBUeG4xMSwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMjIKICAgIC8vIGFwcFR4bjExLnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTEnKV0gfSkKICAgIGJ5dGVjIDE2IC8vICIxMSIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDYKICAgIC8vIGFwcFR4bjEyLAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEyNAogICAgLy8gYXBwVHhuMTIuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcxMicpXSB9KQogICAgYnl0ZWMgMTcgLy8gIjEyIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0NwogICAgLy8gYXBwVHhuMTMsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTI2CiAgICAvLyBhcHBUeG4xMy5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzEzJyldIH0pCiAgICBieXRlYyAxOCAvLyAiMTMiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQ4CiAgICAvLyBhcHBUeG4xNCwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMjgKICAgIC8vIGFwcFR4bjE0LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTQnKV0gfSkKICAgIGJ5dGVjIDE5IC8vICIxNCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDkKICAgIC8vIGFwcFR4bjE1LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzMAogICAgLy8gYXBwVHhuMTUuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcxNScpXSB9KQogICAgYnl0ZWMgMjAgLy8gIjE1IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1MAogICAgLy8gYXBwVHhuMTYsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMyCiAgICAvLyBhcHBUeG4xNi5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzE2JyldIH0pCiAgICBieXRlYyAyMSAvLyAiMTYiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTM0LTE1MQogICAgLy8gY29uc3QgW2FwcDEsIGFwcDIsIGFwcDMsIGFwcDQsIGFwcDUsIGFwcDYsIGFwcDcsIGFwcDgsIGFwcDksIGFwcDEwLCBhcHAxMSwgYXBwMTIsIGFwcDEzLCBhcHAxNCwgYXBwMTUsIGFwcDE2XSA9IGl0eG4uc3VibWl0R3JvdXAoCiAgICAvLyAgIGFwcFR4bjEsCiAgICAvLyAgIGFwcFR4bjIsCiAgICAvLyAgIGFwcFR4bjMsCiAgICAvLyAgIGFwcFR4bjQsCiAgICAvLyAgIGFwcFR4bjUsCiAgICAvLyAgIGFwcFR4bjYsCiAgICAvLyAgIGFwcFR4bjcsCiAgICAvLyAgIGFwcFR4bjgsCiAgICAvLyAgIGFwcFR4bjksCiAgICAvLyAgIGFwcFR4bjEwLAogICAgLy8gICBhcHBUeG4xMSwKICAgIC8vICAgYXBwVHhuMTIsCiAgICAvLyAgIGFwcFR4bjEzLAogICAgLy8gICBhcHBUeG4xNCwKICAgIC8vICAgYXBwVHhuMTUsCiAgICAvLyAgIGFwcFR4bjE2LAogICAgLy8gKQogICAgaXR4bl9zdWJtaXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTUzCiAgICAvLyBhc3NlcnQoYXBwMS5sb2dzKDApID09PSBCeXRlcygnMScpKQogICAgZ2l0eG5hIDAgTG9ncyAwCiAgICBieXRlY18zIC8vICIxIgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTQKICAgIC8vIGFzc2VydChhcHAyLmxvZ3MoMCkgPT09IEJ5dGVzKCcyJykpCiAgICBnaXR4bmEgMSBMb2dzIDAKICAgIGJ5dGVjIDUgLy8gIjIiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1NQogICAgLy8gYXNzZXJ0KGFwcDMubG9ncygwKSA9PT0gQnl0ZXMoJzMnKSkKICAgIGdpdHhuYSAyIExvZ3MgMAogICAgYnl0ZWMgOSAvLyAiMyIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU2CiAgICAvLyBhc3NlcnQoYXBwNC5sb2dzKDApID09PSBCeXRlcygnNCcpKQogICAgZ2l0eG5hIDMgTG9ncyAwCiAgICBieXRlYyAxMCAvLyAiNCIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU3CiAgICAvLyBhc3NlcnQoYXBwNS5sb2dzKDApID09PSBCeXRlcygnNScpKQogICAgZ2l0eG5hIDQgTG9ncyAwCiAgICBieXRlYyAxMSAvLyAiNSIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU4CiAgICAvLyBhc3NlcnQoYXBwNi5sb2dzKDApID09PSBCeXRlcygnNicpKQogICAgZ2l0eG5hIDUgTG9ncyAwCiAgICBwdXNoYnl0ZXMgIjYiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1OQogICAgLy8gYXNzZXJ0KGFwcDcubG9ncygwKSA9PT0gQnl0ZXMoJzcnKSkKICAgIGdpdHhuYSA2IExvZ3MgMAogICAgcHVzaGJ5dGVzICI3IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjAKICAgIC8vIGFzc2VydChhcHA4LmxvZ3MoMCkgPT09IEJ5dGVzKCc4JykpCiAgICBnaXR4bmEgNyBMb2dzIDAKICAgIHB1c2hieXRlcyAiOCIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTYxCiAgICAvLyBhc3NlcnQoYXBwOS5sb2dzKDApID09PSBCeXRlcygnOScpKQogICAgZ2l0eG5hIDggTG9ncyAwCiAgICBwdXNoYnl0ZXMgIjkiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2MgogICAgLy8gYXNzZXJ0KGFwcDEwLmxvZ3MoMCkgPT09IEJ5dGVzKCcxMCcpKQogICAgZ2l0eG5hIDkgTG9ncyAwCiAgICBieXRlYyAxNSAvLyAiMTAiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2MwogICAgLy8gYXNzZXJ0KGFwcDExLmxvZ3MoMCkgPT09IEJ5dGVzKCcxMScpKQogICAgZ2l0eG5hIDEwIExvZ3MgMAogICAgYnl0ZWMgMTYgLy8gIjExIgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjQKICAgIC8vIGFzc2VydChhcHAxMi5sb2dzKDApID09PSBCeXRlcygnMTInKSkKICAgIGdpdHhuYSAxMSBMb2dzIDAKICAgIGJ5dGVjIDE3IC8vICIxMiIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTY1CiAgICAvLyBhc3NlcnQoYXBwMTMubG9ncygwKSA9PT0gQnl0ZXMoJzEzJykpCiAgICBnaXR4bmEgMTIgTG9ncyAwCiAgICBieXRlYyAxOCAvLyAiMTMiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2NgogICAgLy8gYXNzZXJ0KGFwcDE0LmxvZ3MoMCkgPT09IEJ5dGVzKCcxNCcpKQogICAgZ2l0eG5hIDEzIExvZ3MgMAogICAgYnl0ZWMgMTkgLy8gIjE0IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjcKICAgIC8vIGFzc2VydChhcHAxNS5sb2dzKDApID09PSBCeXRlcygnMTUnKSkKICAgIGdpdHhuYSAxNCBMb2dzIDAKICAgIGJ5dGVjIDIwIC8vICIxNSIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTY4CiAgICAvLyBhc3NlcnQoYXBwMTYubG9ncygwKSA9PT0gQnl0ZXMoJzE2JykpCiAgICBpdHhuYSBMb2dzIDAKICAgIGJ5dGVjIDIxIC8vICIxNiIKICAgID09CiAgICBhc3NlcnQKICAgIHJldHN1YgoKCi8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDQoKSAtPiB2b2lkOgp0ZXN0NDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcxCiAgICAvLyBwdWJsaWMgdGVzdDQoKSB7CiAgICBwcm90byAwIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcyCiAgICAvLyBjb25zdCBsb3RzT2ZCeXRlcyA9IG9wLmJ6ZXJvKDIwNDQpCiAgICBwdXNoaW50IDIwNDQgLy8gMjA0NAogICAgYnplcm8KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTc0CiAgICAvLyBjb25zdCBhcHByb3ZhbDIgPSBCeXRlcy5mcm9tSGV4KCc4MCcgKyAnRkMwZicpCiAgICBwdXNoYnl0ZXMgMHg4MGZjMGYKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTc0LTE3NQogICAgLy8gY29uc3QgYXBwcm92YWwyID0gQnl0ZXMuZnJvbUhleCgnODAnICsgJ0ZDMGYnKQogICAgLy8gICAuY29uY2F0KGxvdHNPZkJ5dGVzKQogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3NgogICAgLy8gLmNvbmNhdChCeXRlcy5mcm9tSGV4KCc0OCcpKQogICAgcHVzaGJ5dGVzIDB4NDgKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTc0LTE3NgogICAgLy8gY29uc3QgYXBwcm92YWwyID0gQnl0ZXMuZnJvbUhleCgnODAnICsgJ0ZDMGYnKQogICAgLy8gICAuY29uY2F0KGxvdHNPZkJ5dGVzKQogICAgLy8gICAuY29uY2F0KEJ5dGVzLmZyb21IZXgoJzQ4JykpCiAgICBjb25jYXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg1CiAgICAvLyBjb25zdCBhcHAxID0gYXBwVHhuMS5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxODMKICAgIC8vIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTgyCiAgICAvLyBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICBieXRlY18zIC8vICIxIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTgxCiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIGR1cAogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgZHVwCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICBkdXAKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTc4LTE4NAogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBbYXBwcm92YWwxLCBhcHByb3ZhbDIsIGFwcHJvdmFsMiwgYXBwcm92YWwyXSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gICBleHRyYVByb2dyYW1QYWdlczogMywKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4NQogICAgLy8gY29uc3QgYXBwMSA9IGFwcFR4bjEuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIE51bUFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICBpdHhuIE51bUNsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGl0eG4gRXh0cmFQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg2CiAgICAvLyBhc3NlcnQoYXBwMS5leHRyYVByb2dyYW1QYWdlcyA9PT0gMywgJ2V4dHJhIHBhZ2VzID0gMycpCiAgICBpbnRjXzMgLy8gMwogICAgPT0KICAgIGFzc2VydCAvLyBleHRyYSBwYWdlcyA9IDMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg3CiAgICAvLyBhc3NlcnQoYXBwMS5udW1BcHByb3ZhbFByb2dyYW1QYWdlcyA9PT0gMiwgJ2FwcHJvdmFsIHBhZ2VzID0gMicpCiAgICBzd2FwCiAgICBwdXNoaW50IDIgLy8gMgogICAgPT0KICAgIGFzc2VydCAvLyBhcHByb3ZhbCBwYWdlcyA9IDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg4CiAgICAvLyBhc3NlcnQoYXBwMS5hcHByb3ZhbFByb2dyYW1QYWdlcygwKSA9PT0gYXBwcm92YWwxLmNvbmNhdChhcHByb3ZhbDIpLmNvbmNhdChhcHByb3ZhbDIuc2xpY2UoMCwgLTMpKSwgJ2V4cGVjdGVkIGFwcHJvdmFsIHBhZ2UgMCcpCiAgICBpdHhuYSBBcHByb3ZhbFByb2dyYW1QYWdlcyAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxODgKICAgIC8vIGFzc2VydChhcHAxLmFwcHJvdmFsUHJvZ3JhbVBhZ2VzKDApID09PSBhcHByb3ZhbDEuY29uY2F0KGFwcHJvdmFsMikuY29uY2F0KGFwcHJvdmFsMi5zbGljZSgwLCAtMykpLCAnZXhwZWN0ZWQgYXBwcm92YWwgcGFnZSAwJykKICAgIGRpZyAzCiAgICBjb25jYXQKICAgIGRpZyAzCiAgICBsZW4KICAgIGludGNfMCAvLyAwCiAgICBkaWcgMQogICAgPj0KICAgIGludGNfMCAvLyAwCiAgICBkaWcgMgogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIGludGNfMyAvLyAzCiAgICBkaWcgMgogICAgPj0KICAgIGludGNfMyAvLyAzCiAgICBkaWcgMwogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIGRpZyAyCiAgICBzd2FwCiAgICAtCiAgICBkdXAKICAgIGRpZyAyCiAgICA8CiAgICBkaWcgMQogICAgZGlnIDMKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBkaWcgNwogICAgdW5jb3ZlciAzCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIHVuY292ZXIgMwogICAgc3dhcAogICAgY29uY2F0CiAgICB1bmNvdmVyIDMKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgYXBwcm92YWwgcGFnZSAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4OQogICAgLy8gYXNzZXJ0KGFwcDEuYXBwcm92YWxQcm9ncmFtUGFnZXMoMSkgPT09IGFwcHJvdmFsMi5zbGljZSgtMykuY29uY2F0KGFwcHJvdmFsMiksICdleHBlY3RlZCBhcHByb3ZhbCBwYWdlIDEnKQogICAgaXR4bmEgQXBwcm92YWxQcm9ncmFtUGFnZXMgMQogICAgZGlnIDQKICAgIHVuY292ZXIgMgogICAgdW5jb3ZlciAzCiAgICBzdWJzdHJpbmczCiAgICB1bmNvdmVyIDMKICAgIGNvbmNhdAogICAgPT0KICAgIGFzc2VydCAvLyBleHBlY3RlZCBhcHByb3ZhbCBwYWdlIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTkwCiAgICAvLyBhc3NlcnQoYXBwMS5udW1DbGVhclN0YXRlUHJvZ3JhbVBhZ2VzID09PSAxLCAnY2xlYXIgc3RhdGUgcGFnZXMgPSAxJykKICAgIHB1c2hpbnQgMSAvLyAxCiAgICA9PQogICAgYXNzZXJ0IC8vIGNsZWFyIHN0YXRlIHBhZ2VzID0gMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxOTEKICAgIC8vIGFzc2VydChhcHAxLmNsZWFyU3RhdGVQcm9ncmFtUGFnZXMoMCkgPT09IEFQUFJPVkUsICdleHBlY3RlZCBjbGVhciBzdGF0ZSBwYWdlJykKICAgIGl0eG5hIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTkxCiAgICAvLyBhc3NlcnQoYXBwMS5jbGVhclN0YXRlUHJvZ3JhbVBhZ2VzKDApID09PSBBUFBST1ZFLCAnZXhwZWN0ZWQgY2xlYXIgc3RhdGUgcGFnZScpCiAgICA9PQogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIGNsZWFyIHN0YXRlIHBhZ2UKICAgIHJldHN1Ygo=", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCg==" + }, + "byteCode": { + "approval": "CiAFAAYFA+gHJhYDCYEBBwk2GgCwgQEEbmFtZQExBHVuaXQBMgRBU1QxBEFTVDIEQVNUMwEzATQBNQMzcmQTd2l0aCBhcmdzIHBhcmFtIHNldAI0MgIxMAIxMQIxMgIxMwIxNAIxNQIxNjEYQAAEKoAAZzEbQQBZggQEICVPkQTxkIUkBN+SDzcEPUY0XDYaAI4EACkAHAAPAAIiQzEZFEQxGESIA46BAUMxGRREMRhEiAG3gQFDMRkURDEYRIgA9YEBQzEZFEQxGESIAA+BAUMxGUD/xTEYFESBAUOKAAAqJwZnIiplRDIKSSonB2exSbIqSwGyKSWyIycEsiVPArImIQSyIiWyECKyAbO0JrQ8IiplRLFLA7IqSwSyKSWyIycEsiWyJiEEsiIlshAisgGztCa0PE8DJwYSREwnBxJETHEERCcGEkRxBEQnBxJEsSiyQiiyQCOyECKyAbZJsipLAbIpJbIjJwSyJScIsiYhBLIiJbIQIrIBs7QmtwA9RCcIEkSxJwyyBSiyQiiyQCOyECKyAbYnDLIFsiqyKSWyIycEsiUnCLImIQSyIiWyECKyAbOJigAAIkcCgABJIoAAMRtBAHwrjAAnBYwBgQKMAyKMBoEBjAQnDbGyBYsEQQAEiwayGYsAshqLAbIaiwMlD0EABIsFshooskIoskAjshAisgGztAWMArUaACsSRLUaAScFEkQxG4EBDUEAIrEnDrIaJLIZKLJCKLJAI7IQIrIBs7UaACcOEkSLAicNEkSJJwmMACcKjAEnC4wFJYwDgBFubyBhcmdzIHBhcmFtIHNldCKMBEL/cIoAALErshokshkoskIpskAjshAisgG2KLJCKbJAJwWyGiSyGSOyECKyAbYoskIpskAnCbIaJLIZI7IQIrIBtiiyQimyQCcKshokshkjshAisgG2KLJCKbJAJwuyGiSyGSOyECKyAbYoskIpskCAATayGiSyGSOyECKyAbYoskIpskCAATeyGiSyGSOyECKyAbYoskIpskCAATiyGiSyGSOyECKyAbYoskIpskCAATmyGiSyGSOyECKyAbYoskIpskAnD7IaJLIZI7IQIrIBtiiyQimyQCcQshokshkjshAisgG2KLJCKbJAJxGyGiSyGSOyECKyAbYoskIpskAnErIaJLIZI7IQIrIBtiiyQimyQCcTshokshkjshAisgG2KLJCKbJAJxSyGiSyGSOyECKyAbYoskIpskAnFbIaJLIZI7IQIrIBs7gAOgArEkS4AToAJwUSRLgCOgAnCRJEuAM6ACcKEkS4BDoAJwsSRLgFOgCAATYSRLgGOgCAATcSRLgHOgCAATgSRLgIOgCAATkSRLgJOgAnDxJEuAo6ACcQEkS4CzoAJxESRLgMOgAnEhJEuA06ACcTEkS4DjoAJxQSRLU6ACcVEkSJigAAgfwPr4ADgPwPTFCAAUhQsSWyOCuyGiSyGSiyQiiyQEmyQEmyQEmyQCOyECKyAbO0QbRDtDglEkRMgQISRLVAAChLA1BLAxUiSwEPIksCTwJNJUsCDyVLA08CTUsCTAlJSwIMSwFLA08CTUsHTwNPAlJPA0xQTwMSRLVAAUsETwJPA1JPA1ASRIEBEkS1QgAoEkSJ", + "clear": "CoEBQw==" + }, + "compilerInfo": { + "compiler": "puya", + "compilerVersion": { + "major": 4, + "minor": 2, + "patch": 1 + } + }, + "events": [], + "templateVariables": {} +} \ No newline at end of file diff --git a/tests/approvals/out/o1/itxn/ItxnDemoContract.ir/ItxnDemoContract.approval.0.ssa.ir b/tests/approvals/out/o1/itxn/ItxnDemoContract.ir/ItxnDemoContract.approval.0.ssa.ir index 22f0e1b1b..f2a677e10 100644 --- a/tests/approvals/out/o1/itxn/ItxnDemoContract.ir/ItxnDemoContract.approval.0.ssa.ir +++ b/tests/approvals/out/o1/itxn/ItxnDemoContract.ir/ItxnDemoContract.approval.0.ssa.ir @@ -1,50 +1,85 @@ -main tests/approvals/itxn.algo.ts::ItxnDemoContract.approvalProgram: - block@0: // L10 +main @algorandfoundation/algorand-typescript/arc4/index.d.ts::Contract.approvalProgram: + block@0: // L1 let reinterpret_bool%0#0: bool = (txn ApplicationID) goto reinterpret_bool%0#0 ? block@2 : block@1 block@1: // if_body_L1 tests/approvals/itxn.algo.ts::ItxnDemoContract.constructor() goto block@2 block@2: // after_if_else_L1 - let reinterpret_bool%1#0: bool = (txn NumAppArgs) - goto reinterpret_bool%1#0 ? block@3 : block@15 - block@3: // if_body_L11 - let tmp%0#0: bytes = ((txnas ApplicationArgs) 0u) - switch tmp%0#0 {"test1" => block@4, "test2" => block@6, "test3" => block@8, "test4" => block@10, * => block@12} - block@4: // switch_case_0_L13 - goto block@5 - block@5: // L13 - tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() - goto block@14 - block@6: // switch_case_1_L16 - goto block@7 - block@7: // L16 - tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() - goto block@14 - block@8: // switch_case_2_L19 - goto block@9 - block@9: // L19 - goto block@11 - block@10: // switch_case_3_L20 - goto block@11 - block@11: // L20 - goto block@14 - block@12: // switch_case_default_L12 - goto block@13 - block@13: // switch_case_next_L12 - goto block@14 - block@14: // L12 - goto block@15 - block@15: // after_if_else_L11 - return 1u + let tmp%0#0: bool = tests/approvals/itxn.algo.ts::ItxnDemoContract.__puya_arc4_router__() + return tmp%0#0 subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.constructor() -> void: block@0: // L7 (app_global_put "name" 0x) return +subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.__puya_arc4_router__() -> bool: + block@0: // L7 + let tmp%0#0: uint64 = (txn NumAppArgs) + let tmp%1#0: bool = (!= tmp%0#0 0u) + goto tmp%1#0 ? block@1 : block@8 + block@1: // abi_routing_L7 + let tmp%2#0: bytes = (txna ApplicationArgs 0) + switch tmp%2#0 {method "test1()void" => block@2, method "test2()void" => block@3, method "test3()void" => block@4, method "test4()void" => block@5, * => block@6} + block@2: // test1_route_L10 + let tmp%3#0: uint64 = (txn OnCompletion) + let tmp%4#0: bool = (== tmp%3#0 NoOp) + (assert tmp%4#0) // OnCompletion is not NoOp + let tmp%5#0: uint64 = (txn ApplicationID) + let tmp%6#0: bool = (!= tmp%5#0 0u) + (assert tmp%6#0) // can only call when not creating + tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() + return 1u + block@3: // test2_route_L58 + let tmp%7#0: uint64 = (txn OnCompletion) + let tmp%8#0: bool = (== tmp%7#0 NoOp) + (assert tmp%8#0) // OnCompletion is not NoOp + let tmp%9#0: uint64 = (txn ApplicationID) + let tmp%10#0: bool = (!= tmp%9#0 0u) + (assert tmp%10#0) // can only call when not creating + tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() + return 1u + block@4: // test3_route_L95 + let tmp%11#0: uint64 = (txn OnCompletion) + let tmp%12#0: bool = (== tmp%11#0 NoOp) + (assert tmp%12#0) // OnCompletion is not NoOp + let tmp%13#0: uint64 = (txn ApplicationID) + let tmp%14#0: bool = (!= tmp%13#0 0u) + (assert tmp%14#0) // can only call when not creating + tests/approvals/itxn.algo.ts::ItxnDemoContract.test3() + return 1u + block@5: // test4_route_L171 + let tmp%15#0: uint64 = (txn OnCompletion) + let tmp%16#0: bool = (== tmp%15#0 NoOp) + (assert tmp%16#0) // OnCompletion is not NoOp + let tmp%17#0: uint64 = (txn ApplicationID) + let tmp%18#0: bool = (!= tmp%17#0 0u) + (assert tmp%18#0) // can only call when not creating + tests/approvals/itxn.algo.ts::ItxnDemoContract.test4() + return 1u + block@6: // switch_case_default_L7 + goto block@7 + block@7: // switch_case_next_L7 + goto block@12 + block@8: // bare_routing_L7 + let tmp%19#0: uint64 = (txn OnCompletion) + switch tmp%19#0 {0u => block@9, * => block@10} + block@9: // __algots__.defaultCreate_L7 + let tmp%20#0: uint64 = (txn ApplicationID) + let tmp%21#0: bool = (== tmp%20#0 0u) + (assert tmp%21#0) // can only call when creating + tests/approvals/itxn.algo.ts::ItxnDemoContract.__algots__.defaultCreate() + return 1u + block@10: // switch_case_default_L7 + goto block@11 + block@11: // switch_case_next_L7 + goto block@12 + block@12: // after_if_else_L7 + return 0u + subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: - block@0: // L27 + block@0: // L10 (app_global_put "name" "AST1") let assetParams#0: itxn_field_set = itxn_field_set(0) let assetParams%%param_Fee_idx_0#0: uint64 = 0u @@ -119,7 +154,7 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: ((itxn_field TypeEnum) assetParams%%param_TypeEnum_idx_0#0) ((itxn_field Fee) assetParams%%param_Fee_idx_0#0) goto block@1 - block@1: // next_txn_L40 + block@1: // next_txn_L23 itxn_submit let asset1_txn#0: itxn_group_idx = itxn_group_idx(0) let asset1_txn._is_last#0: bool = 1u @@ -199,7 +234,7 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: ((itxn_field TypeEnum) assetParams%%param_TypeEnum_idx_0#0) ((itxn_field Fee) assetParams%%param_Fee_idx_0#0) goto block@2 - block@2: // next_txn_L44 + block@2: // next_txn_L27 itxn_submit let asset2_txn#0: itxn_group_idx = itxn_group_idx(0) let asset2_txn._is_last#0: bool = 1u @@ -341,7 +376,7 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: ((itxn_field TypeEnum) appCreateParams%%param_TypeEnum_idx_0#0) ((itxn_field Fee) appCreateParams%%param_Fee_idx_0#0) goto block@3 - block@3: // next_txn_L61 + block@3: // next_txn_L44 itxn_next ((itxn_field ConfigAssetReserve) assetParams%%param_ConfigAssetReserve_idx_0#0) ((itxn_field ConfigAssetManager) assetParams%%param_ConfigAssetManager_idx_0#0) @@ -352,7 +387,7 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: ((itxn_field TypeEnum) assetParams%%param_TypeEnum_idx_0#0) ((itxn_field Fee) assetParams%%param_Fee_idx_0#0) goto block@4 - block@4: // next_txn_L61 + block@4: // next_txn_L44 itxn_submit let appCreateTxn#0: itxn_group_idx = itxn_group_idx(0) let asset3_txn#0: itxn_group_idx = itxn_group_idx(1) @@ -480,7 +515,7 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: let asset3_txn.StateProofPK#0: bytes = itxn[asset3_txn#0].StateProofPK let asset3_txn.NumApprovalProgramPages#0: uint64 = itxn[asset3_txn#0].NumApprovalProgramPages let asset3_txn.NumClearStateProgramPages#0: uint64 = itxn[asset3_txn#0].NumClearStateProgramPages - let reinterpret_bool%0#0: bool = appCreateTxn.ApplicationID#0 + let reinterpret_bool%0#0: bool = appCreateTxn.CreatedApplicationID#0 (assert reinterpret_bool%0#0) // app is created let tmp%4#0: bool = (== asset3_txn.ConfigAssetName#0 "AST3") (assert tmp%4#0) // asset3_txn is correct @@ -493,23 +528,23 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: itxn_begin let is_Note_count_gte_1%0#0: bool = (>= appCreateParams%%Note_length#1 1u) goto is_Note_count_gte_1%0#0 ? block@5 : block@6 - block@5: // set_Note_0_to_0_L72 + block@5: // set_Note_0_to_0_L55 ((itxn_field Note) appCreateParams%%param_Note_idx_0#0) goto block@6 - block@6: // next_field_L72 + block@6: // next_field_L55 ((itxn_field ClearStateProgramPages) appCreateParams%%param_ClearStateProgramPages_idx_0#0) ((itxn_field ApprovalProgramPages) appCreateParams%%param_ApprovalProgramPages_idx_0#0) ((itxn_field TypeEnum) appCreateParams%%param_TypeEnum_idx_0#0) ((itxn_field Fee) appCreateParams%%param_Fee_idx_0#0) goto block@7 - block@7: // next_txn_L72 + block@7: // next_txn_L55 itxn_next let is_Note_count_gte_1%1#0: bool = (>= assetParams%%Note_length#1 1u) goto is_Note_count_gte_1%1#0 ? block@8 : block@9 - block@8: // set_Note_0_to_0_L72 + block@8: // set_Note_0_to_0_L55 ((itxn_field Note) assetParams%%param_Note_idx_0#0) goto block@9 - block@9: // next_field_L72 + block@9: // next_field_L55 ((itxn_field ConfigAssetReserve) assetParams%%param_ConfigAssetReserve_idx_0#0) ((itxn_field ConfigAssetManager) assetParams%%param_ConfigAssetManager_idx_0#0) ((itxn_field ConfigAssetDecimals) assetParams%%param_ConfigAssetDecimals_idx_0#0) @@ -519,26 +554,26 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: ((itxn_field TypeEnum) assetParams%%param_TypeEnum_idx_0#0) ((itxn_field Fee) assetParams%%param_Fee_idx_0#0) goto block@10 - block@10: // next_txn_L72 + block@10: // next_txn_L55 itxn_submit return subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() -> void: - block@0: // L75 + block@0: // L58 let createAppParams%%param_OnCompletion_idx_0#2: uint64 = undefined let createAppParams%%param_ApplicationArgs_idx_2#3: bytes = undefined let reinterpret_bool%0#0: bool = (txn NumAppArgs) goto reinterpret_bool%0#0 ? block@1 : block@2 - block@1: // if_body_L77 + block@1: // if_body_L60 let (args.0#0: bytes, args.1#0: bytes) = ("1", "2") let createAppParams#0: itxn_field_set = itxn_field_set(0) let createAppParams%%param_Fee_idx_0#0: uint64 = 0u let createAppParams%%Fee_length#0: uint64 = 1u let createAppParams%%param_TypeEnum_idx_0#0: uint64 = 6u let createAppParams%%TypeEnum_length#0: uint64 = 1u - let createAppParams%%param_ApprovalProgramPages_idx_0#0: bytes = "\t\xc2\x81\x01" + let createAppParams%%param_ApprovalProgramPages_idx_0#0: bytes = 0x098101 let createAppParams%%ApprovalProgramPages_length#0: uint64 = 1u - let createAppParams%%param_ClearStateProgramPages_idx_0#0: bytes = "\t\xc2\x81\x01" + let createAppParams%%param_ClearStateProgramPages_idx_0#0: bytes = 0x098101 let createAppParams%%ClearStateProgramPages_length#0: uint64 = 1u let createAppParams%%param_ApplicationArgs_idx_0#0: bytes = args.0#0 let createAppParams%%param_ApplicationArgs_idx_1#0: bytes = args.1#0 @@ -592,15 +627,15 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() -> void: let createAppParams%%Assets_length#0: uint64 = 0u let createAppParams%%Applications_length#0: uint64 = 0u goto block@3 - block@2: // else_body_L86 + block@2: // else_body_L69 let createAppParams#1: itxn_field_set = itxn_field_set(1) let createAppParams%%param_Fee_idx_0#1: uint64 = 0u let createAppParams%%Fee_length#1: uint64 = 1u let createAppParams%%param_TypeEnum_idx_0#1: uint64 = 6u let createAppParams%%TypeEnum_length#1: uint64 = 1u - let createAppParams%%param_ApprovalProgramPages_idx_0#1: bytes = "\t\xc2\x81\x01" + let createAppParams%%param_ApprovalProgramPages_idx_0#1: bytes = 0x098101 let createAppParams%%ApprovalProgramPages_length#1: uint64 = 1u - let createAppParams%%param_ClearStateProgramPages_idx_0#1: bytes = "\t\xc2\x81\x01" + let createAppParams%%param_ClearStateProgramPages_idx_0#1: bytes = 0x098101 let createAppParams%%ClearStateProgramPages_length#1: uint64 = 1u let createAppParams%%param_ApplicationArgs_idx_0#1: bytes = "3" let createAppParams%%param_ApplicationArgs_idx_1#1: bytes = "4" @@ -654,7 +689,7 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() -> void: let createAppParams%%Assets_length#1: uint64 = 0u let createAppParams%%Applications_length#1: uint64 = 0u goto block@3 - block@3: // after_if_else_L77 + block@3: // after_if_else_L60 let createAppParams%%param_Note_idx_0#2: bytes = φ(createAppParams%%param_Note_idx_0#0 <- block@1, createAppParams%%param_Note_idx_0#1 <- block@2) let createAppParams%%OnCompletion_length#2: uint64 = φ(createAppParams%%OnCompletion_length#0 <- block@1, createAppParams%%OnCompletion_length#1 <- block@2) let createAppParams%%param_OnCompletion_idx_0#1: uint64 = φ(createAppParams%%param_OnCompletion_idx_0#0 <- block@1, createAppParams%%param_OnCompletion_idx_0#2 <- block@2) @@ -670,24 +705,24 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() -> void: ((itxn_field Note) createAppParams%%param_Note_idx_0#2) let is_OnCompletion_count_gte_1%0#0: bool = (>= createAppParams%%OnCompletion_length#2 1u) goto is_OnCompletion_count_gte_1%0#0 ? block@4 : block@5 - block@4: // set_OnCompletion_0_to_0_L94 + block@4: // set_OnCompletion_0_to_0_L77 ((itxn_field OnCompletion) createAppParams%%param_OnCompletion_idx_0#1) goto block@5 - block@5: // next_field_L94 + block@5: // next_field_L77 ((itxn_field ApplicationArgs) createAppParams%%param_ApplicationArgs_idx_0#3) ((itxn_field ApplicationArgs) createAppParams%%param_ApplicationArgs_idx_1#3) let is_ApplicationArgs_count_gte_3%0#0: bool = (>= createAppParams%%ApplicationArgs_length#3 3u) goto is_ApplicationArgs_count_gte_3%0#0 ? block@6 : block@7 - block@6: // set_ApplicationArgs_2_to_2_L94 + block@6: // set_ApplicationArgs_2_to_2_L77 ((itxn_field ApplicationArgs) createAppParams%%param_ApplicationArgs_idx_2#2) goto block@7 - block@7: // next_field_L94 + block@7: // next_field_L77 ((itxn_field ClearStateProgramPages) createAppParams%%param_ClearStateProgramPages_idx_0#4) ((itxn_field ApprovalProgramPages) createAppParams%%param_ApprovalProgramPages_idx_0#4) ((itxn_field TypeEnum) createAppParams%%param_TypeEnum_idx_0#4) ((itxn_field Fee) createAppParams%%param_Fee_idx_0#4) goto block@8 - block@8: // next_txn_L94 + block@8: // next_txn_L77 itxn_submit let createAppTxn#0: itxn_group_idx = itxn_group_idx(0) let createAppTxn._is_last#0: bool = 1u @@ -758,6 +793,2492 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() -> void: let tmp%2#0: bytes = itxn[createAppTxn#0].ApplicationArgs[1u] let tmp%3#0: bool = (== tmp%2#0 "2") (assert tmp%3#0) // correct args used 2 - let tmp%4#0: bool = (== createAppTxn.Note#0 "with args param set") - (assert tmp%4#0) + let tmp%4#0: uint64 = (txn NumAppArgs) + let tmp%5#0: bool = (> tmp%4#0 1u) + goto tmp%5#0 ? block@9 : block@11 + block@9: // if_body_L81 + itxn_begin + let inner_txn_params%0#0: itxn_field_set = itxn_field_set(2) + let inner_txn_params%0%%param_Fee_idx_0#0: uint64 = 0u + let inner_txn_params%0%%Fee_length#0: uint64 = 1u + let inner_txn_params%0%%param_TypeEnum_idx_0#0: uint64 = 6u + let inner_txn_params%0%%TypeEnum_length#0: uint64 = 1u + let inner_txn_params%0%%param_ApprovalProgramPages_idx_0#0: bytes = 0x098101 + let inner_txn_params%0%%ApprovalProgramPages_length#0: uint64 = 1u + let inner_txn_params%0%%param_ClearStateProgramPages_idx_0#0: bytes = 0x098101 + let inner_txn_params%0%%ClearStateProgramPages_length#0: uint64 = 1u + let inner_txn_params%0%%param_OnCompletion_idx_0#0: uint64 = 5u + let inner_txn_params%0%%OnCompletion_length#0: uint64 = 1u + let inner_txn_params%0%%param_ApplicationArgs_idx_0#0: bytes = "42" + let inner_txn_params%0%%ApplicationArgs_length#0: uint64 = 1u + let inner_txn_params%0%%Sender_length#0: uint64 = 0u + let inner_txn_params%0%%Note_length#0: uint64 = 0u + let inner_txn_params%0%%Receiver_length#0: uint64 = 0u + let inner_txn_params%0%%Amount_length#0: uint64 = 0u + let inner_txn_params%0%%CloseRemainderTo_length#0: uint64 = 0u + let inner_txn_params%0%%VotePK_length#0: uint64 = 0u + let inner_txn_params%0%%SelectionPK_length#0: uint64 = 0u + let inner_txn_params%0%%VoteFirst_length#0: uint64 = 0u + let inner_txn_params%0%%VoteLast_length#0: uint64 = 0u + let inner_txn_params%0%%VoteKeyDilution_length#0: uint64 = 0u + let inner_txn_params%0%%Type_length#0: uint64 = 0u + let inner_txn_params%0%%XferAsset_length#0: uint64 = 0u + let inner_txn_params%0%%AssetAmount_length#0: uint64 = 0u + let inner_txn_params%0%%AssetSender_length#0: uint64 = 0u + let inner_txn_params%0%%AssetReceiver_length#0: uint64 = 0u + let inner_txn_params%0%%AssetCloseTo_length#0: uint64 = 0u + let inner_txn_params%0%%ApplicationID_length#0: uint64 = 0u + let inner_txn_params%0%%ApprovalProgram_length#0: uint64 = 0u + let inner_txn_params%0%%ClearStateProgram_length#0: uint64 = 0u + let inner_txn_params%0%%RekeyTo_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAsset_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetTotal_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetDecimals_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetDefaultFrozen_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetUnitName_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetName_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetURL_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetMetadataHash_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetManager_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetReserve_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetFreeze_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetClawback_length#0: uint64 = 0u + let inner_txn_params%0%%FreezeAsset_length#0: uint64 = 0u + let inner_txn_params%0%%FreezeAssetAccount_length#0: uint64 = 0u + let inner_txn_params%0%%FreezeAssetFrozen_length#0: uint64 = 0u + let inner_txn_params%0%%GlobalNumUint_length#0: uint64 = 0u + let inner_txn_params%0%%GlobalNumByteSlice_length#0: uint64 = 0u + let inner_txn_params%0%%LocalNumUint_length#0: uint64 = 0u + let inner_txn_params%0%%LocalNumByteSlice_length#0: uint64 = 0u + let inner_txn_params%0%%ExtraProgramPages_length#0: uint64 = 0u + let inner_txn_params%0%%Nonparticipation_length#0: uint64 = 0u + let inner_txn_params%0%%StateProofPK_length#0: uint64 = 0u + let inner_txn_params%0%%Accounts_length#0: uint64 = 0u + let inner_txn_params%0%%Assets_length#0: uint64 = 0u + let inner_txn_params%0%%Applications_length#0: uint64 = 0u + ((itxn_field ApplicationArgs) inner_txn_params%0%%param_ApplicationArgs_idx_0#0) + ((itxn_field OnCompletion) inner_txn_params%0%%param_OnCompletion_idx_0#0) + ((itxn_field ClearStateProgramPages) inner_txn_params%0%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) inner_txn_params%0%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field TypeEnum) inner_txn_params%0%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) inner_txn_params%0%%param_Fee_idx_0#0) + goto block@10 + block@10: // next_txn_L82 + itxn_submit + let createAppTxn2#0: itxn_group_idx = itxn_group_idx(0) + let createAppTxn2._is_last#0: bool = 1u + let createAppTxn2.Sender#0: bytes = itxn[createAppTxn2#0].Sender + let createAppTxn2.Fee#0: uint64 = itxn[createAppTxn2#0].Fee + let createAppTxn2.FirstValid#0: uint64 = itxn[createAppTxn2#0].FirstValid + let createAppTxn2.FirstValidTime#0: uint64 = itxn[createAppTxn2#0].FirstValidTime + let createAppTxn2.LastValid#0: uint64 = itxn[createAppTxn2#0].LastValid + let createAppTxn2.Note#0: bytes = itxn[createAppTxn2#0].Note + let createAppTxn2.Lease#0: bytes = itxn[createAppTxn2#0].Lease + let createAppTxn2.Receiver#0: bytes = itxn[createAppTxn2#0].Receiver + let createAppTxn2.Amount#0: uint64 = itxn[createAppTxn2#0].Amount + let createAppTxn2.CloseRemainderTo#0: bytes = itxn[createAppTxn2#0].CloseRemainderTo + let createAppTxn2.VotePK#0: bytes = itxn[createAppTxn2#0].VotePK + let createAppTxn2.SelectionPK#0: bytes = itxn[createAppTxn2#0].SelectionPK + let createAppTxn2.VoteFirst#0: uint64 = itxn[createAppTxn2#0].VoteFirst + let createAppTxn2.VoteLast#0: uint64 = itxn[createAppTxn2#0].VoteLast + let createAppTxn2.VoteKeyDilution#0: uint64 = itxn[createAppTxn2#0].VoteKeyDilution + let createAppTxn2.Type#0: bytes = itxn[createAppTxn2#0].Type + let createAppTxn2.TypeEnum#0: uint64 = itxn[createAppTxn2#0].TypeEnum + let createAppTxn2.XferAsset#0: uint64 = itxn[createAppTxn2#0].XferAsset + let createAppTxn2.AssetAmount#0: uint64 = itxn[createAppTxn2#0].AssetAmount + let createAppTxn2.AssetSender#0: bytes = itxn[createAppTxn2#0].AssetSender + let createAppTxn2.AssetReceiver#0: bytes = itxn[createAppTxn2#0].AssetReceiver + let createAppTxn2.AssetCloseTo#0: bytes = itxn[createAppTxn2#0].AssetCloseTo + let createAppTxn2.GroupIndex#0: uint64 = itxn[createAppTxn2#0].GroupIndex + let createAppTxn2.TxID#0: bytes = itxn[createAppTxn2#0].TxID + let createAppTxn2.ApplicationID#0: uint64 = itxn[createAppTxn2#0].ApplicationID + let createAppTxn2.OnCompletion#0: uint64 = itxn[createAppTxn2#0].OnCompletion + let createAppTxn2.NumAppArgs#0: uint64 = itxn[createAppTxn2#0].NumAppArgs + let createAppTxn2.NumAccounts#0: uint64 = itxn[createAppTxn2#0].NumAccounts + let createAppTxn2.ApprovalProgram#0: bytes = itxn[createAppTxn2#0].ApprovalProgram + let createAppTxn2.ClearStateProgram#0: bytes = itxn[createAppTxn2#0].ClearStateProgram + let createAppTxn2.RekeyTo#0: bytes = itxn[createAppTxn2#0].RekeyTo + let createAppTxn2.ConfigAsset#0: uint64 = itxn[createAppTxn2#0].ConfigAsset + let createAppTxn2.ConfigAssetTotal#0: uint64 = itxn[createAppTxn2#0].ConfigAssetTotal + let createAppTxn2.ConfigAssetDecimals#0: uint64 = itxn[createAppTxn2#0].ConfigAssetDecimals + let createAppTxn2.ConfigAssetDefaultFrozen#0: bool = itxn[createAppTxn2#0].ConfigAssetDefaultFrozen + let createAppTxn2.ConfigAssetUnitName#0: bytes = itxn[createAppTxn2#0].ConfigAssetUnitName + let createAppTxn2.ConfigAssetName#0: bytes = itxn[createAppTxn2#0].ConfigAssetName + let createAppTxn2.ConfigAssetURL#0: bytes = itxn[createAppTxn2#0].ConfigAssetURL + let createAppTxn2.ConfigAssetMetadataHash#0: bytes = itxn[createAppTxn2#0].ConfigAssetMetadataHash + let createAppTxn2.ConfigAssetManager#0: bytes = itxn[createAppTxn2#0].ConfigAssetManager + let createAppTxn2.ConfigAssetReserve#0: bytes = itxn[createAppTxn2#0].ConfigAssetReserve + let createAppTxn2.ConfigAssetFreeze#0: bytes = itxn[createAppTxn2#0].ConfigAssetFreeze + let createAppTxn2.ConfigAssetClawback#0: bytes = itxn[createAppTxn2#0].ConfigAssetClawback + let createAppTxn2.FreezeAsset#0: uint64 = itxn[createAppTxn2#0].FreezeAsset + let createAppTxn2.FreezeAssetAccount#0: bytes = itxn[createAppTxn2#0].FreezeAssetAccount + let createAppTxn2.FreezeAssetFrozen#0: bool = itxn[createAppTxn2#0].FreezeAssetFrozen + let createAppTxn2.NumAssets#0: uint64 = itxn[createAppTxn2#0].NumAssets + let createAppTxn2.NumApplications#0: uint64 = itxn[createAppTxn2#0].NumApplications + let createAppTxn2.GlobalNumUint#0: uint64 = itxn[createAppTxn2#0].GlobalNumUint + let createAppTxn2.GlobalNumByteSlice#0: uint64 = itxn[createAppTxn2#0].GlobalNumByteSlice + let createAppTxn2.LocalNumUint#0: uint64 = itxn[createAppTxn2#0].LocalNumUint + let createAppTxn2.LocalNumByteSlice#0: uint64 = itxn[createAppTxn2#0].LocalNumByteSlice + let createAppTxn2.ExtraProgramPages#0: uint64 = itxn[createAppTxn2#0].ExtraProgramPages + let createAppTxn2.Nonparticipation#0: bool = itxn[createAppTxn2#0].Nonparticipation + let createAppTxn2.NumLogs#0: uint64 = itxn[createAppTxn2#0].NumLogs + let createAppTxn2.CreatedAssetID#0: uint64 = itxn[createAppTxn2#0].CreatedAssetID + let createAppTxn2.CreatedApplicationID#0: uint64 = itxn[createAppTxn2#0].CreatedApplicationID + let createAppTxn2.LastLog#0: bytes = itxn[createAppTxn2#0].LastLog + let createAppTxn2.StateProofPK#0: bytes = itxn[createAppTxn2#0].StateProofPK + let createAppTxn2.NumApprovalProgramPages#0: uint64 = itxn[createAppTxn2#0].NumApprovalProgramPages + let createAppTxn2.NumClearStateProgramPages#0: uint64 = itxn[createAppTxn2#0].NumClearStateProgramPages + let tmp%6#0: bytes = itxn[createAppTxn2#0].ApplicationArgs[0u] + let tmp%7#0: bool = (== tmp%6#0 "42") + (assert tmp%7#0) // correct args used 2 + let tmp%8#0: bool = (== createAppTxn.Note#0 "with args param set") + (assert tmp%8#0) + goto block@11 + block@11: // after_if_else_L81 + return + +subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test3() -> void: + block@0: // L95 + let appTxn1#0: itxn_field_set = itxn_field_set(0) + let appTxn1%%param_Fee_idx_0#0: uint64 = 0u + let appTxn1%%Fee_length#0: uint64 = 1u + let appTxn1%%param_TypeEnum_idx_0#0: uint64 = 6u + let appTxn1%%TypeEnum_length#0: uint64 = 1u + let appTxn1%%param_ApprovalProgramPages_idx_0#0: bytes = 0x09361a00b08101 + let appTxn1%%ApprovalProgramPages_length#0: uint64 = 1u + let appTxn1%%param_ClearStateProgramPages_idx_0#0: bytes = 0x098101 + let appTxn1%%ClearStateProgramPages_length#0: uint64 = 1u + let appTxn1%%param_OnCompletion_idx_0#0: uint64 = 5u + let appTxn1%%OnCompletion_length#0: uint64 = 1u + let appTxn1%%param_ApplicationArgs_idx_0#0: bytes = "1" + let appTxn1%%ApplicationArgs_length#0: uint64 = 1u + let appTxn1%%Sender_length#0: uint64 = 0u + let appTxn1%%Note_length#0: uint64 = 0u + let appTxn1%%Receiver_length#0: uint64 = 0u + let appTxn1%%Amount_length#0: uint64 = 0u + let appTxn1%%CloseRemainderTo_length#0: uint64 = 0u + let appTxn1%%VotePK_length#0: uint64 = 0u + let appTxn1%%SelectionPK_length#0: uint64 = 0u + let appTxn1%%VoteFirst_length#0: uint64 = 0u + let appTxn1%%VoteLast_length#0: uint64 = 0u + let appTxn1%%VoteKeyDilution_length#0: uint64 = 0u + let appTxn1%%Type_length#0: uint64 = 0u + let appTxn1%%XferAsset_length#0: uint64 = 0u + let appTxn1%%AssetAmount_length#0: uint64 = 0u + let appTxn1%%AssetSender_length#0: uint64 = 0u + let appTxn1%%AssetReceiver_length#0: uint64 = 0u + let appTxn1%%AssetCloseTo_length#0: uint64 = 0u + let appTxn1%%ApplicationID_length#0: uint64 = 0u + let appTxn1%%ApprovalProgram_length#0: uint64 = 0u + let appTxn1%%ClearStateProgram_length#0: uint64 = 0u + let appTxn1%%RekeyTo_length#0: uint64 = 0u + let appTxn1%%ConfigAsset_length#0: uint64 = 0u + let appTxn1%%ConfigAssetTotal_length#0: uint64 = 0u + let appTxn1%%ConfigAssetDecimals_length#0: uint64 = 0u + let appTxn1%%ConfigAssetDefaultFrozen_length#0: uint64 = 0u + let appTxn1%%ConfigAssetUnitName_length#0: uint64 = 0u + let appTxn1%%ConfigAssetName_length#0: uint64 = 0u + let appTxn1%%ConfigAssetURL_length#0: uint64 = 0u + let appTxn1%%ConfigAssetMetadataHash_length#0: uint64 = 0u + let appTxn1%%ConfigAssetManager_length#0: uint64 = 0u + let appTxn1%%ConfigAssetReserve_length#0: uint64 = 0u + let appTxn1%%ConfigAssetFreeze_length#0: uint64 = 0u + let appTxn1%%ConfigAssetClawback_length#0: uint64 = 0u + let appTxn1%%FreezeAsset_length#0: uint64 = 0u + let appTxn1%%FreezeAssetAccount_length#0: uint64 = 0u + let appTxn1%%FreezeAssetFrozen_length#0: uint64 = 0u + let appTxn1%%GlobalNumUint_length#0: uint64 = 0u + let appTxn1%%GlobalNumByteSlice_length#0: uint64 = 0u + let appTxn1%%LocalNumUint_length#0: uint64 = 0u + let appTxn1%%LocalNumByteSlice_length#0: uint64 = 0u + let appTxn1%%ExtraProgramPages_length#0: uint64 = 0u + let appTxn1%%Nonparticipation_length#0: uint64 = 0u + let appTxn1%%StateProofPK_length#0: uint64 = 0u + let appTxn1%%Accounts_length#0: uint64 = 0u + let appTxn1%%Assets_length#0: uint64 = 0u + let appTxn1%%Applications_length#0: uint64 = 0u + let appTxn2%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn2%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn2%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn2%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn2%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn2%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn2%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn2%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn2%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn2%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn2%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn2%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn2%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn2%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn2%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn2%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn2%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn2%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn2%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn2%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn2%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn2%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn2%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn2%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn2%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn2%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn2%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn2%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn2%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn2%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn2%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn2%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn2%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn2%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn2%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn2%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn2%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn2%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn2%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn2%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn2%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn2%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn2%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn2%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn2%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn2%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn2%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn2%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn2%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn2%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn2%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn2%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn2%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn2%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn2%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn2%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn2%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn2#0: itxn_field_set = itxn_field_set(1) + let appTxn2%%param_ApplicationArgs_idx_0#1: bytes = "2" + let appTxn2%%ApplicationArgs_length#1: uint64 = 1u + let appTxn3%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn3%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn3%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn3%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn3%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn3%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn3%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn3%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn3%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn3%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn3%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn3%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn3%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn3%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn3%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn3%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn3%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn3%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn3%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn3%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn3%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn3%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn3%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn3%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn3%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn3%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn3%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn3%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn3%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn3%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn3%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn3%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn3%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn3%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn3%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn3%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn3%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn3%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn3%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn3%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn3%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn3%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn3%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn3%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn3%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn3%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn3%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn3%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn3%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn3%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn3%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn3%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn3%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn3%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn3%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn3%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn3%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn3#0: itxn_field_set = itxn_field_set(2) + let appTxn3%%param_ApplicationArgs_idx_0#1: bytes = "3" + let appTxn3%%ApplicationArgs_length#1: uint64 = 1u + let appTxn4%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn4%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn4%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn4%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn4%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn4%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn4%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn4%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn4%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn4%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn4%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn4%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn4%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn4%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn4%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn4%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn4%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn4%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn4%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn4%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn4%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn4%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn4%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn4%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn4%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn4%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn4%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn4%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn4%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn4%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn4%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn4%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn4%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn4%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn4%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn4%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn4%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn4%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn4%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn4%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn4%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn4%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn4%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn4%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn4%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn4%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn4%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn4%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn4%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn4%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn4%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn4%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn4%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn4%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn4%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn4%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn4%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn4#0: itxn_field_set = itxn_field_set(3) + let appTxn4%%param_ApplicationArgs_idx_0#1: bytes = "4" + let appTxn4%%ApplicationArgs_length#1: uint64 = 1u + let appTxn5%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn5%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn5%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn5%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn5%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn5%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn5%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn5%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn5%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn5%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn5%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn5%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn5%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn5%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn5%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn5%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn5%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn5%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn5%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn5%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn5%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn5%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn5%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn5%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn5%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn5%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn5%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn5%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn5%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn5%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn5%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn5%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn5%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn5%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn5%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn5%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn5%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn5%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn5%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn5%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn5%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn5%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn5%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn5%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn5%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn5%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn5%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn5%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn5%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn5%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn5%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn5%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn5%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn5%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn5%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn5%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn5%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn5#0: itxn_field_set = itxn_field_set(4) + let appTxn5%%param_ApplicationArgs_idx_0#1: bytes = "5" + let appTxn5%%ApplicationArgs_length#1: uint64 = 1u + let appTxn6%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn6%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn6%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn6%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn6%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn6%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn6%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn6%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn6%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn6%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn6%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn6%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn6%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn6%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn6%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn6%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn6%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn6%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn6%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn6%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn6%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn6%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn6%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn6%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn6%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn6%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn6%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn6%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn6%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn6%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn6%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn6%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn6%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn6%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn6%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn6%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn6%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn6%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn6%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn6%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn6%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn6%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn6%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn6%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn6%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn6%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn6%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn6%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn6%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn6%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn6%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn6%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn6%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn6%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn6%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn6%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn6%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn6#0: itxn_field_set = itxn_field_set(5) + let appTxn6%%param_ApplicationArgs_idx_0#1: bytes = "6" + let appTxn6%%ApplicationArgs_length#1: uint64 = 1u + let appTxn7%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn7%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn7%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn7%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn7%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn7%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn7%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn7%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn7%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn7%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn7%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn7%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn7%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn7%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn7%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn7%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn7%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn7%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn7%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn7%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn7%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn7%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn7%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn7%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn7%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn7%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn7%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn7%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn7%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn7%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn7%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn7%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn7%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn7%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn7%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn7%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn7%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn7%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn7%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn7%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn7%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn7%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn7%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn7%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn7%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn7%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn7%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn7%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn7%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn7%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn7%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn7%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn7%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn7%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn7%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn7%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn7%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn7#0: itxn_field_set = itxn_field_set(6) + let appTxn7%%param_ApplicationArgs_idx_0#1: bytes = "7" + let appTxn7%%ApplicationArgs_length#1: uint64 = 1u + let appTxn8%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn8%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn8%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn8%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn8%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn8%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn8%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn8%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn8%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn8%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn8%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn8%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn8%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn8%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn8%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn8%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn8%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn8%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn8%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn8%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn8%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn8%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn8%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn8%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn8%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn8%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn8%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn8%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn8%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn8%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn8%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn8%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn8%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn8%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn8%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn8%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn8%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn8%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn8%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn8%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn8%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn8%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn8%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn8%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn8%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn8%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn8%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn8%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn8%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn8%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn8%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn8%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn8%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn8%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn8%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn8%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn8%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn8#0: itxn_field_set = itxn_field_set(7) + let appTxn8%%param_ApplicationArgs_idx_0#1: bytes = "8" + let appTxn8%%ApplicationArgs_length#1: uint64 = 1u + let appTxn9%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn9%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn9%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn9%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn9%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn9%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn9%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn9%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn9%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn9%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn9%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn9%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn9%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn9%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn9%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn9%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn9%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn9%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn9%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn9%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn9%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn9%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn9%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn9%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn9%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn9%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn9%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn9%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn9%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn9%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn9%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn9%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn9%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn9%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn9%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn9%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn9%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn9%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn9%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn9%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn9%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn9%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn9%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn9%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn9%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn9%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn9%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn9%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn9%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn9%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn9%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn9%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn9%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn9%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn9%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn9%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn9%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn9#0: itxn_field_set = itxn_field_set(8) + let appTxn9%%param_ApplicationArgs_idx_0#1: bytes = "9" + let appTxn9%%ApplicationArgs_length#1: uint64 = 1u + let appTxn10%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn10%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn10%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn10%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn10%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn10%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn10%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn10%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn10%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn10%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn10%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn10%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn10%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn10%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn10%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn10%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn10%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn10%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn10%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn10%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn10%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn10%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn10%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn10%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn10%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn10%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn10%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn10%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn10%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn10%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn10%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn10%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn10%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn10%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn10%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn10%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn10%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn10%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn10%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn10%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn10%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn10%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn10%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn10%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn10%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn10%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn10%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn10%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn10%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn10%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn10%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn10%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn10%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn10%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn10%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn10%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn10%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn10#0: itxn_field_set = itxn_field_set(9) + let appTxn10%%param_ApplicationArgs_idx_0#1: bytes = "10" + let appTxn10%%ApplicationArgs_length#1: uint64 = 1u + let appTxn11%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn11%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn11%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn11%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn11%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn11%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn11%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn11%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn11%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn11%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn11%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn11%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn11%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn11%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn11%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn11%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn11%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn11%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn11%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn11%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn11%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn11%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn11%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn11%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn11%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn11%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn11%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn11%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn11%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn11%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn11%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn11%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn11%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn11%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn11%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn11%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn11%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn11%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn11%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn11%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn11%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn11%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn11%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn11%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn11%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn11%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn11%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn11%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn11%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn11%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn11%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn11%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn11%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn11%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn11%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn11%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn11%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn11#0: itxn_field_set = itxn_field_set(10) + let appTxn11%%param_ApplicationArgs_idx_0#1: bytes = "11" + let appTxn11%%ApplicationArgs_length#1: uint64 = 1u + let appTxn12%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn12%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn12%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn12%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn12%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn12%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn12%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn12%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn12%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn12%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn12%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn12%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn12%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn12%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn12%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn12%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn12%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn12%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn12%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn12%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn12%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn12%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn12%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn12%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn12%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn12%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn12%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn12%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn12%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn12%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn12%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn12%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn12%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn12%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn12%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn12%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn12%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn12%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn12%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn12%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn12%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn12%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn12%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn12%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn12%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn12%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn12%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn12%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn12%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn12%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn12%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn12%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn12%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn12%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn12%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn12%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn12%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn12#0: itxn_field_set = itxn_field_set(11) + let appTxn12%%param_ApplicationArgs_idx_0#1: bytes = "12" + let appTxn12%%ApplicationArgs_length#1: uint64 = 1u + let appTxn13%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn13%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn13%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn13%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn13%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn13%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn13%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn13%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn13%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn13%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn13%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn13%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn13%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn13%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn13%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn13%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn13%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn13%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn13%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn13%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn13%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn13%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn13%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn13%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn13%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn13%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn13%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn13%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn13%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn13%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn13%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn13%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn13%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn13%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn13%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn13%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn13%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn13%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn13%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn13%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn13%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn13%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn13%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn13%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn13%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn13%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn13%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn13%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn13%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn13%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn13%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn13%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn13%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn13%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn13%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn13%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn13%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn13#0: itxn_field_set = itxn_field_set(12) + let appTxn13%%param_ApplicationArgs_idx_0#1: bytes = "13" + let appTxn13%%ApplicationArgs_length#1: uint64 = 1u + let appTxn14%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn14%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn14%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn14%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn14%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn14%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn14%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn14%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn14%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn14%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn14%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn14%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn14%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn14%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn14%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn14%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn14%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn14%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn14%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn14%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn14%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn14%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn14%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn14%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn14%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn14%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn14%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn14%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn14%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn14%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn14%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn14%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn14%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn14%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn14%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn14%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn14%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn14%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn14%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn14%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn14%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn14%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn14%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn14%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn14%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn14%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn14%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn14%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn14%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn14%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn14%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn14%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn14%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn14%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn14%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn14%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn14%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn14#0: itxn_field_set = itxn_field_set(13) + let appTxn14%%param_ApplicationArgs_idx_0#1: bytes = "14" + let appTxn14%%ApplicationArgs_length#1: uint64 = 1u + let appTxn15%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn15%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn15%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn15%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn15%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn15%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn15%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn15%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn15%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn15%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn15%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn15%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn15%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn15%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn15%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn15%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn15%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn15%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn15%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn15%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn15%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn15%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn15%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn15%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn15%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn15%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn15%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn15%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn15%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn15%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn15%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn15%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn15%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn15%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn15%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn15%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn15%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn15%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn15%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn15%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn15%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn15%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn15%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn15%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn15%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn15%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn15%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn15%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn15%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn15%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn15%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn15%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn15%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn15%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn15%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn15%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn15%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn15#0: itxn_field_set = itxn_field_set(14) + let appTxn15%%param_ApplicationArgs_idx_0#1: bytes = "15" + let appTxn15%%ApplicationArgs_length#1: uint64 = 1u + let appTxn16%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn16%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn16%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn16%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn16%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn16%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn16%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn16%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn16%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn16%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn16%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn16%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn16%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn16%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn16%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn16%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn16%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn16%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn16%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn16%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn16%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn16%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn16%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn16%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn16%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn16%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn16%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn16%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn16%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn16%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn16%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn16%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn16%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn16%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn16%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn16%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn16%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn16%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn16%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn16%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn16%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn16%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn16%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn16%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn16%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn16%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn16%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn16%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn16%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn16%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn16%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn16%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn16%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn16%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn16%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn16%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn16%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn16#0: itxn_field_set = itxn_field_set(15) + let appTxn16%%param_ApplicationArgs_idx_0#1: bytes = "16" + let appTxn16%%ApplicationArgs_length#1: uint64 = 1u + itxn_begin + ((itxn_field ApplicationArgs) appTxn1%%param_ApplicationArgs_idx_0#0) + ((itxn_field OnCompletion) appTxn1%%param_OnCompletion_idx_0#0) + ((itxn_field ClearStateProgramPages) appTxn1%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn1%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field TypeEnum) appTxn1%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn1%%param_Fee_idx_0#0) + goto block@1 + block@1: // next_txn_L135 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn2%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn2%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn2%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn2%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn2%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn2%%param_Fee_idx_0#0) + goto block@2 + block@2: // next_txn_L136 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn3%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn3%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn3%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn3%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn3%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn3%%param_Fee_idx_0#0) + goto block@3 + block@3: // next_txn_L137 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn4%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn4%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn4%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn4%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn4%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn4%%param_Fee_idx_0#0) + goto block@4 + block@4: // next_txn_L138 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn5%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn5%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn5%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn5%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn5%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn5%%param_Fee_idx_0#0) + goto block@5 + block@5: // next_txn_L139 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn6%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn6%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn6%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn6%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn6%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn6%%param_Fee_idx_0#0) + goto block@6 + block@6: // next_txn_L140 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn7%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn7%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn7%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn7%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn7%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn7%%param_Fee_idx_0#0) + goto block@7 + block@7: // next_txn_L141 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn8%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn8%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn8%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn8%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn8%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn8%%param_Fee_idx_0#0) + goto block@8 + block@8: // next_txn_L142 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn9%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn9%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn9%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn9%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn9%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn9%%param_Fee_idx_0#0) + goto block@9 + block@9: // next_txn_L143 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn10%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn10%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn10%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn10%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn10%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn10%%param_Fee_idx_0#0) + goto block@10 + block@10: // next_txn_L144 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn11%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn11%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn11%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn11%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn11%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn11%%param_Fee_idx_0#0) + goto block@11 + block@11: // next_txn_L145 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn12%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn12%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn12%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn12%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn12%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn12%%param_Fee_idx_0#0) + goto block@12 + block@12: // next_txn_L146 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn13%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn13%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn13%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn13%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn13%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn13%%param_Fee_idx_0#0) + goto block@13 + block@13: // next_txn_L147 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn14%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn14%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn14%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn14%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn14%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn14%%param_Fee_idx_0#0) + goto block@14 + block@14: // next_txn_L148 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn15%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn15%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn15%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn15%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn15%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn15%%param_Fee_idx_0#0) + goto block@15 + block@15: // next_txn_L149 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn16%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn16%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn16%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn16%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn16%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn16%%param_Fee_idx_0#0) + goto block@16 + block@16: // next_txn_L150 + itxn_submit + let app1#0: itxn_group_idx = itxn_group_idx(0) + let app2#0: itxn_group_idx = itxn_group_idx(1) + let app3#0: itxn_group_idx = itxn_group_idx(2) + let app4#0: itxn_group_idx = itxn_group_idx(3) + let app5#0: itxn_group_idx = itxn_group_idx(4) + let app6#0: itxn_group_idx = itxn_group_idx(5) + let app7#0: itxn_group_idx = itxn_group_idx(6) + let app8#0: itxn_group_idx = itxn_group_idx(7) + let app9#0: itxn_group_idx = itxn_group_idx(8) + let app10#0: itxn_group_idx = itxn_group_idx(9) + let app11#0: itxn_group_idx = itxn_group_idx(10) + let app12#0: itxn_group_idx = itxn_group_idx(11) + let app13#0: itxn_group_idx = itxn_group_idx(12) + let app14#0: itxn_group_idx = itxn_group_idx(13) + let app15#0: itxn_group_idx = itxn_group_idx(14) + let app16#0: itxn_group_idx = itxn_group_idx(15) + let app1._is_last#0: bool = 0u + let app1.Sender#0: bytes = itxn[app1#0].Sender + let app1.Fee#0: uint64 = itxn[app1#0].Fee + let app1.FirstValid#0: uint64 = itxn[app1#0].FirstValid + let app1.FirstValidTime#0: uint64 = itxn[app1#0].FirstValidTime + let app1.LastValid#0: uint64 = itxn[app1#0].LastValid + let app1.Note#0: bytes = itxn[app1#0].Note + let app1.Lease#0: bytes = itxn[app1#0].Lease + let app1.Receiver#0: bytes = itxn[app1#0].Receiver + let app1.Amount#0: uint64 = itxn[app1#0].Amount + let app1.CloseRemainderTo#0: bytes = itxn[app1#0].CloseRemainderTo + let app1.VotePK#0: bytes = itxn[app1#0].VotePK + let app1.SelectionPK#0: bytes = itxn[app1#0].SelectionPK + let app1.VoteFirst#0: uint64 = itxn[app1#0].VoteFirst + let app1.VoteLast#0: uint64 = itxn[app1#0].VoteLast + let app1.VoteKeyDilution#0: uint64 = itxn[app1#0].VoteKeyDilution + let app1.Type#0: bytes = itxn[app1#0].Type + let app1.TypeEnum#0: uint64 = itxn[app1#0].TypeEnum + let app1.XferAsset#0: uint64 = itxn[app1#0].XferAsset + let app1.AssetAmount#0: uint64 = itxn[app1#0].AssetAmount + let app1.AssetSender#0: bytes = itxn[app1#0].AssetSender + let app1.AssetReceiver#0: bytes = itxn[app1#0].AssetReceiver + let app1.AssetCloseTo#0: bytes = itxn[app1#0].AssetCloseTo + let app1.GroupIndex#0: uint64 = itxn[app1#0].GroupIndex + let app1.TxID#0: bytes = itxn[app1#0].TxID + let app1.ApplicationID#0: uint64 = itxn[app1#0].ApplicationID + let app1.OnCompletion#0: uint64 = itxn[app1#0].OnCompletion + let app1.NumAppArgs#0: uint64 = itxn[app1#0].NumAppArgs + let app1.NumAccounts#0: uint64 = itxn[app1#0].NumAccounts + let app1.ApprovalProgram#0: bytes = itxn[app1#0].ApprovalProgram + let app1.ClearStateProgram#0: bytes = itxn[app1#0].ClearStateProgram + let app1.RekeyTo#0: bytes = itxn[app1#0].RekeyTo + let app1.ConfigAsset#0: uint64 = itxn[app1#0].ConfigAsset + let app1.ConfigAssetTotal#0: uint64 = itxn[app1#0].ConfigAssetTotal + let app1.ConfigAssetDecimals#0: uint64 = itxn[app1#0].ConfigAssetDecimals + let app1.ConfigAssetDefaultFrozen#0: bool = itxn[app1#0].ConfigAssetDefaultFrozen + let app1.ConfigAssetUnitName#0: bytes = itxn[app1#0].ConfigAssetUnitName + let app1.ConfigAssetName#0: bytes = itxn[app1#0].ConfigAssetName + let app1.ConfigAssetURL#0: bytes = itxn[app1#0].ConfigAssetURL + let app1.ConfigAssetMetadataHash#0: bytes = itxn[app1#0].ConfigAssetMetadataHash + let app1.ConfigAssetManager#0: bytes = itxn[app1#0].ConfigAssetManager + let app1.ConfigAssetReserve#0: bytes = itxn[app1#0].ConfigAssetReserve + let app1.ConfigAssetFreeze#0: bytes = itxn[app1#0].ConfigAssetFreeze + let app1.ConfigAssetClawback#0: bytes = itxn[app1#0].ConfigAssetClawback + let app1.FreezeAsset#0: uint64 = itxn[app1#0].FreezeAsset + let app1.FreezeAssetAccount#0: bytes = itxn[app1#0].FreezeAssetAccount + let app1.FreezeAssetFrozen#0: bool = itxn[app1#0].FreezeAssetFrozen + let app1.NumAssets#0: uint64 = itxn[app1#0].NumAssets + let app1.NumApplications#0: uint64 = itxn[app1#0].NumApplications + let app1.GlobalNumUint#0: uint64 = itxn[app1#0].GlobalNumUint + let app1.GlobalNumByteSlice#0: uint64 = itxn[app1#0].GlobalNumByteSlice + let app1.LocalNumUint#0: uint64 = itxn[app1#0].LocalNumUint + let app1.LocalNumByteSlice#0: uint64 = itxn[app1#0].LocalNumByteSlice + let app1.ExtraProgramPages#0: uint64 = itxn[app1#0].ExtraProgramPages + let app1.Nonparticipation#0: bool = itxn[app1#0].Nonparticipation + let app1.NumLogs#0: uint64 = itxn[app1#0].NumLogs + let app1.CreatedAssetID#0: uint64 = itxn[app1#0].CreatedAssetID + let app1.CreatedApplicationID#0: uint64 = itxn[app1#0].CreatedApplicationID + let app1.LastLog#0: bytes = itxn[app1#0].LastLog + let app1.StateProofPK#0: bytes = itxn[app1#0].StateProofPK + let app1.NumApprovalProgramPages#0: uint64 = itxn[app1#0].NumApprovalProgramPages + let app1.NumClearStateProgramPages#0: uint64 = itxn[app1#0].NumClearStateProgramPages + let app2._is_last#0: bool = 0u + let app2.Sender#0: bytes = itxn[app2#0].Sender + let app2.Fee#0: uint64 = itxn[app2#0].Fee + let app2.FirstValid#0: uint64 = itxn[app2#0].FirstValid + let app2.FirstValidTime#0: uint64 = itxn[app2#0].FirstValidTime + let app2.LastValid#0: uint64 = itxn[app2#0].LastValid + let app2.Note#0: bytes = itxn[app2#0].Note + let app2.Lease#0: bytes = itxn[app2#0].Lease + let app2.Receiver#0: bytes = itxn[app2#0].Receiver + let app2.Amount#0: uint64 = itxn[app2#0].Amount + let app2.CloseRemainderTo#0: bytes = itxn[app2#0].CloseRemainderTo + let app2.VotePK#0: bytes = itxn[app2#0].VotePK + let app2.SelectionPK#0: bytes = itxn[app2#0].SelectionPK + let app2.VoteFirst#0: uint64 = itxn[app2#0].VoteFirst + let app2.VoteLast#0: uint64 = itxn[app2#0].VoteLast + let app2.VoteKeyDilution#0: uint64 = itxn[app2#0].VoteKeyDilution + let app2.Type#0: bytes = itxn[app2#0].Type + let app2.TypeEnum#0: uint64 = itxn[app2#0].TypeEnum + let app2.XferAsset#0: uint64 = itxn[app2#0].XferAsset + let app2.AssetAmount#0: uint64 = itxn[app2#0].AssetAmount + let app2.AssetSender#0: bytes = itxn[app2#0].AssetSender + let app2.AssetReceiver#0: bytes = itxn[app2#0].AssetReceiver + let app2.AssetCloseTo#0: bytes = itxn[app2#0].AssetCloseTo + let app2.GroupIndex#0: uint64 = itxn[app2#0].GroupIndex + let app2.TxID#0: bytes = itxn[app2#0].TxID + let app2.ApplicationID#0: uint64 = itxn[app2#0].ApplicationID + let app2.OnCompletion#0: uint64 = itxn[app2#0].OnCompletion + let app2.NumAppArgs#0: uint64 = itxn[app2#0].NumAppArgs + let app2.NumAccounts#0: uint64 = itxn[app2#0].NumAccounts + let app2.ApprovalProgram#0: bytes = itxn[app2#0].ApprovalProgram + let app2.ClearStateProgram#0: bytes = itxn[app2#0].ClearStateProgram + let app2.RekeyTo#0: bytes = itxn[app2#0].RekeyTo + let app2.ConfigAsset#0: uint64 = itxn[app2#0].ConfigAsset + let app2.ConfigAssetTotal#0: uint64 = itxn[app2#0].ConfigAssetTotal + let app2.ConfigAssetDecimals#0: uint64 = itxn[app2#0].ConfigAssetDecimals + let app2.ConfigAssetDefaultFrozen#0: bool = itxn[app2#0].ConfigAssetDefaultFrozen + let app2.ConfigAssetUnitName#0: bytes = itxn[app2#0].ConfigAssetUnitName + let app2.ConfigAssetName#0: bytes = itxn[app2#0].ConfigAssetName + let app2.ConfigAssetURL#0: bytes = itxn[app2#0].ConfigAssetURL + let app2.ConfigAssetMetadataHash#0: bytes = itxn[app2#0].ConfigAssetMetadataHash + let app2.ConfigAssetManager#0: bytes = itxn[app2#0].ConfigAssetManager + let app2.ConfigAssetReserve#0: bytes = itxn[app2#0].ConfigAssetReserve + let app2.ConfigAssetFreeze#0: bytes = itxn[app2#0].ConfigAssetFreeze + let app2.ConfigAssetClawback#0: bytes = itxn[app2#0].ConfigAssetClawback + let app2.FreezeAsset#0: uint64 = itxn[app2#0].FreezeAsset + let app2.FreezeAssetAccount#0: bytes = itxn[app2#0].FreezeAssetAccount + let app2.FreezeAssetFrozen#0: bool = itxn[app2#0].FreezeAssetFrozen + let app2.NumAssets#0: uint64 = itxn[app2#0].NumAssets + let app2.NumApplications#0: uint64 = itxn[app2#0].NumApplications + let app2.GlobalNumUint#0: uint64 = itxn[app2#0].GlobalNumUint + let app2.GlobalNumByteSlice#0: uint64 = itxn[app2#0].GlobalNumByteSlice + let app2.LocalNumUint#0: uint64 = itxn[app2#0].LocalNumUint + let app2.LocalNumByteSlice#0: uint64 = itxn[app2#0].LocalNumByteSlice + let app2.ExtraProgramPages#0: uint64 = itxn[app2#0].ExtraProgramPages + let app2.Nonparticipation#0: bool = itxn[app2#0].Nonparticipation + let app2.NumLogs#0: uint64 = itxn[app2#0].NumLogs + let app2.CreatedAssetID#0: uint64 = itxn[app2#0].CreatedAssetID + let app2.CreatedApplicationID#0: uint64 = itxn[app2#0].CreatedApplicationID + let app2.LastLog#0: bytes = itxn[app2#0].LastLog + let app2.StateProofPK#0: bytes = itxn[app2#0].StateProofPK + let app2.NumApprovalProgramPages#0: uint64 = itxn[app2#0].NumApprovalProgramPages + let app2.NumClearStateProgramPages#0: uint64 = itxn[app2#0].NumClearStateProgramPages + let app3._is_last#0: bool = 0u + let app3.Sender#0: bytes = itxn[app3#0].Sender + let app3.Fee#0: uint64 = itxn[app3#0].Fee + let app3.FirstValid#0: uint64 = itxn[app3#0].FirstValid + let app3.FirstValidTime#0: uint64 = itxn[app3#0].FirstValidTime + let app3.LastValid#0: uint64 = itxn[app3#0].LastValid + let app3.Note#0: bytes = itxn[app3#0].Note + let app3.Lease#0: bytes = itxn[app3#0].Lease + let app3.Receiver#0: bytes = itxn[app3#0].Receiver + let app3.Amount#0: uint64 = itxn[app3#0].Amount + let app3.CloseRemainderTo#0: bytes = itxn[app3#0].CloseRemainderTo + let app3.VotePK#0: bytes = itxn[app3#0].VotePK + let app3.SelectionPK#0: bytes = itxn[app3#0].SelectionPK + let app3.VoteFirst#0: uint64 = itxn[app3#0].VoteFirst + let app3.VoteLast#0: uint64 = itxn[app3#0].VoteLast + let app3.VoteKeyDilution#0: uint64 = itxn[app3#0].VoteKeyDilution + let app3.Type#0: bytes = itxn[app3#0].Type + let app3.TypeEnum#0: uint64 = itxn[app3#0].TypeEnum + let app3.XferAsset#0: uint64 = itxn[app3#0].XferAsset + let app3.AssetAmount#0: uint64 = itxn[app3#0].AssetAmount + let app3.AssetSender#0: bytes = itxn[app3#0].AssetSender + let app3.AssetReceiver#0: bytes = itxn[app3#0].AssetReceiver + let app3.AssetCloseTo#0: bytes = itxn[app3#0].AssetCloseTo + let app3.GroupIndex#0: uint64 = itxn[app3#0].GroupIndex + let app3.TxID#0: bytes = itxn[app3#0].TxID + let app3.ApplicationID#0: uint64 = itxn[app3#0].ApplicationID + let app3.OnCompletion#0: uint64 = itxn[app3#0].OnCompletion + let app3.NumAppArgs#0: uint64 = itxn[app3#0].NumAppArgs + let app3.NumAccounts#0: uint64 = itxn[app3#0].NumAccounts + let app3.ApprovalProgram#0: bytes = itxn[app3#0].ApprovalProgram + let app3.ClearStateProgram#0: bytes = itxn[app3#0].ClearStateProgram + let app3.RekeyTo#0: bytes = itxn[app3#0].RekeyTo + let app3.ConfigAsset#0: uint64 = itxn[app3#0].ConfigAsset + let app3.ConfigAssetTotal#0: uint64 = itxn[app3#0].ConfigAssetTotal + let app3.ConfigAssetDecimals#0: uint64 = itxn[app3#0].ConfigAssetDecimals + let app3.ConfigAssetDefaultFrozen#0: bool = itxn[app3#0].ConfigAssetDefaultFrozen + let app3.ConfigAssetUnitName#0: bytes = itxn[app3#0].ConfigAssetUnitName + let app3.ConfigAssetName#0: bytes = itxn[app3#0].ConfigAssetName + let app3.ConfigAssetURL#0: bytes = itxn[app3#0].ConfigAssetURL + let app3.ConfigAssetMetadataHash#0: bytes = itxn[app3#0].ConfigAssetMetadataHash + let app3.ConfigAssetManager#0: bytes = itxn[app3#0].ConfigAssetManager + let app3.ConfigAssetReserve#0: bytes = itxn[app3#0].ConfigAssetReserve + let app3.ConfigAssetFreeze#0: bytes = itxn[app3#0].ConfigAssetFreeze + let app3.ConfigAssetClawback#0: bytes = itxn[app3#0].ConfigAssetClawback + let app3.FreezeAsset#0: uint64 = itxn[app3#0].FreezeAsset + let app3.FreezeAssetAccount#0: bytes = itxn[app3#0].FreezeAssetAccount + let app3.FreezeAssetFrozen#0: bool = itxn[app3#0].FreezeAssetFrozen + let app3.NumAssets#0: uint64 = itxn[app3#0].NumAssets + let app3.NumApplications#0: uint64 = itxn[app3#0].NumApplications + let app3.GlobalNumUint#0: uint64 = itxn[app3#0].GlobalNumUint + let app3.GlobalNumByteSlice#0: uint64 = itxn[app3#0].GlobalNumByteSlice + let app3.LocalNumUint#0: uint64 = itxn[app3#0].LocalNumUint + let app3.LocalNumByteSlice#0: uint64 = itxn[app3#0].LocalNumByteSlice + let app3.ExtraProgramPages#0: uint64 = itxn[app3#0].ExtraProgramPages + let app3.Nonparticipation#0: bool = itxn[app3#0].Nonparticipation + let app3.NumLogs#0: uint64 = itxn[app3#0].NumLogs + let app3.CreatedAssetID#0: uint64 = itxn[app3#0].CreatedAssetID + let app3.CreatedApplicationID#0: uint64 = itxn[app3#0].CreatedApplicationID + let app3.LastLog#0: bytes = itxn[app3#0].LastLog + let app3.StateProofPK#0: bytes = itxn[app3#0].StateProofPK + let app3.NumApprovalProgramPages#0: uint64 = itxn[app3#0].NumApprovalProgramPages + let app3.NumClearStateProgramPages#0: uint64 = itxn[app3#0].NumClearStateProgramPages + let app4._is_last#0: bool = 0u + let app4.Sender#0: bytes = itxn[app4#0].Sender + let app4.Fee#0: uint64 = itxn[app4#0].Fee + let app4.FirstValid#0: uint64 = itxn[app4#0].FirstValid + let app4.FirstValidTime#0: uint64 = itxn[app4#0].FirstValidTime + let app4.LastValid#0: uint64 = itxn[app4#0].LastValid + let app4.Note#0: bytes = itxn[app4#0].Note + let app4.Lease#0: bytes = itxn[app4#0].Lease + let app4.Receiver#0: bytes = itxn[app4#0].Receiver + let app4.Amount#0: uint64 = itxn[app4#0].Amount + let app4.CloseRemainderTo#0: bytes = itxn[app4#0].CloseRemainderTo + let app4.VotePK#0: bytes = itxn[app4#0].VotePK + let app4.SelectionPK#0: bytes = itxn[app4#0].SelectionPK + let app4.VoteFirst#0: uint64 = itxn[app4#0].VoteFirst + let app4.VoteLast#0: uint64 = itxn[app4#0].VoteLast + let app4.VoteKeyDilution#0: uint64 = itxn[app4#0].VoteKeyDilution + let app4.Type#0: bytes = itxn[app4#0].Type + let app4.TypeEnum#0: uint64 = itxn[app4#0].TypeEnum + let app4.XferAsset#0: uint64 = itxn[app4#0].XferAsset + let app4.AssetAmount#0: uint64 = itxn[app4#0].AssetAmount + let app4.AssetSender#0: bytes = itxn[app4#0].AssetSender + let app4.AssetReceiver#0: bytes = itxn[app4#0].AssetReceiver + let app4.AssetCloseTo#0: bytes = itxn[app4#0].AssetCloseTo + let app4.GroupIndex#0: uint64 = itxn[app4#0].GroupIndex + let app4.TxID#0: bytes = itxn[app4#0].TxID + let app4.ApplicationID#0: uint64 = itxn[app4#0].ApplicationID + let app4.OnCompletion#0: uint64 = itxn[app4#0].OnCompletion + let app4.NumAppArgs#0: uint64 = itxn[app4#0].NumAppArgs + let app4.NumAccounts#0: uint64 = itxn[app4#0].NumAccounts + let app4.ApprovalProgram#0: bytes = itxn[app4#0].ApprovalProgram + let app4.ClearStateProgram#0: bytes = itxn[app4#0].ClearStateProgram + let app4.RekeyTo#0: bytes = itxn[app4#0].RekeyTo + let app4.ConfigAsset#0: uint64 = itxn[app4#0].ConfigAsset + let app4.ConfigAssetTotal#0: uint64 = itxn[app4#0].ConfigAssetTotal + let app4.ConfigAssetDecimals#0: uint64 = itxn[app4#0].ConfigAssetDecimals + let app4.ConfigAssetDefaultFrozen#0: bool = itxn[app4#0].ConfigAssetDefaultFrozen + let app4.ConfigAssetUnitName#0: bytes = itxn[app4#0].ConfigAssetUnitName + let app4.ConfigAssetName#0: bytes = itxn[app4#0].ConfigAssetName + let app4.ConfigAssetURL#0: bytes = itxn[app4#0].ConfigAssetURL + let app4.ConfigAssetMetadataHash#0: bytes = itxn[app4#0].ConfigAssetMetadataHash + let app4.ConfigAssetManager#0: bytes = itxn[app4#0].ConfigAssetManager + let app4.ConfigAssetReserve#0: bytes = itxn[app4#0].ConfigAssetReserve + let app4.ConfigAssetFreeze#0: bytes = itxn[app4#0].ConfigAssetFreeze + let app4.ConfigAssetClawback#0: bytes = itxn[app4#0].ConfigAssetClawback + let app4.FreezeAsset#0: uint64 = itxn[app4#0].FreezeAsset + let app4.FreezeAssetAccount#0: bytes = itxn[app4#0].FreezeAssetAccount + let app4.FreezeAssetFrozen#0: bool = itxn[app4#0].FreezeAssetFrozen + let app4.NumAssets#0: uint64 = itxn[app4#0].NumAssets + let app4.NumApplications#0: uint64 = itxn[app4#0].NumApplications + let app4.GlobalNumUint#0: uint64 = itxn[app4#0].GlobalNumUint + let app4.GlobalNumByteSlice#0: uint64 = itxn[app4#0].GlobalNumByteSlice + let app4.LocalNumUint#0: uint64 = itxn[app4#0].LocalNumUint + let app4.LocalNumByteSlice#0: uint64 = itxn[app4#0].LocalNumByteSlice + let app4.ExtraProgramPages#0: uint64 = itxn[app4#0].ExtraProgramPages + let app4.Nonparticipation#0: bool = itxn[app4#0].Nonparticipation + let app4.NumLogs#0: uint64 = itxn[app4#0].NumLogs + let app4.CreatedAssetID#0: uint64 = itxn[app4#0].CreatedAssetID + let app4.CreatedApplicationID#0: uint64 = itxn[app4#0].CreatedApplicationID + let app4.LastLog#0: bytes = itxn[app4#0].LastLog + let app4.StateProofPK#0: bytes = itxn[app4#0].StateProofPK + let app4.NumApprovalProgramPages#0: uint64 = itxn[app4#0].NumApprovalProgramPages + let app4.NumClearStateProgramPages#0: uint64 = itxn[app4#0].NumClearStateProgramPages + let app5._is_last#0: bool = 0u + let app5.Sender#0: bytes = itxn[app5#0].Sender + let app5.Fee#0: uint64 = itxn[app5#0].Fee + let app5.FirstValid#0: uint64 = itxn[app5#0].FirstValid + let app5.FirstValidTime#0: uint64 = itxn[app5#0].FirstValidTime + let app5.LastValid#0: uint64 = itxn[app5#0].LastValid + let app5.Note#0: bytes = itxn[app5#0].Note + let app5.Lease#0: bytes = itxn[app5#0].Lease + let app5.Receiver#0: bytes = itxn[app5#0].Receiver + let app5.Amount#0: uint64 = itxn[app5#0].Amount + let app5.CloseRemainderTo#0: bytes = itxn[app5#0].CloseRemainderTo + let app5.VotePK#0: bytes = itxn[app5#0].VotePK + let app5.SelectionPK#0: bytes = itxn[app5#0].SelectionPK + let app5.VoteFirst#0: uint64 = itxn[app5#0].VoteFirst + let app5.VoteLast#0: uint64 = itxn[app5#0].VoteLast + let app5.VoteKeyDilution#0: uint64 = itxn[app5#0].VoteKeyDilution + let app5.Type#0: bytes = itxn[app5#0].Type + let app5.TypeEnum#0: uint64 = itxn[app5#0].TypeEnum + let app5.XferAsset#0: uint64 = itxn[app5#0].XferAsset + let app5.AssetAmount#0: uint64 = itxn[app5#0].AssetAmount + let app5.AssetSender#0: bytes = itxn[app5#0].AssetSender + let app5.AssetReceiver#0: bytes = itxn[app5#0].AssetReceiver + let app5.AssetCloseTo#0: bytes = itxn[app5#0].AssetCloseTo + let app5.GroupIndex#0: uint64 = itxn[app5#0].GroupIndex + let app5.TxID#0: bytes = itxn[app5#0].TxID + let app5.ApplicationID#0: uint64 = itxn[app5#0].ApplicationID + let app5.OnCompletion#0: uint64 = itxn[app5#0].OnCompletion + let app5.NumAppArgs#0: uint64 = itxn[app5#0].NumAppArgs + let app5.NumAccounts#0: uint64 = itxn[app5#0].NumAccounts + let app5.ApprovalProgram#0: bytes = itxn[app5#0].ApprovalProgram + let app5.ClearStateProgram#0: bytes = itxn[app5#0].ClearStateProgram + let app5.RekeyTo#0: bytes = itxn[app5#0].RekeyTo + let app5.ConfigAsset#0: uint64 = itxn[app5#0].ConfigAsset + let app5.ConfigAssetTotal#0: uint64 = itxn[app5#0].ConfigAssetTotal + let app5.ConfigAssetDecimals#0: uint64 = itxn[app5#0].ConfigAssetDecimals + let app5.ConfigAssetDefaultFrozen#0: bool = itxn[app5#0].ConfigAssetDefaultFrozen + let app5.ConfigAssetUnitName#0: bytes = itxn[app5#0].ConfigAssetUnitName + let app5.ConfigAssetName#0: bytes = itxn[app5#0].ConfigAssetName + let app5.ConfigAssetURL#0: bytes = itxn[app5#0].ConfigAssetURL + let app5.ConfigAssetMetadataHash#0: bytes = itxn[app5#0].ConfigAssetMetadataHash + let app5.ConfigAssetManager#0: bytes = itxn[app5#0].ConfigAssetManager + let app5.ConfigAssetReserve#0: bytes = itxn[app5#0].ConfigAssetReserve + let app5.ConfigAssetFreeze#0: bytes = itxn[app5#0].ConfigAssetFreeze + let app5.ConfigAssetClawback#0: bytes = itxn[app5#0].ConfigAssetClawback + let app5.FreezeAsset#0: uint64 = itxn[app5#0].FreezeAsset + let app5.FreezeAssetAccount#0: bytes = itxn[app5#0].FreezeAssetAccount + let app5.FreezeAssetFrozen#0: bool = itxn[app5#0].FreezeAssetFrozen + let app5.NumAssets#0: uint64 = itxn[app5#0].NumAssets + let app5.NumApplications#0: uint64 = itxn[app5#0].NumApplications + let app5.GlobalNumUint#0: uint64 = itxn[app5#0].GlobalNumUint + let app5.GlobalNumByteSlice#0: uint64 = itxn[app5#0].GlobalNumByteSlice + let app5.LocalNumUint#0: uint64 = itxn[app5#0].LocalNumUint + let app5.LocalNumByteSlice#0: uint64 = itxn[app5#0].LocalNumByteSlice + let app5.ExtraProgramPages#0: uint64 = itxn[app5#0].ExtraProgramPages + let app5.Nonparticipation#0: bool = itxn[app5#0].Nonparticipation + let app5.NumLogs#0: uint64 = itxn[app5#0].NumLogs + let app5.CreatedAssetID#0: uint64 = itxn[app5#0].CreatedAssetID + let app5.CreatedApplicationID#0: uint64 = itxn[app5#0].CreatedApplicationID + let app5.LastLog#0: bytes = itxn[app5#0].LastLog + let app5.StateProofPK#0: bytes = itxn[app5#0].StateProofPK + let app5.NumApprovalProgramPages#0: uint64 = itxn[app5#0].NumApprovalProgramPages + let app5.NumClearStateProgramPages#0: uint64 = itxn[app5#0].NumClearStateProgramPages + let app6._is_last#0: bool = 0u + let app6.Sender#0: bytes = itxn[app6#0].Sender + let app6.Fee#0: uint64 = itxn[app6#0].Fee + let app6.FirstValid#0: uint64 = itxn[app6#0].FirstValid + let app6.FirstValidTime#0: uint64 = itxn[app6#0].FirstValidTime + let app6.LastValid#0: uint64 = itxn[app6#0].LastValid + let app6.Note#0: bytes = itxn[app6#0].Note + let app6.Lease#0: bytes = itxn[app6#0].Lease + let app6.Receiver#0: bytes = itxn[app6#0].Receiver + let app6.Amount#0: uint64 = itxn[app6#0].Amount + let app6.CloseRemainderTo#0: bytes = itxn[app6#0].CloseRemainderTo + let app6.VotePK#0: bytes = itxn[app6#0].VotePK + let app6.SelectionPK#0: bytes = itxn[app6#0].SelectionPK + let app6.VoteFirst#0: uint64 = itxn[app6#0].VoteFirst + let app6.VoteLast#0: uint64 = itxn[app6#0].VoteLast + let app6.VoteKeyDilution#0: uint64 = itxn[app6#0].VoteKeyDilution + let app6.Type#0: bytes = itxn[app6#0].Type + let app6.TypeEnum#0: uint64 = itxn[app6#0].TypeEnum + let app6.XferAsset#0: uint64 = itxn[app6#0].XferAsset + let app6.AssetAmount#0: uint64 = itxn[app6#0].AssetAmount + let app6.AssetSender#0: bytes = itxn[app6#0].AssetSender + let app6.AssetReceiver#0: bytes = itxn[app6#0].AssetReceiver + let app6.AssetCloseTo#0: bytes = itxn[app6#0].AssetCloseTo + let app6.GroupIndex#0: uint64 = itxn[app6#0].GroupIndex + let app6.TxID#0: bytes = itxn[app6#0].TxID + let app6.ApplicationID#0: uint64 = itxn[app6#0].ApplicationID + let app6.OnCompletion#0: uint64 = itxn[app6#0].OnCompletion + let app6.NumAppArgs#0: uint64 = itxn[app6#0].NumAppArgs + let app6.NumAccounts#0: uint64 = itxn[app6#0].NumAccounts + let app6.ApprovalProgram#0: bytes = itxn[app6#0].ApprovalProgram + let app6.ClearStateProgram#0: bytes = itxn[app6#0].ClearStateProgram + let app6.RekeyTo#0: bytes = itxn[app6#0].RekeyTo + let app6.ConfigAsset#0: uint64 = itxn[app6#0].ConfigAsset + let app6.ConfigAssetTotal#0: uint64 = itxn[app6#0].ConfigAssetTotal + let app6.ConfigAssetDecimals#0: uint64 = itxn[app6#0].ConfigAssetDecimals + let app6.ConfigAssetDefaultFrozen#0: bool = itxn[app6#0].ConfigAssetDefaultFrozen + let app6.ConfigAssetUnitName#0: bytes = itxn[app6#0].ConfigAssetUnitName + let app6.ConfigAssetName#0: bytes = itxn[app6#0].ConfigAssetName + let app6.ConfigAssetURL#0: bytes = itxn[app6#0].ConfigAssetURL + let app6.ConfigAssetMetadataHash#0: bytes = itxn[app6#0].ConfigAssetMetadataHash + let app6.ConfigAssetManager#0: bytes = itxn[app6#0].ConfigAssetManager + let app6.ConfigAssetReserve#0: bytes = itxn[app6#0].ConfigAssetReserve + let app6.ConfigAssetFreeze#0: bytes = itxn[app6#0].ConfigAssetFreeze + let app6.ConfigAssetClawback#0: bytes = itxn[app6#0].ConfigAssetClawback + let app6.FreezeAsset#0: uint64 = itxn[app6#0].FreezeAsset + let app6.FreezeAssetAccount#0: bytes = itxn[app6#0].FreezeAssetAccount + let app6.FreezeAssetFrozen#0: bool = itxn[app6#0].FreezeAssetFrozen + let app6.NumAssets#0: uint64 = itxn[app6#0].NumAssets + let app6.NumApplications#0: uint64 = itxn[app6#0].NumApplications + let app6.GlobalNumUint#0: uint64 = itxn[app6#0].GlobalNumUint + let app6.GlobalNumByteSlice#0: uint64 = itxn[app6#0].GlobalNumByteSlice + let app6.LocalNumUint#0: uint64 = itxn[app6#0].LocalNumUint + let app6.LocalNumByteSlice#0: uint64 = itxn[app6#0].LocalNumByteSlice + let app6.ExtraProgramPages#0: uint64 = itxn[app6#0].ExtraProgramPages + let app6.Nonparticipation#0: bool = itxn[app6#0].Nonparticipation + let app6.NumLogs#0: uint64 = itxn[app6#0].NumLogs + let app6.CreatedAssetID#0: uint64 = itxn[app6#0].CreatedAssetID + let app6.CreatedApplicationID#0: uint64 = itxn[app6#0].CreatedApplicationID + let app6.LastLog#0: bytes = itxn[app6#0].LastLog + let app6.StateProofPK#0: bytes = itxn[app6#0].StateProofPK + let app6.NumApprovalProgramPages#0: uint64 = itxn[app6#0].NumApprovalProgramPages + let app6.NumClearStateProgramPages#0: uint64 = itxn[app6#0].NumClearStateProgramPages + let app7._is_last#0: bool = 0u + let app7.Sender#0: bytes = itxn[app7#0].Sender + let app7.Fee#0: uint64 = itxn[app7#0].Fee + let app7.FirstValid#0: uint64 = itxn[app7#0].FirstValid + let app7.FirstValidTime#0: uint64 = itxn[app7#0].FirstValidTime + let app7.LastValid#0: uint64 = itxn[app7#0].LastValid + let app7.Note#0: bytes = itxn[app7#0].Note + let app7.Lease#0: bytes = itxn[app7#0].Lease + let app7.Receiver#0: bytes = itxn[app7#0].Receiver + let app7.Amount#0: uint64 = itxn[app7#0].Amount + let app7.CloseRemainderTo#0: bytes = itxn[app7#0].CloseRemainderTo + let app7.VotePK#0: bytes = itxn[app7#0].VotePK + let app7.SelectionPK#0: bytes = itxn[app7#0].SelectionPK + let app7.VoteFirst#0: uint64 = itxn[app7#0].VoteFirst + let app7.VoteLast#0: uint64 = itxn[app7#0].VoteLast + let app7.VoteKeyDilution#0: uint64 = itxn[app7#0].VoteKeyDilution + let app7.Type#0: bytes = itxn[app7#0].Type + let app7.TypeEnum#0: uint64 = itxn[app7#0].TypeEnum + let app7.XferAsset#0: uint64 = itxn[app7#0].XferAsset + let app7.AssetAmount#0: uint64 = itxn[app7#0].AssetAmount + let app7.AssetSender#0: bytes = itxn[app7#0].AssetSender + let app7.AssetReceiver#0: bytes = itxn[app7#0].AssetReceiver + let app7.AssetCloseTo#0: bytes = itxn[app7#0].AssetCloseTo + let app7.GroupIndex#0: uint64 = itxn[app7#0].GroupIndex + let app7.TxID#0: bytes = itxn[app7#0].TxID + let app7.ApplicationID#0: uint64 = itxn[app7#0].ApplicationID + let app7.OnCompletion#0: uint64 = itxn[app7#0].OnCompletion + let app7.NumAppArgs#0: uint64 = itxn[app7#0].NumAppArgs + let app7.NumAccounts#0: uint64 = itxn[app7#0].NumAccounts + let app7.ApprovalProgram#0: bytes = itxn[app7#0].ApprovalProgram + let app7.ClearStateProgram#0: bytes = itxn[app7#0].ClearStateProgram + let app7.RekeyTo#0: bytes = itxn[app7#0].RekeyTo + let app7.ConfigAsset#0: uint64 = itxn[app7#0].ConfigAsset + let app7.ConfigAssetTotal#0: uint64 = itxn[app7#0].ConfigAssetTotal + let app7.ConfigAssetDecimals#0: uint64 = itxn[app7#0].ConfigAssetDecimals + let app7.ConfigAssetDefaultFrozen#0: bool = itxn[app7#0].ConfigAssetDefaultFrozen + let app7.ConfigAssetUnitName#0: bytes = itxn[app7#0].ConfigAssetUnitName + let app7.ConfigAssetName#0: bytes = itxn[app7#0].ConfigAssetName + let app7.ConfigAssetURL#0: bytes = itxn[app7#0].ConfigAssetURL + let app7.ConfigAssetMetadataHash#0: bytes = itxn[app7#0].ConfigAssetMetadataHash + let app7.ConfigAssetManager#0: bytes = itxn[app7#0].ConfigAssetManager + let app7.ConfigAssetReserve#0: bytes = itxn[app7#0].ConfigAssetReserve + let app7.ConfigAssetFreeze#0: bytes = itxn[app7#0].ConfigAssetFreeze + let app7.ConfigAssetClawback#0: bytes = itxn[app7#0].ConfigAssetClawback + let app7.FreezeAsset#0: uint64 = itxn[app7#0].FreezeAsset + let app7.FreezeAssetAccount#0: bytes = itxn[app7#0].FreezeAssetAccount + let app7.FreezeAssetFrozen#0: bool = itxn[app7#0].FreezeAssetFrozen + let app7.NumAssets#0: uint64 = itxn[app7#0].NumAssets + let app7.NumApplications#0: uint64 = itxn[app7#0].NumApplications + let app7.GlobalNumUint#0: uint64 = itxn[app7#0].GlobalNumUint + let app7.GlobalNumByteSlice#0: uint64 = itxn[app7#0].GlobalNumByteSlice + let app7.LocalNumUint#0: uint64 = itxn[app7#0].LocalNumUint + let app7.LocalNumByteSlice#0: uint64 = itxn[app7#0].LocalNumByteSlice + let app7.ExtraProgramPages#0: uint64 = itxn[app7#0].ExtraProgramPages + let app7.Nonparticipation#0: bool = itxn[app7#0].Nonparticipation + let app7.NumLogs#0: uint64 = itxn[app7#0].NumLogs + let app7.CreatedAssetID#0: uint64 = itxn[app7#0].CreatedAssetID + let app7.CreatedApplicationID#0: uint64 = itxn[app7#0].CreatedApplicationID + let app7.LastLog#0: bytes = itxn[app7#0].LastLog + let app7.StateProofPK#0: bytes = itxn[app7#0].StateProofPK + let app7.NumApprovalProgramPages#0: uint64 = itxn[app7#0].NumApprovalProgramPages + let app7.NumClearStateProgramPages#0: uint64 = itxn[app7#0].NumClearStateProgramPages + let app8._is_last#0: bool = 0u + let app8.Sender#0: bytes = itxn[app8#0].Sender + let app8.Fee#0: uint64 = itxn[app8#0].Fee + let app8.FirstValid#0: uint64 = itxn[app8#0].FirstValid + let app8.FirstValidTime#0: uint64 = itxn[app8#0].FirstValidTime + let app8.LastValid#0: uint64 = itxn[app8#0].LastValid + let app8.Note#0: bytes = itxn[app8#0].Note + let app8.Lease#0: bytes = itxn[app8#0].Lease + let app8.Receiver#0: bytes = itxn[app8#0].Receiver + let app8.Amount#0: uint64 = itxn[app8#0].Amount + let app8.CloseRemainderTo#0: bytes = itxn[app8#0].CloseRemainderTo + let app8.VotePK#0: bytes = itxn[app8#0].VotePK + let app8.SelectionPK#0: bytes = itxn[app8#0].SelectionPK + let app8.VoteFirst#0: uint64 = itxn[app8#0].VoteFirst + let app8.VoteLast#0: uint64 = itxn[app8#0].VoteLast + let app8.VoteKeyDilution#0: uint64 = itxn[app8#0].VoteKeyDilution + let app8.Type#0: bytes = itxn[app8#0].Type + let app8.TypeEnum#0: uint64 = itxn[app8#0].TypeEnum + let app8.XferAsset#0: uint64 = itxn[app8#0].XferAsset + let app8.AssetAmount#0: uint64 = itxn[app8#0].AssetAmount + let app8.AssetSender#0: bytes = itxn[app8#0].AssetSender + let app8.AssetReceiver#0: bytes = itxn[app8#0].AssetReceiver + let app8.AssetCloseTo#0: bytes = itxn[app8#0].AssetCloseTo + let app8.GroupIndex#0: uint64 = itxn[app8#0].GroupIndex + let app8.TxID#0: bytes = itxn[app8#0].TxID + let app8.ApplicationID#0: uint64 = itxn[app8#0].ApplicationID + let app8.OnCompletion#0: uint64 = itxn[app8#0].OnCompletion + let app8.NumAppArgs#0: uint64 = itxn[app8#0].NumAppArgs + let app8.NumAccounts#0: uint64 = itxn[app8#0].NumAccounts + let app8.ApprovalProgram#0: bytes = itxn[app8#0].ApprovalProgram + let app8.ClearStateProgram#0: bytes = itxn[app8#0].ClearStateProgram + let app8.RekeyTo#0: bytes = itxn[app8#0].RekeyTo + let app8.ConfigAsset#0: uint64 = itxn[app8#0].ConfigAsset + let app8.ConfigAssetTotal#0: uint64 = itxn[app8#0].ConfigAssetTotal + let app8.ConfigAssetDecimals#0: uint64 = itxn[app8#0].ConfigAssetDecimals + let app8.ConfigAssetDefaultFrozen#0: bool = itxn[app8#0].ConfigAssetDefaultFrozen + let app8.ConfigAssetUnitName#0: bytes = itxn[app8#0].ConfigAssetUnitName + let app8.ConfigAssetName#0: bytes = itxn[app8#0].ConfigAssetName + let app8.ConfigAssetURL#0: bytes = itxn[app8#0].ConfigAssetURL + let app8.ConfigAssetMetadataHash#0: bytes = itxn[app8#0].ConfigAssetMetadataHash + let app8.ConfigAssetManager#0: bytes = itxn[app8#0].ConfigAssetManager + let app8.ConfigAssetReserve#0: bytes = itxn[app8#0].ConfigAssetReserve + let app8.ConfigAssetFreeze#0: bytes = itxn[app8#0].ConfigAssetFreeze + let app8.ConfigAssetClawback#0: bytes = itxn[app8#0].ConfigAssetClawback + let app8.FreezeAsset#0: uint64 = itxn[app8#0].FreezeAsset + let app8.FreezeAssetAccount#0: bytes = itxn[app8#0].FreezeAssetAccount + let app8.FreezeAssetFrozen#0: bool = itxn[app8#0].FreezeAssetFrozen + let app8.NumAssets#0: uint64 = itxn[app8#0].NumAssets + let app8.NumApplications#0: uint64 = itxn[app8#0].NumApplications + let app8.GlobalNumUint#0: uint64 = itxn[app8#0].GlobalNumUint + let app8.GlobalNumByteSlice#0: uint64 = itxn[app8#0].GlobalNumByteSlice + let app8.LocalNumUint#0: uint64 = itxn[app8#0].LocalNumUint + let app8.LocalNumByteSlice#0: uint64 = itxn[app8#0].LocalNumByteSlice + let app8.ExtraProgramPages#0: uint64 = itxn[app8#0].ExtraProgramPages + let app8.Nonparticipation#0: bool = itxn[app8#0].Nonparticipation + let app8.NumLogs#0: uint64 = itxn[app8#0].NumLogs + let app8.CreatedAssetID#0: uint64 = itxn[app8#0].CreatedAssetID + let app8.CreatedApplicationID#0: uint64 = itxn[app8#0].CreatedApplicationID + let app8.LastLog#0: bytes = itxn[app8#0].LastLog + let app8.StateProofPK#0: bytes = itxn[app8#0].StateProofPK + let app8.NumApprovalProgramPages#0: uint64 = itxn[app8#0].NumApprovalProgramPages + let app8.NumClearStateProgramPages#0: uint64 = itxn[app8#0].NumClearStateProgramPages + let app9._is_last#0: bool = 0u + let app9.Sender#0: bytes = itxn[app9#0].Sender + let app9.Fee#0: uint64 = itxn[app9#0].Fee + let app9.FirstValid#0: uint64 = itxn[app9#0].FirstValid + let app9.FirstValidTime#0: uint64 = itxn[app9#0].FirstValidTime + let app9.LastValid#0: uint64 = itxn[app9#0].LastValid + let app9.Note#0: bytes = itxn[app9#0].Note + let app9.Lease#0: bytes = itxn[app9#0].Lease + let app9.Receiver#0: bytes = itxn[app9#0].Receiver + let app9.Amount#0: uint64 = itxn[app9#0].Amount + let app9.CloseRemainderTo#0: bytes = itxn[app9#0].CloseRemainderTo + let app9.VotePK#0: bytes = itxn[app9#0].VotePK + let app9.SelectionPK#0: bytes = itxn[app9#0].SelectionPK + let app9.VoteFirst#0: uint64 = itxn[app9#0].VoteFirst + let app9.VoteLast#0: uint64 = itxn[app9#0].VoteLast + let app9.VoteKeyDilution#0: uint64 = itxn[app9#0].VoteKeyDilution + let app9.Type#0: bytes = itxn[app9#0].Type + let app9.TypeEnum#0: uint64 = itxn[app9#0].TypeEnum + let app9.XferAsset#0: uint64 = itxn[app9#0].XferAsset + let app9.AssetAmount#0: uint64 = itxn[app9#0].AssetAmount + let app9.AssetSender#0: bytes = itxn[app9#0].AssetSender + let app9.AssetReceiver#0: bytes = itxn[app9#0].AssetReceiver + let app9.AssetCloseTo#0: bytes = itxn[app9#0].AssetCloseTo + let app9.GroupIndex#0: uint64 = itxn[app9#0].GroupIndex + let app9.TxID#0: bytes = itxn[app9#0].TxID + let app9.ApplicationID#0: uint64 = itxn[app9#0].ApplicationID + let app9.OnCompletion#0: uint64 = itxn[app9#0].OnCompletion + let app9.NumAppArgs#0: uint64 = itxn[app9#0].NumAppArgs + let app9.NumAccounts#0: uint64 = itxn[app9#0].NumAccounts + let app9.ApprovalProgram#0: bytes = itxn[app9#0].ApprovalProgram + let app9.ClearStateProgram#0: bytes = itxn[app9#0].ClearStateProgram + let app9.RekeyTo#0: bytes = itxn[app9#0].RekeyTo + let app9.ConfigAsset#0: uint64 = itxn[app9#0].ConfigAsset + let app9.ConfigAssetTotal#0: uint64 = itxn[app9#0].ConfigAssetTotal + let app9.ConfigAssetDecimals#0: uint64 = itxn[app9#0].ConfigAssetDecimals + let app9.ConfigAssetDefaultFrozen#0: bool = itxn[app9#0].ConfigAssetDefaultFrozen + let app9.ConfigAssetUnitName#0: bytes = itxn[app9#0].ConfigAssetUnitName + let app9.ConfigAssetName#0: bytes = itxn[app9#0].ConfigAssetName + let app9.ConfigAssetURL#0: bytes = itxn[app9#0].ConfigAssetURL + let app9.ConfigAssetMetadataHash#0: bytes = itxn[app9#0].ConfigAssetMetadataHash + let app9.ConfigAssetManager#0: bytes = itxn[app9#0].ConfigAssetManager + let app9.ConfigAssetReserve#0: bytes = itxn[app9#0].ConfigAssetReserve + let app9.ConfigAssetFreeze#0: bytes = itxn[app9#0].ConfigAssetFreeze + let app9.ConfigAssetClawback#0: bytes = itxn[app9#0].ConfigAssetClawback + let app9.FreezeAsset#0: uint64 = itxn[app9#0].FreezeAsset + let app9.FreezeAssetAccount#0: bytes = itxn[app9#0].FreezeAssetAccount + let app9.FreezeAssetFrozen#0: bool = itxn[app9#0].FreezeAssetFrozen + let app9.NumAssets#0: uint64 = itxn[app9#0].NumAssets + let app9.NumApplications#0: uint64 = itxn[app9#0].NumApplications + let app9.GlobalNumUint#0: uint64 = itxn[app9#0].GlobalNumUint + let app9.GlobalNumByteSlice#0: uint64 = itxn[app9#0].GlobalNumByteSlice + let app9.LocalNumUint#0: uint64 = itxn[app9#0].LocalNumUint + let app9.LocalNumByteSlice#0: uint64 = itxn[app9#0].LocalNumByteSlice + let app9.ExtraProgramPages#0: uint64 = itxn[app9#0].ExtraProgramPages + let app9.Nonparticipation#0: bool = itxn[app9#0].Nonparticipation + let app9.NumLogs#0: uint64 = itxn[app9#0].NumLogs + let app9.CreatedAssetID#0: uint64 = itxn[app9#0].CreatedAssetID + let app9.CreatedApplicationID#0: uint64 = itxn[app9#0].CreatedApplicationID + let app9.LastLog#0: bytes = itxn[app9#0].LastLog + let app9.StateProofPK#0: bytes = itxn[app9#0].StateProofPK + let app9.NumApprovalProgramPages#0: uint64 = itxn[app9#0].NumApprovalProgramPages + let app9.NumClearStateProgramPages#0: uint64 = itxn[app9#0].NumClearStateProgramPages + let app10._is_last#0: bool = 0u + let app10.Sender#0: bytes = itxn[app10#0].Sender + let app10.Fee#0: uint64 = itxn[app10#0].Fee + let app10.FirstValid#0: uint64 = itxn[app10#0].FirstValid + let app10.FirstValidTime#0: uint64 = itxn[app10#0].FirstValidTime + let app10.LastValid#0: uint64 = itxn[app10#0].LastValid + let app10.Note#0: bytes = itxn[app10#0].Note + let app10.Lease#0: bytes = itxn[app10#0].Lease + let app10.Receiver#0: bytes = itxn[app10#0].Receiver + let app10.Amount#0: uint64 = itxn[app10#0].Amount + let app10.CloseRemainderTo#0: bytes = itxn[app10#0].CloseRemainderTo + let app10.VotePK#0: bytes = itxn[app10#0].VotePK + let app10.SelectionPK#0: bytes = itxn[app10#0].SelectionPK + let app10.VoteFirst#0: uint64 = itxn[app10#0].VoteFirst + let app10.VoteLast#0: uint64 = itxn[app10#0].VoteLast + let app10.VoteKeyDilution#0: uint64 = itxn[app10#0].VoteKeyDilution + let app10.Type#0: bytes = itxn[app10#0].Type + let app10.TypeEnum#0: uint64 = itxn[app10#0].TypeEnum + let app10.XferAsset#0: uint64 = itxn[app10#0].XferAsset + let app10.AssetAmount#0: uint64 = itxn[app10#0].AssetAmount + let app10.AssetSender#0: bytes = itxn[app10#0].AssetSender + let app10.AssetReceiver#0: bytes = itxn[app10#0].AssetReceiver + let app10.AssetCloseTo#0: bytes = itxn[app10#0].AssetCloseTo + let app10.GroupIndex#0: uint64 = itxn[app10#0].GroupIndex + let app10.TxID#0: bytes = itxn[app10#0].TxID + let app10.ApplicationID#0: uint64 = itxn[app10#0].ApplicationID + let app10.OnCompletion#0: uint64 = itxn[app10#0].OnCompletion + let app10.NumAppArgs#0: uint64 = itxn[app10#0].NumAppArgs + let app10.NumAccounts#0: uint64 = itxn[app10#0].NumAccounts + let app10.ApprovalProgram#0: bytes = itxn[app10#0].ApprovalProgram + let app10.ClearStateProgram#0: bytes = itxn[app10#0].ClearStateProgram + let app10.RekeyTo#0: bytes = itxn[app10#0].RekeyTo + let app10.ConfigAsset#0: uint64 = itxn[app10#0].ConfigAsset + let app10.ConfigAssetTotal#0: uint64 = itxn[app10#0].ConfigAssetTotal + let app10.ConfigAssetDecimals#0: uint64 = itxn[app10#0].ConfigAssetDecimals + let app10.ConfigAssetDefaultFrozen#0: bool = itxn[app10#0].ConfigAssetDefaultFrozen + let app10.ConfigAssetUnitName#0: bytes = itxn[app10#0].ConfigAssetUnitName + let app10.ConfigAssetName#0: bytes = itxn[app10#0].ConfigAssetName + let app10.ConfigAssetURL#0: bytes = itxn[app10#0].ConfigAssetURL + let app10.ConfigAssetMetadataHash#0: bytes = itxn[app10#0].ConfigAssetMetadataHash + let app10.ConfigAssetManager#0: bytes = itxn[app10#0].ConfigAssetManager + let app10.ConfigAssetReserve#0: bytes = itxn[app10#0].ConfigAssetReserve + let app10.ConfigAssetFreeze#0: bytes = itxn[app10#0].ConfigAssetFreeze + let app10.ConfigAssetClawback#0: bytes = itxn[app10#0].ConfigAssetClawback + let app10.FreezeAsset#0: uint64 = itxn[app10#0].FreezeAsset + let app10.FreezeAssetAccount#0: bytes = itxn[app10#0].FreezeAssetAccount + let app10.FreezeAssetFrozen#0: bool = itxn[app10#0].FreezeAssetFrozen + let app10.NumAssets#0: uint64 = itxn[app10#0].NumAssets + let app10.NumApplications#0: uint64 = itxn[app10#0].NumApplications + let app10.GlobalNumUint#0: uint64 = itxn[app10#0].GlobalNumUint + let app10.GlobalNumByteSlice#0: uint64 = itxn[app10#0].GlobalNumByteSlice + let app10.LocalNumUint#0: uint64 = itxn[app10#0].LocalNumUint + let app10.LocalNumByteSlice#0: uint64 = itxn[app10#0].LocalNumByteSlice + let app10.ExtraProgramPages#0: uint64 = itxn[app10#0].ExtraProgramPages + let app10.Nonparticipation#0: bool = itxn[app10#0].Nonparticipation + let app10.NumLogs#0: uint64 = itxn[app10#0].NumLogs + let app10.CreatedAssetID#0: uint64 = itxn[app10#0].CreatedAssetID + let app10.CreatedApplicationID#0: uint64 = itxn[app10#0].CreatedApplicationID + let app10.LastLog#0: bytes = itxn[app10#0].LastLog + let app10.StateProofPK#0: bytes = itxn[app10#0].StateProofPK + let app10.NumApprovalProgramPages#0: uint64 = itxn[app10#0].NumApprovalProgramPages + let app10.NumClearStateProgramPages#0: uint64 = itxn[app10#0].NumClearStateProgramPages + let app11._is_last#0: bool = 0u + let app11.Sender#0: bytes = itxn[app11#0].Sender + let app11.Fee#0: uint64 = itxn[app11#0].Fee + let app11.FirstValid#0: uint64 = itxn[app11#0].FirstValid + let app11.FirstValidTime#0: uint64 = itxn[app11#0].FirstValidTime + let app11.LastValid#0: uint64 = itxn[app11#0].LastValid + let app11.Note#0: bytes = itxn[app11#0].Note + let app11.Lease#0: bytes = itxn[app11#0].Lease + let app11.Receiver#0: bytes = itxn[app11#0].Receiver + let app11.Amount#0: uint64 = itxn[app11#0].Amount + let app11.CloseRemainderTo#0: bytes = itxn[app11#0].CloseRemainderTo + let app11.VotePK#0: bytes = itxn[app11#0].VotePK + let app11.SelectionPK#0: bytes = itxn[app11#0].SelectionPK + let app11.VoteFirst#0: uint64 = itxn[app11#0].VoteFirst + let app11.VoteLast#0: uint64 = itxn[app11#0].VoteLast + let app11.VoteKeyDilution#0: uint64 = itxn[app11#0].VoteKeyDilution + let app11.Type#0: bytes = itxn[app11#0].Type + let app11.TypeEnum#0: uint64 = itxn[app11#0].TypeEnum + let app11.XferAsset#0: uint64 = itxn[app11#0].XferAsset + let app11.AssetAmount#0: uint64 = itxn[app11#0].AssetAmount + let app11.AssetSender#0: bytes = itxn[app11#0].AssetSender + let app11.AssetReceiver#0: bytes = itxn[app11#0].AssetReceiver + let app11.AssetCloseTo#0: bytes = itxn[app11#0].AssetCloseTo + let app11.GroupIndex#0: uint64 = itxn[app11#0].GroupIndex + let app11.TxID#0: bytes = itxn[app11#0].TxID + let app11.ApplicationID#0: uint64 = itxn[app11#0].ApplicationID + let app11.OnCompletion#0: uint64 = itxn[app11#0].OnCompletion + let app11.NumAppArgs#0: uint64 = itxn[app11#0].NumAppArgs + let app11.NumAccounts#0: uint64 = itxn[app11#0].NumAccounts + let app11.ApprovalProgram#0: bytes = itxn[app11#0].ApprovalProgram + let app11.ClearStateProgram#0: bytes = itxn[app11#0].ClearStateProgram + let app11.RekeyTo#0: bytes = itxn[app11#0].RekeyTo + let app11.ConfigAsset#0: uint64 = itxn[app11#0].ConfigAsset + let app11.ConfigAssetTotal#0: uint64 = itxn[app11#0].ConfigAssetTotal + let app11.ConfigAssetDecimals#0: uint64 = itxn[app11#0].ConfigAssetDecimals + let app11.ConfigAssetDefaultFrozen#0: bool = itxn[app11#0].ConfigAssetDefaultFrozen + let app11.ConfigAssetUnitName#0: bytes = itxn[app11#0].ConfigAssetUnitName + let app11.ConfigAssetName#0: bytes = itxn[app11#0].ConfigAssetName + let app11.ConfigAssetURL#0: bytes = itxn[app11#0].ConfigAssetURL + let app11.ConfigAssetMetadataHash#0: bytes = itxn[app11#0].ConfigAssetMetadataHash + let app11.ConfigAssetManager#0: bytes = itxn[app11#0].ConfigAssetManager + let app11.ConfigAssetReserve#0: bytes = itxn[app11#0].ConfigAssetReserve + let app11.ConfigAssetFreeze#0: bytes = itxn[app11#0].ConfigAssetFreeze + let app11.ConfigAssetClawback#0: bytes = itxn[app11#0].ConfigAssetClawback + let app11.FreezeAsset#0: uint64 = itxn[app11#0].FreezeAsset + let app11.FreezeAssetAccount#0: bytes = itxn[app11#0].FreezeAssetAccount + let app11.FreezeAssetFrozen#0: bool = itxn[app11#0].FreezeAssetFrozen + let app11.NumAssets#0: uint64 = itxn[app11#0].NumAssets + let app11.NumApplications#0: uint64 = itxn[app11#0].NumApplications + let app11.GlobalNumUint#0: uint64 = itxn[app11#0].GlobalNumUint + let app11.GlobalNumByteSlice#0: uint64 = itxn[app11#0].GlobalNumByteSlice + let app11.LocalNumUint#0: uint64 = itxn[app11#0].LocalNumUint + let app11.LocalNumByteSlice#0: uint64 = itxn[app11#0].LocalNumByteSlice + let app11.ExtraProgramPages#0: uint64 = itxn[app11#0].ExtraProgramPages + let app11.Nonparticipation#0: bool = itxn[app11#0].Nonparticipation + let app11.NumLogs#0: uint64 = itxn[app11#0].NumLogs + let app11.CreatedAssetID#0: uint64 = itxn[app11#0].CreatedAssetID + let app11.CreatedApplicationID#0: uint64 = itxn[app11#0].CreatedApplicationID + let app11.LastLog#0: bytes = itxn[app11#0].LastLog + let app11.StateProofPK#0: bytes = itxn[app11#0].StateProofPK + let app11.NumApprovalProgramPages#0: uint64 = itxn[app11#0].NumApprovalProgramPages + let app11.NumClearStateProgramPages#0: uint64 = itxn[app11#0].NumClearStateProgramPages + let app12._is_last#0: bool = 0u + let app12.Sender#0: bytes = itxn[app12#0].Sender + let app12.Fee#0: uint64 = itxn[app12#0].Fee + let app12.FirstValid#0: uint64 = itxn[app12#0].FirstValid + let app12.FirstValidTime#0: uint64 = itxn[app12#0].FirstValidTime + let app12.LastValid#0: uint64 = itxn[app12#0].LastValid + let app12.Note#0: bytes = itxn[app12#0].Note + let app12.Lease#0: bytes = itxn[app12#0].Lease + let app12.Receiver#0: bytes = itxn[app12#0].Receiver + let app12.Amount#0: uint64 = itxn[app12#0].Amount + let app12.CloseRemainderTo#0: bytes = itxn[app12#0].CloseRemainderTo + let app12.VotePK#0: bytes = itxn[app12#0].VotePK + let app12.SelectionPK#0: bytes = itxn[app12#0].SelectionPK + let app12.VoteFirst#0: uint64 = itxn[app12#0].VoteFirst + let app12.VoteLast#0: uint64 = itxn[app12#0].VoteLast + let app12.VoteKeyDilution#0: uint64 = itxn[app12#0].VoteKeyDilution + let app12.Type#0: bytes = itxn[app12#0].Type + let app12.TypeEnum#0: uint64 = itxn[app12#0].TypeEnum + let app12.XferAsset#0: uint64 = itxn[app12#0].XferAsset + let app12.AssetAmount#0: uint64 = itxn[app12#0].AssetAmount + let app12.AssetSender#0: bytes = itxn[app12#0].AssetSender + let app12.AssetReceiver#0: bytes = itxn[app12#0].AssetReceiver + let app12.AssetCloseTo#0: bytes = itxn[app12#0].AssetCloseTo + let app12.GroupIndex#0: uint64 = itxn[app12#0].GroupIndex + let app12.TxID#0: bytes = itxn[app12#0].TxID + let app12.ApplicationID#0: uint64 = itxn[app12#0].ApplicationID + let app12.OnCompletion#0: uint64 = itxn[app12#0].OnCompletion + let app12.NumAppArgs#0: uint64 = itxn[app12#0].NumAppArgs + let app12.NumAccounts#0: uint64 = itxn[app12#0].NumAccounts + let app12.ApprovalProgram#0: bytes = itxn[app12#0].ApprovalProgram + let app12.ClearStateProgram#0: bytes = itxn[app12#0].ClearStateProgram + let app12.RekeyTo#0: bytes = itxn[app12#0].RekeyTo + let app12.ConfigAsset#0: uint64 = itxn[app12#0].ConfigAsset + let app12.ConfigAssetTotal#0: uint64 = itxn[app12#0].ConfigAssetTotal + let app12.ConfigAssetDecimals#0: uint64 = itxn[app12#0].ConfigAssetDecimals + let app12.ConfigAssetDefaultFrozen#0: bool = itxn[app12#0].ConfigAssetDefaultFrozen + let app12.ConfigAssetUnitName#0: bytes = itxn[app12#0].ConfigAssetUnitName + let app12.ConfigAssetName#0: bytes = itxn[app12#0].ConfigAssetName + let app12.ConfigAssetURL#0: bytes = itxn[app12#0].ConfigAssetURL + let app12.ConfigAssetMetadataHash#0: bytes = itxn[app12#0].ConfigAssetMetadataHash + let app12.ConfigAssetManager#0: bytes = itxn[app12#0].ConfigAssetManager + let app12.ConfigAssetReserve#0: bytes = itxn[app12#0].ConfigAssetReserve + let app12.ConfigAssetFreeze#0: bytes = itxn[app12#0].ConfigAssetFreeze + let app12.ConfigAssetClawback#0: bytes = itxn[app12#0].ConfigAssetClawback + let app12.FreezeAsset#0: uint64 = itxn[app12#0].FreezeAsset + let app12.FreezeAssetAccount#0: bytes = itxn[app12#0].FreezeAssetAccount + let app12.FreezeAssetFrozen#0: bool = itxn[app12#0].FreezeAssetFrozen + let app12.NumAssets#0: uint64 = itxn[app12#0].NumAssets + let app12.NumApplications#0: uint64 = itxn[app12#0].NumApplications + let app12.GlobalNumUint#0: uint64 = itxn[app12#0].GlobalNumUint + let app12.GlobalNumByteSlice#0: uint64 = itxn[app12#0].GlobalNumByteSlice + let app12.LocalNumUint#0: uint64 = itxn[app12#0].LocalNumUint + let app12.LocalNumByteSlice#0: uint64 = itxn[app12#0].LocalNumByteSlice + let app12.ExtraProgramPages#0: uint64 = itxn[app12#0].ExtraProgramPages + let app12.Nonparticipation#0: bool = itxn[app12#0].Nonparticipation + let app12.NumLogs#0: uint64 = itxn[app12#0].NumLogs + let app12.CreatedAssetID#0: uint64 = itxn[app12#0].CreatedAssetID + let app12.CreatedApplicationID#0: uint64 = itxn[app12#0].CreatedApplicationID + let app12.LastLog#0: bytes = itxn[app12#0].LastLog + let app12.StateProofPK#0: bytes = itxn[app12#0].StateProofPK + let app12.NumApprovalProgramPages#0: uint64 = itxn[app12#0].NumApprovalProgramPages + let app12.NumClearStateProgramPages#0: uint64 = itxn[app12#0].NumClearStateProgramPages + let app13._is_last#0: bool = 0u + let app13.Sender#0: bytes = itxn[app13#0].Sender + let app13.Fee#0: uint64 = itxn[app13#0].Fee + let app13.FirstValid#0: uint64 = itxn[app13#0].FirstValid + let app13.FirstValidTime#0: uint64 = itxn[app13#0].FirstValidTime + let app13.LastValid#0: uint64 = itxn[app13#0].LastValid + let app13.Note#0: bytes = itxn[app13#0].Note + let app13.Lease#0: bytes = itxn[app13#0].Lease + let app13.Receiver#0: bytes = itxn[app13#0].Receiver + let app13.Amount#0: uint64 = itxn[app13#0].Amount + let app13.CloseRemainderTo#0: bytes = itxn[app13#0].CloseRemainderTo + let app13.VotePK#0: bytes = itxn[app13#0].VotePK + let app13.SelectionPK#0: bytes = itxn[app13#0].SelectionPK + let app13.VoteFirst#0: uint64 = itxn[app13#0].VoteFirst + let app13.VoteLast#0: uint64 = itxn[app13#0].VoteLast + let app13.VoteKeyDilution#0: uint64 = itxn[app13#0].VoteKeyDilution + let app13.Type#0: bytes = itxn[app13#0].Type + let app13.TypeEnum#0: uint64 = itxn[app13#0].TypeEnum + let app13.XferAsset#0: uint64 = itxn[app13#0].XferAsset + let app13.AssetAmount#0: uint64 = itxn[app13#0].AssetAmount + let app13.AssetSender#0: bytes = itxn[app13#0].AssetSender + let app13.AssetReceiver#0: bytes = itxn[app13#0].AssetReceiver + let app13.AssetCloseTo#0: bytes = itxn[app13#0].AssetCloseTo + let app13.GroupIndex#0: uint64 = itxn[app13#0].GroupIndex + let app13.TxID#0: bytes = itxn[app13#0].TxID + let app13.ApplicationID#0: uint64 = itxn[app13#0].ApplicationID + let app13.OnCompletion#0: uint64 = itxn[app13#0].OnCompletion + let app13.NumAppArgs#0: uint64 = itxn[app13#0].NumAppArgs + let app13.NumAccounts#0: uint64 = itxn[app13#0].NumAccounts + let app13.ApprovalProgram#0: bytes = itxn[app13#0].ApprovalProgram + let app13.ClearStateProgram#0: bytes = itxn[app13#0].ClearStateProgram + let app13.RekeyTo#0: bytes = itxn[app13#0].RekeyTo + let app13.ConfigAsset#0: uint64 = itxn[app13#0].ConfigAsset + let app13.ConfigAssetTotal#0: uint64 = itxn[app13#0].ConfigAssetTotal + let app13.ConfigAssetDecimals#0: uint64 = itxn[app13#0].ConfigAssetDecimals + let app13.ConfigAssetDefaultFrozen#0: bool = itxn[app13#0].ConfigAssetDefaultFrozen + let app13.ConfigAssetUnitName#0: bytes = itxn[app13#0].ConfigAssetUnitName + let app13.ConfigAssetName#0: bytes = itxn[app13#0].ConfigAssetName + let app13.ConfigAssetURL#0: bytes = itxn[app13#0].ConfigAssetURL + let app13.ConfigAssetMetadataHash#0: bytes = itxn[app13#0].ConfigAssetMetadataHash + let app13.ConfigAssetManager#0: bytes = itxn[app13#0].ConfigAssetManager + let app13.ConfigAssetReserve#0: bytes = itxn[app13#0].ConfigAssetReserve + let app13.ConfigAssetFreeze#0: bytes = itxn[app13#0].ConfigAssetFreeze + let app13.ConfigAssetClawback#0: bytes = itxn[app13#0].ConfigAssetClawback + let app13.FreezeAsset#0: uint64 = itxn[app13#0].FreezeAsset + let app13.FreezeAssetAccount#0: bytes = itxn[app13#0].FreezeAssetAccount + let app13.FreezeAssetFrozen#0: bool = itxn[app13#0].FreezeAssetFrozen + let app13.NumAssets#0: uint64 = itxn[app13#0].NumAssets + let app13.NumApplications#0: uint64 = itxn[app13#0].NumApplications + let app13.GlobalNumUint#0: uint64 = itxn[app13#0].GlobalNumUint + let app13.GlobalNumByteSlice#0: uint64 = itxn[app13#0].GlobalNumByteSlice + let app13.LocalNumUint#0: uint64 = itxn[app13#0].LocalNumUint + let app13.LocalNumByteSlice#0: uint64 = itxn[app13#0].LocalNumByteSlice + let app13.ExtraProgramPages#0: uint64 = itxn[app13#0].ExtraProgramPages + let app13.Nonparticipation#0: bool = itxn[app13#0].Nonparticipation + let app13.NumLogs#0: uint64 = itxn[app13#0].NumLogs + let app13.CreatedAssetID#0: uint64 = itxn[app13#0].CreatedAssetID + let app13.CreatedApplicationID#0: uint64 = itxn[app13#0].CreatedApplicationID + let app13.LastLog#0: bytes = itxn[app13#0].LastLog + let app13.StateProofPK#0: bytes = itxn[app13#0].StateProofPK + let app13.NumApprovalProgramPages#0: uint64 = itxn[app13#0].NumApprovalProgramPages + let app13.NumClearStateProgramPages#0: uint64 = itxn[app13#0].NumClearStateProgramPages + let app14._is_last#0: bool = 0u + let app14.Sender#0: bytes = itxn[app14#0].Sender + let app14.Fee#0: uint64 = itxn[app14#0].Fee + let app14.FirstValid#0: uint64 = itxn[app14#0].FirstValid + let app14.FirstValidTime#0: uint64 = itxn[app14#0].FirstValidTime + let app14.LastValid#0: uint64 = itxn[app14#0].LastValid + let app14.Note#0: bytes = itxn[app14#0].Note + let app14.Lease#0: bytes = itxn[app14#0].Lease + let app14.Receiver#0: bytes = itxn[app14#0].Receiver + let app14.Amount#0: uint64 = itxn[app14#0].Amount + let app14.CloseRemainderTo#0: bytes = itxn[app14#0].CloseRemainderTo + let app14.VotePK#0: bytes = itxn[app14#0].VotePK + let app14.SelectionPK#0: bytes = itxn[app14#0].SelectionPK + let app14.VoteFirst#0: uint64 = itxn[app14#0].VoteFirst + let app14.VoteLast#0: uint64 = itxn[app14#0].VoteLast + let app14.VoteKeyDilution#0: uint64 = itxn[app14#0].VoteKeyDilution + let app14.Type#0: bytes = itxn[app14#0].Type + let app14.TypeEnum#0: uint64 = itxn[app14#0].TypeEnum + let app14.XferAsset#0: uint64 = itxn[app14#0].XferAsset + let app14.AssetAmount#0: uint64 = itxn[app14#0].AssetAmount + let app14.AssetSender#0: bytes = itxn[app14#0].AssetSender + let app14.AssetReceiver#0: bytes = itxn[app14#0].AssetReceiver + let app14.AssetCloseTo#0: bytes = itxn[app14#0].AssetCloseTo + let app14.GroupIndex#0: uint64 = itxn[app14#0].GroupIndex + let app14.TxID#0: bytes = itxn[app14#0].TxID + let app14.ApplicationID#0: uint64 = itxn[app14#0].ApplicationID + let app14.OnCompletion#0: uint64 = itxn[app14#0].OnCompletion + let app14.NumAppArgs#0: uint64 = itxn[app14#0].NumAppArgs + let app14.NumAccounts#0: uint64 = itxn[app14#0].NumAccounts + let app14.ApprovalProgram#0: bytes = itxn[app14#0].ApprovalProgram + let app14.ClearStateProgram#0: bytes = itxn[app14#0].ClearStateProgram + let app14.RekeyTo#0: bytes = itxn[app14#0].RekeyTo + let app14.ConfigAsset#0: uint64 = itxn[app14#0].ConfigAsset + let app14.ConfigAssetTotal#0: uint64 = itxn[app14#0].ConfigAssetTotal + let app14.ConfigAssetDecimals#0: uint64 = itxn[app14#0].ConfigAssetDecimals + let app14.ConfigAssetDefaultFrozen#0: bool = itxn[app14#0].ConfigAssetDefaultFrozen + let app14.ConfigAssetUnitName#0: bytes = itxn[app14#0].ConfigAssetUnitName + let app14.ConfigAssetName#0: bytes = itxn[app14#0].ConfigAssetName + let app14.ConfigAssetURL#0: bytes = itxn[app14#0].ConfigAssetURL + let app14.ConfigAssetMetadataHash#0: bytes = itxn[app14#0].ConfigAssetMetadataHash + let app14.ConfigAssetManager#0: bytes = itxn[app14#0].ConfigAssetManager + let app14.ConfigAssetReserve#0: bytes = itxn[app14#0].ConfigAssetReserve + let app14.ConfigAssetFreeze#0: bytes = itxn[app14#0].ConfigAssetFreeze + let app14.ConfigAssetClawback#0: bytes = itxn[app14#0].ConfigAssetClawback + let app14.FreezeAsset#0: uint64 = itxn[app14#0].FreezeAsset + let app14.FreezeAssetAccount#0: bytes = itxn[app14#0].FreezeAssetAccount + let app14.FreezeAssetFrozen#0: bool = itxn[app14#0].FreezeAssetFrozen + let app14.NumAssets#0: uint64 = itxn[app14#0].NumAssets + let app14.NumApplications#0: uint64 = itxn[app14#0].NumApplications + let app14.GlobalNumUint#0: uint64 = itxn[app14#0].GlobalNumUint + let app14.GlobalNumByteSlice#0: uint64 = itxn[app14#0].GlobalNumByteSlice + let app14.LocalNumUint#0: uint64 = itxn[app14#0].LocalNumUint + let app14.LocalNumByteSlice#0: uint64 = itxn[app14#0].LocalNumByteSlice + let app14.ExtraProgramPages#0: uint64 = itxn[app14#0].ExtraProgramPages + let app14.Nonparticipation#0: bool = itxn[app14#0].Nonparticipation + let app14.NumLogs#0: uint64 = itxn[app14#0].NumLogs + let app14.CreatedAssetID#0: uint64 = itxn[app14#0].CreatedAssetID + let app14.CreatedApplicationID#0: uint64 = itxn[app14#0].CreatedApplicationID + let app14.LastLog#0: bytes = itxn[app14#0].LastLog + let app14.StateProofPK#0: bytes = itxn[app14#0].StateProofPK + let app14.NumApprovalProgramPages#0: uint64 = itxn[app14#0].NumApprovalProgramPages + let app14.NumClearStateProgramPages#0: uint64 = itxn[app14#0].NumClearStateProgramPages + let app15._is_last#0: bool = 0u + let app15.Sender#0: bytes = itxn[app15#0].Sender + let app15.Fee#0: uint64 = itxn[app15#0].Fee + let app15.FirstValid#0: uint64 = itxn[app15#0].FirstValid + let app15.FirstValidTime#0: uint64 = itxn[app15#0].FirstValidTime + let app15.LastValid#0: uint64 = itxn[app15#0].LastValid + let app15.Note#0: bytes = itxn[app15#0].Note + let app15.Lease#0: bytes = itxn[app15#0].Lease + let app15.Receiver#0: bytes = itxn[app15#0].Receiver + let app15.Amount#0: uint64 = itxn[app15#0].Amount + let app15.CloseRemainderTo#0: bytes = itxn[app15#0].CloseRemainderTo + let app15.VotePK#0: bytes = itxn[app15#0].VotePK + let app15.SelectionPK#0: bytes = itxn[app15#0].SelectionPK + let app15.VoteFirst#0: uint64 = itxn[app15#0].VoteFirst + let app15.VoteLast#0: uint64 = itxn[app15#0].VoteLast + let app15.VoteKeyDilution#0: uint64 = itxn[app15#0].VoteKeyDilution + let app15.Type#0: bytes = itxn[app15#0].Type + let app15.TypeEnum#0: uint64 = itxn[app15#0].TypeEnum + let app15.XferAsset#0: uint64 = itxn[app15#0].XferAsset + let app15.AssetAmount#0: uint64 = itxn[app15#0].AssetAmount + let app15.AssetSender#0: bytes = itxn[app15#0].AssetSender + let app15.AssetReceiver#0: bytes = itxn[app15#0].AssetReceiver + let app15.AssetCloseTo#0: bytes = itxn[app15#0].AssetCloseTo + let app15.GroupIndex#0: uint64 = itxn[app15#0].GroupIndex + let app15.TxID#0: bytes = itxn[app15#0].TxID + let app15.ApplicationID#0: uint64 = itxn[app15#0].ApplicationID + let app15.OnCompletion#0: uint64 = itxn[app15#0].OnCompletion + let app15.NumAppArgs#0: uint64 = itxn[app15#0].NumAppArgs + let app15.NumAccounts#0: uint64 = itxn[app15#0].NumAccounts + let app15.ApprovalProgram#0: bytes = itxn[app15#0].ApprovalProgram + let app15.ClearStateProgram#0: bytes = itxn[app15#0].ClearStateProgram + let app15.RekeyTo#0: bytes = itxn[app15#0].RekeyTo + let app15.ConfigAsset#0: uint64 = itxn[app15#0].ConfigAsset + let app15.ConfigAssetTotal#0: uint64 = itxn[app15#0].ConfigAssetTotal + let app15.ConfigAssetDecimals#0: uint64 = itxn[app15#0].ConfigAssetDecimals + let app15.ConfigAssetDefaultFrozen#0: bool = itxn[app15#0].ConfigAssetDefaultFrozen + let app15.ConfigAssetUnitName#0: bytes = itxn[app15#0].ConfigAssetUnitName + let app15.ConfigAssetName#0: bytes = itxn[app15#0].ConfigAssetName + let app15.ConfigAssetURL#0: bytes = itxn[app15#0].ConfigAssetURL + let app15.ConfigAssetMetadataHash#0: bytes = itxn[app15#0].ConfigAssetMetadataHash + let app15.ConfigAssetManager#0: bytes = itxn[app15#0].ConfigAssetManager + let app15.ConfigAssetReserve#0: bytes = itxn[app15#0].ConfigAssetReserve + let app15.ConfigAssetFreeze#0: bytes = itxn[app15#0].ConfigAssetFreeze + let app15.ConfigAssetClawback#0: bytes = itxn[app15#0].ConfigAssetClawback + let app15.FreezeAsset#0: uint64 = itxn[app15#0].FreezeAsset + let app15.FreezeAssetAccount#0: bytes = itxn[app15#0].FreezeAssetAccount + let app15.FreezeAssetFrozen#0: bool = itxn[app15#0].FreezeAssetFrozen + let app15.NumAssets#0: uint64 = itxn[app15#0].NumAssets + let app15.NumApplications#0: uint64 = itxn[app15#0].NumApplications + let app15.GlobalNumUint#0: uint64 = itxn[app15#0].GlobalNumUint + let app15.GlobalNumByteSlice#0: uint64 = itxn[app15#0].GlobalNumByteSlice + let app15.LocalNumUint#0: uint64 = itxn[app15#0].LocalNumUint + let app15.LocalNumByteSlice#0: uint64 = itxn[app15#0].LocalNumByteSlice + let app15.ExtraProgramPages#0: uint64 = itxn[app15#0].ExtraProgramPages + let app15.Nonparticipation#0: bool = itxn[app15#0].Nonparticipation + let app15.NumLogs#0: uint64 = itxn[app15#0].NumLogs + let app15.CreatedAssetID#0: uint64 = itxn[app15#0].CreatedAssetID + let app15.CreatedApplicationID#0: uint64 = itxn[app15#0].CreatedApplicationID + let app15.LastLog#0: bytes = itxn[app15#0].LastLog + let app15.StateProofPK#0: bytes = itxn[app15#0].StateProofPK + let app15.NumApprovalProgramPages#0: uint64 = itxn[app15#0].NumApprovalProgramPages + let app15.NumClearStateProgramPages#0: uint64 = itxn[app15#0].NumClearStateProgramPages + let app16._is_last#0: bool = 1u + let app16.Sender#0: bytes = itxn[app16#0].Sender + let app16.Fee#0: uint64 = itxn[app16#0].Fee + let app16.FirstValid#0: uint64 = itxn[app16#0].FirstValid + let app16.FirstValidTime#0: uint64 = itxn[app16#0].FirstValidTime + let app16.LastValid#0: uint64 = itxn[app16#0].LastValid + let app16.Note#0: bytes = itxn[app16#0].Note + let app16.Lease#0: bytes = itxn[app16#0].Lease + let app16.Receiver#0: bytes = itxn[app16#0].Receiver + let app16.Amount#0: uint64 = itxn[app16#0].Amount + let app16.CloseRemainderTo#0: bytes = itxn[app16#0].CloseRemainderTo + let app16.VotePK#0: bytes = itxn[app16#0].VotePK + let app16.SelectionPK#0: bytes = itxn[app16#0].SelectionPK + let app16.VoteFirst#0: uint64 = itxn[app16#0].VoteFirst + let app16.VoteLast#0: uint64 = itxn[app16#0].VoteLast + let app16.VoteKeyDilution#0: uint64 = itxn[app16#0].VoteKeyDilution + let app16.Type#0: bytes = itxn[app16#0].Type + let app16.TypeEnum#0: uint64 = itxn[app16#0].TypeEnum + let app16.XferAsset#0: uint64 = itxn[app16#0].XferAsset + let app16.AssetAmount#0: uint64 = itxn[app16#0].AssetAmount + let app16.AssetSender#0: bytes = itxn[app16#0].AssetSender + let app16.AssetReceiver#0: bytes = itxn[app16#0].AssetReceiver + let app16.AssetCloseTo#0: bytes = itxn[app16#0].AssetCloseTo + let app16.GroupIndex#0: uint64 = itxn[app16#0].GroupIndex + let app16.TxID#0: bytes = itxn[app16#0].TxID + let app16.ApplicationID#0: uint64 = itxn[app16#0].ApplicationID + let app16.OnCompletion#0: uint64 = itxn[app16#0].OnCompletion + let app16.NumAppArgs#0: uint64 = itxn[app16#0].NumAppArgs + let app16.NumAccounts#0: uint64 = itxn[app16#0].NumAccounts + let app16.ApprovalProgram#0: bytes = itxn[app16#0].ApprovalProgram + let app16.ClearStateProgram#0: bytes = itxn[app16#0].ClearStateProgram + let app16.RekeyTo#0: bytes = itxn[app16#0].RekeyTo + let app16.ConfigAsset#0: uint64 = itxn[app16#0].ConfigAsset + let app16.ConfigAssetTotal#0: uint64 = itxn[app16#0].ConfigAssetTotal + let app16.ConfigAssetDecimals#0: uint64 = itxn[app16#0].ConfigAssetDecimals + let app16.ConfigAssetDefaultFrozen#0: bool = itxn[app16#0].ConfigAssetDefaultFrozen + let app16.ConfigAssetUnitName#0: bytes = itxn[app16#0].ConfigAssetUnitName + let app16.ConfigAssetName#0: bytes = itxn[app16#0].ConfigAssetName + let app16.ConfigAssetURL#0: bytes = itxn[app16#0].ConfigAssetURL + let app16.ConfigAssetMetadataHash#0: bytes = itxn[app16#0].ConfigAssetMetadataHash + let app16.ConfigAssetManager#0: bytes = itxn[app16#0].ConfigAssetManager + let app16.ConfigAssetReserve#0: bytes = itxn[app16#0].ConfigAssetReserve + let app16.ConfigAssetFreeze#0: bytes = itxn[app16#0].ConfigAssetFreeze + let app16.ConfigAssetClawback#0: bytes = itxn[app16#0].ConfigAssetClawback + let app16.FreezeAsset#0: uint64 = itxn[app16#0].FreezeAsset + let app16.FreezeAssetAccount#0: bytes = itxn[app16#0].FreezeAssetAccount + let app16.FreezeAssetFrozen#0: bool = itxn[app16#0].FreezeAssetFrozen + let app16.NumAssets#0: uint64 = itxn[app16#0].NumAssets + let app16.NumApplications#0: uint64 = itxn[app16#0].NumApplications + let app16.GlobalNumUint#0: uint64 = itxn[app16#0].GlobalNumUint + let app16.GlobalNumByteSlice#0: uint64 = itxn[app16#0].GlobalNumByteSlice + let app16.LocalNumUint#0: uint64 = itxn[app16#0].LocalNumUint + let app16.LocalNumByteSlice#0: uint64 = itxn[app16#0].LocalNumByteSlice + let app16.ExtraProgramPages#0: uint64 = itxn[app16#0].ExtraProgramPages + let app16.Nonparticipation#0: bool = itxn[app16#0].Nonparticipation + let app16.NumLogs#0: uint64 = itxn[app16#0].NumLogs + let app16.CreatedAssetID#0: uint64 = itxn[app16#0].CreatedAssetID + let app16.CreatedApplicationID#0: uint64 = itxn[app16#0].CreatedApplicationID + let app16.LastLog#0: bytes = itxn[app16#0].LastLog + let app16.StateProofPK#0: bytes = itxn[app16#0].StateProofPK + let app16.NumApprovalProgramPages#0: uint64 = itxn[app16#0].NumApprovalProgramPages + let app16.NumClearStateProgramPages#0: uint64 = itxn[app16#0].NumClearStateProgramPages + let tmp%0#0: bytes = itxn[app1#0].Logs[0u] + let tmp%1#0: bool = (== tmp%0#0 "1") + (assert tmp%1#0) + let tmp%2#0: bytes = itxn[app2#0].Logs[0u] + let tmp%3#0: bool = (== tmp%2#0 "2") + (assert tmp%3#0) + let tmp%4#0: bytes = itxn[app3#0].Logs[0u] + let tmp%5#0: bool = (== tmp%4#0 "3") + (assert tmp%5#0) + let tmp%6#0: bytes = itxn[app4#0].Logs[0u] + let tmp%7#0: bool = (== tmp%6#0 "4") + (assert tmp%7#0) + let tmp%8#0: bytes = itxn[app5#0].Logs[0u] + let tmp%9#0: bool = (== tmp%8#0 "5") + (assert tmp%9#0) + let tmp%10#0: bytes = itxn[app6#0].Logs[0u] + let tmp%11#0: bool = (== tmp%10#0 "6") + (assert tmp%11#0) + let tmp%12#0: bytes = itxn[app7#0].Logs[0u] + let tmp%13#0: bool = (== tmp%12#0 "7") + (assert tmp%13#0) + let tmp%14#0: bytes = itxn[app8#0].Logs[0u] + let tmp%15#0: bool = (== tmp%14#0 "8") + (assert tmp%15#0) + let tmp%16#0: bytes = itxn[app9#0].Logs[0u] + let tmp%17#0: bool = (== tmp%16#0 "9") + (assert tmp%17#0) + let tmp%18#0: bytes = itxn[app10#0].Logs[0u] + let tmp%19#0: bool = (== tmp%18#0 "10") + (assert tmp%19#0) + let tmp%20#0: bytes = itxn[app11#0].Logs[0u] + let tmp%21#0: bool = (== tmp%20#0 "11") + (assert tmp%21#0) + let tmp%22#0: bytes = itxn[app12#0].Logs[0u] + let tmp%23#0: bool = (== tmp%22#0 "12") + (assert tmp%23#0) + let tmp%24#0: bytes = itxn[app13#0].Logs[0u] + let tmp%25#0: bool = (== tmp%24#0 "13") + (assert tmp%25#0) + let tmp%26#0: bytes = itxn[app14#0].Logs[0u] + let tmp%27#0: bool = (== tmp%26#0 "14") + (assert tmp%27#0) + let tmp%28#0: bytes = itxn[app15#0].Logs[0u] + let tmp%29#0: bool = (== tmp%28#0 "15") + (assert tmp%29#0) + let tmp%30#0: bytes = itxn[app16#0].Logs[0u] + let tmp%31#0: bool = (== tmp%30#0 "16") + (assert tmp%31#0) + return + +subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test4() -> void: + block@0: // L171 + let lotsOfBytes#0: bytes = (bzero 2044u) + let approval1#0: bytes = 0x098101 + let tmp%0#0: bytes = (concat 0x80fc0f lotsOfBytes#0) + let approval2#0: bytes = (concat tmp%0#0 0x48) + let appTxn1#0: itxn_field_set = itxn_field_set(0) + let appTxn1%%param_Fee_idx_0#0: uint64 = 0u + let appTxn1%%Fee_length#0: uint64 = 1u + let appTxn1%%param_TypeEnum_idx_0#0: uint64 = 6u + let appTxn1%%TypeEnum_length#0: uint64 = 1u + let appTxn1%%param_ApprovalProgramPages_idx_0#0: bytes = approval1#0 + let appTxn1%%param_ApprovalProgramPages_idx_1#0: bytes = approval2#0 + let appTxn1%%param_ApprovalProgramPages_idx_2#0: bytes = approval2#0 + let appTxn1%%param_ApprovalProgramPages_idx_3#0: bytes = approval2#0 + let appTxn1%%ApprovalProgramPages_length#0: uint64 = 4u + let appTxn1%%param_ClearStateProgramPages_idx_0#0: bytes = 0x098101 + let appTxn1%%ClearStateProgramPages_length#0: uint64 = 1u + let appTxn1%%param_OnCompletion_idx_0#0: uint64 = 5u + let appTxn1%%OnCompletion_length#0: uint64 = 1u + let appTxn1%%param_ApplicationArgs_idx_0#0: bytes = "1" + let appTxn1%%ApplicationArgs_length#0: uint64 = 1u + let appTxn1%%param_ExtraProgramPages_idx_0#0: uint64 = 3u + let appTxn1%%ExtraProgramPages_length#0: uint64 = 1u + let appTxn1%%Sender_length#0: uint64 = 0u + let appTxn1%%Note_length#0: uint64 = 0u + let appTxn1%%Receiver_length#0: uint64 = 0u + let appTxn1%%Amount_length#0: uint64 = 0u + let appTxn1%%CloseRemainderTo_length#0: uint64 = 0u + let appTxn1%%VotePK_length#0: uint64 = 0u + let appTxn1%%SelectionPK_length#0: uint64 = 0u + let appTxn1%%VoteFirst_length#0: uint64 = 0u + let appTxn1%%VoteLast_length#0: uint64 = 0u + let appTxn1%%VoteKeyDilution_length#0: uint64 = 0u + let appTxn1%%Type_length#0: uint64 = 0u + let appTxn1%%XferAsset_length#0: uint64 = 0u + let appTxn1%%AssetAmount_length#0: uint64 = 0u + let appTxn1%%AssetSender_length#0: uint64 = 0u + let appTxn1%%AssetReceiver_length#0: uint64 = 0u + let appTxn1%%AssetCloseTo_length#0: uint64 = 0u + let appTxn1%%ApplicationID_length#0: uint64 = 0u + let appTxn1%%ApprovalProgram_length#0: uint64 = 0u + let appTxn1%%ClearStateProgram_length#0: uint64 = 0u + let appTxn1%%RekeyTo_length#0: uint64 = 0u + let appTxn1%%ConfigAsset_length#0: uint64 = 0u + let appTxn1%%ConfigAssetTotal_length#0: uint64 = 0u + let appTxn1%%ConfigAssetDecimals_length#0: uint64 = 0u + let appTxn1%%ConfigAssetDefaultFrozen_length#0: uint64 = 0u + let appTxn1%%ConfigAssetUnitName_length#0: uint64 = 0u + let appTxn1%%ConfigAssetName_length#0: uint64 = 0u + let appTxn1%%ConfigAssetURL_length#0: uint64 = 0u + let appTxn1%%ConfigAssetMetadataHash_length#0: uint64 = 0u + let appTxn1%%ConfigAssetManager_length#0: uint64 = 0u + let appTxn1%%ConfigAssetReserve_length#0: uint64 = 0u + let appTxn1%%ConfigAssetFreeze_length#0: uint64 = 0u + let appTxn1%%ConfigAssetClawback_length#0: uint64 = 0u + let appTxn1%%FreezeAsset_length#0: uint64 = 0u + let appTxn1%%FreezeAssetAccount_length#0: uint64 = 0u + let appTxn1%%FreezeAssetFrozen_length#0: uint64 = 0u + let appTxn1%%GlobalNumUint_length#0: uint64 = 0u + let appTxn1%%GlobalNumByteSlice_length#0: uint64 = 0u + let appTxn1%%LocalNumUint_length#0: uint64 = 0u + let appTxn1%%LocalNumByteSlice_length#0: uint64 = 0u + let appTxn1%%Nonparticipation_length#0: uint64 = 0u + let appTxn1%%StateProofPK_length#0: uint64 = 0u + let appTxn1%%Accounts_length#0: uint64 = 0u + let appTxn1%%Assets_length#0: uint64 = 0u + let appTxn1%%Applications_length#0: uint64 = 0u + itxn_begin + ((itxn_field ExtraProgramPages) appTxn1%%param_ExtraProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn1%%param_ApplicationArgs_idx_0#0) + ((itxn_field OnCompletion) appTxn1%%param_OnCompletion_idx_0#0) + ((itxn_field ClearStateProgramPages) appTxn1%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn1%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn1%%param_ApprovalProgramPages_idx_1#0) + ((itxn_field ApprovalProgramPages) appTxn1%%param_ApprovalProgramPages_idx_2#0) + ((itxn_field ApprovalProgramPages) appTxn1%%param_ApprovalProgramPages_idx_3#0) + ((itxn_field TypeEnum) appTxn1%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn1%%param_Fee_idx_0#0) + goto block@1 + block@1: // next_txn_L185 + itxn_submit + let app1#0: itxn_group_idx = itxn_group_idx(0) + let app1._is_last#0: bool = 1u + let app1.Sender#0: bytes = itxn[app1#0].Sender + let app1.Fee#0: uint64 = itxn[app1#0].Fee + let app1.FirstValid#0: uint64 = itxn[app1#0].FirstValid + let app1.FirstValidTime#0: uint64 = itxn[app1#0].FirstValidTime + let app1.LastValid#0: uint64 = itxn[app1#0].LastValid + let app1.Note#0: bytes = itxn[app1#0].Note + let app1.Lease#0: bytes = itxn[app1#0].Lease + let app1.Receiver#0: bytes = itxn[app1#0].Receiver + let app1.Amount#0: uint64 = itxn[app1#0].Amount + let app1.CloseRemainderTo#0: bytes = itxn[app1#0].CloseRemainderTo + let app1.VotePK#0: bytes = itxn[app1#0].VotePK + let app1.SelectionPK#0: bytes = itxn[app1#0].SelectionPK + let app1.VoteFirst#0: uint64 = itxn[app1#0].VoteFirst + let app1.VoteLast#0: uint64 = itxn[app1#0].VoteLast + let app1.VoteKeyDilution#0: uint64 = itxn[app1#0].VoteKeyDilution + let app1.Type#0: bytes = itxn[app1#0].Type + let app1.TypeEnum#0: uint64 = itxn[app1#0].TypeEnum + let app1.XferAsset#0: uint64 = itxn[app1#0].XferAsset + let app1.AssetAmount#0: uint64 = itxn[app1#0].AssetAmount + let app1.AssetSender#0: bytes = itxn[app1#0].AssetSender + let app1.AssetReceiver#0: bytes = itxn[app1#0].AssetReceiver + let app1.AssetCloseTo#0: bytes = itxn[app1#0].AssetCloseTo + let app1.GroupIndex#0: uint64 = itxn[app1#0].GroupIndex + let app1.TxID#0: bytes = itxn[app1#0].TxID + let app1.ApplicationID#0: uint64 = itxn[app1#0].ApplicationID + let app1.OnCompletion#0: uint64 = itxn[app1#0].OnCompletion + let app1.NumAppArgs#0: uint64 = itxn[app1#0].NumAppArgs + let app1.NumAccounts#0: uint64 = itxn[app1#0].NumAccounts + let app1.ApprovalProgram#0: bytes = itxn[app1#0].ApprovalProgram + let app1.ClearStateProgram#0: bytes = itxn[app1#0].ClearStateProgram + let app1.RekeyTo#0: bytes = itxn[app1#0].RekeyTo + let app1.ConfigAsset#0: uint64 = itxn[app1#0].ConfigAsset + let app1.ConfigAssetTotal#0: uint64 = itxn[app1#0].ConfigAssetTotal + let app1.ConfigAssetDecimals#0: uint64 = itxn[app1#0].ConfigAssetDecimals + let app1.ConfigAssetDefaultFrozen#0: bool = itxn[app1#0].ConfigAssetDefaultFrozen + let app1.ConfigAssetUnitName#0: bytes = itxn[app1#0].ConfigAssetUnitName + let app1.ConfigAssetName#0: bytes = itxn[app1#0].ConfigAssetName + let app1.ConfigAssetURL#0: bytes = itxn[app1#0].ConfigAssetURL + let app1.ConfigAssetMetadataHash#0: bytes = itxn[app1#0].ConfigAssetMetadataHash + let app1.ConfigAssetManager#0: bytes = itxn[app1#0].ConfigAssetManager + let app1.ConfigAssetReserve#0: bytes = itxn[app1#0].ConfigAssetReserve + let app1.ConfigAssetFreeze#0: bytes = itxn[app1#0].ConfigAssetFreeze + let app1.ConfigAssetClawback#0: bytes = itxn[app1#0].ConfigAssetClawback + let app1.FreezeAsset#0: uint64 = itxn[app1#0].FreezeAsset + let app1.FreezeAssetAccount#0: bytes = itxn[app1#0].FreezeAssetAccount + let app1.FreezeAssetFrozen#0: bool = itxn[app1#0].FreezeAssetFrozen + let app1.NumAssets#0: uint64 = itxn[app1#0].NumAssets + let app1.NumApplications#0: uint64 = itxn[app1#0].NumApplications + let app1.GlobalNumUint#0: uint64 = itxn[app1#0].GlobalNumUint + let app1.GlobalNumByteSlice#0: uint64 = itxn[app1#0].GlobalNumByteSlice + let app1.LocalNumUint#0: uint64 = itxn[app1#0].LocalNumUint + let app1.LocalNumByteSlice#0: uint64 = itxn[app1#0].LocalNumByteSlice + let app1.ExtraProgramPages#0: uint64 = itxn[app1#0].ExtraProgramPages + let app1.Nonparticipation#0: bool = itxn[app1#0].Nonparticipation + let app1.NumLogs#0: uint64 = itxn[app1#0].NumLogs + let app1.CreatedAssetID#0: uint64 = itxn[app1#0].CreatedAssetID + let app1.CreatedApplicationID#0: uint64 = itxn[app1#0].CreatedApplicationID + let app1.LastLog#0: bytes = itxn[app1#0].LastLog + let app1.StateProofPK#0: bytes = itxn[app1#0].StateProofPK + let app1.NumApprovalProgramPages#0: uint64 = itxn[app1#0].NumApprovalProgramPages + let app1.NumClearStateProgramPages#0: uint64 = itxn[app1#0].NumClearStateProgramPages + let tmp%1#0: bool = (== app1.ExtraProgramPages#0 3u) + (assert tmp%1#0) // extra pages = 3 + let tmp%2#0: bool = (== app1.NumApprovalProgramPages#0 2u) + (assert tmp%2#0) // approval pages = 2 + let tmp%3#0: bytes = itxn[app1#0].ApprovalProgramPages[0u] + let tmp%4#0: bytes = (concat approval1#0 approval2#0) + let length%0#0: uint64 = (len approval2#0) + let is_out_of_bounds%0#0: bool = (>= 0u length%0#0) + let bounded_index%0#0: uint64 = (select 0u length%0#0 is_out_of_bounds%0#0) + let is_out_of_bounds%1#0: bool = (>= 3u length%0#0) + let bounded_offset%0#0: uint64 = (select 3u length%0#0 is_out_of_bounds%1#0) + let bounded_index%1#0: uint64 = (- length%0#0 bounded_offset%0#0) + let end_before_start%0#0: bool = (< bounded_index%1#0 bounded_index%0#0) + let end%0#0: uint64 = (select bounded_index%1#0 bounded_index%0#0 end_before_start%0#0) + let tmp%5#0: bytes = (substring3 approval2#0 bounded_index%0#0 end%0#0) + let tmp%6#0: bytes = (concat tmp%4#0 tmp%5#0) + let tmp%7#0: bool = (== tmp%3#0 tmp%6#0) + (assert tmp%7#0) // expected approval page 0 + let tmp%8#0: bytes = itxn[app1#0].ApprovalProgramPages[1u] + let length%1#0: uint64 = (len approval2#0) + let is_out_of_bounds%2#0: bool = (>= 3u length%1#0) + let bounded_offset%1#0: uint64 = (select 3u length%1#0 is_out_of_bounds%2#0) + let bounded_index%2#0: uint64 = (- length%1#0 bounded_offset%1#0) + let tmp%9#0: bytes = (substring3 approval2#0 bounded_index%2#0 length%1#0) + let tmp%10#0: bytes = (concat tmp%9#0 approval2#0) + let tmp%11#0: bool = (== tmp%8#0 tmp%10#0) + (assert tmp%11#0) // expected approval page 1 + let tmp%12#0: bool = (== app1.NumClearStateProgramPages#0 1u) + (assert tmp%12#0) // clear state pages = 1 + let tmp%13#0: bytes = itxn[app1#0].ClearStateProgramPages[0u] + let tmp%14#0: bool = (== tmp%13#0 0x098101) + (assert tmp%14#0) // expected clear state page + return + +subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.__algots__.defaultCreate() -> void: + block@0: // L7 return \ No newline at end of file diff --git a/tests/approvals/out/o1/itxn/itxn.awst b/tests/approvals/out/o1/itxn/itxn.awst index 29df9cb94..cf009fdd8 100644 --- a/tests/approvals/out/o1/itxn/itxn.awst +++ b/tests/approvals/out/o1/itxn/itxn.awst @@ -8,26 +8,7 @@ contract ItxnDemoContract if (!Boolean(txn())) { this.constructor() } - if (Boolean(txn())) { - switch (txnas(0)) { - case "test1": - #switch₁ᶜ₀: - this.test1() - goto #switch₁ᵇ - case "test2": - #switch₁ᶜ₁: - this.test2() - goto #switch₁ᵇ - case "test3": - #switch₁ᶜ₂: - goto #switch₁ᶜ₃ - case "test4": - #switch₁ᶜ₃: - goto #switch₁ᵇ - } - #switch₁ᵇ: - } - return True + return arc4Router() } clearProgram(): bool @@ -50,7 +31,7 @@ contract ItxnDemoContract appCreateParams: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[0x098101], ClearStateProgramPages=[0x098101]) update_inner_transaction(assetParams, ConfigAssetName="AST3") [appCreateTxn, asset3_txn]: readonlytuple[inner_transaction_appl, inner_transaction_acfg] = submit_txn(appCreateParams, assetParams) - assert(Boolean(appCreateTxn.ApplicationID), comment=app is created) + assert(Boolean(appCreateTxn.CreatedApplicationID), comment=app is created) assert(asset3_txn.ConfigAssetName == "AST3", comment=asset3_txn is correct) update_inner_transaction(appCreateParams, Note="3rd") update_inner_transaction(assetParams, Note="3rd") @@ -61,14 +42,85 @@ contract ItxnDemoContract { if (Boolean(txn())) { args: readonlytuple[bytes, bytes] = ["1", "2"] - createAppParams: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[" "], ClearStateProgramPages=[" "], ApplicationArgs=[args.0, args.1], OnCompletion=0, Note="with args param set") + createAppParams: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[0x098101], ClearStateProgramPages=[0x098101], ApplicationArgs=[args.0, args.1], OnCompletion=0, Note="with args param set") } else { - createAppParams: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[" "], ClearStateProgramPages=[" "], ApplicationArgs=["3", "4", "5"], Note="no args param set") + createAppParams: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[0x098101], ClearStateProgramPages=[0x098101], ApplicationArgs=["3", "4", "5"], Note="no args param set") } createAppTxn: inner_transaction_appl = submit_txn(createAppParams) assert(createAppTxn.ApplicationArgs[0] == "1", comment=correct args used 1) assert(createAppTxn.ApplicationArgs[1] == "2", comment=correct args used 2) - assert(createAppTxn.Note == "with args param set") + if (txn() > 1) { + createAppTxn2: inner_transaction_appl = submit_txn(create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[0x098101], ClearStateProgramPages=[0x098101], OnCompletion=5, ApplicationArgs=["42"])) + assert(createAppTxn2.ApplicationArgs[0] == "42", comment=correct args used 2) + assert(createAppTxn.Note == "with args param set") + } + } + + test3(): void + { + appTxn1: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[0x09361a00b08101], ClearStateProgramPages=[0x098101], OnCompletion=5, ApplicationArgs=["1"]) + appTxn2: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn2, ApplicationArgs=["2"]) + appTxn3: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn3, ApplicationArgs=["3"]) + appTxn4: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn4, ApplicationArgs=["4"]) + appTxn5: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn5, ApplicationArgs=["5"]) + appTxn6: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn6, ApplicationArgs=["6"]) + appTxn7: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn7, ApplicationArgs=["7"]) + appTxn8: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn8, ApplicationArgs=["8"]) + appTxn9: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn9, ApplicationArgs=["9"]) + appTxn10: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn10, ApplicationArgs=["10"]) + appTxn11: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn11, ApplicationArgs=["11"]) + appTxn12: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn12, ApplicationArgs=["12"]) + appTxn13: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn13, ApplicationArgs=["13"]) + appTxn14: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn14, ApplicationArgs=["14"]) + appTxn15: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn15, ApplicationArgs=["15"]) + appTxn16: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn16, ApplicationArgs=["16"]) + [app1, app2, app3, app4, app5, app6, app7, app8, app9, app10, app11, app12, app13, app14, app15, app16]: readonlytuple[inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl] = submit_txn(appTxn1, appTxn2, appTxn3, appTxn4, appTxn5, appTxn6, appTxn7, appTxn8, appTxn9, appTxn10, appTxn11, appTxn12, appTxn13, appTxn14, appTxn15, appTxn16) + assert(app1.Logs[0] == "1") + assert(app2.Logs[0] == "2") + assert(app3.Logs[0] == "3") + assert(app4.Logs[0] == "4") + assert(app5.Logs[0] == "5") + assert(app6.Logs[0] == "6") + assert(app7.Logs[0] == "7") + assert(app8.Logs[0] == "8") + assert(app9.Logs[0] == "9") + assert(app10.Logs[0] == "10") + assert(app11.Logs[0] == "11") + assert(app12.Logs[0] == "12") + assert(app13.Logs[0] == "13") + assert(app14.Logs[0] == "14") + assert(app15.Logs[0] == "15") + assert(app16.Logs[0] == "16") + } + + test4(): void + { + lotsOfBytes: bytes = bzero(2044) + approval1: bytes = 0x098101 + approval2: bytes = concat(concat(0x80fc0f, lotsOfBytes), 0x48) + appTxn1: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[approval1, approval2, approval2, approval2], ClearStateProgramPages=[0x098101], OnCompletion=5, ApplicationArgs=["1"], ExtraProgramPages=3) + app1: inner_transaction_appl = submit_txn(appTxn1) + assert(app1.ExtraProgramPages == 3, comment=extra pages = 3) + assert(app1.NumApprovalProgramPages == 2, comment=approval pages = 2) + assert(app1.ApprovalProgramPages[0] == concat(concat(approval1, approval2), approval2.slice(0, -3)), comment=expected approval page 0) + assert(app1.ApprovalProgramPages[1] == concat(approval2.slice(-3), approval2), comment=expected approval page 1) + assert(app1.NumClearStateProgramPages == 1, comment=clear state pages = 1) + assert(app1.ClearStateProgramPages[0] == 0x098101, comment=expected clear state page) } constructor(): void @@ -77,4 +129,8 @@ contract ItxnDemoContract GlobalState["name"]: bytes = 0x } + __algots__.defaultCreate(): void + { + } + } \ No newline at end of file diff --git a/tests/approvals/out/o1/itxn/itxn.awst.json b/tests/approvals/out/o1/itxn/itxn.awst.json index 3ac28de19..a4a44deda 100644 --- a/tests/approvals/out/o1/itxn/itxn.awst.json +++ b/tests/approvals/out/o1/itxn/itxn.awst.json @@ -6,22 +6,24 @@ "line": 7, "end_line": 7, "column": 0, - "end_column": 52 + "end_column": 48 }, "id": "tests/approvals/itxn.algo.ts::ItxnDemoContract", "name": "ItxnDemoContract", "description": null, "method_resolution_order": [ + "@algorandfoundation/algorand-typescript/arc4/index.d.ts::Contract", "@algorandfoundation/algorand-typescript/base-contract.d.ts::BaseContract" ], "approval_program": { "_type": "ContractMethod", "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 10, - "end_line": 10, - "column": 2, - "end_column": 35 + "_type": "SourceLocation", + "file": null, + "line": 1, + "end_line": 1, + "column": 0, + "end_column": 1 }, "args": [], "return_type": { @@ -165,490 +167,33 @@ { "_type": "Block", "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 10, - "end_line": 25, - "column": 36, - "end_column": 3 + "_type": "SourceLocation", + "file": null, + "line": 1, + "end_line": 1, + "column": 0, + "end_column": 1 }, "body": [ - { - "_type": "IfElse", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 11, - "end_line": 11, - "column": 4, - "end_column": 23 - }, - "condition": { - "_type": "ReinterpretCast", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 11, - "end_line": 11, - "column": 8, - "end_column": 22 - }, - "wtype": { - "_type": "WType", - "name": "bool", - "immutable": true, - "ephemeral": false, - "scalar_type": 2 - }, - "expr": { - "_type": "IntrinsicCall", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 11, - "end_line": 11, - "column": 12, - "end_column": 22 - }, - "wtype": { - "_type": "WType", - "name": "uint64", - "immutable": true, - "ephemeral": false, - "scalar_type": 2 - }, - "op_code": "txn", - "immediates": [ - "NumAppArgs" - ], - "stack_args": [] - } - }, - "if_branch": { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 11, - "end_line": 23, - "column": 24, - "end_column": 5 - }, - "body": [ - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 11, - "end_line": 23, - "column": 24, - "end_column": 5 - }, - "body": [ - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 12, - "end_line": 22, - "column": 6, - "end_column": 7 - }, - "body": [ - { - "_type": "Switch", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 12, - "end_line": 22, - "column": 6, - "end_column": 7 - }, - "value": { - "_type": "IntrinsicCall", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 12, - "end_line": 12, - "column": 14, - "end_column": 36 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 - }, - "op_code": "txnas", - "immediates": [ - "ApplicationArgs" - ], - "stack_args": [ - { - "_type": "IntegerConstant", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 12, - "end_line": 12, - "column": 34, - "end_column": 35 - }, - "wtype": { - "_type": "WType", - "name": "uint64", - "immutable": true, - "ephemeral": false, - "scalar_type": 2 - }, - "value": "0", - "teal_alias": null - } - ] - }, - "cases": [ - [ - { - "_type": "BytesConstant", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 13, - "end_line": 13, - "column": 19, - "end_column": 26 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 - }, - "value": "bY*jNF#", - "encoding": "utf8" - }, - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 13, - "end_line": 15, - "column": 8, - "end_column": 15 - }, - "body": [ - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 13, - "end_line": 15, - "column": 8, - "end_column": 15 - }, - "body": [], - "label": "#switch₁ᶜ₀", - "comment": null - }, - { - "_type": "ExpressionStatement", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 14, - "end_line": 14, - "column": 10, - "end_column": 22 - }, - "expr": { - "_type": "SubroutineCallExpression", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 14, - "end_line": 14, - "column": 10, - "end_column": 22 - }, - "wtype": { - "_type": "WType", - "name": "void", - "immutable": true, - "ephemeral": false, - "scalar_type": null - }, - "target": { - "_type": "InstanceMethodTarget", - "member_name": "test1" - }, - "args": [] - } - }, - { - "_type": "Goto", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 15, - "end_line": 15, - "column": 10, - "end_column": 15 - }, - "target": "#switch₁ᵇ" - } - ], - "label": null, - "comment": null - } - ], - [ - { - "_type": "BytesConstant", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 16, - "end_line": 16, - "column": 19, - "end_column": 26 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 - }, - "value": "bY*jNG5", - "encoding": "utf8" - }, - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 16, - "end_line": 18, - "column": 8, - "end_column": 15 - }, - "body": [ - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 16, - "end_line": 18, - "column": 8, - "end_column": 15 - }, - "body": [], - "label": "#switch₁ᶜ₁", - "comment": null - }, - { - "_type": "ExpressionStatement", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 17, - "end_line": 17, - "column": 10, - "end_column": 22 - }, - "expr": { - "_type": "SubroutineCallExpression", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 17, - "end_line": 17, - "column": 10, - "end_column": 22 - }, - "wtype": { - "_type": "WType", - "name": "void", - "immutable": true, - "ephemeral": false, - "scalar_type": null - }, - "target": { - "_type": "InstanceMethodTarget", - "member_name": "test2" - }, - "args": [] - } - }, - { - "_type": "Goto", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 18, - "end_line": 18, - "column": 10, - "end_column": 15 - }, - "target": "#switch₁ᵇ" - } - ], - "label": null, - "comment": null - } - ], - [ - { - "_type": "BytesConstant", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 19, - "end_line": 19, - "column": 19, - "end_column": 26 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 - }, - "value": "bY*jNGX", - "encoding": "utf8" - }, - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 19, - "end_line": 19, - "column": 8, - "end_column": 28 - }, - "body": [ - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 19, - "end_line": 19, - "column": 8, - "end_column": 28 - }, - "body": [], - "label": "#switch₁ᶜ₂", - "comment": null - }, - { - "_type": "Goto", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 19, - "end_line": 19, - "column": 8, - "end_column": 28 - }, - "target": "#switch₁ᶜ₃" - } - ], - "label": null, - "comment": null - } - ], - [ - { - "_type": "BytesConstant", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 20, - "end_line": 20, - "column": 19, - "end_column": 26 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 - }, - "value": "bY*jNGy", - "encoding": "utf8" - }, - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 20, - "end_line": 21, - "column": 8, - "end_column": 15 - }, - "body": [ - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 20, - "end_line": 21, - "column": 8, - "end_column": 15 - }, - "body": [], - "label": "#switch₁ᶜ₃", - "comment": null - }, - { - "_type": "Goto", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 21, - "end_line": 21, - "column": 10, - "end_column": 15 - }, - "target": "#switch₁ᵇ" - } - ], - "label": null, - "comment": null - } - ] - ], - "default_case": null - }, - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 12, - "end_line": 22, - "column": 6, - "end_column": 7 - }, - "body": [], - "label": "#switch₁ᵇ", - "comment": null - } - ], - "label": null, - "comment": null - } - ], - "label": null, - "comment": null - } - ], - "label": null, - "comment": null - }, - "else_branch": null - }, { "_type": "ReturnStatement", "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 24, - "end_line": 24, - "column": 4, - "end_column": 15 + "_type": "SourceLocation", + "file": null, + "line": 1, + "end_line": 1, + "column": 0, + "end_column": 1 }, "value": { - "_type": "BoolConstant", + "_type": "ARC4Router", "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 24, - "end_line": 24, - "column": 11, - "end_column": 15 + "_type": "SourceLocation", + "file": null, + "line": 1, + "end_line": 1, + "column": 0, + "end_column": 1 }, "wtype": { "_type": "WType", @@ -656,8 +201,7 @@ "immutable": true, "ephemeral": false, "scalar_type": 2 - }, - "value": true + } } } ], @@ -674,7 +218,7 @@ "args": {}, "returns": null }, - "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", + "cref": "@algorandfoundation/algorand-typescript/arc4/index.d.ts::Contract", "member_name": "approvalProgram", "arc4_method_config": null }, @@ -756,10 +300,10 @@ "_type": "ContractMethod", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 27, - "end_line": 27, + "line": 10, + "end_line": 10, "column": 2, - "end_column": 17 + "end_column": 16 }, "args": [], "return_type": { @@ -773,9 +317,9 @@ "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 27, - "end_line": 73, - "column": 18, + "line": 10, + "end_line": 56, + "column": 17, "end_column": 3 }, "body": [ @@ -783,8 +327,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 28, - "end_line": 28, + "line": 11, + "end_line": 11, "column": 4, "end_column": 35 }, @@ -792,8 +336,8 @@ "_type": "AppStateExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 28, - "end_line": 28, + "line": 11, + "end_line": 11, "column": 14, "end_column": 19 }, @@ -829,8 +373,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 28, - "end_line": 28, + "line": 11, + "end_line": 11, "column": 28, "end_column": 34 }, @@ -849,8 +393,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 30, - "end_line": 37, + "line": 13, + "end_line": 20, "column": 10, "end_column": 6 }, @@ -858,8 +402,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 30, - "end_line": 30, + "line": 13, + "end_line": 13, "column": 10, "end_column": 21 }, @@ -877,8 +421,8 @@ "_type": "CreateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 30, - "end_line": 37, + "line": 13, + "end_line": 20, "column": 24, "end_column": 6 }, @@ -895,8 +439,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 30, - "end_line": 37, + "line": 13, + "end_line": 20, "column": 24, "end_column": 6 }, @@ -914,8 +458,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 30, - "end_line": 37, + "line": 13, + "end_line": 20, "column": 24, "end_column": 6 }, @@ -933,8 +477,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 31, - "end_line": 31, + "line": 14, + "end_line": 14, "column": 13, "end_column": 17 }, @@ -952,8 +496,8 @@ "_type": "AppStateExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 32, - "end_line": 32, + "line": 15, + "end_line": 15, "column": 27, "end_column": 32 }, @@ -989,8 +533,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 33, - "end_line": 33, + "line": 16, + "end_line": 16, "column": 16, "end_column": 22 }, @@ -1008,8 +552,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 34, - "end_line": 34, + "line": 17, + "end_line": 17, "column": 16, "end_column": 17 }, @@ -1027,8 +571,8 @@ "_type": "IntrinsicCall", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 35, - "end_line": 35, + "line": 18, + "end_line": 18, "column": 22, "end_column": 47 }, @@ -1049,8 +593,8 @@ "_type": "IntrinsicCall", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 36, - "end_line": 36, + "line": 19, + "end_line": 19, "column": 22, "end_column": 47 }, @@ -1074,8 +618,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 39, - "end_line": 39, + "line": 22, + "end_line": 22, "column": 4, "end_column": 35 }, @@ -1083,8 +627,8 @@ "_type": "AppStateExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 39, - "end_line": 39, + "line": 22, + "end_line": 22, "column": 14, "end_column": 19 }, @@ -1120,8 +664,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 39, - "end_line": 39, + "line": 22, + "end_line": 22, "column": 28, "end_column": 34 }, @@ -1140,8 +684,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 40, - "end_line": 40, + "line": 23, + "end_line": 23, "column": 10, "end_column": 43 }, @@ -1149,8 +693,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 40, - "end_line": 40, + "line": 23, + "end_line": 23, "column": 10, "end_column": 20 }, @@ -1168,8 +712,8 @@ "_type": "SubmitInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 40, - "end_line": 40, + "line": 23, + "end_line": 23, "column": 23, "end_column": 43 }, @@ -1186,8 +730,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 40, - "end_line": 40, + "line": 23, + "end_line": 23, "column": 23, "end_column": 34 }, @@ -1208,8 +752,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 41, - "end_line": 43, + "line": 24, + "end_line": 26, "column": 4, "end_column": 6 }, @@ -1217,8 +761,8 @@ "_type": "UpdateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 41, - "end_line": 43, + "line": 24, + "end_line": 26, "column": 4, "end_column": 6 }, @@ -1234,8 +778,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 41, - "end_line": 41, + "line": 24, + "end_line": 24, "column": 4, "end_column": 15 }, @@ -1254,8 +798,8 @@ "_type": "AppStateExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 42, - "end_line": 42, + "line": 25, + "end_line": 25, "column": 27, "end_column": 32 }, @@ -1294,8 +838,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 44, - "end_line": 44, + "line": 27, + "end_line": 27, "column": 10, "end_column": 43 }, @@ -1303,8 +847,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 44, - "end_line": 44, + "line": 27, + "end_line": 27, "column": 10, "end_column": 20 }, @@ -1322,8 +866,8 @@ "_type": "SubmitInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 44, - "end_line": 44, + "line": 27, + "end_line": 27, "column": 23, "end_column": 43 }, @@ -1340,8 +884,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 44, - "end_line": 44, + "line": 27, + "end_line": 27, "column": 23, "end_column": 34 }, @@ -1362,8 +906,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 46, - "end_line": 46, + "line": 29, + "end_line": 29, "column": 4, "end_column": 75 }, @@ -1371,8 +915,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 46, - "end_line": 46, + "line": 29, + "end_line": 29, "column": 4, "end_column": 75 }, @@ -1387,8 +931,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 46, - "end_line": 46, + "line": 29, + "end_line": 29, "column": 11, "end_column": 49 }, @@ -1403,8 +947,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 46, - "end_line": 46, + "line": 29, + "end_line": 29, "column": 22, "end_column": 31 }, @@ -1419,8 +963,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 46, - "end_line": 46, + "line": 29, + "end_line": 29, "column": 11, "end_column": 21 }, @@ -1442,8 +986,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 46, - "end_line": 46, + "line": 29, + "end_line": 29, "column": 42, "end_column": 48 }, @@ -1465,8 +1009,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 47, - "end_line": 47, + "line": 30, + "end_line": 30, "column": 4, "end_column": 75 }, @@ -1474,8 +1018,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 47, - "end_line": 47, + "line": 30, + "end_line": 30, "column": 4, "end_column": 75 }, @@ -1490,8 +1034,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 47, - "end_line": 47, + "line": 30, + "end_line": 30, "column": 11, "end_column": 49 }, @@ -1506,8 +1050,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 47, - "end_line": 47, + "line": 30, + "end_line": 30, "column": 22, "end_column": 31 }, @@ -1522,8 +1066,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 47, - "end_line": 47, + "line": 30, + "end_line": 30, "column": 11, "end_column": 21 }, @@ -1545,8 +1089,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 47, - "end_line": 47, + "line": 30, + "end_line": 30, "column": 42, "end_column": 48 }, @@ -1568,8 +1112,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 4, "end_column": 88 }, @@ -1577,8 +1121,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 4, "end_column": 88 }, @@ -1593,8 +1137,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 11, "end_column": 57 }, @@ -1609,8 +1153,8 @@ "_type": "CheckedMaybe", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 35, "end_column": 39 }, @@ -1625,8 +1169,8 @@ "_type": "IntrinsicCall", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 35, "end_column": 39 }, @@ -1662,8 +1206,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 22, "end_column": 34 }, @@ -1678,8 +1222,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 11, "end_column": 21 }, @@ -1705,8 +1249,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 50, "end_column": 56 }, @@ -1728,8 +1272,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 4, "end_column": 88 }, @@ -1737,8 +1281,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 4, "end_column": 88 }, @@ -1753,8 +1297,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 11, "end_column": 57 }, @@ -1769,8 +1313,8 @@ "_type": "CheckedMaybe", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 35, "end_column": 39 }, @@ -1785,8 +1329,8 @@ "_type": "IntrinsicCall", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 35, "end_column": 39 }, @@ -1822,8 +1366,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 22, "end_column": 34 }, @@ -1838,8 +1382,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 11, "end_column": 21 }, @@ -1865,8 +1409,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 50, "end_column": 56 }, @@ -1888,8 +1432,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 51, - "end_line": 55, + "line": 34, + "end_line": 38, "column": 10, "end_column": 6 }, @@ -1897,8 +1441,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 51, - "end_line": 51, + "line": 34, + "end_line": 34, "column": 10, "end_column": 25 }, @@ -1916,8 +1460,8 @@ "_type": "CreateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 51, - "end_line": 55, + "line": 34, + "end_line": 38, "column": 28, "end_column": 6 }, @@ -1934,8 +1478,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 54, - "end_line": 54, + "line": 37, + "end_line": 37, "column": 11, "end_column": 12 }, @@ -1953,8 +1497,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 51, - "end_line": 55, + "line": 34, + "end_line": 38, "column": 28, "end_column": 6 }, @@ -1972,10 +1516,10 @@ "_type": "TupleExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 52, - "end_line": 52, - "column": 23, - "end_column": 46 + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WTuple", @@ -1998,10 +1542,10 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 52, - "end_line": 52, - "column": 23, - "end_column": 46 + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WType", @@ -2019,10 +1563,10 @@ "_type": "TupleExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 53, - "end_line": 53, - "column": 25, - "end_column": 48 + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WTuple", @@ -2045,10 +1589,10 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 53, - "end_line": 53, - "column": 25, - "end_column": 48 + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WType", @@ -2069,8 +1613,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 57, - "end_line": 59, + "line": 40, + "end_line": 42, "column": 4, "end_column": 6 }, @@ -2078,8 +1622,8 @@ "_type": "UpdateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 57, - "end_line": 59, + "line": 40, + "end_line": 42, "column": 4, "end_column": 6 }, @@ -2095,8 +1639,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 57, - "end_line": 57, + "line": 40, + "end_line": 40, "column": 4, "end_column": 15 }, @@ -2115,8 +1659,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 58, - "end_line": 58, + "line": 41, + "end_line": 41, "column": 17, "end_column": 23 }, @@ -2137,8 +1681,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 10, "end_column": 85 }, @@ -2146,8 +1690,8 @@ "_type": "TupleExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 10, "end_column": 85 }, @@ -2181,8 +1725,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 11, "end_column": 23 }, @@ -2200,8 +1744,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 25, "end_column": 35 }, @@ -2221,8 +1765,8 @@ "_type": "SubmitInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 39, "end_column": 85 }, @@ -2256,8 +1800,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 56, "end_column": 71 }, @@ -2275,8 +1819,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 73, "end_column": 84 }, @@ -2297,19 +1841,19 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 63, - "end_line": 63, + "line": 46, + "end_line": 46, "column": 4, - "end_column": 48 + "end_column": 53 }, "expr": { "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 63, - "end_line": 63, + "line": 46, + "end_line": 46, "column": 4, - "end_column": 48 + "end_column": 53 }, "wtype": { "_type": "WType", @@ -2322,10 +1866,10 @@ "_type": "ReinterpretCast", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 63, - "end_line": 63, + "line": 46, + "end_line": 46, "column": 4, - "end_column": 48 + "end_column": 53 }, "wtype": { "_type": "WType", @@ -2338,10 +1882,10 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 63, - "end_line": 63, + "line": 46, + "end_line": 46, "column": 24, - "end_column": 29 + "end_column": 34 }, "wtype": { "_type": "WType", @@ -2354,8 +1898,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 63, - "end_line": 63, + "line": 46, + "end_line": 46, "column": 11, "end_column": 23 }, @@ -2369,7 +1913,7 @@ }, "name": "appCreateTxn" }, - "field": "ApplicationID", + "field": "CreatedApplicationID", "array_index": null } }, @@ -2380,8 +1924,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 64, - "end_line": 64, + "line": 47, + "end_line": 47, "column": 4, "end_column": 75 }, @@ -2389,8 +1933,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 64, - "end_line": 64, + "line": 47, + "end_line": 47, "column": 4, "end_column": 75 }, @@ -2405,8 +1949,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 64, - "end_line": 64, + "line": 47, + "end_line": 47, "column": 11, "end_column": 49 }, @@ -2421,8 +1965,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 64, - "end_line": 64, + "line": 47, + "end_line": 47, "column": 22, "end_column": 31 }, @@ -2437,8 +1981,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 64, - "end_line": 64, + "line": 47, + "end_line": 47, "column": 11, "end_column": 21 }, @@ -2460,8 +2004,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 64, - "end_line": 64, + "line": 47, + "end_line": 47, "column": 42, "end_column": 48 }, @@ -2483,8 +2027,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 66, - "end_line": 68, + "line": 49, + "end_line": 51, "column": 4, "end_column": 6 }, @@ -2492,8 +2036,8 @@ "_type": "UpdateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 66, - "end_line": 68, + "line": 49, + "end_line": 51, "column": 4, "end_column": 6 }, @@ -2509,8 +2053,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 66, - "end_line": 66, + "line": 49, + "end_line": 49, "column": 4, "end_column": 19 }, @@ -2529,8 +2073,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 67, - "end_line": 67, + "line": 50, + "end_line": 50, "column": 12, "end_column": 17 }, @@ -2551,8 +2095,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 69, - "end_line": 71, + "line": 52, + "end_line": 54, "column": 4, "end_column": 6 }, @@ -2560,8 +2104,8 @@ "_type": "UpdateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 69, - "end_line": 71, + "line": 52, + "end_line": 54, "column": 4, "end_column": 6 }, @@ -2577,8 +2121,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 69, - "end_line": 69, + "line": 52, + "end_line": 52, "column": 4, "end_column": 15 }, @@ -2597,8 +2141,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 70, - "end_line": 70, + "line": 53, + "end_line": 53, "column": 12, "end_column": 17 }, @@ -2619,8 +2163,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 72, - "end_line": 72, + "line": 55, + "end_line": 55, "column": 4, "end_column": 50 }, @@ -2628,8 +2172,8 @@ "_type": "SubmitInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 72, - "end_line": 72, + "line": 55, + "end_line": 55, "column": 4, "end_column": 50 }, @@ -2663,8 +2207,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 72, - "end_line": 72, + "line": 55, + "end_line": 55, "column": 21, "end_column": 36 }, @@ -2682,8 +2226,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 72, - "end_line": 72, + "line": 55, + "end_line": 55, "column": 38, "end_column": 49 }, @@ -2712,16 +2256,34 @@ }, "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", "member_name": "test1", - "arc4_method_config": null + "arc4_method_config": { + "_type": "ARC4ABIMethodConfig", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 10, + "end_line": 10, + "column": 2, + "end_column": 16 + }, + "name": "test1", + "is_bare": false, + "create": 3, + "readonly": false, + "allowed_completion_types": [ + 0 + ], + "default_args": {}, + "structs": {} + } }, { "_type": "ContractMethod", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 75, - "end_line": 75, + "line": 58, + "end_line": 58, "column": 2, - "end_column": 17 + "end_column": 16 }, "args": [], "return_type": { @@ -2735,9 +2297,9 @@ "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 75, - "end_line": 98, - "column": 18, + "line": 58, + "end_line": 93, + "column": 17, "end_column": 3 }, "body": [ @@ -2745,8 +2307,8 @@ "_type": "IfElse", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 77, - "end_line": 77, + "line": 60, + "end_line": 60, "column": 4, "end_column": 23 }, @@ -2754,8 +2316,8 @@ "_type": "ReinterpretCast", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 77, - "end_line": 77, + "line": 60, + "end_line": 60, "column": 8, "end_column": 22 }, @@ -2770,8 +2332,8 @@ "_type": "IntrinsicCall", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 77, - "end_line": 77, + "line": 60, + "end_line": 60, "column": 12, "end_column": 22 }, @@ -2793,8 +2355,8 @@ "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 77, - "end_line": 86, + "line": 60, + "end_line": 69, "column": 24, "end_column": 5 }, @@ -2803,8 +2365,8 @@ "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 77, - "end_line": 86, + "line": 60, + "end_line": 69, "column": 24, "end_column": 5 }, @@ -2813,8 +2375,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 78, - "end_line": 78, + "line": 61, + "end_line": 61, "column": 12, "end_column": 52 }, @@ -2822,8 +2384,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 78, - "end_line": 78, + "line": 61, + "end_line": 61, "column": 12, "end_column": 16 }, @@ -2856,8 +2418,8 @@ "_type": "TupleExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 78, - "end_line": 78, + "line": 61, + "end_line": 61, "column": 19, "end_column": 43 }, @@ -2889,8 +2451,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 78, - "end_line": 78, + "line": 61, + "end_line": 61, "column": 26, "end_column": 29 }, @@ -2908,8 +2470,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 78, - "end_line": 78, + "line": 61, + "end_line": 61, "column": 38, "end_column": 41 }, @@ -2930,8 +2492,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 79, - "end_line": 85, + "line": 62, + "end_line": 68, "column": 6, "end_column": 8 }, @@ -2939,8 +2501,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 79, - "end_line": 79, + "line": 62, + "end_line": 62, "column": 6, "end_column": 21 }, @@ -2958,8 +2520,8 @@ "_type": "CreateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 79, - "end_line": 85, + "line": 62, + "end_line": 68, "column": 24, "end_column": 8 }, @@ -2976,8 +2538,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 79, - "end_line": 85, + "line": 62, + "end_line": 68, "column": 24, "end_column": 8 }, @@ -2995,8 +2557,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 79, - "end_line": 85, + "line": 62, + "end_line": 68, "column": 24, "end_column": 8 }, @@ -3016,8 +2578,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WTuple", @@ -3042,8 +2604,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WType", @@ -3052,8 +2614,8 @@ "ephemeral": false, "scalar_type": 1 }, - "value": "3BrK^", - "encoding": "utf8" + "value": "34s9", + "encoding": "base16" } ] }, @@ -3063,8 +2625,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WTuple", @@ -3089,8 +2651,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WType", @@ -3099,8 +2661,8 @@ "ephemeral": false, "scalar_type": 1 }, - "value": "3BrK^", - "encoding": "utf8" + "value": "34s9", + "encoding": "base16" } ] }, @@ -3108,8 +2670,8 @@ "_type": "TupleExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 82, - "end_line": 82, + "line": 65, + "end_line": 65, "column": 17, "end_column": 21 }, @@ -3141,8 +2703,8 @@ "_type": "TupleItemExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 82, - "end_line": 82, + "line": 65, + "end_line": 65, "column": 17, "end_column": 21 }, @@ -3157,8 +2719,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 82, - "end_line": 82, + "line": 65, + "end_line": 65, "column": 17, "end_column": 21 }, @@ -3193,8 +2755,8 @@ "_type": "TupleItemExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 82, - "end_line": 82, + "line": 65, + "end_line": 65, "column": 17, "end_column": 21 }, @@ -3209,8 +2771,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 82, - "end_line": 82, + "line": 65, + "end_line": 65, "column": 17, "end_column": 21 }, @@ -3247,8 +2809,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 83, - "end_line": 83, + "line": 66, + "end_line": 66, "column": 39, "end_column": 43 }, @@ -3266,8 +2828,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 84, - "end_line": 84, + "line": 67, + "end_line": 67, "column": 14, "end_column": 35 }, @@ -3296,8 +2858,8 @@ "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 86, - "end_line": 93, + "line": 69, + "end_line": 76, "column": 11, "end_column": 5 }, @@ -3306,8 +2868,8 @@ "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 86, - "end_line": 93, + "line": 69, + "end_line": 76, "column": 11, "end_column": 5 }, @@ -3316,8 +2878,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 87, - "end_line": 92, + "line": 70, + "end_line": 75, "column": 6, "end_column": 8 }, @@ -3325,8 +2887,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 87, - "end_line": 87, + "line": 70, + "end_line": 70, "column": 6, "end_column": 21 }, @@ -3344,8 +2906,8 @@ "_type": "CreateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 87, - "end_line": 92, + "line": 70, + "end_line": 75, "column": 24, "end_column": 8 }, @@ -3362,8 +2924,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 87, - "end_line": 92, + "line": 70, + "end_line": 75, "column": 24, "end_column": 8 }, @@ -3381,8 +2943,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 87, - "end_line": 92, + "line": 70, + "end_line": 75, "column": 24, "end_column": 8 }, @@ -3402,8 +2964,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WTuple", @@ -3428,8 +2990,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WType", @@ -3438,8 +3000,8 @@ "ephemeral": false, "scalar_type": 1 }, - "value": "3BrK^", - "encoding": "utf8" + "value": "34s9", + "encoding": "base16" } ] }, @@ -3449,8 +3011,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WTuple", @@ -3475,8 +3037,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WType", @@ -3485,8 +3047,8 @@ "ephemeral": false, "scalar_type": 1 }, - "value": "3BrK^", - "encoding": "utf8" + "value": "34s9", + "encoding": "base16" } ] }, @@ -3494,8 +3056,8 @@ "_type": "TupleExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 90, - "end_line": 90, + "line": 73, + "end_line": 73, "column": 17, "end_column": 46 }, @@ -3534,8 +3096,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 90, - "end_line": 90, + "line": 73, + "end_line": 73, "column": 24, "end_column": 27 }, @@ -3553,8 +3115,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 90, - "end_line": 90, + "line": 73, + "end_line": 73, "column": 30, "end_column": 33 }, @@ -3572,8 +3134,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 90, - "end_line": 90, + "line": 73, + "end_line": 73, "column": 41, "end_column": 44 }, @@ -3593,8 +3155,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 91, - "end_line": 91, + "line": 74, + "end_line": 74, "column": 14, "end_column": 33 }, @@ -3624,8 +3186,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 94, - "end_line": 94, + "line": 77, + "end_line": 77, "column": 10, "end_column": 49 }, @@ -3633,8 +3195,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 94, - "end_line": 94, + "line": 77, + "end_line": 77, "column": 10, "end_column": 22 }, @@ -3652,8 +3214,8 @@ "_type": "SubmitInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 94, - "end_line": 94, + "line": 77, + "end_line": 77, "column": 25, "end_column": 49 }, @@ -3670,8 +3232,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 94, - "end_line": 94, + "line": 77, + "end_line": 77, "column": 25, "end_column": 40 }, @@ -3692,8 +3254,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 4, "end_column": 73 }, @@ -3701,8 +3263,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 4, "end_column": 73 }, @@ -3717,8 +3279,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 11, "end_column": 49 }, @@ -3733,8 +3295,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 11, "end_column": 34 }, @@ -3749,8 +3311,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 11, "end_column": 23 }, @@ -3769,8 +3331,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 32, "end_column": 33 }, @@ -3790,8 +3352,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 45, "end_column": 48 }, @@ -3813,8 +3375,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 4, "end_column": 73 }, @@ -3822,8 +3384,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 4, "end_column": 73 }, @@ -3838,8 +3400,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 11, "end_column": 49 }, @@ -3854,8 +3416,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 11, "end_column": 34 }, @@ -3870,8 +3432,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 11, "end_column": 23 }, @@ -3890,8 +3452,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 32, "end_column": 33 }, @@ -3911,8 +3473,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 45, "end_column": 48 }, @@ -3931,147 +3493,7790 @@ } }, { - "_type": "ExpressionStatement", + "_type": "IfElse", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 97, - "end_line": 97, + "line": 81, + "end_line": 81, "column": 4, - "end_column": 62 + "end_column": 27 }, - "expr": { - "_type": "AssertExpression", + "condition": { + "_type": "NumericComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 97, - "end_line": 97, - "column": 4, - "end_column": 62 + "line": 81, + "end_line": 81, + "column": 8, + "end_column": 26 }, "wtype": { "_type": "WType", - "name": "void", + "name": "bool", "immutable": true, "ephemeral": false, - "scalar_type": null + "scalar_type": 2 }, - "condition": { - "_type": "BytesComparisonExpression", + "lhs": { + "_type": "IntrinsicCall", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 97, - "end_line": 97, - "column": 11, - "end_column": 61 + "line": 81, + "end_line": 81, + "column": 12, + "end_column": 22 }, "wtype": { "_type": "WType", - "name": "bool", + "name": "uint64", "immutable": true, "ephemeral": false, "scalar_type": 2 }, - "lhs": { - "_type": "InnerTransactionField", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 97, - "end_line": 97, - "column": 24, - "end_column": 28 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 - }, - "itxn": { - "_type": "VarExpression", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 97, - "end_line": 97, - "column": 11, - "end_column": 23 - }, - "wtype": { - "_type": "WInnerTransaction", - "name": "inner_transaction_appl", - "immutable": true, - "ephemeral": false, - "scalar_type": null, - "transaction_type": 6 - }, - "name": "createAppTxn" - }, - "field": "Note", - "array_index": null + "op_code": "txn", + "immediates": [ + "NumAppArgs" + ], + "stack_args": [] + }, + "operator": ">", + "rhs": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 81, + "end_line": 81, + "column": 25, + "end_column": 26 }, - "operator": "==", - "rhs": { - "_type": "BytesConstant", + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "1", + "teal_alias": null + } + }, + "if_branch": { + "_type": "Block", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 81, + "end_line": 92, + "column": 28, + "end_column": 5 + }, + "body": [ + { + "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 97, - "end_line": 97, - "column": 39, - "end_column": 60 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 + "line": 81, + "end_line": 92, + "column": 28, + "end_column": 5 }, - "value": "cWHEJAYpQ6b0BbGa$#*Cb7gb", - "encoding": "utf8" - } - }, - "error_message": null - } - } - ], - "label": null, - "comment": null - }, - "documentation": { - "_type": "MethodDocumentation", - "description": null, - "args": {}, - "returns": null - }, - "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", - "member_name": "test2", - "arc4_method_config": null - }, - { - "_type": "ContractMethod", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 7, - "end_line": 7, - "column": 0, - "end_column": 52 - }, - "args": [], - "return_type": { - "_type": "WType", - "name": "void", - "immutable": true, - "ephemeral": false, - "scalar_type": null - }, - "body": { + "body": [ + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 82, + "end_line": 89, + "column": 12, + "end_column": 17 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 82, + "end_line": 82, + "column": 12, + "end_column": 25 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "createAppTxn2" + }, + "value": { + "_type": "SubmitInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 82, + "end_line": 89, + "column": 28, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxns": [ + { + "_type": "CreateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 82, + "end_line": 88, + "column": 28, + "end_column": 10 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "fields": { + "Fee": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 82, + "end_line": 88, + "column": 28, + "end_column": 10 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + }, + "TypeEnum": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 82, + "end_line": 88, + "column": 28, + "end_column": 10 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "6", + "teal_alias": null + }, + "ApprovalProgramPages": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "34s9", + "encoding": "base16" + } + ] + }, + "ClearStateProgramPages": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "34s9", + "encoding": "base16" + } + ] + }, + "OnCompletion": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 86, + "end_line": 86, + "column": 41, + "end_column": 58 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "5", + "teal_alias": null + }, + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 87, + "end_line": 87, + "column": 19, + "end_column": 32 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 87, + "end_line": 87, + "column": 26, + "end_column": 30 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "G%^", + "encoding": "utf8" + } + ] + } + } + } + ] + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 6, + "end_column": 77 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 6, + "end_column": 77 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 13, + "end_column": 53 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 13, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 13, + "end_column": 26 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "createAppTxn2" + }, + "field": "ApplicationArgs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 35, + "end_column": 36 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 48, + "end_column": 52 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "G%^", + "encoding": "utf8" + } + }, + "error_message": "correct args used 2" + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 91, + "end_line": 91, + "column": 6, + "end_column": 64 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 91, + "end_line": 91, + "column": 6, + "end_column": 64 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 91, + "end_line": 91, + "column": 13, + "end_column": 63 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 91, + "end_line": 91, + "column": 26, + "end_column": 30 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 91, + "end_line": 91, + "column": 13, + "end_column": 25 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "createAppTxn" + }, + "field": "Note", + "array_index": null + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 91, + "end_line": 91, + "column": 41, + "end_column": 62 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "cWHEJAYpQ6b0BbGa$#*Cb7gb", + "encoding": "utf8" + } + }, + "error_message": null + } + } + ], + "label": null, + "comment": null + } + ], + "label": null, + "comment": null + }, + "else_branch": null + } + ], + "label": null, + "comment": null + }, + "documentation": { + "_type": "MethodDocumentation", + "description": null, + "args": {}, + "returns": null + }, + "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", + "member_name": "test2", + "arc4_method_config": { + "_type": "ARC4ABIMethodConfig", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 58, + "end_line": 58, + "column": 2, + "end_column": 16 + }, + "name": "test2", + "is_bare": false, + "create": 3, + "readonly": false, + "allowed_completion_types": [ + 0 + ], + "default_args": {}, + "structs": {} + } + }, + { + "_type": "ContractMethod", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 95, + "end_line": 95, + "column": 2, + "end_column": 16 + }, + "args": [], + "return_type": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "body": { + "_type": "Block", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 95, + "end_line": 169, + "column": 17, + "end_column": 3 + }, + "body": [ + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 96, + "end_line": 101, + "column": 10, + "end_column": 6 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 96, + "end_line": 96, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + }, + "value": { + "_type": "CreateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 96, + "end_line": 101, + "column": 20, + "end_column": 6 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "fields": { + "Fee": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 96, + "end_line": 101, + "column": 20, + "end_column": 6 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + }, + "TypeEnum": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 96, + "end_line": 101, + "column": 20, + "end_column": 6 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "6", + "teal_alias": null + }, + "ApprovalProgramPages": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 4, + "end_line": 4, + "column": 32, + "end_column": 63 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 4, + "end_line": 4, + "column": 32, + "end_column": 63 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "2{sx4uz>*", + "encoding": "base16" + } + ] + }, + "ClearStateProgramPages": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "34s9", + "encoding": "base16" + } + ] + }, + "OnCompletion": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 99, + "end_line": 99, + "column": 37, + "end_column": 54 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "5", + "teal_alias": null + }, + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 100, + "end_line": 100, + "column": 15, + "end_column": 27 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 100, + "end_line": 100, + "column": 22, + "end_column": 25 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F#", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 103, + "end_line": 103, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 103, + "end_line": 103, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn2" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 103, + "end_line": 103, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 103, + "end_line": 103, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 104, + "end_line": 104, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 104, + "end_line": 104, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 104, + "end_line": 104, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn2" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 104, + "end_line": 104, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 104, + "end_line": 104, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "G5", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 105, + "end_line": 105, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 105, + "end_line": 105, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn3" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 105, + "end_line": 105, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 105, + "end_line": 105, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 106, + "end_line": 106, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 106, + "end_line": 106, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 106, + "end_line": 106, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn3" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 106, + "end_line": 106, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 106, + "end_line": 106, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "GX", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 107, + "end_line": 107, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 107, + "end_line": 107, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn4" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 107, + "end_line": 107, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 107, + "end_line": 107, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 108, + "end_line": 108, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 108, + "end_line": 108, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 108, + "end_line": 108, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn4" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 108, + "end_line": 108, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 108, + "end_line": 108, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "Gy", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 109, + "end_line": 109, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 109, + "end_line": 109, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn5" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 109, + "end_line": 109, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 109, + "end_line": 109, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 110, + "end_line": 110, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 110, + "end_line": 110, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 110, + "end_line": 110, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn5" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 110, + "end_line": 110, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 110, + "end_line": 110, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "H2", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 111, + "end_line": 111, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 111, + "end_line": 111, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn6" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 111, + "end_line": 111, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 111, + "end_line": 111, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 112, + "end_line": 112, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 112, + "end_line": 112, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 112, + "end_line": 112, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn6" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 112, + "end_line": 112, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 112, + "end_line": 112, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "HU", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 113, + "end_line": 113, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 113, + "end_line": 113, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn7" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 113, + "end_line": 113, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 113, + "end_line": 113, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 114, + "end_line": 114, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 114, + "end_line": 114, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 114, + "end_line": 114, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn7" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 114, + "end_line": 114, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 114, + "end_line": 114, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "Hv", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 115, + "end_line": 115, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 115, + "end_line": 115, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn8" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 115, + "end_line": 115, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 115, + "end_line": 115, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 116, + "end_line": 116, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 116, + "end_line": 116, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 116, + "end_line": 116, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn8" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 116, + "end_line": 116, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 116, + "end_line": 116, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "H~", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 117, + "end_line": 117, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 117, + "end_line": 117, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn9" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 117, + "end_line": 117, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 117, + "end_line": 117, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 118, + "end_line": 118, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 118, + "end_line": 118, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 118, + "end_line": 118, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn9" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 118, + "end_line": 118, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 118, + "end_line": 118, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "IR", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 119, + "end_line": 119, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 119, + "end_line": 119, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn10" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 119, + "end_line": 119, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 119, + "end_line": 119, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 120, + "end_line": 120, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 120, + "end_line": 120, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 120, + "end_line": 120, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn10" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 120, + "end_line": 120, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 120, + "end_line": 120, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F)#", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 121, + "end_line": 121, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 121, + "end_line": 121, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn11" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 121, + "end_line": 121, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 121, + "end_line": 121, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 122, + "end_line": 122, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 122, + "end_line": 122, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 122, + "end_line": 122, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn11" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 122, + "end_line": 122, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 122, + "end_line": 122, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F);", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 123, + "end_line": 123, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 123, + "end_line": 123, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn12" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 123, + "end_line": 123, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 123, + "end_line": 123, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 124, + "end_line": 124, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 124, + "end_line": 124, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 124, + "end_line": 124, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn12" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 124, + "end_line": 124, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 124, + "end_line": 124, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F){", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 125, + "end_line": 125, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 125, + "end_line": 125, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn13" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 125, + "end_line": 125, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 125, + "end_line": 125, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 126, + "end_line": 126, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 126, + "end_line": 126, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 126, + "end_line": 126, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn13" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 126, + "end_line": 126, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 126, + "end_line": 126, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*5", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 127, + "end_line": 127, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 127, + "end_line": 127, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn14" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 127, + "end_line": 127, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 127, + "end_line": 127, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 128, + "end_line": 128, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 128, + "end_line": 128, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 128, + "end_line": 128, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn14" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 128, + "end_line": 128, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 128, + "end_line": 128, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*E", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 129, + "end_line": 129, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 129, + "end_line": 129, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn15" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 129, + "end_line": 129, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 129, + "end_line": 129, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 130, + "end_line": 130, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 130, + "end_line": 130, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 130, + "end_line": 130, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn15" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 130, + "end_line": 130, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 130, + "end_line": 130, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*N", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 131, + "end_line": 131, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 131, + "end_line": 131, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn16" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 131, + "end_line": 131, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 131, + "end_line": 131, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 132, + "end_line": 132, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 132, + "end_line": 132, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 132, + "end_line": 132, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn16" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 132, + "end_line": 132, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 132, + "end_line": 132, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*X", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 151, + "column": 10, + "end_column": 5 + }, + "target": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 151, + "column": 10, + "end_column": 5 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + } + ] + }, + "items": [ + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 17, + "end_column": 21 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app2" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 23, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app3" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 29, + "end_column": 33 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app4" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app5" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 41, + "end_column": 45 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app6" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 47, + "end_column": 51 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app7" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 53, + "end_column": 57 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app8" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 59, + "end_column": 63 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app9" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 65, + "end_column": 70 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app10" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 72, + "end_column": 77 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app11" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 79, + "end_column": 84 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app12" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 86, + "end_column": 91 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app13" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 93, + "end_column": 98 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app14" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 100, + "end_column": 105 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app15" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 107, + "end_column": 112 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app16" + } + ] + }, + "value": { + "_type": "SubmitInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 151, + "column": 116, + "end_column": 5 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + } + ] + }, + "itxns": [ + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 135, + "end_line": 135, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 136, + "end_line": 136, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn2" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 137, + "end_line": 137, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn3" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 138, + "end_line": 138, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn4" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 139, + "end_line": 139, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn5" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 140, + "end_line": 140, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn6" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 141, + "end_line": 141, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn7" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 142, + "end_line": 142, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn8" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 143, + "end_line": 143, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn9" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 144, + "end_line": 144, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn10" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 145, + "end_line": 145, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn11" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 146, + "end_line": 146, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn12" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 147, + "end_line": 147, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn13" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 148, + "end_line": 148, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn14" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 149, + "end_line": 149, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn15" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 150, + "end_line": 150, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn16" + } + ] + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F#", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app2" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "G5", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app3" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "GX", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app4" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "Gy", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app5" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "H2", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app6" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "HU", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app7" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "Hv", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app8" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "H~", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app9" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "IR", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app10" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F)#", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app11" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F);", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app12" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F){", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app13" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*5", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app14" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*E", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app15" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*N", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app16" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*X", + "encoding": "utf8" + } + }, + "error_message": null + } + } + ], + "label": null, + "comment": null + }, + "documentation": { + "_type": "MethodDocumentation", + "description": null, + "args": {}, + "returns": null + }, + "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", + "member_name": "test3", + "arc4_method_config": { + "_type": "ARC4ABIMethodConfig", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 95, + "end_line": 95, + "column": 2, + "end_column": 16 + }, + "name": "test3", + "is_bare": false, + "create": 3, + "readonly": false, + "allowed_completion_types": [ + 0 + ], + "default_args": {}, + "structs": {} + } + }, + { + "_type": "ContractMethod", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 171, + "end_line": 171, + "column": 2, + "end_column": 16 + }, + "args": [], + "return_type": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "body": { + "_type": "Block", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 171, + "end_line": 192, + "column": 17, + "end_column": 3 + }, + "body": [ + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 172, + "end_line": 172, + "column": 10, + "end_column": 38 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 172, + "end_line": 172, + "column": 10, + "end_column": 21 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "lotsOfBytes" + }, + "value": { + "_type": "IntrinsicCall", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 172, + "end_line": 172, + "column": 24, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "op_code": "bzero", + "immediates": [], + "stack_args": [ + { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 172, + "end_line": 172, + "column": 33, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "2044", + "teal_alias": null + } + ] + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 173, + "end_line": 173, + "column": 10, + "end_column": 29 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 173, + "end_line": 173, + "column": 10, + "end_column": 19 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval1" + }, + "value": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "34s9", + "encoding": "base16" + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 174, + "end_line": 176, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 174, + "end_line": 174, + "column": 10, + "end_column": 19 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + }, + "value": { + "_type": "IntrinsicCall", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 174, + "end_line": 176, + "column": 22, + "end_column": 34 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "op_code": "concat", + "immediates": [], + "stack_args": [ + { + "_type": "IntrinsicCall", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 174, + "end_line": 175, + "column": 22, + "end_column": 26 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "op_code": "concat", + "immediates": [], + "stack_args": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 174, + "end_line": 174, + "column": 22, + "end_column": 50 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "fcy^", + "encoding": "base16" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 175, + "end_line": 175, + "column": 14, + "end_column": 25 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "lotsOfBytes" + } + ] + }, + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 176, + "end_line": 176, + "column": 14, + "end_column": 33 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "NB", + "encoding": "base16" + } + ] + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 178, + "end_line": 184, + "column": 10, + "end_column": 6 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 178, + "end_line": 178, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + }, + "value": { + "_type": "CreateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 178, + "end_line": 184, + "column": 20, + "end_column": 6 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "fields": { + "Fee": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 178, + "end_line": 184, + "column": 20, + "end_column": 6 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + }, + "TypeEnum": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 178, + "end_line": 184, + "column": 20, + "end_column": 6 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "6", + "teal_alias": null + }, + "ApprovalProgramPages": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 179, + "end_line": 179, + "column": 23, + "end_column": 67 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 179, + "end_line": 179, + "column": 24, + "end_column": 33 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval1" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 179, + "end_line": 179, + "column": 35, + "end_column": 44 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 179, + "end_line": 179, + "column": 46, + "end_column": 55 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 179, + "end_line": 179, + "column": 57, + "end_column": 66 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + } + ] + }, + "ClearStateProgramPages": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "34s9", + "encoding": "base16" + } + ] + }, + "OnCompletion": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 181, + "end_line": 181, + "column": 37, + "end_column": 54 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "5", + "teal_alias": null + }, + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 182, + "end_line": 182, + "column": 15, + "end_column": 27 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 182, + "end_line": 182, + "column": 22, + "end_column": 25 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F#", + "encoding": "utf8" + } + ] + }, + "ExtraProgramPages": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 183, + "end_line": 183, + "column": 25, + "end_column": 26 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "3", + "teal_alias": null + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 185, + "end_line": 185, + "column": 10, + "end_column": 33 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 185, + "end_line": 185, + "column": 10, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "value": { + "_type": "SubmitInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 185, + "end_line": 185, + "column": 17, + "end_column": 33 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxns": [ + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 185, + "end_line": 185, + "column": 17, + "end_column": 24 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + ] + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 186, + "end_line": 186, + "column": 4, + "end_column": 59 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 186, + "end_line": 186, + "column": 4, + "end_column": 59 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "NumericComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 186, + "end_line": 186, + "column": 11, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 186, + "end_line": 186, + "column": 16, + "end_column": 33 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 186, + "end_line": 186, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "ExtraProgramPages", + "array_index": null + }, + "operator": "==", + "rhs": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 186, + "end_line": 186, + "column": 38, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "3", + "teal_alias": null + } + }, + "error_message": "extra pages = 3" + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 187, + "end_line": 187, + "column": 4, + "end_column": 68 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 187, + "end_line": 187, + "column": 4, + "end_column": 68 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "NumericComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 187, + "end_line": 187, + "column": 11, + "end_column": 45 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 187, + "end_line": 187, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 187, + "end_line": 187, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "NumApprovalProgramPages", + "array_index": null + }, + "operator": "==", + "rhs": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 187, + "end_line": 187, + "column": 44, + "end_column": 45 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "2", + "teal_alias": null + } + }, + "error_message": "approval pages = 2" + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 4, + "end_column": 131 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 4, + "end_column": 131 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 11, + "end_column": 102 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 11, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "ApprovalProgramPages", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 37, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "IntrinsicCall", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 44, + "end_column": 102 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "op_code": "concat", + "immediates": [], + "stack_args": [ + { + "_type": "IntrinsicCall", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 44, + "end_column": 71 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "op_code": "concat", + "immediates": [], + "stack_args": [ + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 44, + "end_column": 53 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval1" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 61, + "end_column": 70 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + } + ] + }, + { + "_type": "IntersectionSliceExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 79, + "end_column": 101 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "base": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 79, + "end_column": 88 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + }, + "begin_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 95, + "end_column": 96 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + }, + "end_index": -3 + } + ] + } + }, + "error_message": "expected approval page 0" + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 4, + "end_column": 110 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 4, + "end_column": 110 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 11, + "end_column": 81 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 11, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "ApprovalProgramPages", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 37, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "1", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "IntrinsicCall", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 44, + "end_column": 81 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "op_code": "concat", + "immediates": [], + "stack_args": [ + { + "_type": "IntersectionSliceExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 44, + "end_column": 63 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "base": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 44, + "end_column": 53 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + }, + "begin_index": -3, + "end_index": null + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 71, + "end_column": 80 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + } + ] + } + }, + "error_message": "expected approval page 1" + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 190, + "end_line": 190, + "column": 4, + "end_column": 73 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 190, + "end_line": 190, + "column": 4, + "end_column": 73 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "NumericComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 190, + "end_line": 190, + "column": 11, + "end_column": 47 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 190, + "end_line": 190, + "column": 16, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 190, + "end_line": 190, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "NumClearStateProgramPages", + "array_index": null + }, + "operator": "==", + "rhs": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 190, + "end_line": 190, + "column": 46, + "end_column": 47 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "1", + "teal_alias": null + } + }, + "error_message": "clear state pages = 1" + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 191, + "end_line": 191, + "column": 4, + "end_column": 83 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 191, + "end_line": 191, + "column": 4, + "end_column": 83 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 191, + "end_line": 191, + "column": 11, + "end_column": 53 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 191, + "end_line": 191, + "column": 11, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 191, + "end_line": 191, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "ClearStateProgramPages", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 191, + "end_line": 191, + "column": 39, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "34s9", + "encoding": "base16" + } + }, + "error_message": "expected clear state page" + } + } + ], + "label": null, + "comment": null + }, + "documentation": { + "_type": "MethodDocumentation", + "description": null, + "args": {}, + "returns": null + }, + "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", + "member_name": "test4", + "arc4_method_config": { + "_type": "ARC4ABIMethodConfig", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 171, + "end_line": 171, + "column": 2, + "end_column": 16 + }, + "name": "test4", + "is_bare": false, + "create": 3, + "readonly": false, + "allowed_completion_types": [ + 0 + ], + "default_args": {}, + "structs": {} + } + }, + { + "_type": "ContractMethod", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 7, + "end_line": 7, + "column": 0, + "end_column": 48 + }, + "args": [], + "return_type": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "body": { "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", "line": 7, "end_line": 7, "column": 0, - "end_column": 52 + "end_column": 48 }, "body": [ { @@ -4081,7 +11286,7 @@ "line": 7, "end_line": 7, "column": 0, - "end_column": 52 + "end_column": 48 }, "expr": { "_type": "VoidConstant", @@ -4090,7 +11295,7 @@ "line": 7, "end_line": 7, "column": 0, - "end_column": 52 + "end_column": 48 }, "wtype": { "_type": "WType", @@ -4180,6 +11385,60 @@ "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", "member_name": "constructor", "arc4_method_config": null + }, + { + "_type": "ContractMethod", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 7, + "end_line": 7, + "column": 0, + "end_column": 48 + }, + "args": [], + "return_type": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "body": { + "_type": "Block", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 7, + "end_line": 7, + "column": 0, + "end_column": 48 + }, + "body": [], + "label": null, + "comment": null + }, + "documentation": { + "_type": "MethodDocumentation", + "description": "Implicitly generated create method", + "args": {}, + "returns": null + }, + "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", + "member_name": "__algots__.defaultCreate", + "arc4_method_config": { + "_type": "ARC4BareMethodConfig", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 7, + "end_line": 7, + "column": 0, + "end_column": 48 + }, + "allowed_completion_types": [ + 0 + ], + "create": 2, + "is_bare": true + } } ], "app_state": [ diff --git a/tests/approvals/out/o2/itxn/ItxnDemoContract.approval.teal b/tests/approvals/out/o2/itxn/ItxnDemoContract.approval.teal index 62fc1bbf8..92af72102 100644 --- a/tests/approvals/out/o2/itxn/ItxnDemoContract.approval.teal +++ b/tests/approvals/out/o2/itxn/ItxnDemoContract.approval.teal @@ -1,116 +1,892 @@ #pragma version 10 #pragma typetrack false -// tests/approvals/itxn.algo.ts::ItxnDemoContract.approvalProgram() -> uint64: +// @algorandfoundation/algorand-typescript/arc4/index.d.ts::Contract.approvalProgram() -> uint64: main: - intcblock 0 3 1000 6 - bytecblock "name" "unit" 0x098101 0x "AST1" "AST2" "AST3" "with args param set" "\t\xc2\x81\x01" "3rd" + intcblock 0 6 5 3 1000 + bytecblock 0x098101 0x09361a00b08101 "name" "1" "2" "unit" "3" "4" "5" "AST1" "AST2" "AST3" "10" "11" "12" "13" "14" "15" "16" "with args param set" "42" "3rd" intc_0 // 0 - dupn 2 - bytec_3 // "" + dupn 3 + pushbytes "" dupn 2 txn ApplicationID bnz main_after_if_else@2 // tests/approvals/itxn.algo.ts:8 // name = GlobalState({ initialValue: Bytes() }) - bytec_0 // "name" - bytec_3 // 0x + bytec_2 // "name" + pushbytes 0x app_global_put main_after_if_else@2: - // tests/approvals/itxn.algo.ts:11 - // if (Txn.numAppArgs) { + // tests/approvals/itxn.algo.ts:7 + // export class ItxnDemoContract extends Contract { txn NumAppArgs - bz main_after_if_else@15 - // tests/approvals/itxn.algo.ts:12 - // switch (Txn.applicationArgs(0)) { - intc_0 // 0 - txnas ApplicationArgs - // tests/approvals/itxn.algo.ts:13 - // case Bytes('test1'): - pushbytess "test1" "test2" "test3" "test4" // "test1", "test2", "test3", "test4" - // tests/approvals/itxn.algo.ts:12-22 - // switch (Txn.applicationArgs(0)) { - // case Bytes('test1'): - // this.test1() - // break - // case Bytes('test2'): - // this.test2() - // break - // case Bytes('test3'): - // case Bytes('test4'): - // break - // } - uncover 4 - match main_switch_case_0@4 main_switch_case_1@6 main_after_if_else@15 main_after_if_else@15 + bz main_bare_routing@11 + pushbytess 0x20254f91 0xf1908524 0xdf920f37 0x3d46345c // method "test1()void", method "test2()void", method "test3()void", method "test4()void" + txna ApplicationArgs 0 + match main_test1_route@5 main_test2_route@6 main_test3_route@7 main_test4_route@8 main_after_if_else@15: - // tests/approvals/itxn.algo.ts:24 - // return true + // tests/approvals/itxn.algo.ts:7 + // export class ItxnDemoContract extends Contract { + intc_0 // 0 + return + +main_test4_route@8: + // tests/approvals/itxn.algo.ts:171 + // public test4() { + txn OnCompletion + ! + assert // OnCompletion is not NoOp + txn ApplicationID + assert // can only call when not creating + // tests/approvals/itxn.algo.ts:172 + // const lotsOfBytes = op.bzero(2044) + pushint 2044 // 2044 + bzero + // tests/approvals/itxn.algo.ts:174 + // const approval2 = Bytes.fromHex('80' + 'FC0f') + pushbytes 0x80fc0f + // tests/approvals/itxn.algo.ts:174-175 + // const approval2 = Bytes.fromHex('80' + 'FC0f') + // .concat(lotsOfBytes) + swap + concat + // tests/approvals/itxn.algo.ts:176 + // .concat(Bytes.fromHex('48')) + pushbytes 0x48 + // tests/approvals/itxn.algo.ts:174-176 + // const approval2 = Bytes.fromHex('80' + 'FC0f') + // .concat(lotsOfBytes) + // .concat(Bytes.fromHex('48')) + concat + // tests/approvals/itxn.algo.ts:185 + // const app1 = appTxn1.submit() + itxn_begin + // tests/approvals/itxn.algo.ts:183 + // extraProgramPages: 3, + intc_3 // 3 + itxn_field ExtraProgramPages + // tests/approvals/itxn.algo.ts:182 + // appArgs: [Bytes('1')], + bytec_3 // "1" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:181 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + bytec_0 // 0x098101 + itxn_field ApprovalProgramPages + dup + itxn_field ApprovalProgramPages + dup + itxn_field ApprovalProgramPages + dup + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:178-184 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: [approval1, approval2, approval2, approval2], + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // extraProgramPages: 3, + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:185 + // const app1 = appTxn1.submit() + itxn_submit + itxn NumApprovalProgramPages + itxn NumClearStateProgramPages + itxn ExtraProgramPages + // tests/approvals/itxn.algo.ts:186 + // assert(app1.extraProgramPages === 3, 'extra pages = 3') + intc_3 // 3 + == + assert // extra pages = 3 + // tests/approvals/itxn.algo.ts:187 + // assert(app1.numApprovalProgramPages === 2, 'approval pages = 2') + swap + pushint 2 // 2 + == + assert // approval pages = 2 + // tests/approvals/itxn.algo.ts:188 + // assert(app1.approvalProgramPages(0) === approval1.concat(approval2).concat(approval2.slice(0, -3)), 'expected approval page 0') + itxna ApprovalProgramPages 0 + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + // tests/approvals/itxn.algo.ts:188 + // assert(app1.approvalProgramPages(0) === approval1.concat(approval2).concat(approval2.slice(0, -3)), 'expected approval page 0') + dig 3 + concat + dig 3 + len + intc_0 // 0 + dig 1 + >= + intc_0 // 0 + dig 2 + uncover 2 + select + intc_3 // 3 + dig 2 + >= + intc_3 // 3 + dig 3 + uncover 2 + select + dig 2 + swap + - + dup + dig 2 + < + dig 1 + dig 3 + uncover 2 + select + dig 7 + uncover 3 + uncover 2 + substring3 + uncover 3 + swap + concat + uncover 3 + == + assert // expected approval page 0 + // tests/approvals/itxn.algo.ts:189 + // assert(app1.approvalProgramPages(1) === approval2.slice(-3).concat(approval2), 'expected approval page 1') + itxna ApprovalProgramPages 1 + dig 4 + uncover 2 + uncover 3 + substring3 + uncover 3 + concat + == + assert // expected approval page 1 + // tests/approvals/itxn.algo.ts:190 + // assert(app1.numClearStateProgramPages === 1, 'clear state pages = 1') + pushint 1 // 1 + == + assert // clear state pages = 1 + // tests/approvals/itxn.algo.ts:191 + // assert(app1.clearStateProgramPages(0) === APPROVE, 'expected clear state page') + itxna ClearStateProgramPages 0 + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + // tests/approvals/itxn.algo.ts:191 + // assert(app1.clearStateProgramPages(0) === APPROVE, 'expected clear state page') + == + assert // expected clear state page + // tests/approvals/itxn.algo.ts:171 + // public test4() { pushint 1 // 1 return -main_switch_case_1@6: +main_test3_route@7: + // tests/approvals/itxn.algo.ts:95 + // public test3() { + txn OnCompletion + ! + assert // OnCompletion is not NoOp + txn ApplicationID + assert // can only call when not creating + // tests/approvals/itxn.algo.ts:134-151 + // const [app1, app2, app3, app4, app5, app6, app7, app8, app9, app10, app11, app12, app13, app14, app15, app16] = itxn.submitGroup( + // appTxn1, + // appTxn2, + // appTxn3, + // appTxn4, + // appTxn5, + // appTxn6, + // appTxn7, + // appTxn8, + // appTxn9, + // appTxn10, + // appTxn11, + // appTxn12, + // appTxn13, + // appTxn14, + // appTxn15, + // appTxn16, + // ) + itxn_begin + // tests/approvals/itxn.algo.ts:100 + // appArgs: [Bytes('1')], + bytec_3 // "1" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum intc_0 // 0 - bury 4 - bytec_3 // "" + itxn_field Fee + // tests/approvals/itxn.algo.ts:136 + // appTxn2, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:104 + // appTxn2.set({ appArgs: [Bytes('2')] }) + bytec 4 // "2" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:137 + // appTxn3, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:106 + // appTxn3.set({ appArgs: [Bytes('3')] }) + bytec 6 // "3" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:138 + // appTxn4, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:108 + // appTxn4.set({ appArgs: [Bytes('4')] }) + bytec 7 // "4" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:139 + // appTxn5, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:110 + // appTxn5.set({ appArgs: [Bytes('5')] }) + bytec 8 // "5" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:140 + // appTxn6, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:112 + // appTxn6.set({ appArgs: [Bytes('6')] }) + pushbytes "6" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:141 + // appTxn7, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:114 + // appTxn7.set({ appArgs: [Bytes('7')] }) + pushbytes "7" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:142 + // appTxn8, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:116 + // appTxn8.set({ appArgs: [Bytes('8')] }) + pushbytes "8" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:143 + // appTxn9, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:118 + // appTxn9.set({ appArgs: [Bytes('9')] }) + pushbytes "9" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:144 + // appTxn10, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:120 + // appTxn10.set({ appArgs: [Bytes('10')] }) + bytec 12 // "10" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:145 + // appTxn11, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:122 + // appTxn11.set({ appArgs: [Bytes('11')] }) + bytec 13 // "11" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:146 + // appTxn12, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:124 + // appTxn12.set({ appArgs: [Bytes('12')] }) + bytec 14 // "12" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:147 + // appTxn13, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:126 + // appTxn13.set({ appArgs: [Bytes('13')] }) + bytec 15 // "13" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:148 + // appTxn14, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:128 + // appTxn14.set({ appArgs: [Bytes('14')] }) + bytec 16 // "14" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:149 + // appTxn15, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:130 + // appTxn15.set({ appArgs: [Bytes('15')] }) + bytec 17 // "15" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:150 + // appTxn16, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:132 + // appTxn16.set({ appArgs: [Bytes('16')] }) + bytec 18 // "16" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:134-151 + // const [app1, app2, app3, app4, app5, app6, app7, app8, app9, app10, app11, app12, app13, app14, app15, app16] = itxn.submitGroup( + // appTxn1, + // appTxn2, + // appTxn3, + // appTxn4, + // appTxn5, + // appTxn6, + // appTxn7, + // appTxn8, + // appTxn9, + // appTxn10, + // appTxn11, + // appTxn12, + // appTxn13, + // appTxn14, + // appTxn15, + // appTxn16, + // ) + itxn_submit + // tests/approvals/itxn.algo.ts:153 + // assert(app1.logs(0) === Bytes('1')) + gitxna 0 Logs 0 + bytec_3 // "1" + == + assert + // tests/approvals/itxn.algo.ts:154 + // assert(app2.logs(0) === Bytes('2')) + gitxna 1 Logs 0 + bytec 4 // "2" + == + assert + // tests/approvals/itxn.algo.ts:155 + // assert(app3.logs(0) === Bytes('3')) + gitxna 2 Logs 0 + bytec 6 // "3" + == + assert + // tests/approvals/itxn.algo.ts:156 + // assert(app4.logs(0) === Bytes('4')) + gitxna 3 Logs 0 + bytec 7 // "4" + == + assert + // tests/approvals/itxn.algo.ts:157 + // assert(app5.logs(0) === Bytes('5')) + gitxna 4 Logs 0 + bytec 8 // "5" + == + assert + // tests/approvals/itxn.algo.ts:158 + // assert(app6.logs(0) === Bytes('6')) + gitxna 5 Logs 0 + pushbytes "6" + == + assert + // tests/approvals/itxn.algo.ts:159 + // assert(app7.logs(0) === Bytes('7')) + gitxna 6 Logs 0 + pushbytes "7" + == + assert + // tests/approvals/itxn.algo.ts:160 + // assert(app8.logs(0) === Bytes('8')) + gitxna 7 Logs 0 + pushbytes "8" + == + assert + // tests/approvals/itxn.algo.ts:161 + // assert(app9.logs(0) === Bytes('9')) + gitxna 8 Logs 0 + pushbytes "9" + == + assert + // tests/approvals/itxn.algo.ts:162 + // assert(app10.logs(0) === Bytes('10')) + gitxna 9 Logs 0 + bytec 12 // "10" + == + assert + // tests/approvals/itxn.algo.ts:163 + // assert(app11.logs(0) === Bytes('11')) + gitxna 10 Logs 0 + bytec 13 // "11" + == + assert + // tests/approvals/itxn.algo.ts:164 + // assert(app12.logs(0) === Bytes('12')) + gitxna 11 Logs 0 + bytec 14 // "12" + == + assert + // tests/approvals/itxn.algo.ts:165 + // assert(app13.logs(0) === Bytes('13')) + gitxna 12 Logs 0 + bytec 15 // "13" + == + assert + // tests/approvals/itxn.algo.ts:166 + // assert(app14.logs(0) === Bytes('14')) + gitxna 13 Logs 0 + bytec 16 // "14" + == + assert + // tests/approvals/itxn.algo.ts:167 + // assert(app15.logs(0) === Bytes('15')) + gitxna 14 Logs 0 + bytec 17 // "15" + == + assert + // tests/approvals/itxn.algo.ts:168 + // assert(app16.logs(0) === Bytes('16')) + itxna Logs 0 + bytec 18 // "16" + == + assert + // tests/approvals/itxn.algo.ts:95 + // public test3() { + pushint 1 // 1 + return + +main_test2_route@6: + // tests/approvals/itxn.algo.ts:58 + // public test2() { + txn OnCompletion + ! + assert // OnCompletion is not NoOp + txn ApplicationID + assert // can only call when not creating + intc_0 // 0 + bury 5 + pushbytes "" bury 1 - // tests/approvals/itxn.algo.ts:77 + // tests/approvals/itxn.algo.ts:60 // if (Txn.numAppArgs) { txn NumAppArgs - bz main_else_body@18 - // tests/approvals/itxn.algo.ts:78 + bz main_else_body@25 + // tests/approvals/itxn.algo.ts:61 // const args = [Bytes('1'), Bytes('2')] as const - pushbytes "1" + bytec_3 // "1" + bury 7 + bytec 4 // "2" bury 6 - pushbytes "2" - bury 5 - // tests/approvals/itxn.algo.ts:82 + // tests/approvals/itxn.algo.ts:65 // appArgs: args, pushint 2 // 2 bury 3 - // tests/approvals/itxn.algo.ts:83 + // tests/approvals/itxn.algo.ts:66 // onCompletion: OnCompleteAction.NoOp, intc_0 // 0 bury 1 pushint 1 // 1 bury 2 - // tests/approvals/itxn.algo.ts:84 + // tests/approvals/itxn.algo.ts:67 // note: 'with args param set', - bytec 7 // "with args param set" + bytec 19 // "with args param set" -main_after_if_else@19: - // tests/approvals/itxn.algo.ts:94 +main_after_if_else@26: + // tests/approvals/itxn.algo.ts:77 // const createAppTxn = createAppParams.submit() itxn_begin itxn_field Note dig 1 - bz main_next_field@21 + bz main_next_field@28 dup itxn_field OnCompletion -main_next_field@21: - dig 5 +main_next_field@28: + dig 6 itxn_field ApplicationArgs - dig 4 + dig 5 itxn_field ApplicationArgs dig 2 - intc_1 // 3 + intc_3 // 3 >= - // tests/approvals/itxn.algo.ts:94 + // tests/approvals/itxn.algo.ts:77 // const createAppTxn = createAppParams.submit() - bz main_next_field@23 - dig 3 + bz main_next_field@30 + dig 4 itxn_field ApplicationArgs -main_next_field@23: +main_next_field@30: // tests/approvals/itxn.algo.ts:5 - // const APPROVE = Bytes('\x09\x81\x01') - bytec 8 // "\t\xc2\x81\x01" + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 itxn_field ClearStateProgramPages - bytec 8 // "\t\xc2\x81\x01" + bytec_0 // 0x098101 itxn_field ApprovalProgramPages - // tests/approvals/itxn.algo.ts:79-85 + // tests/approvals/itxn.algo.ts:62-68 // createAppParams = itxn.applicationCall({ // approvalProgram: APPROVE, // clearStateProgram: APPROVE, @@ -118,108 +894,178 @@ main_next_field@23: // onCompletion: OnCompleteAction.NoOp, // note: 'with args param set', // }) - intc_3 // 6 + intc_1 // 6 itxn_field TypeEnum intc_0 // 0 itxn_field Fee - // tests/approvals/itxn.algo.ts:94 + // tests/approvals/itxn.algo.ts:77 // const createAppTxn = createAppParams.submit() itxn_submit itxn Note - // tests/approvals/itxn.algo.ts:95 + bury 4 + // tests/approvals/itxn.algo.ts:78 // assert(createAppTxn.appArgs(0) === Bytes('1'), 'correct args used 1') itxna ApplicationArgs 0 - pushbytes "1" + bytec_3 // "1" == assert // correct args used 1 - // tests/approvals/itxn.algo.ts:96 + // tests/approvals/itxn.algo.ts:79 // assert(createAppTxn.appArgs(1) === Bytes('2'), 'correct args used 2') itxna ApplicationArgs 1 - pushbytes "2" + bytec 4 // "2" == assert // correct args used 2 - // tests/approvals/itxn.algo.ts:97 + // tests/approvals/itxn.algo.ts:81 + // if (Txn.numAppArgs > 1) { + txn NumAppArgs + pushint 1 // 1 + > + bz main_after_if_else@32 + // tests/approvals/itxn.algo.ts:82-89 + // const createAppTxn2 = itxn + // .applicationCall({ + // approvalProgram: APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('42')], + // }) + // .submit() + itxn_begin + // tests/approvals/itxn.algo.ts:87 + // appArgs: [Bytes('42')], + bytec 20 // "42" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:86 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + bytec_0 // 0x098101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:82-88 + // const createAppTxn2 = itxn + // .applicationCall({ + // approvalProgram: APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('42')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + // tests/approvals/itxn.algo.ts:82-89 + // const createAppTxn2 = itxn + // .applicationCall({ + // approvalProgram: APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('42')], + // }) + // .submit() + itxn_submit + // tests/approvals/itxn.algo.ts:90 + // assert(createAppTxn2.appArgs(0) === Bytes('42'), 'correct args used 2') + itxna ApplicationArgs 0 + bytec 20 // "42" + == + assert // correct args used 2 + // tests/approvals/itxn.algo.ts:91 // assert(createAppTxn.note === Bytes('with args param set')) - bytec 7 // "with args param set" + dig 3 + bytec 19 // "with args param set" == assert - // tests/approvals/itxn.algo.ts:18 - // break - b main_after_if_else@15 -main_else_body@18: - // tests/approvals/itxn.algo.ts:90 +main_after_if_else@32: + // tests/approvals/itxn.algo.ts:58 + // public test2() { + pushint 1 // 1 + return + +main_else_body@25: + // tests/approvals/itxn.algo.ts:73 // appArgs: [Bytes('3'), '4', Bytes('5')], - pushbytes "3" + bytec 6 // "3" + bury 7 + bytec 7 // "4" bury 6 - pushbytes "4" + bytec 8 // "5" bury 5 - pushbytes "5" - bury 4 - intc_1 // 3 + intc_3 // 3 bury 3 - // tests/approvals/itxn.algo.ts:91 + // tests/approvals/itxn.algo.ts:74 // note: 'no args param set', pushbytes "no args param set" - // tests/approvals/itxn.algo.ts:87 + // tests/approvals/itxn.algo.ts:70 // createAppParams = itxn.applicationCall({ intc_0 // 0 bury 3 - b main_after_if_else@19 + b main_after_if_else@26 -main_switch_case_0@4: +main_test1_route@5: + // tests/approvals/itxn.algo.ts:10 + // public test1() { + txn OnCompletion + ! + assert // OnCompletion is not NoOp + txn ApplicationID + assert // can only call when not creating // tests/approvals/itxn.algo.ts:8 // name = GlobalState({ initialValue: Bytes() }) - bytec_0 // "name" - // tests/approvals/itxn.algo.ts:28 + bytec_2 // "name" + // tests/approvals/itxn.algo.ts:11 // this.name.value = Bytes('AST1') - bytec 4 // "AST1" + bytec 9 // "AST1" app_global_put - // tests/approvals/itxn.algo.ts:32 + // tests/approvals/itxn.algo.ts:15 // assetName: this.name.value, intc_0 // 0 // tests/approvals/itxn.algo.ts:8 // name = GlobalState({ initialValue: Bytes() }) - bytec_0 // "name" - // tests/approvals/itxn.algo.ts:32 + bytec_2 // "name" + // tests/approvals/itxn.algo.ts:15 // assetName: this.name.value, app_global_get_ex assert // check GlobalState exists - // tests/approvals/itxn.algo.ts:35 + // tests/approvals/itxn.algo.ts:18 // manager: Global.currentApplicationAddress, global CurrentApplicationAddress - // tests/approvals/itxn.algo.ts:36 + // tests/approvals/itxn.algo.ts:19 // reserve: Global.currentApplicationAddress, dup // tests/approvals/itxn.algo.ts:8 // name = GlobalState({ initialValue: Bytes() }) - bytec_0 // "name" - // tests/approvals/itxn.algo.ts:39 + bytec_2 // "name" + // tests/approvals/itxn.algo.ts:22 // this.name.value = Bytes('AST2') - bytec 5 // "AST2" + bytec 10 // "AST2" app_global_put - // tests/approvals/itxn.algo.ts:40 + // tests/approvals/itxn.algo.ts:23 // const asset1_txn = assetParams.submit() itxn_begin dup itxn_field ConfigAssetReserve dig 1 itxn_field ConfigAssetManager - // tests/approvals/itxn.algo.ts:34 + // tests/approvals/itxn.algo.ts:17 // decimals: 3, - intc_1 // 3 + intc_3 // 3 itxn_field ConfigAssetDecimals - // tests/approvals/itxn.algo.ts:33 + // tests/approvals/itxn.algo.ts:16 // unitName: 'unit', - bytec_1 // "unit" + bytec 5 // "unit" itxn_field ConfigAssetUnitName uncover 2 itxn_field ConfigAssetName - // tests/approvals/itxn.algo.ts:31 + // tests/approvals/itxn.algo.ts:14 // total: 1000, - intc_2 // 1000 + intc 4 // 1000 itxn_field ConfigAssetTotal - // tests/approvals/itxn.algo.ts:30-37 + // tests/approvals/itxn.algo.ts:13-20 // const assetParams = itxn.assetConfig({ // total: 1000, // assetName: this.name.value, @@ -228,46 +1074,46 @@ main_switch_case_0@4: // manager: Global.currentApplicationAddress, // reserve: Global.currentApplicationAddress, // }) - intc_1 // 3 + intc_3 // 3 itxn_field TypeEnum intc_0 // 0 itxn_field Fee - // tests/approvals/itxn.algo.ts:40 + // tests/approvals/itxn.algo.ts:23 // const asset1_txn = assetParams.submit() itxn_submit itxn ConfigAssetName itxn CreatedAssetID - // tests/approvals/itxn.algo.ts:42 + // tests/approvals/itxn.algo.ts:25 // assetName: this.name.value, intc_0 // 0 // tests/approvals/itxn.algo.ts:8 // name = GlobalState({ initialValue: Bytes() }) - bytec_0 // "name" - // tests/approvals/itxn.algo.ts:42 + bytec_2 // "name" + // tests/approvals/itxn.algo.ts:25 // assetName: this.name.value, app_global_get_ex assert // check GlobalState exists - // tests/approvals/itxn.algo.ts:44 + // tests/approvals/itxn.algo.ts:27 // const asset2_txn = assetParams.submit() itxn_begin dig 3 itxn_field ConfigAssetReserve dig 4 itxn_field ConfigAssetManager - // tests/approvals/itxn.algo.ts:34 + // tests/approvals/itxn.algo.ts:17 // decimals: 3, - intc_1 // 3 + intc_3 // 3 itxn_field ConfigAssetDecimals - // tests/approvals/itxn.algo.ts:33 + // tests/approvals/itxn.algo.ts:16 // unitName: 'unit', - bytec_1 // "unit" + bytec 5 // "unit" itxn_field ConfigAssetUnitName itxn_field ConfigAssetName - // tests/approvals/itxn.algo.ts:31 + // tests/approvals/itxn.algo.ts:14 // total: 1000, - intc_2 // 1000 + intc 4 // 1000 itxn_field ConfigAssetTotal - // tests/approvals/itxn.algo.ts:30-37 + // tests/approvals/itxn.algo.ts:13-20 // const assetParams = itxn.assetConfig({ // total: 1000, // assetName: this.name.value, @@ -276,89 +1122,87 @@ main_switch_case_0@4: // manager: Global.currentApplicationAddress, // reserve: Global.currentApplicationAddress, // }) - intc_1 // 3 + intc_3 // 3 itxn_field TypeEnum intc_0 // 0 itxn_field Fee - // tests/approvals/itxn.algo.ts:44 + // tests/approvals/itxn.algo.ts:27 // const asset2_txn = assetParams.submit() itxn_submit itxn ConfigAssetName itxn CreatedAssetID - // tests/approvals/itxn.algo.ts:46 + // tests/approvals/itxn.algo.ts:29 // assert(asset1_txn.assetName === Bytes('AST1'), 'asset1_txn is correct') uncover 3 - bytec 4 // "AST1" + bytec 9 // "AST1" == assert // asset1_txn is correct - // tests/approvals/itxn.algo.ts:47 + // tests/approvals/itxn.algo.ts:30 // assert(asset2_txn.assetName === Bytes('AST2'), 'asset2_txn is correct') swap - bytec 5 // "AST2" + bytec 10 // "AST2" == assert // asset2_txn is correct - // tests/approvals/itxn.algo.ts:48 + // tests/approvals/itxn.algo.ts:31 // assert(asset1_txn.createdAsset.name === Bytes('AST1'), 'created asset 1 is correct') swap asset_params_get AssetName assert // asset exists - bytec 4 // "AST1" + bytec 9 // "AST1" == assert // created asset 1 is correct - // tests/approvals/itxn.algo.ts:49 + // tests/approvals/itxn.algo.ts:32 // assert(asset2_txn.createdAsset.name === Bytes('AST2'), 'created asset 2 is correct') asset_params_get AssetName assert // asset exists - bytec 5 // "AST2" + bytec 10 // "AST2" == assert // created asset 2 is correct - // tests/approvals/itxn.algo.ts:61 + // tests/approvals/itxn.algo.ts:44 // const [appCreateTxn, asset3_txn] = itxn.submitGroup(appCreateParams, assetParams) itxn_begin - // tests/approvals/itxn.algo.ts:53 - // clearStateProgram: Bytes.fromHex('098101'), - bytec_2 // 0x098101 + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 itxn_field ClearStateProgramPages - // tests/approvals/itxn.algo.ts:52 - // approvalProgram: Bytes.fromHex('098101'), - bytec_2 // 0x098101 + bytec_0 // 0x098101 itxn_field ApprovalProgramPages - // tests/approvals/itxn.algo.ts:51-55 + // tests/approvals/itxn.algo.ts:34-38 // const appCreateParams = itxn.applicationCall({ - // approvalProgram: Bytes.fromHex('098101'), - // clearStateProgram: Bytes.fromHex('098101'), + // approvalProgram: APPROVE, + // clearStateProgram: APPROVE, // fee: 0, // }) - intc_3 // 6 + intc_1 // 6 itxn_field TypeEnum - // tests/approvals/itxn.algo.ts:54 + // tests/approvals/itxn.algo.ts:37 // fee: 0, intc_0 // 0 itxn_field Fee - // tests/approvals/itxn.algo.ts:61 + // tests/approvals/itxn.algo.ts:44 // const [appCreateTxn, asset3_txn] = itxn.submitGroup(appCreateParams, assetParams) itxn_next dup itxn_field ConfigAssetReserve dig 1 itxn_field ConfigAssetManager - // tests/approvals/itxn.algo.ts:34 + // tests/approvals/itxn.algo.ts:17 // decimals: 3, - intc_1 // 3 + intc_3 // 3 itxn_field ConfigAssetDecimals - // tests/approvals/itxn.algo.ts:33 + // tests/approvals/itxn.algo.ts:16 // unitName: 'unit', - bytec_1 // "unit" + bytec 5 // "unit" itxn_field ConfigAssetUnitName - // tests/approvals/itxn.algo.ts:58 + // tests/approvals/itxn.algo.ts:41 // assetName: 'AST3', - bytec 6 // "AST3" + bytec 11 // "AST3" itxn_field ConfigAssetName - // tests/approvals/itxn.algo.ts:31 + // tests/approvals/itxn.algo.ts:14 // total: 1000, - intc_2 // 1000 + intc 4 // 1000 itxn_field ConfigAssetTotal - // tests/approvals/itxn.algo.ts:30-37 + // tests/approvals/itxn.algo.ts:13-20 // const assetParams = itxn.assetConfig({ // total: 1000, // assetName: this.name.value, @@ -367,76 +1211,74 @@ main_switch_case_0@4: // manager: Global.currentApplicationAddress, // reserve: Global.currentApplicationAddress, // }) - intc_1 // 3 + intc_3 // 3 itxn_field TypeEnum intc_0 // 0 itxn_field Fee - // tests/approvals/itxn.algo.ts:61 + // tests/approvals/itxn.algo.ts:44 // const [appCreateTxn, asset3_txn] = itxn.submitGroup(appCreateParams, assetParams) itxn_submit itxn ConfigAssetName - gitxn 0 ApplicationID - // tests/approvals/itxn.algo.ts:63 - // assert(appCreateTxn.appId, 'app is created') + gitxn 0 CreatedApplicationID + // tests/approvals/itxn.algo.ts:46 + // assert(appCreateTxn.createdApp, 'app is created') assert // app is created - // tests/approvals/itxn.algo.ts:64 + // tests/approvals/itxn.algo.ts:47 // assert(asset3_txn.assetName === Bytes('AST3'), 'asset3_txn is correct') - bytec 6 // "AST3" + bytec 11 // "AST3" == assert // asset3_txn is correct - // tests/approvals/itxn.algo.ts:72 + // tests/approvals/itxn.algo.ts:55 // itxn.submitGroup(appCreateParams, assetParams) itxn_begin - // tests/approvals/itxn.algo.ts:67 + // tests/approvals/itxn.algo.ts:50 // note: '3rd', - bytec 9 // "3rd" + bytec 21 // "3rd" itxn_field Note - // tests/approvals/itxn.algo.ts:53 - // clearStateProgram: Bytes.fromHex('098101'), - bytec_2 // 0x098101 + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 itxn_field ClearStateProgramPages - // tests/approvals/itxn.algo.ts:52 - // approvalProgram: Bytes.fromHex('098101'), - bytec_2 // 0x098101 + bytec_0 // 0x098101 itxn_field ApprovalProgramPages - // tests/approvals/itxn.algo.ts:51-55 + // tests/approvals/itxn.algo.ts:34-38 // const appCreateParams = itxn.applicationCall({ - // approvalProgram: Bytes.fromHex('098101'), - // clearStateProgram: Bytes.fromHex('098101'), + // approvalProgram: APPROVE, + // clearStateProgram: APPROVE, // fee: 0, // }) - intc_3 // 6 + intc_1 // 6 itxn_field TypeEnum - // tests/approvals/itxn.algo.ts:54 + // tests/approvals/itxn.algo.ts:37 // fee: 0, intc_0 // 0 itxn_field Fee - // tests/approvals/itxn.algo.ts:72 + // tests/approvals/itxn.algo.ts:55 // itxn.submitGroup(appCreateParams, assetParams) itxn_next - // tests/approvals/itxn.algo.ts:70 + // tests/approvals/itxn.algo.ts:53 // note: '3rd', - bytec 9 // "3rd" + bytec 21 // "3rd" itxn_field Note itxn_field ConfigAssetReserve itxn_field ConfigAssetManager - // tests/approvals/itxn.algo.ts:34 + // tests/approvals/itxn.algo.ts:17 // decimals: 3, - intc_1 // 3 + intc_3 // 3 itxn_field ConfigAssetDecimals - // tests/approvals/itxn.algo.ts:33 + // tests/approvals/itxn.algo.ts:16 // unitName: 'unit', - bytec_1 // "unit" + bytec 5 // "unit" itxn_field ConfigAssetUnitName - // tests/approvals/itxn.algo.ts:58 + // tests/approvals/itxn.algo.ts:41 // assetName: 'AST3', - bytec 6 // "AST3" + bytec 11 // "AST3" itxn_field ConfigAssetName - // tests/approvals/itxn.algo.ts:31 + // tests/approvals/itxn.algo.ts:14 // total: 1000, - intc_2 // 1000 + intc 4 // 1000 itxn_field ConfigAssetTotal - // tests/approvals/itxn.algo.ts:30-37 + // tests/approvals/itxn.algo.ts:13-20 // const assetParams = itxn.assetConfig({ // total: 1000, // assetName: this.name.value, @@ -445,13 +1287,25 @@ main_switch_case_0@4: // manager: Global.currentApplicationAddress, // reserve: Global.currentApplicationAddress, // }) - intc_1 // 3 + intc_3 // 3 itxn_field TypeEnum intc_0 // 0 itxn_field Fee - // tests/approvals/itxn.algo.ts:72 + // tests/approvals/itxn.algo.ts:55 // itxn.submitGroup(appCreateParams, assetParams) itxn_submit - // tests/approvals/itxn.algo.ts:15 - // break - b main_after_if_else@15 + // tests/approvals/itxn.algo.ts:10 + // public test1() { + pushint 1 // 1 + return + +main_bare_routing@11: + // tests/approvals/itxn.algo.ts:7 + // export class ItxnDemoContract extends Contract { + txn OnCompletion + bnz main_after_if_else@15 + txn ApplicationID + ! + assert // can only call when creating + pushint 1 // 1 + return diff --git a/tests/approvals/out/o2/itxn/ItxnDemoContract.arc32.json b/tests/approvals/out/o2/itxn/ItxnDemoContract.arc32.json new file mode 100644 index 000000000..ce305ae86 --- /dev/null +++ b/tests/approvals/out/o2/itxn/ItxnDemoContract.arc32.json @@ -0,0 +1,94 @@ +{ + "hints": { + "test1()void": { + "call_config": { + "no_op": "CALL" + } + }, + "test2()void": { + "call_config": { + "no_op": "CALL" + } + }, + "test3()void": { + "call_config": { + "no_op": "CALL" + } + }, + "test4()void": { + "call_config": { + "no_op": "CALL" + } + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMCA2IDUgMyAxMDAwCiAgICBieXRlY2Jsb2NrIDB4MDk4MTAxIDB4MDkzNjFhMDBiMDgxMDEgIm5hbWUiICIxIiAiMiIgInVuaXQiICIzIiAiNCIgIjUiICJBU1QxIiAiQVNUMiIgIkFTVDMiICIxMCIgIjExIiAiMTIiICIxMyIgIjE0IiAiMTUiICIxNiIgIndpdGggYXJncyBwYXJhbSBzZXQiICI0MiIgIjNyZCIKICAgIGludGNfMCAvLyAwCiAgICBkdXBuIDMKICAgIHB1c2hieXRlcyAiIgogICAgZHVwbiAyCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fYWZ0ZXJfaWZfZWxzZUAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgKICAgIC8vIG5hbWUgPSBHbG9iYWxTdGF0ZSh7IGluaXRpYWxWYWx1ZTogQnl0ZXMoKSB9KQogICAgYnl0ZWNfMiAvLyAibmFtZSIKICAgIHB1c2hieXRlcyAweAogICAgYXBwX2dsb2JhbF9wdXQKCm1haW5fYWZ0ZXJfaWZfZWxzZUAyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3CiAgICAvLyBleHBvcnQgY2xhc3MgSXR4bkRlbW9Db250cmFjdCBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX2JhcmVfcm91dGluZ0AxMQogICAgcHVzaGJ5dGVzcyAweDIwMjU0ZjkxIDB4ZjE5MDg1MjQgMHhkZjkyMGYzNyAweDNkNDYzNDVjIC8vIG1ldGhvZCAidGVzdDEoKXZvaWQiLCBtZXRob2QgInRlc3QyKCl2b2lkIiwgbWV0aG9kICJ0ZXN0Mygpdm9pZCIsIG1ldGhvZCAidGVzdDQoKXZvaWQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3Rlc3QxX3JvdXRlQDUgbWFpbl90ZXN0Ml9yb3V0ZUA2IG1haW5fdGVzdDNfcm91dGVANyBtYWluX3Rlc3Q0X3JvdXRlQDgKCm1haW5fYWZ0ZXJfaWZfZWxzZUAxNToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NwogICAgLy8gZXhwb3J0IGNsYXNzIEl0eG5EZW1vQ29udHJhY3QgZXh0ZW5kcyBDb250cmFjdCB7CiAgICBpbnRjXzAgLy8gMAogICAgcmV0dXJuCgptYWluX3Rlc3Q0X3JvdXRlQDg6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3MQogICAgLy8gcHVibGljIHRlc3Q0KCkgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3MgogICAgLy8gY29uc3QgbG90c09mQnl0ZXMgPSBvcC5iemVybygyMDQ0KQogICAgcHVzaGludCAyMDQ0IC8vIDIwNDQKICAgIGJ6ZXJvCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3NAogICAgLy8gY29uc3QgYXBwcm92YWwyID0gQnl0ZXMuZnJvbUhleCgnODAnICsgJ0ZDMGYnKQogICAgcHVzaGJ5dGVzIDB4ODBmYzBmCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3NC0xNzUKICAgIC8vIGNvbnN0IGFwcHJvdmFsMiA9IEJ5dGVzLmZyb21IZXgoJzgwJyArICdGQzBmJykKICAgIC8vICAgLmNvbmNhdChsb3RzT2ZCeXRlcykKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzYKICAgIC8vIC5jb25jYXQoQnl0ZXMuZnJvbUhleCgnNDgnKSkKICAgIHB1c2hieXRlcyAweDQ4CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3NC0xNzYKICAgIC8vIGNvbnN0IGFwcHJvdmFsMiA9IEJ5dGVzLmZyb21IZXgoJzgwJyArICdGQzBmJykKICAgIC8vICAgLmNvbmNhdChsb3RzT2ZCeXRlcykKICAgIC8vICAgLmNvbmNhdChCeXRlcy5mcm9tSGV4KCc0OCcpKQogICAgY29uY2F0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4NQogICAgLy8gY29uc3QgYXBwMSA9IGFwcFR4bjEuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTgzCiAgICAvLyBleHRyYVByb2dyYW1QYWdlczogMywKICAgIGludGNfMyAvLyAzCiAgICBpdHhuX2ZpZWxkIEV4dHJhUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4MgogICAgLy8gYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgYnl0ZWNfMyAvLyAiMSIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4MQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICBkdXAKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIGR1cAogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgZHVwCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3OC0xODQKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogW2FwcHJvdmFsMSwgYXBwcm92YWwyLCBhcHByb3ZhbDIsIGFwcHJvdmFsMl0sCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vICAgZXh0cmFQcm9ncmFtUGFnZXM6IDMsCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxODUKICAgIC8vIGNvbnN0IGFwcDEgPSBhcHBUeG4xLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBOdW1BcHByb3ZhbFByb2dyYW1QYWdlcwogICAgaXR4biBOdW1DbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICBpdHhuIEV4dHJhUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4NgogICAgLy8gYXNzZXJ0KGFwcDEuZXh0cmFQcm9ncmFtUGFnZXMgPT09IDMsICdleHRyYSBwYWdlcyA9IDMnKQogICAgaW50Y18zIC8vIDMKICAgID09CiAgICBhc3NlcnQgLy8gZXh0cmEgcGFnZXMgPSAzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4NwogICAgLy8gYXNzZXJ0KGFwcDEubnVtQXBwcm92YWxQcm9ncmFtUGFnZXMgPT09IDIsICdhcHByb3ZhbCBwYWdlcyA9IDInKQogICAgc3dhcAogICAgcHVzaGludCAyIC8vIDIKICAgID09CiAgICBhc3NlcnQgLy8gYXBwcm92YWwgcGFnZXMgPSAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4OAogICAgLy8gYXNzZXJ0KGFwcDEuYXBwcm92YWxQcm9ncmFtUGFnZXMoMCkgPT09IGFwcHJvdmFsMS5jb25jYXQoYXBwcm92YWwyKS5jb25jYXQoYXBwcm92YWwyLnNsaWNlKDAsIC0zKSksICdleHBlY3RlZCBhcHByb3ZhbCBwYWdlIDAnKQogICAgaXR4bmEgQXBwcm92YWxQcm9ncmFtUGFnZXMgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg4CiAgICAvLyBhc3NlcnQoYXBwMS5hcHByb3ZhbFByb2dyYW1QYWdlcygwKSA9PT0gYXBwcm92YWwxLmNvbmNhdChhcHByb3ZhbDIpLmNvbmNhdChhcHByb3ZhbDIuc2xpY2UoMCwgLTMpKSwgJ2V4cGVjdGVkIGFwcHJvdmFsIHBhZ2UgMCcpCiAgICBkaWcgMwogICAgY29uY2F0CiAgICBkaWcgMwogICAgbGVuCiAgICBpbnRjXzAgLy8gMAogICAgZGlnIDEKICAgID49CiAgICBpbnRjXzAgLy8gMAogICAgZGlnIDIKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBpbnRjXzMgLy8gMwogICAgZGlnIDIKICAgID49CiAgICBpbnRjXzMgLy8gMwogICAgZGlnIDMKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBkaWcgMgogICAgc3dhcAogICAgLQogICAgZHVwCiAgICBkaWcgMgogICAgPAogICAgZGlnIDEKICAgIGRpZyAzCiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgZGlnIDcKICAgIHVuY292ZXIgMwogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICB1bmNvdmVyIDMKICAgIHN3YXAKICAgIGNvbmNhdAogICAgdW5jb3ZlciAzCiAgICA9PQogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIGFwcHJvdmFsIHBhZ2UgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxODkKICAgIC8vIGFzc2VydChhcHAxLmFwcHJvdmFsUHJvZ3JhbVBhZ2VzKDEpID09PSBhcHByb3ZhbDIuc2xpY2UoLTMpLmNvbmNhdChhcHByb3ZhbDIpLCAnZXhwZWN0ZWQgYXBwcm92YWwgcGFnZSAxJykKICAgIGl0eG5hIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzIDEKICAgIGRpZyA0CiAgICB1bmNvdmVyIDIKICAgIHVuY292ZXIgMwogICAgc3Vic3RyaW5nMwogICAgdW5jb3ZlciAzCiAgICBjb25jYXQKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgYXBwcm92YWwgcGFnZSAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5MAogICAgLy8gYXNzZXJ0KGFwcDEubnVtQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcyA9PT0gMSwgJ2NsZWFyIHN0YXRlIHBhZ2VzID0gMScpCiAgICBwdXNoaW50IDEgLy8gMQogICAgPT0KICAgIGFzc2VydCAvLyBjbGVhciBzdGF0ZSBwYWdlcyA9IDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTkxCiAgICAvLyBhc3NlcnQoYXBwMS5jbGVhclN0YXRlUHJvZ3JhbVBhZ2VzKDApID09PSBBUFBST1ZFLCAnZXhwZWN0ZWQgY2xlYXIgc3RhdGUgcGFnZScpCiAgICBpdHhuYSBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5MQogICAgLy8gYXNzZXJ0KGFwcDEuY2xlYXJTdGF0ZVByb2dyYW1QYWdlcygwKSA9PT0gQVBQUk9WRSwgJ2V4cGVjdGVkIGNsZWFyIHN0YXRlIHBhZ2UnKQogICAgPT0KICAgIGFzc2VydCAvLyBleHBlY3RlZCBjbGVhciBzdGF0ZSBwYWdlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3MQogICAgLy8gcHVibGljIHRlc3Q0KCkgewogICAgcHVzaGludCAxIC8vIDEKICAgIHJldHVybgoKbWFpbl90ZXN0M19yb3V0ZUA3OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5NQogICAgLy8gcHVibGljIHRlc3QzKCkgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzNC0xNTEKICAgIC8vIGNvbnN0IFthcHAxLCBhcHAyLCBhcHAzLCBhcHA0LCBhcHA1LCBhcHA2LCBhcHA3LCBhcHA4LCBhcHA5LCBhcHAxMCwgYXBwMTEsIGFwcDEyLCBhcHAxMywgYXBwMTQsIGFwcDE1LCBhcHAxNl0gPSBpdHhuLnN1Ym1pdEdyb3VwKAogICAgLy8gICBhcHBUeG4xLAogICAgLy8gICBhcHBUeG4yLAogICAgLy8gICBhcHBUeG4zLAogICAgLy8gICBhcHBUeG40LAogICAgLy8gICBhcHBUeG41LAogICAgLy8gICBhcHBUeG42LAogICAgLy8gICBhcHBUeG43LAogICAgLy8gICBhcHBUeG44LAogICAgLy8gICBhcHBUeG45LAogICAgLy8gICBhcHBUeG4xMCwKICAgIC8vICAgYXBwVHhuMTEsCiAgICAvLyAgIGFwcFR4bjEyLAogICAgLy8gICBhcHBUeG4xMywKICAgIC8vICAgYXBwVHhuMTQsCiAgICAvLyAgIGFwcFR4bjE1LAogICAgLy8gICBhcHBUeG4xNiwKICAgIC8vICkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTAwCiAgICAvLyBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICBieXRlY18zIC8vICIxIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzNgogICAgLy8gYXBwVHhuMiwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDQKICAgIC8vIGFwcFR4bjIuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcyJyldIH0pCiAgICBieXRlYyA0IC8vICIyIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzNwogICAgLy8gYXBwVHhuMywKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDYKICAgIC8vIGFwcFR4bjMuc2V0KHsgYXBwQXJnczogW0J5dGVzKCczJyldIH0pCiAgICBieXRlYyA2IC8vICIzIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzOAogICAgLy8gYXBwVHhuNCwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDgKICAgIC8vIGFwcFR4bjQuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc0JyldIH0pCiAgICBieXRlYyA3IC8vICI0IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzOQogICAgLy8gYXBwVHhuNSwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTAKICAgIC8vIGFwcFR4bjUuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc1JyldIH0pCiAgICBieXRlYyA4IC8vICI1IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0MAogICAgLy8gYXBwVHhuNiwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTIKICAgIC8vIGFwcFR4bjYuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc2JyldIH0pCiAgICBwdXNoYnl0ZXMgIjYiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQxCiAgICAvLyBhcHBUeG43LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExNAogICAgLy8gYXBwVHhuNy5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzcnKV0gfSkKICAgIHB1c2hieXRlcyAiNyIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDIKICAgIC8vIGFwcFR4bjgsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTE2CiAgICAvLyBhcHBUeG44LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnOCcpXSB9KQogICAgcHVzaGJ5dGVzICI4IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0MwogICAgLy8gYXBwVHhuOSwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTgKICAgIC8vIGFwcFR4bjkuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc5JyldIH0pCiAgICBwdXNoYnl0ZXMgIjkiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQ0CiAgICAvLyBhcHBUeG4xMCwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMjAKICAgIC8vIGFwcFR4bjEwLnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTAnKV0gfSkKICAgIGJ5dGVjIDEyIC8vICIxMCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDUKICAgIC8vIGFwcFR4bjExLAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEyMgogICAgLy8gYXBwVHhuMTEuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcxMScpXSB9KQogICAgYnl0ZWMgMTMgLy8gIjExIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0NgogICAgLy8gYXBwVHhuMTIsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTI0CiAgICAvLyBhcHBUeG4xMi5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzEyJyldIH0pCiAgICBieXRlYyAxNCAvLyAiMTIiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQ3CiAgICAvLyBhcHBUeG4xMywKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMjYKICAgIC8vIGFwcFR4bjEzLnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTMnKV0gfSkKICAgIGJ5dGVjIDE1IC8vICIxMyIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDgKICAgIC8vIGFwcFR4bjE0LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEyOAogICAgLy8gYXBwVHhuMTQuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcxNCcpXSB9KQogICAgYnl0ZWMgMTYgLy8gIjE0IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0OQogICAgLy8gYXBwVHhuMTUsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMwCiAgICAvLyBhcHBUeG4xNS5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzE1JyldIH0pCiAgICBieXRlYyAxNyAvLyAiMTUiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTUwCiAgICAvLyBhcHBUeG4xNiwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMzIKICAgIC8vIGFwcFR4bjE2LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTYnKV0gfSkKICAgIGJ5dGVjIDE4IC8vICIxNiIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMzQtMTUxCiAgICAvLyBjb25zdCBbYXBwMSwgYXBwMiwgYXBwMywgYXBwNCwgYXBwNSwgYXBwNiwgYXBwNywgYXBwOCwgYXBwOSwgYXBwMTAsIGFwcDExLCBhcHAxMiwgYXBwMTMsIGFwcDE0LCBhcHAxNSwgYXBwMTZdID0gaXR4bi5zdWJtaXRHcm91cCgKICAgIC8vICAgYXBwVHhuMSwKICAgIC8vICAgYXBwVHhuMiwKICAgIC8vICAgYXBwVHhuMywKICAgIC8vICAgYXBwVHhuNCwKICAgIC8vICAgYXBwVHhuNSwKICAgIC8vICAgYXBwVHhuNiwKICAgIC8vICAgYXBwVHhuNywKICAgIC8vICAgYXBwVHhuOCwKICAgIC8vICAgYXBwVHhuOSwKICAgIC8vICAgYXBwVHhuMTAsCiAgICAvLyAgIGFwcFR4bjExLAogICAgLy8gICBhcHBUeG4xMiwKICAgIC8vICAgYXBwVHhuMTMsCiAgICAvLyAgIGFwcFR4bjE0LAogICAgLy8gICBhcHBUeG4xNSwKICAgIC8vICAgYXBwVHhuMTYsCiAgICAvLyApCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTMKICAgIC8vIGFzc2VydChhcHAxLmxvZ3MoMCkgPT09IEJ5dGVzKCcxJykpCiAgICBnaXR4bmEgMCBMb2dzIDAKICAgIGJ5dGVjXzMgLy8gIjEiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1NAogICAgLy8gYXNzZXJ0KGFwcDIubG9ncygwKSA9PT0gQnl0ZXMoJzInKSkKICAgIGdpdHhuYSAxIExvZ3MgMAogICAgYnl0ZWMgNCAvLyAiMiIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU1CiAgICAvLyBhc3NlcnQoYXBwMy5sb2dzKDApID09PSBCeXRlcygnMycpKQogICAgZ2l0eG5hIDIgTG9ncyAwCiAgICBieXRlYyA2IC8vICIzIgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTYKICAgIC8vIGFzc2VydChhcHA0LmxvZ3MoMCkgPT09IEJ5dGVzKCc0JykpCiAgICBnaXR4bmEgMyBMb2dzIDAKICAgIGJ5dGVjIDcgLy8gIjQiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1NwogICAgLy8gYXNzZXJ0KGFwcDUubG9ncygwKSA9PT0gQnl0ZXMoJzUnKSkKICAgIGdpdHhuYSA0IExvZ3MgMAogICAgYnl0ZWMgOCAvLyAiNSIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU4CiAgICAvLyBhc3NlcnQoYXBwNi5sb2dzKDApID09PSBCeXRlcygnNicpKQogICAgZ2l0eG5hIDUgTG9ncyAwCiAgICBwdXNoYnl0ZXMgIjYiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1OQogICAgLy8gYXNzZXJ0KGFwcDcubG9ncygwKSA9PT0gQnl0ZXMoJzcnKSkKICAgIGdpdHhuYSA2IExvZ3MgMAogICAgcHVzaGJ5dGVzICI3IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjAKICAgIC8vIGFzc2VydChhcHA4LmxvZ3MoMCkgPT09IEJ5dGVzKCc4JykpCiAgICBnaXR4bmEgNyBMb2dzIDAKICAgIHB1c2hieXRlcyAiOCIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTYxCiAgICAvLyBhc3NlcnQoYXBwOS5sb2dzKDApID09PSBCeXRlcygnOScpKQogICAgZ2l0eG5hIDggTG9ncyAwCiAgICBwdXNoYnl0ZXMgIjkiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2MgogICAgLy8gYXNzZXJ0KGFwcDEwLmxvZ3MoMCkgPT09IEJ5dGVzKCcxMCcpKQogICAgZ2l0eG5hIDkgTG9ncyAwCiAgICBieXRlYyAxMiAvLyAiMTAiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2MwogICAgLy8gYXNzZXJ0KGFwcDExLmxvZ3MoMCkgPT09IEJ5dGVzKCcxMScpKQogICAgZ2l0eG5hIDEwIExvZ3MgMAogICAgYnl0ZWMgMTMgLy8gIjExIgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjQKICAgIC8vIGFzc2VydChhcHAxMi5sb2dzKDApID09PSBCeXRlcygnMTInKSkKICAgIGdpdHhuYSAxMSBMb2dzIDAKICAgIGJ5dGVjIDE0IC8vICIxMiIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTY1CiAgICAvLyBhc3NlcnQoYXBwMTMubG9ncygwKSA9PT0gQnl0ZXMoJzEzJykpCiAgICBnaXR4bmEgMTIgTG9ncyAwCiAgICBieXRlYyAxNSAvLyAiMTMiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2NgogICAgLy8gYXNzZXJ0KGFwcDE0LmxvZ3MoMCkgPT09IEJ5dGVzKCcxNCcpKQogICAgZ2l0eG5hIDEzIExvZ3MgMAogICAgYnl0ZWMgMTYgLy8gIjE0IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjcKICAgIC8vIGFzc2VydChhcHAxNS5sb2dzKDApID09PSBCeXRlcygnMTUnKSkKICAgIGdpdHhuYSAxNCBMb2dzIDAKICAgIGJ5dGVjIDE3IC8vICIxNSIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTY4CiAgICAvLyBhc3NlcnQoYXBwMTYubG9ncygwKSA9PT0gQnl0ZXMoJzE2JykpCiAgICBpdHhuYSBMb2dzIDAKICAgIGJ5dGVjIDE4IC8vICIxNiIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTUKICAgIC8vIHB1YmxpYyB0ZXN0MygpIHsKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4KCm1haW5fdGVzdDJfcm91dGVANjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTgKICAgIC8vIHB1YmxpYyB0ZXN0MigpIHsKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgaW50Y18wIC8vIDAKICAgIGJ1cnkgNQogICAgcHVzaGJ5dGVzICIiCiAgICBidXJ5IDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjAKICAgIC8vIGlmIChUeG4ubnVtQXBwQXJncykgewogICAgdHhuIE51bUFwcEFyZ3MKICAgIGJ6IG1haW5fZWxzZV9ib2R5QDI1CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjYxCiAgICAvLyBjb25zdCBhcmdzID0gW0J5dGVzKCcxJyksIEJ5dGVzKCcyJyldIGFzIGNvbnN0CiAgICBieXRlY18zIC8vICIxIgogICAgYnVyeSA3CiAgICBieXRlYyA0IC8vICIyIgogICAgYnVyeSA2CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjY1CiAgICAvLyBhcHBBcmdzOiBhcmdzLAogICAgcHVzaGludCAyIC8vIDIKICAgIGJ1cnkgMwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo2NgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLk5vT3AsCiAgICBpbnRjXzAgLy8gMAogICAgYnVyeSAxCiAgICBwdXNoaW50IDEgLy8gMQogICAgYnVyeSAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjY3CiAgICAvLyBub3RlOiAnd2l0aCBhcmdzIHBhcmFtIHNldCcsCiAgICBieXRlYyAxOSAvLyAid2l0aCBhcmdzIHBhcmFtIHNldCIKCm1haW5fYWZ0ZXJfaWZfZWxzZUAyNjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzcKICAgIC8vIGNvbnN0IGNyZWF0ZUFwcFR4biA9IGNyZWF0ZUFwcFBhcmFtcy5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgaXR4bl9maWVsZCBOb3RlCiAgICBkaWcgMQogICAgYnogbWFpbl9uZXh0X2ZpZWxkQDI4CiAgICBkdXAKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCgptYWluX25leHRfZmllbGRAMjg6CiAgICBkaWcgNgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGRpZyA1CiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgZGlnIDIKICAgIGludGNfMyAvLyAzCiAgICA+PQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3NwogICAgLy8gY29uc3QgY3JlYXRlQXBwVHhuID0gY3JlYXRlQXBwUGFyYW1zLnN1Ym1pdCgpCiAgICBieiBtYWluX25leHRfZmllbGRAMzAKICAgIGRpZyA0CiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKbWFpbl9uZXh0X2ZpZWxkQDMwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo2Mi02OAogICAgLy8gY3JlYXRlQXBwUGFyYW1zID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBhcHBBcmdzOiBhcmdzLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uTm9PcCwKICAgIC8vICAgbm90ZTogJ3dpdGggYXJncyBwYXJhbSBzZXQnLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzcKICAgIC8vIGNvbnN0IGNyZWF0ZUFwcFR4biA9IGNyZWF0ZUFwcFBhcmFtcy5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gTm90ZQogICAgYnVyeSA0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjc4CiAgICAvLyBhc3NlcnQoY3JlYXRlQXBwVHhuLmFwcEFyZ3MoMCkgPT09IEJ5dGVzKCcxJyksICdjb3JyZWN0IGFyZ3MgdXNlZCAxJykKICAgIGl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBieXRlY18zIC8vICIxIgogICAgPT0KICAgIGFzc2VydCAvLyBjb3JyZWN0IGFyZ3MgdXNlZCAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjc5CiAgICAvLyBhc3NlcnQoY3JlYXRlQXBwVHhuLmFwcEFyZ3MoMSkgPT09IEJ5dGVzKCcyJyksICdjb3JyZWN0IGFyZ3MgdXNlZCAyJykKICAgIGl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBieXRlYyA0IC8vICIyIgogICAgPT0KICAgIGFzc2VydCAvLyBjb3JyZWN0IGFyZ3MgdXNlZCAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgxCiAgICAvLyBpZiAoVHhuLm51bUFwcEFyZ3MgPiAxKSB7CiAgICB0eG4gTnVtQXBwQXJncwogICAgcHVzaGludCAxIC8vIDEKICAgID4KICAgIGJ6IG1haW5fYWZ0ZXJfaWZfZWxzZUAzMgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4Mi04OQogICAgLy8gY29uc3QgY3JlYXRlQXBwVHhuMiA9IGl0eG4KICAgIC8vICAgLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgICBhcHBBcmdzOiBbQnl0ZXMoJzQyJyldLAogICAgLy8gICB9KQogICAgLy8gICAuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6ODcKICAgIC8vIGFwcEFyZ3M6IFtCeXRlcygnNDInKV0sCiAgICBieXRlYyAyMCAvLyAiNDIiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4NgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgyLTg4CiAgICAvLyBjb25zdCBjcmVhdGVBcHBUeG4yID0gaXR4bgogICAgLy8gICAuYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgICBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICAgIGFwcEFyZ3M6IFtCeXRlcygnNDInKV0sCiAgICAvLyAgIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgyLTg5CiAgICAvLyBjb25zdCBjcmVhdGVBcHBUeG4yID0gaXR4bgogICAgLy8gICAuYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgICBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICAgIGFwcEFyZ3M6IFtCeXRlcygnNDInKV0sCiAgICAvLyAgIH0pCiAgICAvLyAgIC5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTAKICAgIC8vIGFzc2VydChjcmVhdGVBcHBUeG4yLmFwcEFyZ3MoMCkgPT09IEJ5dGVzKCc0MicpLCAnY29ycmVjdCBhcmdzIHVzZWQgMicpCiAgICBpdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgYnl0ZWMgMjAgLy8gIjQyIgogICAgPT0KICAgIGFzc2VydCAvLyBjb3JyZWN0IGFyZ3MgdXNlZCAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjkxCiAgICAvLyBhc3NlcnQoY3JlYXRlQXBwVHhuLm5vdGUgPT09IEJ5dGVzKCd3aXRoIGFyZ3MgcGFyYW0gc2V0JykpCiAgICBkaWcgMwogICAgYnl0ZWMgMTkgLy8gIndpdGggYXJncyBwYXJhbSBzZXQiCiAgICA9PQogICAgYXNzZXJ0CgptYWluX2FmdGVyX2lmX2Vsc2VAMzI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjU4CiAgICAvLyBwdWJsaWMgdGVzdDIoKSB7CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCgptYWluX2Vsc2VfYm9keUAyNToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzMKICAgIC8vIGFwcEFyZ3M6IFtCeXRlcygnMycpLCAnNCcsIEJ5dGVzKCc1JyldLAogICAgYnl0ZWMgNiAvLyAiMyIKICAgIGJ1cnkgNwogICAgYnl0ZWMgNyAvLyAiNCIKICAgIGJ1cnkgNgogICAgYnl0ZWMgOCAvLyAiNSIKICAgIGJ1cnkgNQogICAgaW50Y18zIC8vIDMKICAgIGJ1cnkgMwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3NAogICAgLy8gbm90ZTogJ25vIGFyZ3MgcGFyYW0gc2V0JywKICAgIHB1c2hieXRlcyAibm8gYXJncyBwYXJhbSBzZXQiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjcwCiAgICAvLyBjcmVhdGVBcHBQYXJhbXMgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICBpbnRjXzAgLy8gMAogICAgYnVyeSAzCiAgICBiIG1haW5fYWZ0ZXJfaWZfZWxzZUAyNgoKbWFpbl90ZXN0MV9yb3V0ZUA1OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMAogICAgLy8gcHVibGljIHRlc3QxKCkgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgKICAgIC8vIG5hbWUgPSBHbG9iYWxTdGF0ZSh7IGluaXRpYWxWYWx1ZTogQnl0ZXMoKSB9KQogICAgYnl0ZWNfMiAvLyAibmFtZSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEKICAgIC8vIHRoaXMubmFtZS52YWx1ZSA9IEJ5dGVzKCdBU1QxJykKICAgIGJ5dGVjIDkgLy8gIkFTVDEiCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNQogICAgLy8gYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICBpbnRjXzAgLy8gMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4CiAgICAvLyBuYW1lID0gR2xvYmFsU3RhdGUoeyBpbml0aWFsVmFsdWU6IEJ5dGVzKCkgfSkKICAgIGJ5dGVjXzIgLy8gIm5hbWUiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1CiAgICAvLyBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4CiAgICAvLyBtYW5hZ2VyOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5CiAgICAvLyByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIGR1cAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4CiAgICAvLyBuYW1lID0gR2xvYmFsU3RhdGUoeyBpbml0aWFsVmFsdWU6IEJ5dGVzKCkgfSkKICAgIGJ5dGVjXzIgLy8gIm5hbWUiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIyCiAgICAvLyB0aGlzLm5hbWUudmFsdWUgPSBCeXRlcygnQVNUMicpCiAgICBieXRlYyAxMCAvLyAiQVNUMiIKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIzCiAgICAvLyBjb25zdCBhc3NldDFfdHhuID0gYXNzZXRQYXJhbXMuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIGR1cAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFJlc2VydmUKICAgIGRpZyAxCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TWFuYWdlcgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNwogICAgLy8gZGVjaW1hbHM6IDMsCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBDb25maWdBc3NldERlY2ltYWxzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2CiAgICAvLyB1bml0TmFtZTogJ3VuaXQnLAogICAgYnl0ZWMgNSAvLyAidW5pdCIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRVbml0TmFtZQogICAgdW5jb3ZlciAyCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TmFtZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNAogICAgLy8gdG90YWw6IDEwMDAsCiAgICBpbnRjIDQgLy8gMTAwMAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFRvdGFsCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzLTIwCiAgICAvLyBjb25zdCBhc3NldFBhcmFtcyA9IGl0eG4uYXNzZXRDb25maWcoewogICAgLy8gICB0b3RhbDogMTAwMCwKICAgIC8vICAgYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICAvLyAgIHVuaXROYW1lOiAndW5pdCcsCiAgICAvLyAgIGRlY2ltYWxzOiAzLAogICAgLy8gICBtYW5hZ2VyOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vICAgcmVzZXJ2ZTogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyB9KQogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMwogICAgLy8gY29uc3QgYXNzZXQxX3R4biA9IGFzc2V0UGFyYW1zLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBDb25maWdBc3NldE5hbWUKICAgIGl0eG4gQ3JlYXRlZEFzc2V0SUQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjUKICAgIC8vIGFzc2V0TmFtZTogdGhpcy5uYW1lLnZhbHVlLAogICAgaW50Y18wIC8vIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OAogICAgLy8gbmFtZSA9IEdsb2JhbFN0YXRlKHsgaW5pdGlhbFZhbHVlOiBCeXRlcygpIH0pCiAgICBieXRlY18yIC8vICJuYW1lIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyNQogICAgLy8gYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyNwogICAgLy8gY29uc3QgYXNzZXQyX3R4biA9IGFzc2V0UGFyYW1zLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICBkaWcgMwogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFJlc2VydmUKICAgIGRpZyA0CiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TWFuYWdlcgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNwogICAgLy8gZGVjaW1hbHM6IDMsCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBDb25maWdBc3NldERlY2ltYWxzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2CiAgICAvLyB1bml0TmFtZTogJ3VuaXQnLAogICAgYnl0ZWMgNSAvLyAidW5pdCIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRVbml0TmFtZQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE5hbWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQKICAgIC8vIHRvdGFsOiAxMDAwLAogICAgaW50YyA0IC8vIDEwMDAKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRUb3RhbAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMy0yMAogICAgLy8gY29uc3QgYXNzZXRQYXJhbXMgPSBpdHhuLmFzc2V0Q29uZmlnKHsKICAgIC8vICAgdG90YWw6IDEwMDAsCiAgICAvLyAgIGFzc2V0TmFtZTogdGhpcy5uYW1lLnZhbHVlLAogICAgLy8gICB1bml0TmFtZTogJ3VuaXQnLAogICAgLy8gICBkZWNpbWFsczogMywKICAgIC8vICAgbWFuYWdlcjogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyAgIHJlc2VydmU6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gfSkKICAgIGludGNfMyAvLyAzCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjcKICAgIC8vIGNvbnN0IGFzc2V0Ml90eG4gPSBhc3NldFBhcmFtcy5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gQ29uZmlnQXNzZXROYW1lCiAgICBpdHhuIENyZWF0ZWRBc3NldElECiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI5CiAgICAvLyBhc3NlcnQoYXNzZXQxX3R4bi5hc3NldE5hbWUgPT09IEJ5dGVzKCdBU1QxJyksICdhc3NldDFfdHhuIGlzIGNvcnJlY3QnKQogICAgdW5jb3ZlciAzCiAgICBieXRlYyA5IC8vICJBU1QxIgogICAgPT0KICAgIGFzc2VydCAvLyBhc3NldDFfdHhuIGlzIGNvcnJlY3QKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzAKICAgIC8vIGFzc2VydChhc3NldDJfdHhuLmFzc2V0TmFtZSA9PT0gQnl0ZXMoJ0FTVDInKSwgJ2Fzc2V0Ml90eG4gaXMgY29ycmVjdCcpCiAgICBzd2FwCiAgICBieXRlYyAxMCAvLyAiQVNUMiIKICAgID09CiAgICBhc3NlcnQgLy8gYXNzZXQyX3R4biBpcyBjb3JyZWN0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjMxCiAgICAvLyBhc3NlcnQoYXNzZXQxX3R4bi5jcmVhdGVkQXNzZXQubmFtZSA9PT0gQnl0ZXMoJ0FTVDEnKSwgJ2NyZWF0ZWQgYXNzZXQgMSBpcyBjb3JyZWN0JykKICAgIHN3YXAKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXROYW1lCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBieXRlYyA5IC8vICJBU1QxIgogICAgPT0KICAgIGFzc2VydCAvLyBjcmVhdGVkIGFzc2V0IDEgaXMgY29ycmVjdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozMgogICAgLy8gYXNzZXJ0KGFzc2V0Ml90eG4uY3JlYXRlZEFzc2V0Lm5hbWUgPT09IEJ5dGVzKCdBU1QyJyksICdjcmVhdGVkIGFzc2V0IDIgaXMgY29ycmVjdCcpCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TmFtZQogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgYnl0ZWMgMTAgLy8gIkFTVDIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNyZWF0ZWQgYXNzZXQgMiBpcyBjb3JyZWN0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQ0CiAgICAvLyBjb25zdCBbYXBwQ3JlYXRlVHhuLCBhc3NldDNfdHhuXSA9IGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fYmVnaW4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzQtMzgKICAgIC8vIGNvbnN0IGFwcENyZWF0ZVBhcmFtcyA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgZmVlOiAwLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjM3CiAgICAvLyBmZWU6IDAsCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDQKICAgIC8vIGNvbnN0IFthcHBDcmVhdGVUeG4sIGFzc2V0M190eG5dID0gaXR4bi5zdWJtaXRHcm91cChhcHBDcmVhdGVQYXJhbXMsIGFzc2V0UGFyYW1zKQogICAgaXR4bl9uZXh0CiAgICBkdXAKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRSZXNlcnZlCiAgICBkaWcgMQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE1hbmFnZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcKICAgIC8vIGRlY2ltYWxzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXREZWNpbWFscwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNgogICAgLy8gdW5pdE5hbWU6ICd1bml0JywKICAgIGJ5dGVjIDUgLy8gInVuaXQiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VW5pdE5hbWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDEKICAgIC8vIGFzc2V0TmFtZTogJ0FTVDMnLAogICAgYnl0ZWMgMTEgLy8gIkFTVDMiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TmFtZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNAogICAgLy8gdG90YWw6IDEwMDAsCiAgICBpbnRjIDQgLy8gMTAwMAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFRvdGFsCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzLTIwCiAgICAvLyBjb25zdCBhc3NldFBhcmFtcyA9IGl0eG4uYXNzZXRDb25maWcoewogICAgLy8gICB0b3RhbDogMTAwMCwKICAgIC8vICAgYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICAvLyAgIHVuaXROYW1lOiAndW5pdCcsCiAgICAvLyAgIGRlY2ltYWxzOiAzLAogICAgLy8gICBtYW5hZ2VyOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vICAgcmVzZXJ2ZTogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyB9KQogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0NAogICAgLy8gY29uc3QgW2FwcENyZWF0ZVR4biwgYXNzZXQzX3R4bl0gPSBpdHhuLnN1Ym1pdEdyb3VwKGFwcENyZWF0ZVBhcmFtcywgYXNzZXRQYXJhbXMpCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBDb25maWdBc3NldE5hbWUKICAgIGdpdHhuIDAgQ3JlYXRlZEFwcGxpY2F0aW9uSUQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDYKICAgIC8vIGFzc2VydChhcHBDcmVhdGVUeG4uY3JlYXRlZEFwcCwgJ2FwcCBpcyBjcmVhdGVkJykKICAgIGFzc2VydCAvLyBhcHAgaXMgY3JlYXRlZAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0NwogICAgLy8gYXNzZXJ0KGFzc2V0M190eG4uYXNzZXROYW1lID09PSBCeXRlcygnQVNUMycpLCAnYXNzZXQzX3R4biBpcyBjb3JyZWN0JykKICAgIGJ5dGVjIDExIC8vICJBU1QzIgogICAgPT0KICAgIGFzc2VydCAvLyBhc3NldDNfdHhuIGlzIGNvcnJlY3QKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTUKICAgIC8vIGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fYmVnaW4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTAKICAgIC8vIG5vdGU6ICczcmQnLAogICAgYnl0ZWMgMjEgLy8gIjNyZCIKICAgIGl0eG5fZmllbGQgTm90ZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozNC0zOAogICAgLy8gY29uc3QgYXBwQ3JlYXRlUGFyYW1zID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBmZWU6IDAsCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzcKICAgIC8vIGZlZTogMCwKICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1NQogICAgLy8gaXR4bi5zdWJtaXRHcm91cChhcHBDcmVhdGVQYXJhbXMsIGFzc2V0UGFyYW1zKQogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUzCiAgICAvLyBub3RlOiAnM3JkJywKICAgIGJ5dGVjIDIxIC8vICIzcmQiCiAgICBpdHhuX2ZpZWxkIE5vdGUKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRSZXNlcnZlCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TWFuYWdlcgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNwogICAgLy8gZGVjaW1hbHM6IDMsCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBDb25maWdBc3NldERlY2ltYWxzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2CiAgICAvLyB1bml0TmFtZTogJ3VuaXQnLAogICAgYnl0ZWMgNSAvLyAidW5pdCIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRVbml0TmFtZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0MQogICAgLy8gYXNzZXROYW1lOiAnQVNUMycsCiAgICBieXRlYyAxMSAvLyAiQVNUMyIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0CiAgICAvLyB0b3RhbDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMtMjAKICAgIC8vIGNvbnN0IGFzc2V0UGFyYW1zID0gaXR4bi5hc3NldENvbmZpZyh7CiAgICAvLyAgIHRvdGFsOiAxMDAwLAogICAgLy8gICBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIC8vICAgdW5pdE5hbWU6ICd1bml0JywKICAgIC8vICAgZGVjaW1hbHM6IDMsCiAgICAvLyAgIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vIH0pCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjU1CiAgICAvLyBpdHhuLnN1Ym1pdEdyb3VwKGFwcENyZWF0ZVBhcmFtcywgYXNzZXRQYXJhbXMpCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMAogICAgLy8gcHVibGljIHRlc3QxKCkgewogICAgcHVzaGludCAxIC8vIDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAMTE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjcKICAgIC8vIGV4cG9ydCBjbGFzcyBJdHhuRGVtb0NvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgYm56IG1haW5fYWZ0ZXJfaWZfZWxzZUAxNQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gY3JlYXRpbmcKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4K", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCg==" + }, + "state": { + "global": { + "num_byte_slices": 1, + "num_uints": 0 + }, + "local": { + "num_byte_slices": 0, + "num_uints": 0 + } + }, + "schema": { + "global": { + "declared": { + "name": { + "type": "bytes", + "key": "name" + } + }, + "reserved": {} + }, + "local": { + "declared": {}, + "reserved": {} + } + }, + "contract": { + "name": "ItxnDemoContract", + "methods": [ + { + "name": "test1", + "args": [], + "readonly": false, + "returns": { + "type": "void" + } + }, + { + "name": "test2", + "args": [], + "readonly": false, + "returns": { + "type": "void" + } + }, + { + "name": "test3", + "args": [], + "readonly": false, + "returns": { + "type": "void" + } + }, + { + "name": "test4", + "args": [], + "readonly": false, + "returns": { + "type": "void" + } + } + ], + "networks": {} + }, + "bare_call_config": { + "no_op": "CREATE" + } +} \ No newline at end of file diff --git a/tests/approvals/out/o2/itxn/ItxnDemoContract.arc56.json b/tests/approvals/out/o2/itxn/ItxnDemoContract.arc56.json new file mode 100644 index 000000000..382120214 --- /dev/null +++ b/tests/approvals/out/o2/itxn/ItxnDemoContract.arc56.json @@ -0,0 +1,261 @@ +{ + "name": "ItxnDemoContract", + "structs": {}, + "methods": [ + { + "name": "test1", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + }, + "readonly": false, + "events": [], + "recommendations": {} + }, + { + "name": "test2", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + }, + "readonly": false, + "events": [], + "recommendations": {} + }, + { + "name": "test3", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + }, + "readonly": false, + "events": [], + "recommendations": {} + }, + { + "name": "test4", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + }, + "readonly": false, + "events": [], + "recommendations": {} + } + ], + "arcs": [ + 22, + 28 + ], + "networks": {}, + "state": { + "schema": { + "global": { + "ints": 0, + "bytes": 1 + }, + "local": { + "ints": 0, + "bytes": 0 + } + }, + "keys": { + "global": { + "name": { + "keyType": "AVMString", + "valueType": "AVMBytes", + "key": "bmFtZQ==" + } + }, + "local": {}, + "box": {} + }, + "maps": { + "global": {}, + "local": {}, + "box": {} + } + }, + "bareActions": { + "create": [ + "NoOp" + ], + "call": [] + }, + "sourceInfo": { + "approval": { + "sourceInfo": [ + { + "pc": [ + 167, + 323, + 787, + 971 + ], + "errorMessage": "OnCompletion is not NoOp" + }, + { + "pc": [ + 1135 + ], + "errorMessage": "app is created" + }, + { + "pc": [ + 231 + ], + "errorMessage": "approval pages = 2" + }, + { + "pc": [ + 1075, + 1082 + ], + "errorMessage": "asset exists" + }, + { + "pc": [ + 1066 + ], + "errorMessage": "asset1_txn is correct" + }, + { + "pc": [ + 1071 + ], + "errorMessage": "asset2_txn is correct" + }, + { + "pc": [ + 1139 + ], + "errorMessage": "asset3_txn is correct" + }, + { + "pc": [ + 1199 + ], + "errorMessage": "can only call when creating" + }, + { + "pc": [ + 170, + 326, + 790, + 974 + ], + "errorMessage": "can only call when not creating" + }, + { + "pc": [ + 982, + 1027 + ], + "errorMessage": "check GlobalState exists" + }, + { + "pc": [ + 310 + ], + "errorMessage": "clear state pages = 1" + }, + { + "pc": [ + 875 + ], + "errorMessage": "correct args used 1" + }, + { + "pc": [ + 882, + 918 + ], + "errorMessage": "correct args used 2" + }, + { + "pc": [ + 1079 + ], + "errorMessage": "created asset 1 is correct" + }, + { + "pc": [ + 1086 + ], + "errorMessage": "created asset 2 is correct" + }, + { + "pc": [ + 291 + ], + "errorMessage": "expected approval page 0" + }, + { + "pc": [ + 306 + ], + "errorMessage": "expected approval page 1" + }, + { + "pc": [ + 316 + ], + "errorMessage": "expected clear state page" + }, + { + "pc": [ + 226 + ], + "errorMessage": "extra pages = 3" + } + ], + "pcOffsetMethod": "none" + }, + "clear": { + "sourceInfo": [], + "pcOffsetMethod": "none" + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMCA2IDUgMyAxMDAwCiAgICBieXRlY2Jsb2NrIDB4MDk4MTAxIDB4MDkzNjFhMDBiMDgxMDEgIm5hbWUiICIxIiAiMiIgInVuaXQiICIzIiAiNCIgIjUiICJBU1QxIiAiQVNUMiIgIkFTVDMiICIxMCIgIjExIiAiMTIiICIxMyIgIjE0IiAiMTUiICIxNiIgIndpdGggYXJncyBwYXJhbSBzZXQiICI0MiIgIjNyZCIKICAgIGludGNfMCAvLyAwCiAgICBkdXBuIDMKICAgIHB1c2hieXRlcyAiIgogICAgZHVwbiAyCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fYWZ0ZXJfaWZfZWxzZUAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgKICAgIC8vIG5hbWUgPSBHbG9iYWxTdGF0ZSh7IGluaXRpYWxWYWx1ZTogQnl0ZXMoKSB9KQogICAgYnl0ZWNfMiAvLyAibmFtZSIKICAgIHB1c2hieXRlcyAweAogICAgYXBwX2dsb2JhbF9wdXQKCm1haW5fYWZ0ZXJfaWZfZWxzZUAyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3CiAgICAvLyBleHBvcnQgY2xhc3MgSXR4bkRlbW9Db250cmFjdCBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX2JhcmVfcm91dGluZ0AxMQogICAgcHVzaGJ5dGVzcyAweDIwMjU0ZjkxIDB4ZjE5MDg1MjQgMHhkZjkyMGYzNyAweDNkNDYzNDVjIC8vIG1ldGhvZCAidGVzdDEoKXZvaWQiLCBtZXRob2QgInRlc3QyKCl2b2lkIiwgbWV0aG9kICJ0ZXN0Mygpdm9pZCIsIG1ldGhvZCAidGVzdDQoKXZvaWQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3Rlc3QxX3JvdXRlQDUgbWFpbl90ZXN0Ml9yb3V0ZUA2IG1haW5fdGVzdDNfcm91dGVANyBtYWluX3Rlc3Q0X3JvdXRlQDgKCm1haW5fYWZ0ZXJfaWZfZWxzZUAxNToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NwogICAgLy8gZXhwb3J0IGNsYXNzIEl0eG5EZW1vQ29udHJhY3QgZXh0ZW5kcyBDb250cmFjdCB7CiAgICBpbnRjXzAgLy8gMAogICAgcmV0dXJuCgptYWluX3Rlc3Q0X3JvdXRlQDg6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3MQogICAgLy8gcHVibGljIHRlc3Q0KCkgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3MgogICAgLy8gY29uc3QgbG90c09mQnl0ZXMgPSBvcC5iemVybygyMDQ0KQogICAgcHVzaGludCAyMDQ0IC8vIDIwNDQKICAgIGJ6ZXJvCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3NAogICAgLy8gY29uc3QgYXBwcm92YWwyID0gQnl0ZXMuZnJvbUhleCgnODAnICsgJ0ZDMGYnKQogICAgcHVzaGJ5dGVzIDB4ODBmYzBmCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3NC0xNzUKICAgIC8vIGNvbnN0IGFwcHJvdmFsMiA9IEJ5dGVzLmZyb21IZXgoJzgwJyArICdGQzBmJykKICAgIC8vICAgLmNvbmNhdChsb3RzT2ZCeXRlcykKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzYKICAgIC8vIC5jb25jYXQoQnl0ZXMuZnJvbUhleCgnNDgnKSkKICAgIHB1c2hieXRlcyAweDQ4CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3NC0xNzYKICAgIC8vIGNvbnN0IGFwcHJvdmFsMiA9IEJ5dGVzLmZyb21IZXgoJzgwJyArICdGQzBmJykKICAgIC8vICAgLmNvbmNhdChsb3RzT2ZCeXRlcykKICAgIC8vICAgLmNvbmNhdChCeXRlcy5mcm9tSGV4KCc0OCcpKQogICAgY29uY2F0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4NQogICAgLy8gY29uc3QgYXBwMSA9IGFwcFR4bjEuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTgzCiAgICAvLyBleHRyYVByb2dyYW1QYWdlczogMywKICAgIGludGNfMyAvLyAzCiAgICBpdHhuX2ZpZWxkIEV4dHJhUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4MgogICAgLy8gYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgYnl0ZWNfMyAvLyAiMSIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4MQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICBkdXAKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIGR1cAogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgZHVwCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3OC0xODQKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogW2FwcHJvdmFsMSwgYXBwcm92YWwyLCBhcHByb3ZhbDIsIGFwcHJvdmFsMl0sCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vICAgZXh0cmFQcm9ncmFtUGFnZXM6IDMsCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxODUKICAgIC8vIGNvbnN0IGFwcDEgPSBhcHBUeG4xLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBOdW1BcHByb3ZhbFByb2dyYW1QYWdlcwogICAgaXR4biBOdW1DbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICBpdHhuIEV4dHJhUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4NgogICAgLy8gYXNzZXJ0KGFwcDEuZXh0cmFQcm9ncmFtUGFnZXMgPT09IDMsICdleHRyYSBwYWdlcyA9IDMnKQogICAgaW50Y18zIC8vIDMKICAgID09CiAgICBhc3NlcnQgLy8gZXh0cmEgcGFnZXMgPSAzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4NwogICAgLy8gYXNzZXJ0KGFwcDEubnVtQXBwcm92YWxQcm9ncmFtUGFnZXMgPT09IDIsICdhcHByb3ZhbCBwYWdlcyA9IDInKQogICAgc3dhcAogICAgcHVzaGludCAyIC8vIDIKICAgID09CiAgICBhc3NlcnQgLy8gYXBwcm92YWwgcGFnZXMgPSAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4OAogICAgLy8gYXNzZXJ0KGFwcDEuYXBwcm92YWxQcm9ncmFtUGFnZXMoMCkgPT09IGFwcHJvdmFsMS5jb25jYXQoYXBwcm92YWwyKS5jb25jYXQoYXBwcm92YWwyLnNsaWNlKDAsIC0zKSksICdleHBlY3RlZCBhcHByb3ZhbCBwYWdlIDAnKQogICAgaXR4bmEgQXBwcm92YWxQcm9ncmFtUGFnZXMgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg4CiAgICAvLyBhc3NlcnQoYXBwMS5hcHByb3ZhbFByb2dyYW1QYWdlcygwKSA9PT0gYXBwcm92YWwxLmNvbmNhdChhcHByb3ZhbDIpLmNvbmNhdChhcHByb3ZhbDIuc2xpY2UoMCwgLTMpKSwgJ2V4cGVjdGVkIGFwcHJvdmFsIHBhZ2UgMCcpCiAgICBkaWcgMwogICAgY29uY2F0CiAgICBkaWcgMwogICAgbGVuCiAgICBpbnRjXzAgLy8gMAogICAgZGlnIDEKICAgID49CiAgICBpbnRjXzAgLy8gMAogICAgZGlnIDIKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBpbnRjXzMgLy8gMwogICAgZGlnIDIKICAgID49CiAgICBpbnRjXzMgLy8gMwogICAgZGlnIDMKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBkaWcgMgogICAgc3dhcAogICAgLQogICAgZHVwCiAgICBkaWcgMgogICAgPAogICAgZGlnIDEKICAgIGRpZyAzCiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgZGlnIDcKICAgIHVuY292ZXIgMwogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICB1bmNvdmVyIDMKICAgIHN3YXAKICAgIGNvbmNhdAogICAgdW5jb3ZlciAzCiAgICA9PQogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIGFwcHJvdmFsIHBhZ2UgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxODkKICAgIC8vIGFzc2VydChhcHAxLmFwcHJvdmFsUHJvZ3JhbVBhZ2VzKDEpID09PSBhcHByb3ZhbDIuc2xpY2UoLTMpLmNvbmNhdChhcHByb3ZhbDIpLCAnZXhwZWN0ZWQgYXBwcm92YWwgcGFnZSAxJykKICAgIGl0eG5hIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzIDEKICAgIGRpZyA0CiAgICB1bmNvdmVyIDIKICAgIHVuY292ZXIgMwogICAgc3Vic3RyaW5nMwogICAgdW5jb3ZlciAzCiAgICBjb25jYXQKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgYXBwcm92YWwgcGFnZSAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5MAogICAgLy8gYXNzZXJ0KGFwcDEubnVtQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcyA9PT0gMSwgJ2NsZWFyIHN0YXRlIHBhZ2VzID0gMScpCiAgICBwdXNoaW50IDEgLy8gMQogICAgPT0KICAgIGFzc2VydCAvLyBjbGVhciBzdGF0ZSBwYWdlcyA9IDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTkxCiAgICAvLyBhc3NlcnQoYXBwMS5jbGVhclN0YXRlUHJvZ3JhbVBhZ2VzKDApID09PSBBUFBST1ZFLCAnZXhwZWN0ZWQgY2xlYXIgc3RhdGUgcGFnZScpCiAgICBpdHhuYSBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5MQogICAgLy8gYXNzZXJ0KGFwcDEuY2xlYXJTdGF0ZVByb2dyYW1QYWdlcygwKSA9PT0gQVBQUk9WRSwgJ2V4cGVjdGVkIGNsZWFyIHN0YXRlIHBhZ2UnKQogICAgPT0KICAgIGFzc2VydCAvLyBleHBlY3RlZCBjbGVhciBzdGF0ZSBwYWdlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3MQogICAgLy8gcHVibGljIHRlc3Q0KCkgewogICAgcHVzaGludCAxIC8vIDEKICAgIHJldHVybgoKbWFpbl90ZXN0M19yb3V0ZUA3OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5NQogICAgLy8gcHVibGljIHRlc3QzKCkgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzNC0xNTEKICAgIC8vIGNvbnN0IFthcHAxLCBhcHAyLCBhcHAzLCBhcHA0LCBhcHA1LCBhcHA2LCBhcHA3LCBhcHA4LCBhcHA5LCBhcHAxMCwgYXBwMTEsIGFwcDEyLCBhcHAxMywgYXBwMTQsIGFwcDE1LCBhcHAxNl0gPSBpdHhuLnN1Ym1pdEdyb3VwKAogICAgLy8gICBhcHBUeG4xLAogICAgLy8gICBhcHBUeG4yLAogICAgLy8gICBhcHBUeG4zLAogICAgLy8gICBhcHBUeG40LAogICAgLy8gICBhcHBUeG41LAogICAgLy8gICBhcHBUeG42LAogICAgLy8gICBhcHBUeG43LAogICAgLy8gICBhcHBUeG44LAogICAgLy8gICBhcHBUeG45LAogICAgLy8gICBhcHBUeG4xMCwKICAgIC8vICAgYXBwVHhuMTEsCiAgICAvLyAgIGFwcFR4bjEyLAogICAgLy8gICBhcHBUeG4xMywKICAgIC8vICAgYXBwVHhuMTQsCiAgICAvLyAgIGFwcFR4bjE1LAogICAgLy8gICBhcHBUeG4xNiwKICAgIC8vICkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTAwCiAgICAvLyBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICBieXRlY18zIC8vICIxIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzNgogICAgLy8gYXBwVHhuMiwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDQKICAgIC8vIGFwcFR4bjIuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcyJyldIH0pCiAgICBieXRlYyA0IC8vICIyIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzNwogICAgLy8gYXBwVHhuMywKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDYKICAgIC8vIGFwcFR4bjMuc2V0KHsgYXBwQXJnczogW0J5dGVzKCczJyldIH0pCiAgICBieXRlYyA2IC8vICIzIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzOAogICAgLy8gYXBwVHhuNCwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDgKICAgIC8vIGFwcFR4bjQuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc0JyldIH0pCiAgICBieXRlYyA3IC8vICI0IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzOQogICAgLy8gYXBwVHhuNSwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTAKICAgIC8vIGFwcFR4bjUuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc1JyldIH0pCiAgICBieXRlYyA4IC8vICI1IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0MAogICAgLy8gYXBwVHhuNiwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTIKICAgIC8vIGFwcFR4bjYuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc2JyldIH0pCiAgICBwdXNoYnl0ZXMgIjYiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQxCiAgICAvLyBhcHBUeG43LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExNAogICAgLy8gYXBwVHhuNy5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzcnKV0gfSkKICAgIHB1c2hieXRlcyAiNyIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDIKICAgIC8vIGFwcFR4bjgsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTE2CiAgICAvLyBhcHBUeG44LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnOCcpXSB9KQogICAgcHVzaGJ5dGVzICI4IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0MwogICAgLy8gYXBwVHhuOSwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTgKICAgIC8vIGFwcFR4bjkuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc5JyldIH0pCiAgICBwdXNoYnl0ZXMgIjkiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQ0CiAgICAvLyBhcHBUeG4xMCwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMjAKICAgIC8vIGFwcFR4bjEwLnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTAnKV0gfSkKICAgIGJ5dGVjIDEyIC8vICIxMCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDUKICAgIC8vIGFwcFR4bjExLAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEyMgogICAgLy8gYXBwVHhuMTEuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcxMScpXSB9KQogICAgYnl0ZWMgMTMgLy8gIjExIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0NgogICAgLy8gYXBwVHhuMTIsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTI0CiAgICAvLyBhcHBUeG4xMi5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzEyJyldIH0pCiAgICBieXRlYyAxNCAvLyAiMTIiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQ3CiAgICAvLyBhcHBUeG4xMywKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMjYKICAgIC8vIGFwcFR4bjEzLnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTMnKV0gfSkKICAgIGJ5dGVjIDE1IC8vICIxMyIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDgKICAgIC8vIGFwcFR4bjE0LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEyOAogICAgLy8gYXBwVHhuMTQuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcxNCcpXSB9KQogICAgYnl0ZWMgMTYgLy8gIjE0IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0OQogICAgLy8gYXBwVHhuMTUsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMwCiAgICAvLyBhcHBUeG4xNS5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzE1JyldIH0pCiAgICBieXRlYyAxNyAvLyAiMTUiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTUwCiAgICAvLyBhcHBUeG4xNiwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMzIKICAgIC8vIGFwcFR4bjE2LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTYnKV0gfSkKICAgIGJ5dGVjIDE4IC8vICIxNiIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMzQtMTUxCiAgICAvLyBjb25zdCBbYXBwMSwgYXBwMiwgYXBwMywgYXBwNCwgYXBwNSwgYXBwNiwgYXBwNywgYXBwOCwgYXBwOSwgYXBwMTAsIGFwcDExLCBhcHAxMiwgYXBwMTMsIGFwcDE0LCBhcHAxNSwgYXBwMTZdID0gaXR4bi5zdWJtaXRHcm91cCgKICAgIC8vICAgYXBwVHhuMSwKICAgIC8vICAgYXBwVHhuMiwKICAgIC8vICAgYXBwVHhuMywKICAgIC8vICAgYXBwVHhuNCwKICAgIC8vICAgYXBwVHhuNSwKICAgIC8vICAgYXBwVHhuNiwKICAgIC8vICAgYXBwVHhuNywKICAgIC8vICAgYXBwVHhuOCwKICAgIC8vICAgYXBwVHhuOSwKICAgIC8vICAgYXBwVHhuMTAsCiAgICAvLyAgIGFwcFR4bjExLAogICAgLy8gICBhcHBUeG4xMiwKICAgIC8vICAgYXBwVHhuMTMsCiAgICAvLyAgIGFwcFR4bjE0LAogICAgLy8gICBhcHBUeG4xNSwKICAgIC8vICAgYXBwVHhuMTYsCiAgICAvLyApCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTMKICAgIC8vIGFzc2VydChhcHAxLmxvZ3MoMCkgPT09IEJ5dGVzKCcxJykpCiAgICBnaXR4bmEgMCBMb2dzIDAKICAgIGJ5dGVjXzMgLy8gIjEiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1NAogICAgLy8gYXNzZXJ0KGFwcDIubG9ncygwKSA9PT0gQnl0ZXMoJzInKSkKICAgIGdpdHhuYSAxIExvZ3MgMAogICAgYnl0ZWMgNCAvLyAiMiIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU1CiAgICAvLyBhc3NlcnQoYXBwMy5sb2dzKDApID09PSBCeXRlcygnMycpKQogICAgZ2l0eG5hIDIgTG9ncyAwCiAgICBieXRlYyA2IC8vICIzIgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTYKICAgIC8vIGFzc2VydChhcHA0LmxvZ3MoMCkgPT09IEJ5dGVzKCc0JykpCiAgICBnaXR4bmEgMyBMb2dzIDAKICAgIGJ5dGVjIDcgLy8gIjQiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1NwogICAgLy8gYXNzZXJ0KGFwcDUubG9ncygwKSA9PT0gQnl0ZXMoJzUnKSkKICAgIGdpdHhuYSA0IExvZ3MgMAogICAgYnl0ZWMgOCAvLyAiNSIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU4CiAgICAvLyBhc3NlcnQoYXBwNi5sb2dzKDApID09PSBCeXRlcygnNicpKQogICAgZ2l0eG5hIDUgTG9ncyAwCiAgICBwdXNoYnl0ZXMgIjYiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1OQogICAgLy8gYXNzZXJ0KGFwcDcubG9ncygwKSA9PT0gQnl0ZXMoJzcnKSkKICAgIGdpdHhuYSA2IExvZ3MgMAogICAgcHVzaGJ5dGVzICI3IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjAKICAgIC8vIGFzc2VydChhcHA4LmxvZ3MoMCkgPT09IEJ5dGVzKCc4JykpCiAgICBnaXR4bmEgNyBMb2dzIDAKICAgIHB1c2hieXRlcyAiOCIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTYxCiAgICAvLyBhc3NlcnQoYXBwOS5sb2dzKDApID09PSBCeXRlcygnOScpKQogICAgZ2l0eG5hIDggTG9ncyAwCiAgICBwdXNoYnl0ZXMgIjkiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2MgogICAgLy8gYXNzZXJ0KGFwcDEwLmxvZ3MoMCkgPT09IEJ5dGVzKCcxMCcpKQogICAgZ2l0eG5hIDkgTG9ncyAwCiAgICBieXRlYyAxMiAvLyAiMTAiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2MwogICAgLy8gYXNzZXJ0KGFwcDExLmxvZ3MoMCkgPT09IEJ5dGVzKCcxMScpKQogICAgZ2l0eG5hIDEwIExvZ3MgMAogICAgYnl0ZWMgMTMgLy8gIjExIgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjQKICAgIC8vIGFzc2VydChhcHAxMi5sb2dzKDApID09PSBCeXRlcygnMTInKSkKICAgIGdpdHhuYSAxMSBMb2dzIDAKICAgIGJ5dGVjIDE0IC8vICIxMiIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTY1CiAgICAvLyBhc3NlcnQoYXBwMTMubG9ncygwKSA9PT0gQnl0ZXMoJzEzJykpCiAgICBnaXR4bmEgMTIgTG9ncyAwCiAgICBieXRlYyAxNSAvLyAiMTMiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2NgogICAgLy8gYXNzZXJ0KGFwcDE0LmxvZ3MoMCkgPT09IEJ5dGVzKCcxNCcpKQogICAgZ2l0eG5hIDEzIExvZ3MgMAogICAgYnl0ZWMgMTYgLy8gIjE0IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjcKICAgIC8vIGFzc2VydChhcHAxNS5sb2dzKDApID09PSBCeXRlcygnMTUnKSkKICAgIGdpdHhuYSAxNCBMb2dzIDAKICAgIGJ5dGVjIDE3IC8vICIxNSIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTY4CiAgICAvLyBhc3NlcnQoYXBwMTYubG9ncygwKSA9PT0gQnl0ZXMoJzE2JykpCiAgICBpdHhuYSBMb2dzIDAKICAgIGJ5dGVjIDE4IC8vICIxNiIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTUKICAgIC8vIHB1YmxpYyB0ZXN0MygpIHsKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4KCm1haW5fdGVzdDJfcm91dGVANjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTgKICAgIC8vIHB1YmxpYyB0ZXN0MigpIHsKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgaW50Y18wIC8vIDAKICAgIGJ1cnkgNQogICAgcHVzaGJ5dGVzICIiCiAgICBidXJ5IDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjAKICAgIC8vIGlmIChUeG4ubnVtQXBwQXJncykgewogICAgdHhuIE51bUFwcEFyZ3MKICAgIGJ6IG1haW5fZWxzZV9ib2R5QDI1CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjYxCiAgICAvLyBjb25zdCBhcmdzID0gW0J5dGVzKCcxJyksIEJ5dGVzKCcyJyldIGFzIGNvbnN0CiAgICBieXRlY18zIC8vICIxIgogICAgYnVyeSA3CiAgICBieXRlYyA0IC8vICIyIgogICAgYnVyeSA2CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjY1CiAgICAvLyBhcHBBcmdzOiBhcmdzLAogICAgcHVzaGludCAyIC8vIDIKICAgIGJ1cnkgMwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo2NgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLk5vT3AsCiAgICBpbnRjXzAgLy8gMAogICAgYnVyeSAxCiAgICBwdXNoaW50IDEgLy8gMQogICAgYnVyeSAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjY3CiAgICAvLyBub3RlOiAnd2l0aCBhcmdzIHBhcmFtIHNldCcsCiAgICBieXRlYyAxOSAvLyAid2l0aCBhcmdzIHBhcmFtIHNldCIKCm1haW5fYWZ0ZXJfaWZfZWxzZUAyNjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzcKICAgIC8vIGNvbnN0IGNyZWF0ZUFwcFR4biA9IGNyZWF0ZUFwcFBhcmFtcy5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgaXR4bl9maWVsZCBOb3RlCiAgICBkaWcgMQogICAgYnogbWFpbl9uZXh0X2ZpZWxkQDI4CiAgICBkdXAKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCgptYWluX25leHRfZmllbGRAMjg6CiAgICBkaWcgNgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGRpZyA1CiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgZGlnIDIKICAgIGludGNfMyAvLyAzCiAgICA+PQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3NwogICAgLy8gY29uc3QgY3JlYXRlQXBwVHhuID0gY3JlYXRlQXBwUGFyYW1zLnN1Ym1pdCgpCiAgICBieiBtYWluX25leHRfZmllbGRAMzAKICAgIGRpZyA0CiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKbWFpbl9uZXh0X2ZpZWxkQDMwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo2Mi02OAogICAgLy8gY3JlYXRlQXBwUGFyYW1zID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBhcHBBcmdzOiBhcmdzLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uTm9PcCwKICAgIC8vICAgbm90ZTogJ3dpdGggYXJncyBwYXJhbSBzZXQnLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzcKICAgIC8vIGNvbnN0IGNyZWF0ZUFwcFR4biA9IGNyZWF0ZUFwcFBhcmFtcy5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gTm90ZQogICAgYnVyeSA0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjc4CiAgICAvLyBhc3NlcnQoY3JlYXRlQXBwVHhuLmFwcEFyZ3MoMCkgPT09IEJ5dGVzKCcxJyksICdjb3JyZWN0IGFyZ3MgdXNlZCAxJykKICAgIGl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBieXRlY18zIC8vICIxIgogICAgPT0KICAgIGFzc2VydCAvLyBjb3JyZWN0IGFyZ3MgdXNlZCAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjc5CiAgICAvLyBhc3NlcnQoY3JlYXRlQXBwVHhuLmFwcEFyZ3MoMSkgPT09IEJ5dGVzKCcyJyksICdjb3JyZWN0IGFyZ3MgdXNlZCAyJykKICAgIGl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBieXRlYyA0IC8vICIyIgogICAgPT0KICAgIGFzc2VydCAvLyBjb3JyZWN0IGFyZ3MgdXNlZCAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgxCiAgICAvLyBpZiAoVHhuLm51bUFwcEFyZ3MgPiAxKSB7CiAgICB0eG4gTnVtQXBwQXJncwogICAgcHVzaGludCAxIC8vIDEKICAgID4KICAgIGJ6IG1haW5fYWZ0ZXJfaWZfZWxzZUAzMgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4Mi04OQogICAgLy8gY29uc3QgY3JlYXRlQXBwVHhuMiA9IGl0eG4KICAgIC8vICAgLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgICBhcHBBcmdzOiBbQnl0ZXMoJzQyJyldLAogICAgLy8gICB9KQogICAgLy8gICAuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6ODcKICAgIC8vIGFwcEFyZ3M6IFtCeXRlcygnNDInKV0sCiAgICBieXRlYyAyMCAvLyAiNDIiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4NgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgyLTg4CiAgICAvLyBjb25zdCBjcmVhdGVBcHBUeG4yID0gaXR4bgogICAgLy8gICAuYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgICBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICAgIGFwcEFyZ3M6IFtCeXRlcygnNDInKV0sCiAgICAvLyAgIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgyLTg5CiAgICAvLyBjb25zdCBjcmVhdGVBcHBUeG4yID0gaXR4bgogICAgLy8gICAuYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgICBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICAgIGFwcEFyZ3M6IFtCeXRlcygnNDInKV0sCiAgICAvLyAgIH0pCiAgICAvLyAgIC5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTAKICAgIC8vIGFzc2VydChjcmVhdGVBcHBUeG4yLmFwcEFyZ3MoMCkgPT09IEJ5dGVzKCc0MicpLCAnY29ycmVjdCBhcmdzIHVzZWQgMicpCiAgICBpdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgYnl0ZWMgMjAgLy8gIjQyIgogICAgPT0KICAgIGFzc2VydCAvLyBjb3JyZWN0IGFyZ3MgdXNlZCAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjkxCiAgICAvLyBhc3NlcnQoY3JlYXRlQXBwVHhuLm5vdGUgPT09IEJ5dGVzKCd3aXRoIGFyZ3MgcGFyYW0gc2V0JykpCiAgICBkaWcgMwogICAgYnl0ZWMgMTkgLy8gIndpdGggYXJncyBwYXJhbSBzZXQiCiAgICA9PQogICAgYXNzZXJ0CgptYWluX2FmdGVyX2lmX2Vsc2VAMzI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjU4CiAgICAvLyBwdWJsaWMgdGVzdDIoKSB7CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCgptYWluX2Vsc2VfYm9keUAyNToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzMKICAgIC8vIGFwcEFyZ3M6IFtCeXRlcygnMycpLCAnNCcsIEJ5dGVzKCc1JyldLAogICAgYnl0ZWMgNiAvLyAiMyIKICAgIGJ1cnkgNwogICAgYnl0ZWMgNyAvLyAiNCIKICAgIGJ1cnkgNgogICAgYnl0ZWMgOCAvLyAiNSIKICAgIGJ1cnkgNQogICAgaW50Y18zIC8vIDMKICAgIGJ1cnkgMwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3NAogICAgLy8gbm90ZTogJ25vIGFyZ3MgcGFyYW0gc2V0JywKICAgIHB1c2hieXRlcyAibm8gYXJncyBwYXJhbSBzZXQiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjcwCiAgICAvLyBjcmVhdGVBcHBQYXJhbXMgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICBpbnRjXzAgLy8gMAogICAgYnVyeSAzCiAgICBiIG1haW5fYWZ0ZXJfaWZfZWxzZUAyNgoKbWFpbl90ZXN0MV9yb3V0ZUA1OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMAogICAgLy8gcHVibGljIHRlc3QxKCkgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgKICAgIC8vIG5hbWUgPSBHbG9iYWxTdGF0ZSh7IGluaXRpYWxWYWx1ZTogQnl0ZXMoKSB9KQogICAgYnl0ZWNfMiAvLyAibmFtZSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEKICAgIC8vIHRoaXMubmFtZS52YWx1ZSA9IEJ5dGVzKCdBU1QxJykKICAgIGJ5dGVjIDkgLy8gIkFTVDEiCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNQogICAgLy8gYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICBpbnRjXzAgLy8gMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4CiAgICAvLyBuYW1lID0gR2xvYmFsU3RhdGUoeyBpbml0aWFsVmFsdWU6IEJ5dGVzKCkgfSkKICAgIGJ5dGVjXzIgLy8gIm5hbWUiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1CiAgICAvLyBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4CiAgICAvLyBtYW5hZ2VyOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5CiAgICAvLyByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIGR1cAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4CiAgICAvLyBuYW1lID0gR2xvYmFsU3RhdGUoeyBpbml0aWFsVmFsdWU6IEJ5dGVzKCkgfSkKICAgIGJ5dGVjXzIgLy8gIm5hbWUiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIyCiAgICAvLyB0aGlzLm5hbWUudmFsdWUgPSBCeXRlcygnQVNUMicpCiAgICBieXRlYyAxMCAvLyAiQVNUMiIKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIzCiAgICAvLyBjb25zdCBhc3NldDFfdHhuID0gYXNzZXRQYXJhbXMuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIGR1cAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFJlc2VydmUKICAgIGRpZyAxCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TWFuYWdlcgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNwogICAgLy8gZGVjaW1hbHM6IDMsCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBDb25maWdBc3NldERlY2ltYWxzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2CiAgICAvLyB1bml0TmFtZTogJ3VuaXQnLAogICAgYnl0ZWMgNSAvLyAidW5pdCIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRVbml0TmFtZQogICAgdW5jb3ZlciAyCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TmFtZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNAogICAgLy8gdG90YWw6IDEwMDAsCiAgICBpbnRjIDQgLy8gMTAwMAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFRvdGFsCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzLTIwCiAgICAvLyBjb25zdCBhc3NldFBhcmFtcyA9IGl0eG4uYXNzZXRDb25maWcoewogICAgLy8gICB0b3RhbDogMTAwMCwKICAgIC8vICAgYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICAvLyAgIHVuaXROYW1lOiAndW5pdCcsCiAgICAvLyAgIGRlY2ltYWxzOiAzLAogICAgLy8gICBtYW5hZ2VyOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vICAgcmVzZXJ2ZTogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyB9KQogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMwogICAgLy8gY29uc3QgYXNzZXQxX3R4biA9IGFzc2V0UGFyYW1zLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBDb25maWdBc3NldE5hbWUKICAgIGl0eG4gQ3JlYXRlZEFzc2V0SUQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjUKICAgIC8vIGFzc2V0TmFtZTogdGhpcy5uYW1lLnZhbHVlLAogICAgaW50Y18wIC8vIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OAogICAgLy8gbmFtZSA9IEdsb2JhbFN0YXRlKHsgaW5pdGlhbFZhbHVlOiBCeXRlcygpIH0pCiAgICBieXRlY18yIC8vICJuYW1lIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyNQogICAgLy8gYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyNwogICAgLy8gY29uc3QgYXNzZXQyX3R4biA9IGFzc2V0UGFyYW1zLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICBkaWcgMwogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFJlc2VydmUKICAgIGRpZyA0CiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TWFuYWdlcgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNwogICAgLy8gZGVjaW1hbHM6IDMsCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBDb25maWdBc3NldERlY2ltYWxzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2CiAgICAvLyB1bml0TmFtZTogJ3VuaXQnLAogICAgYnl0ZWMgNSAvLyAidW5pdCIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRVbml0TmFtZQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE5hbWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQKICAgIC8vIHRvdGFsOiAxMDAwLAogICAgaW50YyA0IC8vIDEwMDAKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRUb3RhbAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMy0yMAogICAgLy8gY29uc3QgYXNzZXRQYXJhbXMgPSBpdHhuLmFzc2V0Q29uZmlnKHsKICAgIC8vICAgdG90YWw6IDEwMDAsCiAgICAvLyAgIGFzc2V0TmFtZTogdGhpcy5uYW1lLnZhbHVlLAogICAgLy8gICB1bml0TmFtZTogJ3VuaXQnLAogICAgLy8gICBkZWNpbWFsczogMywKICAgIC8vICAgbWFuYWdlcjogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyAgIHJlc2VydmU6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gfSkKICAgIGludGNfMyAvLyAzCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjcKICAgIC8vIGNvbnN0IGFzc2V0Ml90eG4gPSBhc3NldFBhcmFtcy5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gQ29uZmlnQXNzZXROYW1lCiAgICBpdHhuIENyZWF0ZWRBc3NldElECiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI5CiAgICAvLyBhc3NlcnQoYXNzZXQxX3R4bi5hc3NldE5hbWUgPT09IEJ5dGVzKCdBU1QxJyksICdhc3NldDFfdHhuIGlzIGNvcnJlY3QnKQogICAgdW5jb3ZlciAzCiAgICBieXRlYyA5IC8vICJBU1QxIgogICAgPT0KICAgIGFzc2VydCAvLyBhc3NldDFfdHhuIGlzIGNvcnJlY3QKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzAKICAgIC8vIGFzc2VydChhc3NldDJfdHhuLmFzc2V0TmFtZSA9PT0gQnl0ZXMoJ0FTVDInKSwgJ2Fzc2V0Ml90eG4gaXMgY29ycmVjdCcpCiAgICBzd2FwCiAgICBieXRlYyAxMCAvLyAiQVNUMiIKICAgID09CiAgICBhc3NlcnQgLy8gYXNzZXQyX3R4biBpcyBjb3JyZWN0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjMxCiAgICAvLyBhc3NlcnQoYXNzZXQxX3R4bi5jcmVhdGVkQXNzZXQubmFtZSA9PT0gQnl0ZXMoJ0FTVDEnKSwgJ2NyZWF0ZWQgYXNzZXQgMSBpcyBjb3JyZWN0JykKICAgIHN3YXAKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXROYW1lCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBieXRlYyA5IC8vICJBU1QxIgogICAgPT0KICAgIGFzc2VydCAvLyBjcmVhdGVkIGFzc2V0IDEgaXMgY29ycmVjdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozMgogICAgLy8gYXNzZXJ0KGFzc2V0Ml90eG4uY3JlYXRlZEFzc2V0Lm5hbWUgPT09IEJ5dGVzKCdBU1QyJyksICdjcmVhdGVkIGFzc2V0IDIgaXMgY29ycmVjdCcpCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TmFtZQogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgYnl0ZWMgMTAgLy8gIkFTVDIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNyZWF0ZWQgYXNzZXQgMiBpcyBjb3JyZWN0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQ0CiAgICAvLyBjb25zdCBbYXBwQ3JlYXRlVHhuLCBhc3NldDNfdHhuXSA9IGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fYmVnaW4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzQtMzgKICAgIC8vIGNvbnN0IGFwcENyZWF0ZVBhcmFtcyA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgZmVlOiAwLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjM3CiAgICAvLyBmZWU6IDAsCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDQKICAgIC8vIGNvbnN0IFthcHBDcmVhdGVUeG4sIGFzc2V0M190eG5dID0gaXR4bi5zdWJtaXRHcm91cChhcHBDcmVhdGVQYXJhbXMsIGFzc2V0UGFyYW1zKQogICAgaXR4bl9uZXh0CiAgICBkdXAKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRSZXNlcnZlCiAgICBkaWcgMQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE1hbmFnZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcKICAgIC8vIGRlY2ltYWxzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXREZWNpbWFscwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNgogICAgLy8gdW5pdE5hbWU6ICd1bml0JywKICAgIGJ5dGVjIDUgLy8gInVuaXQiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VW5pdE5hbWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDEKICAgIC8vIGFzc2V0TmFtZTogJ0FTVDMnLAogICAgYnl0ZWMgMTEgLy8gIkFTVDMiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TmFtZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNAogICAgLy8gdG90YWw6IDEwMDAsCiAgICBpbnRjIDQgLy8gMTAwMAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFRvdGFsCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzLTIwCiAgICAvLyBjb25zdCBhc3NldFBhcmFtcyA9IGl0eG4uYXNzZXRDb25maWcoewogICAgLy8gICB0b3RhbDogMTAwMCwKICAgIC8vICAgYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICAvLyAgIHVuaXROYW1lOiAndW5pdCcsCiAgICAvLyAgIGRlY2ltYWxzOiAzLAogICAgLy8gICBtYW5hZ2VyOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vICAgcmVzZXJ2ZTogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyB9KQogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0NAogICAgLy8gY29uc3QgW2FwcENyZWF0ZVR4biwgYXNzZXQzX3R4bl0gPSBpdHhuLnN1Ym1pdEdyb3VwKGFwcENyZWF0ZVBhcmFtcywgYXNzZXRQYXJhbXMpCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBDb25maWdBc3NldE5hbWUKICAgIGdpdHhuIDAgQ3JlYXRlZEFwcGxpY2F0aW9uSUQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDYKICAgIC8vIGFzc2VydChhcHBDcmVhdGVUeG4uY3JlYXRlZEFwcCwgJ2FwcCBpcyBjcmVhdGVkJykKICAgIGFzc2VydCAvLyBhcHAgaXMgY3JlYXRlZAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0NwogICAgLy8gYXNzZXJ0KGFzc2V0M190eG4uYXNzZXROYW1lID09PSBCeXRlcygnQVNUMycpLCAnYXNzZXQzX3R4biBpcyBjb3JyZWN0JykKICAgIGJ5dGVjIDExIC8vICJBU1QzIgogICAgPT0KICAgIGFzc2VydCAvLyBhc3NldDNfdHhuIGlzIGNvcnJlY3QKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTUKICAgIC8vIGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fYmVnaW4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTAKICAgIC8vIG5vdGU6ICczcmQnLAogICAgYnl0ZWMgMjEgLy8gIjNyZCIKICAgIGl0eG5fZmllbGQgTm90ZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozNC0zOAogICAgLy8gY29uc3QgYXBwQ3JlYXRlUGFyYW1zID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBmZWU6IDAsCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzcKICAgIC8vIGZlZTogMCwKICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1NQogICAgLy8gaXR4bi5zdWJtaXRHcm91cChhcHBDcmVhdGVQYXJhbXMsIGFzc2V0UGFyYW1zKQogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUzCiAgICAvLyBub3RlOiAnM3JkJywKICAgIGJ5dGVjIDIxIC8vICIzcmQiCiAgICBpdHhuX2ZpZWxkIE5vdGUKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRSZXNlcnZlCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TWFuYWdlcgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNwogICAgLy8gZGVjaW1hbHM6IDMsCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBDb25maWdBc3NldERlY2ltYWxzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2CiAgICAvLyB1bml0TmFtZTogJ3VuaXQnLAogICAgYnl0ZWMgNSAvLyAidW5pdCIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRVbml0TmFtZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0MQogICAgLy8gYXNzZXROYW1lOiAnQVNUMycsCiAgICBieXRlYyAxMSAvLyAiQVNUMyIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0CiAgICAvLyB0b3RhbDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMtMjAKICAgIC8vIGNvbnN0IGFzc2V0UGFyYW1zID0gaXR4bi5hc3NldENvbmZpZyh7CiAgICAvLyAgIHRvdGFsOiAxMDAwLAogICAgLy8gICBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIC8vICAgdW5pdE5hbWU6ICd1bml0JywKICAgIC8vICAgZGVjaW1hbHM6IDMsCiAgICAvLyAgIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vIH0pCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjU1CiAgICAvLyBpdHhuLnN1Ym1pdEdyb3VwKGFwcENyZWF0ZVBhcmFtcywgYXNzZXRQYXJhbXMpCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMAogICAgLy8gcHVibGljIHRlc3QxKCkgewogICAgcHVzaGludCAxIC8vIDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAMTE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjcKICAgIC8vIGV4cG9ydCBjbGFzcyBJdHhuRGVtb0NvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgYm56IG1haW5fYWZ0ZXJfaWZfZWxzZUAxNQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gY3JlYXRpbmcKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4K", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCg==" + }, + "byteCode": { + "approval": "CiAFAAYFA+gHJhYDCYEBBwk2GgCwgQEEbmFtZQExATIEdW5pdAEzATQBNQRBU1QxBEFTVDIEQVNUMwIxMAIxMQIxMgIxMwIxNAIxNQIxNhN3aXRoIGFyZ3MgcGFyYW0gc2V0AjQyAzNyZCJHA4AARwIxGEAABCqAAGcxG0EEKIIEBCAlT5EE8ZCFJATfkg83BD1GNFw2GgCOBAMmAm4AngACIkMxGRREMRhEgfwPr4ADgPwPTFCAAUhQsSWyOCuyGiSyGSiyQiiyQEmyQEmyQEmyQCOyECKyAbO0QbRDtDglEkRMgQISRLVAAChLA1BLAxUiSwEPIksCTwJNJUsCDyVLA08CTUsCTAlJSwIMSwFLA08CTUsHTwNPAlJPA0xQTwMSRLVAAUsETwJPA1JPA1ASRIEBEkS1QgAoEkSBAUMxGRREMRhEsSuyGiSyGSiyQimyQCOyECKyAbYoskIpskAnBLIaJLIZI7IQIrIBtiiyQimyQCcGshokshkjshAisgG2KLJCKbJAJweyGiSyGSOyECKyAbYoskIpskAnCLIaJLIZI7IQIrIBtiiyQimyQIABNrIaJLIZI7IQIrIBtiiyQimyQIABN7IaJLIZI7IQIrIBtiiyQimyQIABOLIaJLIZI7IQIrIBtiiyQimyQIABObIaJLIZI7IQIrIBtiiyQimyQCcMshokshkjshAisgG2KLJCKbJAJw2yGiSyGSOyECKyAbYoskIpskAnDrIaJLIZI7IQIrIBtiiyQimyQCcPshokshkjshAisgG2KLJCKbJAJxCyGiSyGSOyECKyAbYoskIpskAnEbIaJLIZI7IQIrIBtiiyQimyQCcSshokshkjshAisgGzuAA6ACsSRLgBOgAnBBJEuAI6ACcGEkS4AzoAJwcSRLgEOgAnCBJEuAU6AIABNhJEuAY6AIABNxJEuAc6AIABOBJEuAg6AIABORJEuAk6ACcMEkS4CjoAJw0SRLgLOgAnDhJEuAw6ACcPEkS4DToAJxASRLgOOgAnERJEtToAJxISRIEBQzEZFEQxGEQiRQWAAEUBMRtBAH0rRQcnBEUGgQJFAyJFAYEBRQInE7GyBUsBQQADSbIZSwayGksFshpLAiUPQQAESwSyGiiyQiiyQCOyECKyAbO0BUUEtRoAKxJEtRoBJwQSRDEbgQENQQAisScUshokshkoskIoskAjshAisgGztRoAJxQSREsDJxMSRIEBQycGRQcnB0UGJwhFBSVFA4ARbm8gYXJncyBwYXJhbSBzZXQiRQNC/28xGRREMRhEKicJZyIqZUQyCkkqJwpnsUmyKksBsiklsiMnBbIlTwKyJiEEsiIlshAisgGztCa0PCIqZUSxSwOyKksEsiklsiMnBbIlsiYhBLIiJbIQIrIBs7QmtDxPAycJEkRMJwoSRExxBEQnCRJEcQREJwoSRLEoskIoskAjshAisgG2SbIqSwGyKSWyIycFsiUnC7ImIQSyIiWyECKyAbO0JrcAPUQnCxJEsScVsgUoskIoskAjshAisgG2JxWyBbIqsiklsiMnBbIlJwuyJiEEsiIlshAisgGzgQFDMRlA+/YxGBREgQFD", + "clear": "CoEBQw==" + }, + "compilerInfo": { + "compiler": "puya", + "compilerVersion": { + "major": 4, + "minor": 2, + "patch": 1 + } + }, + "events": [], + "templateVariables": {} +} \ No newline at end of file diff --git a/tests/approvals/out/o2/itxn/ItxnDemoContract.ir/ItxnDemoContract.approval.0.ssa.ir b/tests/approvals/out/o2/itxn/ItxnDemoContract.ir/ItxnDemoContract.approval.0.ssa.ir index 22f0e1b1b..f2a677e10 100644 --- a/tests/approvals/out/o2/itxn/ItxnDemoContract.ir/ItxnDemoContract.approval.0.ssa.ir +++ b/tests/approvals/out/o2/itxn/ItxnDemoContract.ir/ItxnDemoContract.approval.0.ssa.ir @@ -1,50 +1,85 @@ -main tests/approvals/itxn.algo.ts::ItxnDemoContract.approvalProgram: - block@0: // L10 +main @algorandfoundation/algorand-typescript/arc4/index.d.ts::Contract.approvalProgram: + block@0: // L1 let reinterpret_bool%0#0: bool = (txn ApplicationID) goto reinterpret_bool%0#0 ? block@2 : block@1 block@1: // if_body_L1 tests/approvals/itxn.algo.ts::ItxnDemoContract.constructor() goto block@2 block@2: // after_if_else_L1 - let reinterpret_bool%1#0: bool = (txn NumAppArgs) - goto reinterpret_bool%1#0 ? block@3 : block@15 - block@3: // if_body_L11 - let tmp%0#0: bytes = ((txnas ApplicationArgs) 0u) - switch tmp%0#0 {"test1" => block@4, "test2" => block@6, "test3" => block@8, "test4" => block@10, * => block@12} - block@4: // switch_case_0_L13 - goto block@5 - block@5: // L13 - tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() - goto block@14 - block@6: // switch_case_1_L16 - goto block@7 - block@7: // L16 - tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() - goto block@14 - block@8: // switch_case_2_L19 - goto block@9 - block@9: // L19 - goto block@11 - block@10: // switch_case_3_L20 - goto block@11 - block@11: // L20 - goto block@14 - block@12: // switch_case_default_L12 - goto block@13 - block@13: // switch_case_next_L12 - goto block@14 - block@14: // L12 - goto block@15 - block@15: // after_if_else_L11 - return 1u + let tmp%0#0: bool = tests/approvals/itxn.algo.ts::ItxnDemoContract.__puya_arc4_router__() + return tmp%0#0 subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.constructor() -> void: block@0: // L7 (app_global_put "name" 0x) return +subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.__puya_arc4_router__() -> bool: + block@0: // L7 + let tmp%0#0: uint64 = (txn NumAppArgs) + let tmp%1#0: bool = (!= tmp%0#0 0u) + goto tmp%1#0 ? block@1 : block@8 + block@1: // abi_routing_L7 + let tmp%2#0: bytes = (txna ApplicationArgs 0) + switch tmp%2#0 {method "test1()void" => block@2, method "test2()void" => block@3, method "test3()void" => block@4, method "test4()void" => block@5, * => block@6} + block@2: // test1_route_L10 + let tmp%3#0: uint64 = (txn OnCompletion) + let tmp%4#0: bool = (== tmp%3#0 NoOp) + (assert tmp%4#0) // OnCompletion is not NoOp + let tmp%5#0: uint64 = (txn ApplicationID) + let tmp%6#0: bool = (!= tmp%5#0 0u) + (assert tmp%6#0) // can only call when not creating + tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() + return 1u + block@3: // test2_route_L58 + let tmp%7#0: uint64 = (txn OnCompletion) + let tmp%8#0: bool = (== tmp%7#0 NoOp) + (assert tmp%8#0) // OnCompletion is not NoOp + let tmp%9#0: uint64 = (txn ApplicationID) + let tmp%10#0: bool = (!= tmp%9#0 0u) + (assert tmp%10#0) // can only call when not creating + tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() + return 1u + block@4: // test3_route_L95 + let tmp%11#0: uint64 = (txn OnCompletion) + let tmp%12#0: bool = (== tmp%11#0 NoOp) + (assert tmp%12#0) // OnCompletion is not NoOp + let tmp%13#0: uint64 = (txn ApplicationID) + let tmp%14#0: bool = (!= tmp%13#0 0u) + (assert tmp%14#0) // can only call when not creating + tests/approvals/itxn.algo.ts::ItxnDemoContract.test3() + return 1u + block@5: // test4_route_L171 + let tmp%15#0: uint64 = (txn OnCompletion) + let tmp%16#0: bool = (== tmp%15#0 NoOp) + (assert tmp%16#0) // OnCompletion is not NoOp + let tmp%17#0: uint64 = (txn ApplicationID) + let tmp%18#0: bool = (!= tmp%17#0 0u) + (assert tmp%18#0) // can only call when not creating + tests/approvals/itxn.algo.ts::ItxnDemoContract.test4() + return 1u + block@6: // switch_case_default_L7 + goto block@7 + block@7: // switch_case_next_L7 + goto block@12 + block@8: // bare_routing_L7 + let tmp%19#0: uint64 = (txn OnCompletion) + switch tmp%19#0 {0u => block@9, * => block@10} + block@9: // __algots__.defaultCreate_L7 + let tmp%20#0: uint64 = (txn ApplicationID) + let tmp%21#0: bool = (== tmp%20#0 0u) + (assert tmp%21#0) // can only call when creating + tests/approvals/itxn.algo.ts::ItxnDemoContract.__algots__.defaultCreate() + return 1u + block@10: // switch_case_default_L7 + goto block@11 + block@11: // switch_case_next_L7 + goto block@12 + block@12: // after_if_else_L7 + return 0u + subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: - block@0: // L27 + block@0: // L10 (app_global_put "name" "AST1") let assetParams#0: itxn_field_set = itxn_field_set(0) let assetParams%%param_Fee_idx_0#0: uint64 = 0u @@ -119,7 +154,7 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: ((itxn_field TypeEnum) assetParams%%param_TypeEnum_idx_0#0) ((itxn_field Fee) assetParams%%param_Fee_idx_0#0) goto block@1 - block@1: // next_txn_L40 + block@1: // next_txn_L23 itxn_submit let asset1_txn#0: itxn_group_idx = itxn_group_idx(0) let asset1_txn._is_last#0: bool = 1u @@ -199,7 +234,7 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: ((itxn_field TypeEnum) assetParams%%param_TypeEnum_idx_0#0) ((itxn_field Fee) assetParams%%param_Fee_idx_0#0) goto block@2 - block@2: // next_txn_L44 + block@2: // next_txn_L27 itxn_submit let asset2_txn#0: itxn_group_idx = itxn_group_idx(0) let asset2_txn._is_last#0: bool = 1u @@ -341,7 +376,7 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: ((itxn_field TypeEnum) appCreateParams%%param_TypeEnum_idx_0#0) ((itxn_field Fee) appCreateParams%%param_Fee_idx_0#0) goto block@3 - block@3: // next_txn_L61 + block@3: // next_txn_L44 itxn_next ((itxn_field ConfigAssetReserve) assetParams%%param_ConfigAssetReserve_idx_0#0) ((itxn_field ConfigAssetManager) assetParams%%param_ConfigAssetManager_idx_0#0) @@ -352,7 +387,7 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: ((itxn_field TypeEnum) assetParams%%param_TypeEnum_idx_0#0) ((itxn_field Fee) assetParams%%param_Fee_idx_0#0) goto block@4 - block@4: // next_txn_L61 + block@4: // next_txn_L44 itxn_submit let appCreateTxn#0: itxn_group_idx = itxn_group_idx(0) let asset3_txn#0: itxn_group_idx = itxn_group_idx(1) @@ -480,7 +515,7 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: let asset3_txn.StateProofPK#0: bytes = itxn[asset3_txn#0].StateProofPK let asset3_txn.NumApprovalProgramPages#0: uint64 = itxn[asset3_txn#0].NumApprovalProgramPages let asset3_txn.NumClearStateProgramPages#0: uint64 = itxn[asset3_txn#0].NumClearStateProgramPages - let reinterpret_bool%0#0: bool = appCreateTxn.ApplicationID#0 + let reinterpret_bool%0#0: bool = appCreateTxn.CreatedApplicationID#0 (assert reinterpret_bool%0#0) // app is created let tmp%4#0: bool = (== asset3_txn.ConfigAssetName#0 "AST3") (assert tmp%4#0) // asset3_txn is correct @@ -493,23 +528,23 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: itxn_begin let is_Note_count_gte_1%0#0: bool = (>= appCreateParams%%Note_length#1 1u) goto is_Note_count_gte_1%0#0 ? block@5 : block@6 - block@5: // set_Note_0_to_0_L72 + block@5: // set_Note_0_to_0_L55 ((itxn_field Note) appCreateParams%%param_Note_idx_0#0) goto block@6 - block@6: // next_field_L72 + block@6: // next_field_L55 ((itxn_field ClearStateProgramPages) appCreateParams%%param_ClearStateProgramPages_idx_0#0) ((itxn_field ApprovalProgramPages) appCreateParams%%param_ApprovalProgramPages_idx_0#0) ((itxn_field TypeEnum) appCreateParams%%param_TypeEnum_idx_0#0) ((itxn_field Fee) appCreateParams%%param_Fee_idx_0#0) goto block@7 - block@7: // next_txn_L72 + block@7: // next_txn_L55 itxn_next let is_Note_count_gte_1%1#0: bool = (>= assetParams%%Note_length#1 1u) goto is_Note_count_gte_1%1#0 ? block@8 : block@9 - block@8: // set_Note_0_to_0_L72 + block@8: // set_Note_0_to_0_L55 ((itxn_field Note) assetParams%%param_Note_idx_0#0) goto block@9 - block@9: // next_field_L72 + block@9: // next_field_L55 ((itxn_field ConfigAssetReserve) assetParams%%param_ConfigAssetReserve_idx_0#0) ((itxn_field ConfigAssetManager) assetParams%%param_ConfigAssetManager_idx_0#0) ((itxn_field ConfigAssetDecimals) assetParams%%param_ConfigAssetDecimals_idx_0#0) @@ -519,26 +554,26 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: ((itxn_field TypeEnum) assetParams%%param_TypeEnum_idx_0#0) ((itxn_field Fee) assetParams%%param_Fee_idx_0#0) goto block@10 - block@10: // next_txn_L72 + block@10: // next_txn_L55 itxn_submit return subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() -> void: - block@0: // L75 + block@0: // L58 let createAppParams%%param_OnCompletion_idx_0#2: uint64 = undefined let createAppParams%%param_ApplicationArgs_idx_2#3: bytes = undefined let reinterpret_bool%0#0: bool = (txn NumAppArgs) goto reinterpret_bool%0#0 ? block@1 : block@2 - block@1: // if_body_L77 + block@1: // if_body_L60 let (args.0#0: bytes, args.1#0: bytes) = ("1", "2") let createAppParams#0: itxn_field_set = itxn_field_set(0) let createAppParams%%param_Fee_idx_0#0: uint64 = 0u let createAppParams%%Fee_length#0: uint64 = 1u let createAppParams%%param_TypeEnum_idx_0#0: uint64 = 6u let createAppParams%%TypeEnum_length#0: uint64 = 1u - let createAppParams%%param_ApprovalProgramPages_idx_0#0: bytes = "\t\xc2\x81\x01" + let createAppParams%%param_ApprovalProgramPages_idx_0#0: bytes = 0x098101 let createAppParams%%ApprovalProgramPages_length#0: uint64 = 1u - let createAppParams%%param_ClearStateProgramPages_idx_0#0: bytes = "\t\xc2\x81\x01" + let createAppParams%%param_ClearStateProgramPages_idx_0#0: bytes = 0x098101 let createAppParams%%ClearStateProgramPages_length#0: uint64 = 1u let createAppParams%%param_ApplicationArgs_idx_0#0: bytes = args.0#0 let createAppParams%%param_ApplicationArgs_idx_1#0: bytes = args.1#0 @@ -592,15 +627,15 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() -> void: let createAppParams%%Assets_length#0: uint64 = 0u let createAppParams%%Applications_length#0: uint64 = 0u goto block@3 - block@2: // else_body_L86 + block@2: // else_body_L69 let createAppParams#1: itxn_field_set = itxn_field_set(1) let createAppParams%%param_Fee_idx_0#1: uint64 = 0u let createAppParams%%Fee_length#1: uint64 = 1u let createAppParams%%param_TypeEnum_idx_0#1: uint64 = 6u let createAppParams%%TypeEnum_length#1: uint64 = 1u - let createAppParams%%param_ApprovalProgramPages_idx_0#1: bytes = "\t\xc2\x81\x01" + let createAppParams%%param_ApprovalProgramPages_idx_0#1: bytes = 0x098101 let createAppParams%%ApprovalProgramPages_length#1: uint64 = 1u - let createAppParams%%param_ClearStateProgramPages_idx_0#1: bytes = "\t\xc2\x81\x01" + let createAppParams%%param_ClearStateProgramPages_idx_0#1: bytes = 0x098101 let createAppParams%%ClearStateProgramPages_length#1: uint64 = 1u let createAppParams%%param_ApplicationArgs_idx_0#1: bytes = "3" let createAppParams%%param_ApplicationArgs_idx_1#1: bytes = "4" @@ -654,7 +689,7 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() -> void: let createAppParams%%Assets_length#1: uint64 = 0u let createAppParams%%Applications_length#1: uint64 = 0u goto block@3 - block@3: // after_if_else_L77 + block@3: // after_if_else_L60 let createAppParams%%param_Note_idx_0#2: bytes = φ(createAppParams%%param_Note_idx_0#0 <- block@1, createAppParams%%param_Note_idx_0#1 <- block@2) let createAppParams%%OnCompletion_length#2: uint64 = φ(createAppParams%%OnCompletion_length#0 <- block@1, createAppParams%%OnCompletion_length#1 <- block@2) let createAppParams%%param_OnCompletion_idx_0#1: uint64 = φ(createAppParams%%param_OnCompletion_idx_0#0 <- block@1, createAppParams%%param_OnCompletion_idx_0#2 <- block@2) @@ -670,24 +705,24 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() -> void: ((itxn_field Note) createAppParams%%param_Note_idx_0#2) let is_OnCompletion_count_gte_1%0#0: bool = (>= createAppParams%%OnCompletion_length#2 1u) goto is_OnCompletion_count_gte_1%0#0 ? block@4 : block@5 - block@4: // set_OnCompletion_0_to_0_L94 + block@4: // set_OnCompletion_0_to_0_L77 ((itxn_field OnCompletion) createAppParams%%param_OnCompletion_idx_0#1) goto block@5 - block@5: // next_field_L94 + block@5: // next_field_L77 ((itxn_field ApplicationArgs) createAppParams%%param_ApplicationArgs_idx_0#3) ((itxn_field ApplicationArgs) createAppParams%%param_ApplicationArgs_idx_1#3) let is_ApplicationArgs_count_gte_3%0#0: bool = (>= createAppParams%%ApplicationArgs_length#3 3u) goto is_ApplicationArgs_count_gte_3%0#0 ? block@6 : block@7 - block@6: // set_ApplicationArgs_2_to_2_L94 + block@6: // set_ApplicationArgs_2_to_2_L77 ((itxn_field ApplicationArgs) createAppParams%%param_ApplicationArgs_idx_2#2) goto block@7 - block@7: // next_field_L94 + block@7: // next_field_L77 ((itxn_field ClearStateProgramPages) createAppParams%%param_ClearStateProgramPages_idx_0#4) ((itxn_field ApprovalProgramPages) createAppParams%%param_ApprovalProgramPages_idx_0#4) ((itxn_field TypeEnum) createAppParams%%param_TypeEnum_idx_0#4) ((itxn_field Fee) createAppParams%%param_Fee_idx_0#4) goto block@8 - block@8: // next_txn_L94 + block@8: // next_txn_L77 itxn_submit let createAppTxn#0: itxn_group_idx = itxn_group_idx(0) let createAppTxn._is_last#0: bool = 1u @@ -758,6 +793,2492 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() -> void: let tmp%2#0: bytes = itxn[createAppTxn#0].ApplicationArgs[1u] let tmp%3#0: bool = (== tmp%2#0 "2") (assert tmp%3#0) // correct args used 2 - let tmp%4#0: bool = (== createAppTxn.Note#0 "with args param set") - (assert tmp%4#0) + let tmp%4#0: uint64 = (txn NumAppArgs) + let tmp%5#0: bool = (> tmp%4#0 1u) + goto tmp%5#0 ? block@9 : block@11 + block@9: // if_body_L81 + itxn_begin + let inner_txn_params%0#0: itxn_field_set = itxn_field_set(2) + let inner_txn_params%0%%param_Fee_idx_0#0: uint64 = 0u + let inner_txn_params%0%%Fee_length#0: uint64 = 1u + let inner_txn_params%0%%param_TypeEnum_idx_0#0: uint64 = 6u + let inner_txn_params%0%%TypeEnum_length#0: uint64 = 1u + let inner_txn_params%0%%param_ApprovalProgramPages_idx_0#0: bytes = 0x098101 + let inner_txn_params%0%%ApprovalProgramPages_length#0: uint64 = 1u + let inner_txn_params%0%%param_ClearStateProgramPages_idx_0#0: bytes = 0x098101 + let inner_txn_params%0%%ClearStateProgramPages_length#0: uint64 = 1u + let inner_txn_params%0%%param_OnCompletion_idx_0#0: uint64 = 5u + let inner_txn_params%0%%OnCompletion_length#0: uint64 = 1u + let inner_txn_params%0%%param_ApplicationArgs_idx_0#0: bytes = "42" + let inner_txn_params%0%%ApplicationArgs_length#0: uint64 = 1u + let inner_txn_params%0%%Sender_length#0: uint64 = 0u + let inner_txn_params%0%%Note_length#0: uint64 = 0u + let inner_txn_params%0%%Receiver_length#0: uint64 = 0u + let inner_txn_params%0%%Amount_length#0: uint64 = 0u + let inner_txn_params%0%%CloseRemainderTo_length#0: uint64 = 0u + let inner_txn_params%0%%VotePK_length#0: uint64 = 0u + let inner_txn_params%0%%SelectionPK_length#0: uint64 = 0u + let inner_txn_params%0%%VoteFirst_length#0: uint64 = 0u + let inner_txn_params%0%%VoteLast_length#0: uint64 = 0u + let inner_txn_params%0%%VoteKeyDilution_length#0: uint64 = 0u + let inner_txn_params%0%%Type_length#0: uint64 = 0u + let inner_txn_params%0%%XferAsset_length#0: uint64 = 0u + let inner_txn_params%0%%AssetAmount_length#0: uint64 = 0u + let inner_txn_params%0%%AssetSender_length#0: uint64 = 0u + let inner_txn_params%0%%AssetReceiver_length#0: uint64 = 0u + let inner_txn_params%0%%AssetCloseTo_length#0: uint64 = 0u + let inner_txn_params%0%%ApplicationID_length#0: uint64 = 0u + let inner_txn_params%0%%ApprovalProgram_length#0: uint64 = 0u + let inner_txn_params%0%%ClearStateProgram_length#0: uint64 = 0u + let inner_txn_params%0%%RekeyTo_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAsset_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetTotal_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetDecimals_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetDefaultFrozen_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetUnitName_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetName_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetURL_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetMetadataHash_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetManager_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetReserve_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetFreeze_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetClawback_length#0: uint64 = 0u + let inner_txn_params%0%%FreezeAsset_length#0: uint64 = 0u + let inner_txn_params%0%%FreezeAssetAccount_length#0: uint64 = 0u + let inner_txn_params%0%%FreezeAssetFrozen_length#0: uint64 = 0u + let inner_txn_params%0%%GlobalNumUint_length#0: uint64 = 0u + let inner_txn_params%0%%GlobalNumByteSlice_length#0: uint64 = 0u + let inner_txn_params%0%%LocalNumUint_length#0: uint64 = 0u + let inner_txn_params%0%%LocalNumByteSlice_length#0: uint64 = 0u + let inner_txn_params%0%%ExtraProgramPages_length#0: uint64 = 0u + let inner_txn_params%0%%Nonparticipation_length#0: uint64 = 0u + let inner_txn_params%0%%StateProofPK_length#0: uint64 = 0u + let inner_txn_params%0%%Accounts_length#0: uint64 = 0u + let inner_txn_params%0%%Assets_length#0: uint64 = 0u + let inner_txn_params%0%%Applications_length#0: uint64 = 0u + ((itxn_field ApplicationArgs) inner_txn_params%0%%param_ApplicationArgs_idx_0#0) + ((itxn_field OnCompletion) inner_txn_params%0%%param_OnCompletion_idx_0#0) + ((itxn_field ClearStateProgramPages) inner_txn_params%0%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) inner_txn_params%0%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field TypeEnum) inner_txn_params%0%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) inner_txn_params%0%%param_Fee_idx_0#0) + goto block@10 + block@10: // next_txn_L82 + itxn_submit + let createAppTxn2#0: itxn_group_idx = itxn_group_idx(0) + let createAppTxn2._is_last#0: bool = 1u + let createAppTxn2.Sender#0: bytes = itxn[createAppTxn2#0].Sender + let createAppTxn2.Fee#0: uint64 = itxn[createAppTxn2#0].Fee + let createAppTxn2.FirstValid#0: uint64 = itxn[createAppTxn2#0].FirstValid + let createAppTxn2.FirstValidTime#0: uint64 = itxn[createAppTxn2#0].FirstValidTime + let createAppTxn2.LastValid#0: uint64 = itxn[createAppTxn2#0].LastValid + let createAppTxn2.Note#0: bytes = itxn[createAppTxn2#0].Note + let createAppTxn2.Lease#0: bytes = itxn[createAppTxn2#0].Lease + let createAppTxn2.Receiver#0: bytes = itxn[createAppTxn2#0].Receiver + let createAppTxn2.Amount#0: uint64 = itxn[createAppTxn2#0].Amount + let createAppTxn2.CloseRemainderTo#0: bytes = itxn[createAppTxn2#0].CloseRemainderTo + let createAppTxn2.VotePK#0: bytes = itxn[createAppTxn2#0].VotePK + let createAppTxn2.SelectionPK#0: bytes = itxn[createAppTxn2#0].SelectionPK + let createAppTxn2.VoteFirst#0: uint64 = itxn[createAppTxn2#0].VoteFirst + let createAppTxn2.VoteLast#0: uint64 = itxn[createAppTxn2#0].VoteLast + let createAppTxn2.VoteKeyDilution#0: uint64 = itxn[createAppTxn2#0].VoteKeyDilution + let createAppTxn2.Type#0: bytes = itxn[createAppTxn2#0].Type + let createAppTxn2.TypeEnum#0: uint64 = itxn[createAppTxn2#0].TypeEnum + let createAppTxn2.XferAsset#0: uint64 = itxn[createAppTxn2#0].XferAsset + let createAppTxn2.AssetAmount#0: uint64 = itxn[createAppTxn2#0].AssetAmount + let createAppTxn2.AssetSender#0: bytes = itxn[createAppTxn2#0].AssetSender + let createAppTxn2.AssetReceiver#0: bytes = itxn[createAppTxn2#0].AssetReceiver + let createAppTxn2.AssetCloseTo#0: bytes = itxn[createAppTxn2#0].AssetCloseTo + let createAppTxn2.GroupIndex#0: uint64 = itxn[createAppTxn2#0].GroupIndex + let createAppTxn2.TxID#0: bytes = itxn[createAppTxn2#0].TxID + let createAppTxn2.ApplicationID#0: uint64 = itxn[createAppTxn2#0].ApplicationID + let createAppTxn2.OnCompletion#0: uint64 = itxn[createAppTxn2#0].OnCompletion + let createAppTxn2.NumAppArgs#0: uint64 = itxn[createAppTxn2#0].NumAppArgs + let createAppTxn2.NumAccounts#0: uint64 = itxn[createAppTxn2#0].NumAccounts + let createAppTxn2.ApprovalProgram#0: bytes = itxn[createAppTxn2#0].ApprovalProgram + let createAppTxn2.ClearStateProgram#0: bytes = itxn[createAppTxn2#0].ClearStateProgram + let createAppTxn2.RekeyTo#0: bytes = itxn[createAppTxn2#0].RekeyTo + let createAppTxn2.ConfigAsset#0: uint64 = itxn[createAppTxn2#0].ConfigAsset + let createAppTxn2.ConfigAssetTotal#0: uint64 = itxn[createAppTxn2#0].ConfigAssetTotal + let createAppTxn2.ConfigAssetDecimals#0: uint64 = itxn[createAppTxn2#0].ConfigAssetDecimals + let createAppTxn2.ConfigAssetDefaultFrozen#0: bool = itxn[createAppTxn2#0].ConfigAssetDefaultFrozen + let createAppTxn2.ConfigAssetUnitName#0: bytes = itxn[createAppTxn2#0].ConfigAssetUnitName + let createAppTxn2.ConfigAssetName#0: bytes = itxn[createAppTxn2#0].ConfigAssetName + let createAppTxn2.ConfigAssetURL#0: bytes = itxn[createAppTxn2#0].ConfigAssetURL + let createAppTxn2.ConfigAssetMetadataHash#0: bytes = itxn[createAppTxn2#0].ConfigAssetMetadataHash + let createAppTxn2.ConfigAssetManager#0: bytes = itxn[createAppTxn2#0].ConfigAssetManager + let createAppTxn2.ConfigAssetReserve#0: bytes = itxn[createAppTxn2#0].ConfigAssetReserve + let createAppTxn2.ConfigAssetFreeze#0: bytes = itxn[createAppTxn2#0].ConfigAssetFreeze + let createAppTxn2.ConfigAssetClawback#0: bytes = itxn[createAppTxn2#0].ConfigAssetClawback + let createAppTxn2.FreezeAsset#0: uint64 = itxn[createAppTxn2#0].FreezeAsset + let createAppTxn2.FreezeAssetAccount#0: bytes = itxn[createAppTxn2#0].FreezeAssetAccount + let createAppTxn2.FreezeAssetFrozen#0: bool = itxn[createAppTxn2#0].FreezeAssetFrozen + let createAppTxn2.NumAssets#0: uint64 = itxn[createAppTxn2#0].NumAssets + let createAppTxn2.NumApplications#0: uint64 = itxn[createAppTxn2#0].NumApplications + let createAppTxn2.GlobalNumUint#0: uint64 = itxn[createAppTxn2#0].GlobalNumUint + let createAppTxn2.GlobalNumByteSlice#0: uint64 = itxn[createAppTxn2#0].GlobalNumByteSlice + let createAppTxn2.LocalNumUint#0: uint64 = itxn[createAppTxn2#0].LocalNumUint + let createAppTxn2.LocalNumByteSlice#0: uint64 = itxn[createAppTxn2#0].LocalNumByteSlice + let createAppTxn2.ExtraProgramPages#0: uint64 = itxn[createAppTxn2#0].ExtraProgramPages + let createAppTxn2.Nonparticipation#0: bool = itxn[createAppTxn2#0].Nonparticipation + let createAppTxn2.NumLogs#0: uint64 = itxn[createAppTxn2#0].NumLogs + let createAppTxn2.CreatedAssetID#0: uint64 = itxn[createAppTxn2#0].CreatedAssetID + let createAppTxn2.CreatedApplicationID#0: uint64 = itxn[createAppTxn2#0].CreatedApplicationID + let createAppTxn2.LastLog#0: bytes = itxn[createAppTxn2#0].LastLog + let createAppTxn2.StateProofPK#0: bytes = itxn[createAppTxn2#0].StateProofPK + let createAppTxn2.NumApprovalProgramPages#0: uint64 = itxn[createAppTxn2#0].NumApprovalProgramPages + let createAppTxn2.NumClearStateProgramPages#0: uint64 = itxn[createAppTxn2#0].NumClearStateProgramPages + let tmp%6#0: bytes = itxn[createAppTxn2#0].ApplicationArgs[0u] + let tmp%7#0: bool = (== tmp%6#0 "42") + (assert tmp%7#0) // correct args used 2 + let tmp%8#0: bool = (== createAppTxn.Note#0 "with args param set") + (assert tmp%8#0) + goto block@11 + block@11: // after_if_else_L81 + return + +subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test3() -> void: + block@0: // L95 + let appTxn1#0: itxn_field_set = itxn_field_set(0) + let appTxn1%%param_Fee_idx_0#0: uint64 = 0u + let appTxn1%%Fee_length#0: uint64 = 1u + let appTxn1%%param_TypeEnum_idx_0#0: uint64 = 6u + let appTxn1%%TypeEnum_length#0: uint64 = 1u + let appTxn1%%param_ApprovalProgramPages_idx_0#0: bytes = 0x09361a00b08101 + let appTxn1%%ApprovalProgramPages_length#0: uint64 = 1u + let appTxn1%%param_ClearStateProgramPages_idx_0#0: bytes = 0x098101 + let appTxn1%%ClearStateProgramPages_length#0: uint64 = 1u + let appTxn1%%param_OnCompletion_idx_0#0: uint64 = 5u + let appTxn1%%OnCompletion_length#0: uint64 = 1u + let appTxn1%%param_ApplicationArgs_idx_0#0: bytes = "1" + let appTxn1%%ApplicationArgs_length#0: uint64 = 1u + let appTxn1%%Sender_length#0: uint64 = 0u + let appTxn1%%Note_length#0: uint64 = 0u + let appTxn1%%Receiver_length#0: uint64 = 0u + let appTxn1%%Amount_length#0: uint64 = 0u + let appTxn1%%CloseRemainderTo_length#0: uint64 = 0u + let appTxn1%%VotePK_length#0: uint64 = 0u + let appTxn1%%SelectionPK_length#0: uint64 = 0u + let appTxn1%%VoteFirst_length#0: uint64 = 0u + let appTxn1%%VoteLast_length#0: uint64 = 0u + let appTxn1%%VoteKeyDilution_length#0: uint64 = 0u + let appTxn1%%Type_length#0: uint64 = 0u + let appTxn1%%XferAsset_length#0: uint64 = 0u + let appTxn1%%AssetAmount_length#0: uint64 = 0u + let appTxn1%%AssetSender_length#0: uint64 = 0u + let appTxn1%%AssetReceiver_length#0: uint64 = 0u + let appTxn1%%AssetCloseTo_length#0: uint64 = 0u + let appTxn1%%ApplicationID_length#0: uint64 = 0u + let appTxn1%%ApprovalProgram_length#0: uint64 = 0u + let appTxn1%%ClearStateProgram_length#0: uint64 = 0u + let appTxn1%%RekeyTo_length#0: uint64 = 0u + let appTxn1%%ConfigAsset_length#0: uint64 = 0u + let appTxn1%%ConfigAssetTotal_length#0: uint64 = 0u + let appTxn1%%ConfigAssetDecimals_length#0: uint64 = 0u + let appTxn1%%ConfigAssetDefaultFrozen_length#0: uint64 = 0u + let appTxn1%%ConfigAssetUnitName_length#0: uint64 = 0u + let appTxn1%%ConfigAssetName_length#0: uint64 = 0u + let appTxn1%%ConfigAssetURL_length#0: uint64 = 0u + let appTxn1%%ConfigAssetMetadataHash_length#0: uint64 = 0u + let appTxn1%%ConfigAssetManager_length#0: uint64 = 0u + let appTxn1%%ConfigAssetReserve_length#0: uint64 = 0u + let appTxn1%%ConfigAssetFreeze_length#0: uint64 = 0u + let appTxn1%%ConfigAssetClawback_length#0: uint64 = 0u + let appTxn1%%FreezeAsset_length#0: uint64 = 0u + let appTxn1%%FreezeAssetAccount_length#0: uint64 = 0u + let appTxn1%%FreezeAssetFrozen_length#0: uint64 = 0u + let appTxn1%%GlobalNumUint_length#0: uint64 = 0u + let appTxn1%%GlobalNumByteSlice_length#0: uint64 = 0u + let appTxn1%%LocalNumUint_length#0: uint64 = 0u + let appTxn1%%LocalNumByteSlice_length#0: uint64 = 0u + let appTxn1%%ExtraProgramPages_length#0: uint64 = 0u + let appTxn1%%Nonparticipation_length#0: uint64 = 0u + let appTxn1%%StateProofPK_length#0: uint64 = 0u + let appTxn1%%Accounts_length#0: uint64 = 0u + let appTxn1%%Assets_length#0: uint64 = 0u + let appTxn1%%Applications_length#0: uint64 = 0u + let appTxn2%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn2%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn2%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn2%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn2%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn2%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn2%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn2%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn2%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn2%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn2%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn2%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn2%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn2%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn2%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn2%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn2%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn2%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn2%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn2%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn2%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn2%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn2%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn2%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn2%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn2%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn2%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn2%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn2%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn2%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn2%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn2%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn2%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn2%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn2%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn2%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn2%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn2%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn2%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn2%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn2%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn2%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn2%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn2%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn2%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn2%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn2%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn2%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn2%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn2%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn2%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn2%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn2%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn2%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn2%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn2%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn2%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn2#0: itxn_field_set = itxn_field_set(1) + let appTxn2%%param_ApplicationArgs_idx_0#1: bytes = "2" + let appTxn2%%ApplicationArgs_length#1: uint64 = 1u + let appTxn3%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn3%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn3%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn3%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn3%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn3%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn3%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn3%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn3%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn3%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn3%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn3%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn3%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn3%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn3%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn3%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn3%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn3%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn3%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn3%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn3%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn3%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn3%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn3%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn3%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn3%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn3%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn3%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn3%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn3%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn3%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn3%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn3%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn3%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn3%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn3%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn3%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn3%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn3%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn3%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn3%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn3%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn3%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn3%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn3%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn3%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn3%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn3%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn3%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn3%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn3%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn3%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn3%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn3%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn3%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn3%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn3%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn3#0: itxn_field_set = itxn_field_set(2) + let appTxn3%%param_ApplicationArgs_idx_0#1: bytes = "3" + let appTxn3%%ApplicationArgs_length#1: uint64 = 1u + let appTxn4%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn4%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn4%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn4%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn4%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn4%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn4%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn4%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn4%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn4%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn4%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn4%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn4%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn4%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn4%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn4%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn4%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn4%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn4%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn4%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn4%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn4%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn4%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn4%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn4%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn4%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn4%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn4%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn4%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn4%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn4%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn4%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn4%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn4%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn4%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn4%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn4%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn4%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn4%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn4%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn4%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn4%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn4%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn4%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn4%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn4%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn4%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn4%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn4%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn4%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn4%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn4%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn4%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn4%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn4%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn4%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn4%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn4#0: itxn_field_set = itxn_field_set(3) + let appTxn4%%param_ApplicationArgs_idx_0#1: bytes = "4" + let appTxn4%%ApplicationArgs_length#1: uint64 = 1u + let appTxn5%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn5%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn5%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn5%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn5%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn5%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn5%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn5%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn5%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn5%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn5%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn5%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn5%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn5%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn5%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn5%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn5%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn5%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn5%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn5%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn5%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn5%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn5%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn5%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn5%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn5%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn5%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn5%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn5%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn5%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn5%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn5%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn5%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn5%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn5%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn5%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn5%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn5%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn5%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn5%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn5%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn5%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn5%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn5%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn5%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn5%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn5%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn5%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn5%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn5%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn5%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn5%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn5%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn5%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn5%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn5%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn5%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn5#0: itxn_field_set = itxn_field_set(4) + let appTxn5%%param_ApplicationArgs_idx_0#1: bytes = "5" + let appTxn5%%ApplicationArgs_length#1: uint64 = 1u + let appTxn6%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn6%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn6%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn6%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn6%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn6%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn6%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn6%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn6%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn6%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn6%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn6%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn6%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn6%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn6%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn6%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn6%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn6%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn6%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn6%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn6%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn6%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn6%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn6%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn6%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn6%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn6%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn6%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn6%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn6%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn6%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn6%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn6%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn6%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn6%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn6%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn6%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn6%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn6%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn6%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn6%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn6%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn6%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn6%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn6%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn6%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn6%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn6%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn6%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn6%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn6%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn6%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn6%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn6%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn6%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn6%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn6%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn6#0: itxn_field_set = itxn_field_set(5) + let appTxn6%%param_ApplicationArgs_idx_0#1: bytes = "6" + let appTxn6%%ApplicationArgs_length#1: uint64 = 1u + let appTxn7%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn7%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn7%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn7%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn7%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn7%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn7%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn7%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn7%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn7%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn7%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn7%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn7%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn7%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn7%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn7%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn7%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn7%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn7%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn7%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn7%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn7%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn7%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn7%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn7%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn7%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn7%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn7%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn7%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn7%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn7%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn7%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn7%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn7%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn7%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn7%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn7%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn7%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn7%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn7%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn7%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn7%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn7%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn7%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn7%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn7%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn7%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn7%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn7%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn7%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn7%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn7%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn7%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn7%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn7%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn7%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn7%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn7#0: itxn_field_set = itxn_field_set(6) + let appTxn7%%param_ApplicationArgs_idx_0#1: bytes = "7" + let appTxn7%%ApplicationArgs_length#1: uint64 = 1u + let appTxn8%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn8%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn8%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn8%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn8%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn8%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn8%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn8%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn8%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn8%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn8%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn8%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn8%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn8%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn8%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn8%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn8%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn8%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn8%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn8%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn8%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn8%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn8%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn8%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn8%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn8%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn8%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn8%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn8%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn8%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn8%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn8%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn8%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn8%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn8%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn8%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn8%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn8%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn8%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn8%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn8%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn8%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn8%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn8%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn8%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn8%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn8%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn8%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn8%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn8%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn8%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn8%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn8%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn8%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn8%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn8%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn8%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn8#0: itxn_field_set = itxn_field_set(7) + let appTxn8%%param_ApplicationArgs_idx_0#1: bytes = "8" + let appTxn8%%ApplicationArgs_length#1: uint64 = 1u + let appTxn9%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn9%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn9%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn9%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn9%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn9%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn9%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn9%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn9%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn9%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn9%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn9%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn9%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn9%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn9%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn9%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn9%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn9%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn9%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn9%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn9%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn9%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn9%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn9%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn9%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn9%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn9%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn9%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn9%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn9%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn9%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn9%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn9%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn9%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn9%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn9%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn9%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn9%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn9%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn9%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn9%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn9%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn9%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn9%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn9%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn9%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn9%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn9%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn9%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn9%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn9%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn9%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn9%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn9%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn9%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn9%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn9%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn9#0: itxn_field_set = itxn_field_set(8) + let appTxn9%%param_ApplicationArgs_idx_0#1: bytes = "9" + let appTxn9%%ApplicationArgs_length#1: uint64 = 1u + let appTxn10%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn10%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn10%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn10%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn10%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn10%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn10%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn10%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn10%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn10%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn10%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn10%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn10%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn10%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn10%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn10%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn10%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn10%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn10%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn10%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn10%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn10%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn10%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn10%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn10%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn10%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn10%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn10%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn10%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn10%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn10%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn10%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn10%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn10%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn10%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn10%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn10%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn10%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn10%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn10%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn10%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn10%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn10%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn10%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn10%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn10%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn10%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn10%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn10%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn10%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn10%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn10%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn10%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn10%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn10%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn10%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn10%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn10#0: itxn_field_set = itxn_field_set(9) + let appTxn10%%param_ApplicationArgs_idx_0#1: bytes = "10" + let appTxn10%%ApplicationArgs_length#1: uint64 = 1u + let appTxn11%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn11%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn11%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn11%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn11%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn11%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn11%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn11%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn11%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn11%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn11%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn11%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn11%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn11%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn11%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn11%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn11%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn11%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn11%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn11%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn11%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn11%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn11%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn11%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn11%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn11%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn11%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn11%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn11%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn11%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn11%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn11%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn11%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn11%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn11%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn11%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn11%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn11%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn11%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn11%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn11%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn11%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn11%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn11%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn11%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn11%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn11%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn11%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn11%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn11%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn11%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn11%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn11%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn11%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn11%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn11%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn11%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn11#0: itxn_field_set = itxn_field_set(10) + let appTxn11%%param_ApplicationArgs_idx_0#1: bytes = "11" + let appTxn11%%ApplicationArgs_length#1: uint64 = 1u + let appTxn12%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn12%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn12%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn12%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn12%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn12%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn12%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn12%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn12%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn12%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn12%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn12%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn12%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn12%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn12%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn12%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn12%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn12%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn12%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn12%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn12%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn12%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn12%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn12%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn12%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn12%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn12%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn12%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn12%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn12%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn12%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn12%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn12%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn12%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn12%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn12%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn12%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn12%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn12%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn12%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn12%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn12%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn12%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn12%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn12%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn12%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn12%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn12%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn12%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn12%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn12%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn12%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn12%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn12%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn12%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn12%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn12%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn12#0: itxn_field_set = itxn_field_set(11) + let appTxn12%%param_ApplicationArgs_idx_0#1: bytes = "12" + let appTxn12%%ApplicationArgs_length#1: uint64 = 1u + let appTxn13%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn13%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn13%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn13%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn13%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn13%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn13%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn13%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn13%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn13%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn13%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn13%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn13%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn13%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn13%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn13%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn13%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn13%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn13%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn13%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn13%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn13%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn13%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn13%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn13%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn13%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn13%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn13%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn13%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn13%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn13%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn13%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn13%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn13%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn13%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn13%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn13%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn13%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn13%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn13%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn13%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn13%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn13%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn13%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn13%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn13%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn13%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn13%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn13%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn13%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn13%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn13%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn13%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn13%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn13%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn13%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn13%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn13#0: itxn_field_set = itxn_field_set(12) + let appTxn13%%param_ApplicationArgs_idx_0#1: bytes = "13" + let appTxn13%%ApplicationArgs_length#1: uint64 = 1u + let appTxn14%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn14%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn14%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn14%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn14%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn14%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn14%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn14%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn14%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn14%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn14%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn14%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn14%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn14%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn14%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn14%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn14%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn14%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn14%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn14%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn14%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn14%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn14%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn14%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn14%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn14%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn14%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn14%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn14%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn14%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn14%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn14%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn14%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn14%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn14%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn14%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn14%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn14%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn14%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn14%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn14%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn14%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn14%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn14%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn14%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn14%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn14%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn14%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn14%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn14%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn14%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn14%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn14%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn14%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn14%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn14%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn14%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn14#0: itxn_field_set = itxn_field_set(13) + let appTxn14%%param_ApplicationArgs_idx_0#1: bytes = "14" + let appTxn14%%ApplicationArgs_length#1: uint64 = 1u + let appTxn15%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn15%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn15%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn15%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn15%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn15%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn15%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn15%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn15%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn15%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn15%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn15%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn15%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn15%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn15%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn15%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn15%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn15%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn15%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn15%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn15%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn15%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn15%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn15%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn15%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn15%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn15%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn15%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn15%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn15%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn15%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn15%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn15%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn15%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn15%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn15%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn15%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn15%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn15%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn15%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn15%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn15%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn15%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn15%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn15%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn15%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn15%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn15%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn15%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn15%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn15%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn15%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn15%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn15%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn15%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn15%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn15%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn15#0: itxn_field_set = itxn_field_set(14) + let appTxn15%%param_ApplicationArgs_idx_0#1: bytes = "15" + let appTxn15%%ApplicationArgs_length#1: uint64 = 1u + let appTxn16%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn16%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn16%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn16%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn16%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn16%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn16%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn16%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn16%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn16%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn16%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn16%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn16%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn16%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn16%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn16%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn16%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn16%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn16%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn16%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn16%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn16%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn16%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn16%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn16%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn16%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn16%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn16%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn16%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn16%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn16%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn16%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn16%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn16%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn16%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn16%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn16%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn16%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn16%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn16%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn16%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn16%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn16%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn16%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn16%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn16%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn16%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn16%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn16%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn16%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn16%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn16%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn16%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn16%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn16%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn16%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn16%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn16#0: itxn_field_set = itxn_field_set(15) + let appTxn16%%param_ApplicationArgs_idx_0#1: bytes = "16" + let appTxn16%%ApplicationArgs_length#1: uint64 = 1u + itxn_begin + ((itxn_field ApplicationArgs) appTxn1%%param_ApplicationArgs_idx_0#0) + ((itxn_field OnCompletion) appTxn1%%param_OnCompletion_idx_0#0) + ((itxn_field ClearStateProgramPages) appTxn1%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn1%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field TypeEnum) appTxn1%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn1%%param_Fee_idx_0#0) + goto block@1 + block@1: // next_txn_L135 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn2%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn2%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn2%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn2%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn2%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn2%%param_Fee_idx_0#0) + goto block@2 + block@2: // next_txn_L136 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn3%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn3%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn3%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn3%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn3%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn3%%param_Fee_idx_0#0) + goto block@3 + block@3: // next_txn_L137 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn4%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn4%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn4%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn4%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn4%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn4%%param_Fee_idx_0#0) + goto block@4 + block@4: // next_txn_L138 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn5%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn5%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn5%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn5%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn5%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn5%%param_Fee_idx_0#0) + goto block@5 + block@5: // next_txn_L139 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn6%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn6%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn6%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn6%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn6%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn6%%param_Fee_idx_0#0) + goto block@6 + block@6: // next_txn_L140 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn7%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn7%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn7%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn7%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn7%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn7%%param_Fee_idx_0#0) + goto block@7 + block@7: // next_txn_L141 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn8%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn8%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn8%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn8%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn8%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn8%%param_Fee_idx_0#0) + goto block@8 + block@8: // next_txn_L142 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn9%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn9%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn9%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn9%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn9%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn9%%param_Fee_idx_0#0) + goto block@9 + block@9: // next_txn_L143 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn10%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn10%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn10%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn10%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn10%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn10%%param_Fee_idx_0#0) + goto block@10 + block@10: // next_txn_L144 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn11%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn11%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn11%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn11%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn11%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn11%%param_Fee_idx_0#0) + goto block@11 + block@11: // next_txn_L145 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn12%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn12%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn12%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn12%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn12%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn12%%param_Fee_idx_0#0) + goto block@12 + block@12: // next_txn_L146 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn13%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn13%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn13%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn13%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn13%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn13%%param_Fee_idx_0#0) + goto block@13 + block@13: // next_txn_L147 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn14%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn14%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn14%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn14%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn14%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn14%%param_Fee_idx_0#0) + goto block@14 + block@14: // next_txn_L148 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn15%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn15%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn15%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn15%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn15%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn15%%param_Fee_idx_0#0) + goto block@15 + block@15: // next_txn_L149 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn16%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn16%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn16%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn16%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn16%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn16%%param_Fee_idx_0#0) + goto block@16 + block@16: // next_txn_L150 + itxn_submit + let app1#0: itxn_group_idx = itxn_group_idx(0) + let app2#0: itxn_group_idx = itxn_group_idx(1) + let app3#0: itxn_group_idx = itxn_group_idx(2) + let app4#0: itxn_group_idx = itxn_group_idx(3) + let app5#0: itxn_group_idx = itxn_group_idx(4) + let app6#0: itxn_group_idx = itxn_group_idx(5) + let app7#0: itxn_group_idx = itxn_group_idx(6) + let app8#0: itxn_group_idx = itxn_group_idx(7) + let app9#0: itxn_group_idx = itxn_group_idx(8) + let app10#0: itxn_group_idx = itxn_group_idx(9) + let app11#0: itxn_group_idx = itxn_group_idx(10) + let app12#0: itxn_group_idx = itxn_group_idx(11) + let app13#0: itxn_group_idx = itxn_group_idx(12) + let app14#0: itxn_group_idx = itxn_group_idx(13) + let app15#0: itxn_group_idx = itxn_group_idx(14) + let app16#0: itxn_group_idx = itxn_group_idx(15) + let app1._is_last#0: bool = 0u + let app1.Sender#0: bytes = itxn[app1#0].Sender + let app1.Fee#0: uint64 = itxn[app1#0].Fee + let app1.FirstValid#0: uint64 = itxn[app1#0].FirstValid + let app1.FirstValidTime#0: uint64 = itxn[app1#0].FirstValidTime + let app1.LastValid#0: uint64 = itxn[app1#0].LastValid + let app1.Note#0: bytes = itxn[app1#0].Note + let app1.Lease#0: bytes = itxn[app1#0].Lease + let app1.Receiver#0: bytes = itxn[app1#0].Receiver + let app1.Amount#0: uint64 = itxn[app1#0].Amount + let app1.CloseRemainderTo#0: bytes = itxn[app1#0].CloseRemainderTo + let app1.VotePK#0: bytes = itxn[app1#0].VotePK + let app1.SelectionPK#0: bytes = itxn[app1#0].SelectionPK + let app1.VoteFirst#0: uint64 = itxn[app1#0].VoteFirst + let app1.VoteLast#0: uint64 = itxn[app1#0].VoteLast + let app1.VoteKeyDilution#0: uint64 = itxn[app1#0].VoteKeyDilution + let app1.Type#0: bytes = itxn[app1#0].Type + let app1.TypeEnum#0: uint64 = itxn[app1#0].TypeEnum + let app1.XferAsset#0: uint64 = itxn[app1#0].XferAsset + let app1.AssetAmount#0: uint64 = itxn[app1#0].AssetAmount + let app1.AssetSender#0: bytes = itxn[app1#0].AssetSender + let app1.AssetReceiver#0: bytes = itxn[app1#0].AssetReceiver + let app1.AssetCloseTo#0: bytes = itxn[app1#0].AssetCloseTo + let app1.GroupIndex#0: uint64 = itxn[app1#0].GroupIndex + let app1.TxID#0: bytes = itxn[app1#0].TxID + let app1.ApplicationID#0: uint64 = itxn[app1#0].ApplicationID + let app1.OnCompletion#0: uint64 = itxn[app1#0].OnCompletion + let app1.NumAppArgs#0: uint64 = itxn[app1#0].NumAppArgs + let app1.NumAccounts#0: uint64 = itxn[app1#0].NumAccounts + let app1.ApprovalProgram#0: bytes = itxn[app1#0].ApprovalProgram + let app1.ClearStateProgram#0: bytes = itxn[app1#0].ClearStateProgram + let app1.RekeyTo#0: bytes = itxn[app1#0].RekeyTo + let app1.ConfigAsset#0: uint64 = itxn[app1#0].ConfigAsset + let app1.ConfigAssetTotal#0: uint64 = itxn[app1#0].ConfigAssetTotal + let app1.ConfigAssetDecimals#0: uint64 = itxn[app1#0].ConfigAssetDecimals + let app1.ConfigAssetDefaultFrozen#0: bool = itxn[app1#0].ConfigAssetDefaultFrozen + let app1.ConfigAssetUnitName#0: bytes = itxn[app1#0].ConfigAssetUnitName + let app1.ConfigAssetName#0: bytes = itxn[app1#0].ConfigAssetName + let app1.ConfigAssetURL#0: bytes = itxn[app1#0].ConfigAssetURL + let app1.ConfigAssetMetadataHash#0: bytes = itxn[app1#0].ConfigAssetMetadataHash + let app1.ConfigAssetManager#0: bytes = itxn[app1#0].ConfigAssetManager + let app1.ConfigAssetReserve#0: bytes = itxn[app1#0].ConfigAssetReserve + let app1.ConfigAssetFreeze#0: bytes = itxn[app1#0].ConfigAssetFreeze + let app1.ConfigAssetClawback#0: bytes = itxn[app1#0].ConfigAssetClawback + let app1.FreezeAsset#0: uint64 = itxn[app1#0].FreezeAsset + let app1.FreezeAssetAccount#0: bytes = itxn[app1#0].FreezeAssetAccount + let app1.FreezeAssetFrozen#0: bool = itxn[app1#0].FreezeAssetFrozen + let app1.NumAssets#0: uint64 = itxn[app1#0].NumAssets + let app1.NumApplications#0: uint64 = itxn[app1#0].NumApplications + let app1.GlobalNumUint#0: uint64 = itxn[app1#0].GlobalNumUint + let app1.GlobalNumByteSlice#0: uint64 = itxn[app1#0].GlobalNumByteSlice + let app1.LocalNumUint#0: uint64 = itxn[app1#0].LocalNumUint + let app1.LocalNumByteSlice#0: uint64 = itxn[app1#0].LocalNumByteSlice + let app1.ExtraProgramPages#0: uint64 = itxn[app1#0].ExtraProgramPages + let app1.Nonparticipation#0: bool = itxn[app1#0].Nonparticipation + let app1.NumLogs#0: uint64 = itxn[app1#0].NumLogs + let app1.CreatedAssetID#0: uint64 = itxn[app1#0].CreatedAssetID + let app1.CreatedApplicationID#0: uint64 = itxn[app1#0].CreatedApplicationID + let app1.LastLog#0: bytes = itxn[app1#0].LastLog + let app1.StateProofPK#0: bytes = itxn[app1#0].StateProofPK + let app1.NumApprovalProgramPages#0: uint64 = itxn[app1#0].NumApprovalProgramPages + let app1.NumClearStateProgramPages#0: uint64 = itxn[app1#0].NumClearStateProgramPages + let app2._is_last#0: bool = 0u + let app2.Sender#0: bytes = itxn[app2#0].Sender + let app2.Fee#0: uint64 = itxn[app2#0].Fee + let app2.FirstValid#0: uint64 = itxn[app2#0].FirstValid + let app2.FirstValidTime#0: uint64 = itxn[app2#0].FirstValidTime + let app2.LastValid#0: uint64 = itxn[app2#0].LastValid + let app2.Note#0: bytes = itxn[app2#0].Note + let app2.Lease#0: bytes = itxn[app2#0].Lease + let app2.Receiver#0: bytes = itxn[app2#0].Receiver + let app2.Amount#0: uint64 = itxn[app2#0].Amount + let app2.CloseRemainderTo#0: bytes = itxn[app2#0].CloseRemainderTo + let app2.VotePK#0: bytes = itxn[app2#0].VotePK + let app2.SelectionPK#0: bytes = itxn[app2#0].SelectionPK + let app2.VoteFirst#0: uint64 = itxn[app2#0].VoteFirst + let app2.VoteLast#0: uint64 = itxn[app2#0].VoteLast + let app2.VoteKeyDilution#0: uint64 = itxn[app2#0].VoteKeyDilution + let app2.Type#0: bytes = itxn[app2#0].Type + let app2.TypeEnum#0: uint64 = itxn[app2#0].TypeEnum + let app2.XferAsset#0: uint64 = itxn[app2#0].XferAsset + let app2.AssetAmount#0: uint64 = itxn[app2#0].AssetAmount + let app2.AssetSender#0: bytes = itxn[app2#0].AssetSender + let app2.AssetReceiver#0: bytes = itxn[app2#0].AssetReceiver + let app2.AssetCloseTo#0: bytes = itxn[app2#0].AssetCloseTo + let app2.GroupIndex#0: uint64 = itxn[app2#0].GroupIndex + let app2.TxID#0: bytes = itxn[app2#0].TxID + let app2.ApplicationID#0: uint64 = itxn[app2#0].ApplicationID + let app2.OnCompletion#0: uint64 = itxn[app2#0].OnCompletion + let app2.NumAppArgs#0: uint64 = itxn[app2#0].NumAppArgs + let app2.NumAccounts#0: uint64 = itxn[app2#0].NumAccounts + let app2.ApprovalProgram#0: bytes = itxn[app2#0].ApprovalProgram + let app2.ClearStateProgram#0: bytes = itxn[app2#0].ClearStateProgram + let app2.RekeyTo#0: bytes = itxn[app2#0].RekeyTo + let app2.ConfigAsset#0: uint64 = itxn[app2#0].ConfigAsset + let app2.ConfigAssetTotal#0: uint64 = itxn[app2#0].ConfigAssetTotal + let app2.ConfigAssetDecimals#0: uint64 = itxn[app2#0].ConfigAssetDecimals + let app2.ConfigAssetDefaultFrozen#0: bool = itxn[app2#0].ConfigAssetDefaultFrozen + let app2.ConfigAssetUnitName#0: bytes = itxn[app2#0].ConfigAssetUnitName + let app2.ConfigAssetName#0: bytes = itxn[app2#0].ConfigAssetName + let app2.ConfigAssetURL#0: bytes = itxn[app2#0].ConfigAssetURL + let app2.ConfigAssetMetadataHash#0: bytes = itxn[app2#0].ConfigAssetMetadataHash + let app2.ConfigAssetManager#0: bytes = itxn[app2#0].ConfigAssetManager + let app2.ConfigAssetReserve#0: bytes = itxn[app2#0].ConfigAssetReserve + let app2.ConfigAssetFreeze#0: bytes = itxn[app2#0].ConfigAssetFreeze + let app2.ConfigAssetClawback#0: bytes = itxn[app2#0].ConfigAssetClawback + let app2.FreezeAsset#0: uint64 = itxn[app2#0].FreezeAsset + let app2.FreezeAssetAccount#0: bytes = itxn[app2#0].FreezeAssetAccount + let app2.FreezeAssetFrozen#0: bool = itxn[app2#0].FreezeAssetFrozen + let app2.NumAssets#0: uint64 = itxn[app2#0].NumAssets + let app2.NumApplications#0: uint64 = itxn[app2#0].NumApplications + let app2.GlobalNumUint#0: uint64 = itxn[app2#0].GlobalNumUint + let app2.GlobalNumByteSlice#0: uint64 = itxn[app2#0].GlobalNumByteSlice + let app2.LocalNumUint#0: uint64 = itxn[app2#0].LocalNumUint + let app2.LocalNumByteSlice#0: uint64 = itxn[app2#0].LocalNumByteSlice + let app2.ExtraProgramPages#0: uint64 = itxn[app2#0].ExtraProgramPages + let app2.Nonparticipation#0: bool = itxn[app2#0].Nonparticipation + let app2.NumLogs#0: uint64 = itxn[app2#0].NumLogs + let app2.CreatedAssetID#0: uint64 = itxn[app2#0].CreatedAssetID + let app2.CreatedApplicationID#0: uint64 = itxn[app2#0].CreatedApplicationID + let app2.LastLog#0: bytes = itxn[app2#0].LastLog + let app2.StateProofPK#0: bytes = itxn[app2#0].StateProofPK + let app2.NumApprovalProgramPages#0: uint64 = itxn[app2#0].NumApprovalProgramPages + let app2.NumClearStateProgramPages#0: uint64 = itxn[app2#0].NumClearStateProgramPages + let app3._is_last#0: bool = 0u + let app3.Sender#0: bytes = itxn[app3#0].Sender + let app3.Fee#0: uint64 = itxn[app3#0].Fee + let app3.FirstValid#0: uint64 = itxn[app3#0].FirstValid + let app3.FirstValidTime#0: uint64 = itxn[app3#0].FirstValidTime + let app3.LastValid#0: uint64 = itxn[app3#0].LastValid + let app3.Note#0: bytes = itxn[app3#0].Note + let app3.Lease#0: bytes = itxn[app3#0].Lease + let app3.Receiver#0: bytes = itxn[app3#0].Receiver + let app3.Amount#0: uint64 = itxn[app3#0].Amount + let app3.CloseRemainderTo#0: bytes = itxn[app3#0].CloseRemainderTo + let app3.VotePK#0: bytes = itxn[app3#0].VotePK + let app3.SelectionPK#0: bytes = itxn[app3#0].SelectionPK + let app3.VoteFirst#0: uint64 = itxn[app3#0].VoteFirst + let app3.VoteLast#0: uint64 = itxn[app3#0].VoteLast + let app3.VoteKeyDilution#0: uint64 = itxn[app3#0].VoteKeyDilution + let app3.Type#0: bytes = itxn[app3#0].Type + let app3.TypeEnum#0: uint64 = itxn[app3#0].TypeEnum + let app3.XferAsset#0: uint64 = itxn[app3#0].XferAsset + let app3.AssetAmount#0: uint64 = itxn[app3#0].AssetAmount + let app3.AssetSender#0: bytes = itxn[app3#0].AssetSender + let app3.AssetReceiver#0: bytes = itxn[app3#0].AssetReceiver + let app3.AssetCloseTo#0: bytes = itxn[app3#0].AssetCloseTo + let app3.GroupIndex#0: uint64 = itxn[app3#0].GroupIndex + let app3.TxID#0: bytes = itxn[app3#0].TxID + let app3.ApplicationID#0: uint64 = itxn[app3#0].ApplicationID + let app3.OnCompletion#0: uint64 = itxn[app3#0].OnCompletion + let app3.NumAppArgs#0: uint64 = itxn[app3#0].NumAppArgs + let app3.NumAccounts#0: uint64 = itxn[app3#0].NumAccounts + let app3.ApprovalProgram#0: bytes = itxn[app3#0].ApprovalProgram + let app3.ClearStateProgram#0: bytes = itxn[app3#0].ClearStateProgram + let app3.RekeyTo#0: bytes = itxn[app3#0].RekeyTo + let app3.ConfigAsset#0: uint64 = itxn[app3#0].ConfigAsset + let app3.ConfigAssetTotal#0: uint64 = itxn[app3#0].ConfigAssetTotal + let app3.ConfigAssetDecimals#0: uint64 = itxn[app3#0].ConfigAssetDecimals + let app3.ConfigAssetDefaultFrozen#0: bool = itxn[app3#0].ConfigAssetDefaultFrozen + let app3.ConfigAssetUnitName#0: bytes = itxn[app3#0].ConfigAssetUnitName + let app3.ConfigAssetName#0: bytes = itxn[app3#0].ConfigAssetName + let app3.ConfigAssetURL#0: bytes = itxn[app3#0].ConfigAssetURL + let app3.ConfigAssetMetadataHash#0: bytes = itxn[app3#0].ConfigAssetMetadataHash + let app3.ConfigAssetManager#0: bytes = itxn[app3#0].ConfigAssetManager + let app3.ConfigAssetReserve#0: bytes = itxn[app3#0].ConfigAssetReserve + let app3.ConfigAssetFreeze#0: bytes = itxn[app3#0].ConfigAssetFreeze + let app3.ConfigAssetClawback#0: bytes = itxn[app3#0].ConfigAssetClawback + let app3.FreezeAsset#0: uint64 = itxn[app3#0].FreezeAsset + let app3.FreezeAssetAccount#0: bytes = itxn[app3#0].FreezeAssetAccount + let app3.FreezeAssetFrozen#0: bool = itxn[app3#0].FreezeAssetFrozen + let app3.NumAssets#0: uint64 = itxn[app3#0].NumAssets + let app3.NumApplications#0: uint64 = itxn[app3#0].NumApplications + let app3.GlobalNumUint#0: uint64 = itxn[app3#0].GlobalNumUint + let app3.GlobalNumByteSlice#0: uint64 = itxn[app3#0].GlobalNumByteSlice + let app3.LocalNumUint#0: uint64 = itxn[app3#0].LocalNumUint + let app3.LocalNumByteSlice#0: uint64 = itxn[app3#0].LocalNumByteSlice + let app3.ExtraProgramPages#0: uint64 = itxn[app3#0].ExtraProgramPages + let app3.Nonparticipation#0: bool = itxn[app3#0].Nonparticipation + let app3.NumLogs#0: uint64 = itxn[app3#0].NumLogs + let app3.CreatedAssetID#0: uint64 = itxn[app3#0].CreatedAssetID + let app3.CreatedApplicationID#0: uint64 = itxn[app3#0].CreatedApplicationID + let app3.LastLog#0: bytes = itxn[app3#0].LastLog + let app3.StateProofPK#0: bytes = itxn[app3#0].StateProofPK + let app3.NumApprovalProgramPages#0: uint64 = itxn[app3#0].NumApprovalProgramPages + let app3.NumClearStateProgramPages#0: uint64 = itxn[app3#0].NumClearStateProgramPages + let app4._is_last#0: bool = 0u + let app4.Sender#0: bytes = itxn[app4#0].Sender + let app4.Fee#0: uint64 = itxn[app4#0].Fee + let app4.FirstValid#0: uint64 = itxn[app4#0].FirstValid + let app4.FirstValidTime#0: uint64 = itxn[app4#0].FirstValidTime + let app4.LastValid#0: uint64 = itxn[app4#0].LastValid + let app4.Note#0: bytes = itxn[app4#0].Note + let app4.Lease#0: bytes = itxn[app4#0].Lease + let app4.Receiver#0: bytes = itxn[app4#0].Receiver + let app4.Amount#0: uint64 = itxn[app4#0].Amount + let app4.CloseRemainderTo#0: bytes = itxn[app4#0].CloseRemainderTo + let app4.VotePK#0: bytes = itxn[app4#0].VotePK + let app4.SelectionPK#0: bytes = itxn[app4#0].SelectionPK + let app4.VoteFirst#0: uint64 = itxn[app4#0].VoteFirst + let app4.VoteLast#0: uint64 = itxn[app4#0].VoteLast + let app4.VoteKeyDilution#0: uint64 = itxn[app4#0].VoteKeyDilution + let app4.Type#0: bytes = itxn[app4#0].Type + let app4.TypeEnum#0: uint64 = itxn[app4#0].TypeEnum + let app4.XferAsset#0: uint64 = itxn[app4#0].XferAsset + let app4.AssetAmount#0: uint64 = itxn[app4#0].AssetAmount + let app4.AssetSender#0: bytes = itxn[app4#0].AssetSender + let app4.AssetReceiver#0: bytes = itxn[app4#0].AssetReceiver + let app4.AssetCloseTo#0: bytes = itxn[app4#0].AssetCloseTo + let app4.GroupIndex#0: uint64 = itxn[app4#0].GroupIndex + let app4.TxID#0: bytes = itxn[app4#0].TxID + let app4.ApplicationID#0: uint64 = itxn[app4#0].ApplicationID + let app4.OnCompletion#0: uint64 = itxn[app4#0].OnCompletion + let app4.NumAppArgs#0: uint64 = itxn[app4#0].NumAppArgs + let app4.NumAccounts#0: uint64 = itxn[app4#0].NumAccounts + let app4.ApprovalProgram#0: bytes = itxn[app4#0].ApprovalProgram + let app4.ClearStateProgram#0: bytes = itxn[app4#0].ClearStateProgram + let app4.RekeyTo#0: bytes = itxn[app4#0].RekeyTo + let app4.ConfigAsset#0: uint64 = itxn[app4#0].ConfigAsset + let app4.ConfigAssetTotal#0: uint64 = itxn[app4#0].ConfigAssetTotal + let app4.ConfigAssetDecimals#0: uint64 = itxn[app4#0].ConfigAssetDecimals + let app4.ConfigAssetDefaultFrozen#0: bool = itxn[app4#0].ConfigAssetDefaultFrozen + let app4.ConfigAssetUnitName#0: bytes = itxn[app4#0].ConfigAssetUnitName + let app4.ConfigAssetName#0: bytes = itxn[app4#0].ConfigAssetName + let app4.ConfigAssetURL#0: bytes = itxn[app4#0].ConfigAssetURL + let app4.ConfigAssetMetadataHash#0: bytes = itxn[app4#0].ConfigAssetMetadataHash + let app4.ConfigAssetManager#0: bytes = itxn[app4#0].ConfigAssetManager + let app4.ConfigAssetReserve#0: bytes = itxn[app4#0].ConfigAssetReserve + let app4.ConfigAssetFreeze#0: bytes = itxn[app4#0].ConfigAssetFreeze + let app4.ConfigAssetClawback#0: bytes = itxn[app4#0].ConfigAssetClawback + let app4.FreezeAsset#0: uint64 = itxn[app4#0].FreezeAsset + let app4.FreezeAssetAccount#0: bytes = itxn[app4#0].FreezeAssetAccount + let app4.FreezeAssetFrozen#0: bool = itxn[app4#0].FreezeAssetFrozen + let app4.NumAssets#0: uint64 = itxn[app4#0].NumAssets + let app4.NumApplications#0: uint64 = itxn[app4#0].NumApplications + let app4.GlobalNumUint#0: uint64 = itxn[app4#0].GlobalNumUint + let app4.GlobalNumByteSlice#0: uint64 = itxn[app4#0].GlobalNumByteSlice + let app4.LocalNumUint#0: uint64 = itxn[app4#0].LocalNumUint + let app4.LocalNumByteSlice#0: uint64 = itxn[app4#0].LocalNumByteSlice + let app4.ExtraProgramPages#0: uint64 = itxn[app4#0].ExtraProgramPages + let app4.Nonparticipation#0: bool = itxn[app4#0].Nonparticipation + let app4.NumLogs#0: uint64 = itxn[app4#0].NumLogs + let app4.CreatedAssetID#0: uint64 = itxn[app4#0].CreatedAssetID + let app4.CreatedApplicationID#0: uint64 = itxn[app4#0].CreatedApplicationID + let app4.LastLog#0: bytes = itxn[app4#0].LastLog + let app4.StateProofPK#0: bytes = itxn[app4#0].StateProofPK + let app4.NumApprovalProgramPages#0: uint64 = itxn[app4#0].NumApprovalProgramPages + let app4.NumClearStateProgramPages#0: uint64 = itxn[app4#0].NumClearStateProgramPages + let app5._is_last#0: bool = 0u + let app5.Sender#0: bytes = itxn[app5#0].Sender + let app5.Fee#0: uint64 = itxn[app5#0].Fee + let app5.FirstValid#0: uint64 = itxn[app5#0].FirstValid + let app5.FirstValidTime#0: uint64 = itxn[app5#0].FirstValidTime + let app5.LastValid#0: uint64 = itxn[app5#0].LastValid + let app5.Note#0: bytes = itxn[app5#0].Note + let app5.Lease#0: bytes = itxn[app5#0].Lease + let app5.Receiver#0: bytes = itxn[app5#0].Receiver + let app5.Amount#0: uint64 = itxn[app5#0].Amount + let app5.CloseRemainderTo#0: bytes = itxn[app5#0].CloseRemainderTo + let app5.VotePK#0: bytes = itxn[app5#0].VotePK + let app5.SelectionPK#0: bytes = itxn[app5#0].SelectionPK + let app5.VoteFirst#0: uint64 = itxn[app5#0].VoteFirst + let app5.VoteLast#0: uint64 = itxn[app5#0].VoteLast + let app5.VoteKeyDilution#0: uint64 = itxn[app5#0].VoteKeyDilution + let app5.Type#0: bytes = itxn[app5#0].Type + let app5.TypeEnum#0: uint64 = itxn[app5#0].TypeEnum + let app5.XferAsset#0: uint64 = itxn[app5#0].XferAsset + let app5.AssetAmount#0: uint64 = itxn[app5#0].AssetAmount + let app5.AssetSender#0: bytes = itxn[app5#0].AssetSender + let app5.AssetReceiver#0: bytes = itxn[app5#0].AssetReceiver + let app5.AssetCloseTo#0: bytes = itxn[app5#0].AssetCloseTo + let app5.GroupIndex#0: uint64 = itxn[app5#0].GroupIndex + let app5.TxID#0: bytes = itxn[app5#0].TxID + let app5.ApplicationID#0: uint64 = itxn[app5#0].ApplicationID + let app5.OnCompletion#0: uint64 = itxn[app5#0].OnCompletion + let app5.NumAppArgs#0: uint64 = itxn[app5#0].NumAppArgs + let app5.NumAccounts#0: uint64 = itxn[app5#0].NumAccounts + let app5.ApprovalProgram#0: bytes = itxn[app5#0].ApprovalProgram + let app5.ClearStateProgram#0: bytes = itxn[app5#0].ClearStateProgram + let app5.RekeyTo#0: bytes = itxn[app5#0].RekeyTo + let app5.ConfigAsset#0: uint64 = itxn[app5#0].ConfigAsset + let app5.ConfigAssetTotal#0: uint64 = itxn[app5#0].ConfigAssetTotal + let app5.ConfigAssetDecimals#0: uint64 = itxn[app5#0].ConfigAssetDecimals + let app5.ConfigAssetDefaultFrozen#0: bool = itxn[app5#0].ConfigAssetDefaultFrozen + let app5.ConfigAssetUnitName#0: bytes = itxn[app5#0].ConfigAssetUnitName + let app5.ConfigAssetName#0: bytes = itxn[app5#0].ConfigAssetName + let app5.ConfigAssetURL#0: bytes = itxn[app5#0].ConfigAssetURL + let app5.ConfigAssetMetadataHash#0: bytes = itxn[app5#0].ConfigAssetMetadataHash + let app5.ConfigAssetManager#0: bytes = itxn[app5#0].ConfigAssetManager + let app5.ConfigAssetReserve#0: bytes = itxn[app5#0].ConfigAssetReserve + let app5.ConfigAssetFreeze#0: bytes = itxn[app5#0].ConfigAssetFreeze + let app5.ConfigAssetClawback#0: bytes = itxn[app5#0].ConfigAssetClawback + let app5.FreezeAsset#0: uint64 = itxn[app5#0].FreezeAsset + let app5.FreezeAssetAccount#0: bytes = itxn[app5#0].FreezeAssetAccount + let app5.FreezeAssetFrozen#0: bool = itxn[app5#0].FreezeAssetFrozen + let app5.NumAssets#0: uint64 = itxn[app5#0].NumAssets + let app5.NumApplications#0: uint64 = itxn[app5#0].NumApplications + let app5.GlobalNumUint#0: uint64 = itxn[app5#0].GlobalNumUint + let app5.GlobalNumByteSlice#0: uint64 = itxn[app5#0].GlobalNumByteSlice + let app5.LocalNumUint#0: uint64 = itxn[app5#0].LocalNumUint + let app5.LocalNumByteSlice#0: uint64 = itxn[app5#0].LocalNumByteSlice + let app5.ExtraProgramPages#0: uint64 = itxn[app5#0].ExtraProgramPages + let app5.Nonparticipation#0: bool = itxn[app5#0].Nonparticipation + let app5.NumLogs#0: uint64 = itxn[app5#0].NumLogs + let app5.CreatedAssetID#0: uint64 = itxn[app5#0].CreatedAssetID + let app5.CreatedApplicationID#0: uint64 = itxn[app5#0].CreatedApplicationID + let app5.LastLog#0: bytes = itxn[app5#0].LastLog + let app5.StateProofPK#0: bytes = itxn[app5#0].StateProofPK + let app5.NumApprovalProgramPages#0: uint64 = itxn[app5#0].NumApprovalProgramPages + let app5.NumClearStateProgramPages#0: uint64 = itxn[app5#0].NumClearStateProgramPages + let app6._is_last#0: bool = 0u + let app6.Sender#0: bytes = itxn[app6#0].Sender + let app6.Fee#0: uint64 = itxn[app6#0].Fee + let app6.FirstValid#0: uint64 = itxn[app6#0].FirstValid + let app6.FirstValidTime#0: uint64 = itxn[app6#0].FirstValidTime + let app6.LastValid#0: uint64 = itxn[app6#0].LastValid + let app6.Note#0: bytes = itxn[app6#0].Note + let app6.Lease#0: bytes = itxn[app6#0].Lease + let app6.Receiver#0: bytes = itxn[app6#0].Receiver + let app6.Amount#0: uint64 = itxn[app6#0].Amount + let app6.CloseRemainderTo#0: bytes = itxn[app6#0].CloseRemainderTo + let app6.VotePK#0: bytes = itxn[app6#0].VotePK + let app6.SelectionPK#0: bytes = itxn[app6#0].SelectionPK + let app6.VoteFirst#0: uint64 = itxn[app6#0].VoteFirst + let app6.VoteLast#0: uint64 = itxn[app6#0].VoteLast + let app6.VoteKeyDilution#0: uint64 = itxn[app6#0].VoteKeyDilution + let app6.Type#0: bytes = itxn[app6#0].Type + let app6.TypeEnum#0: uint64 = itxn[app6#0].TypeEnum + let app6.XferAsset#0: uint64 = itxn[app6#0].XferAsset + let app6.AssetAmount#0: uint64 = itxn[app6#0].AssetAmount + let app6.AssetSender#0: bytes = itxn[app6#0].AssetSender + let app6.AssetReceiver#0: bytes = itxn[app6#0].AssetReceiver + let app6.AssetCloseTo#0: bytes = itxn[app6#0].AssetCloseTo + let app6.GroupIndex#0: uint64 = itxn[app6#0].GroupIndex + let app6.TxID#0: bytes = itxn[app6#0].TxID + let app6.ApplicationID#0: uint64 = itxn[app6#0].ApplicationID + let app6.OnCompletion#0: uint64 = itxn[app6#0].OnCompletion + let app6.NumAppArgs#0: uint64 = itxn[app6#0].NumAppArgs + let app6.NumAccounts#0: uint64 = itxn[app6#0].NumAccounts + let app6.ApprovalProgram#0: bytes = itxn[app6#0].ApprovalProgram + let app6.ClearStateProgram#0: bytes = itxn[app6#0].ClearStateProgram + let app6.RekeyTo#0: bytes = itxn[app6#0].RekeyTo + let app6.ConfigAsset#0: uint64 = itxn[app6#0].ConfigAsset + let app6.ConfigAssetTotal#0: uint64 = itxn[app6#0].ConfigAssetTotal + let app6.ConfigAssetDecimals#0: uint64 = itxn[app6#0].ConfigAssetDecimals + let app6.ConfigAssetDefaultFrozen#0: bool = itxn[app6#0].ConfigAssetDefaultFrozen + let app6.ConfigAssetUnitName#0: bytes = itxn[app6#0].ConfigAssetUnitName + let app6.ConfigAssetName#0: bytes = itxn[app6#0].ConfigAssetName + let app6.ConfigAssetURL#0: bytes = itxn[app6#0].ConfigAssetURL + let app6.ConfigAssetMetadataHash#0: bytes = itxn[app6#0].ConfigAssetMetadataHash + let app6.ConfigAssetManager#0: bytes = itxn[app6#0].ConfigAssetManager + let app6.ConfigAssetReserve#0: bytes = itxn[app6#0].ConfigAssetReserve + let app6.ConfigAssetFreeze#0: bytes = itxn[app6#0].ConfigAssetFreeze + let app6.ConfigAssetClawback#0: bytes = itxn[app6#0].ConfigAssetClawback + let app6.FreezeAsset#0: uint64 = itxn[app6#0].FreezeAsset + let app6.FreezeAssetAccount#0: bytes = itxn[app6#0].FreezeAssetAccount + let app6.FreezeAssetFrozen#0: bool = itxn[app6#0].FreezeAssetFrozen + let app6.NumAssets#0: uint64 = itxn[app6#0].NumAssets + let app6.NumApplications#0: uint64 = itxn[app6#0].NumApplications + let app6.GlobalNumUint#0: uint64 = itxn[app6#0].GlobalNumUint + let app6.GlobalNumByteSlice#0: uint64 = itxn[app6#0].GlobalNumByteSlice + let app6.LocalNumUint#0: uint64 = itxn[app6#0].LocalNumUint + let app6.LocalNumByteSlice#0: uint64 = itxn[app6#0].LocalNumByteSlice + let app6.ExtraProgramPages#0: uint64 = itxn[app6#0].ExtraProgramPages + let app6.Nonparticipation#0: bool = itxn[app6#0].Nonparticipation + let app6.NumLogs#0: uint64 = itxn[app6#0].NumLogs + let app6.CreatedAssetID#0: uint64 = itxn[app6#0].CreatedAssetID + let app6.CreatedApplicationID#0: uint64 = itxn[app6#0].CreatedApplicationID + let app6.LastLog#0: bytes = itxn[app6#0].LastLog + let app6.StateProofPK#0: bytes = itxn[app6#0].StateProofPK + let app6.NumApprovalProgramPages#0: uint64 = itxn[app6#0].NumApprovalProgramPages + let app6.NumClearStateProgramPages#0: uint64 = itxn[app6#0].NumClearStateProgramPages + let app7._is_last#0: bool = 0u + let app7.Sender#0: bytes = itxn[app7#0].Sender + let app7.Fee#0: uint64 = itxn[app7#0].Fee + let app7.FirstValid#0: uint64 = itxn[app7#0].FirstValid + let app7.FirstValidTime#0: uint64 = itxn[app7#0].FirstValidTime + let app7.LastValid#0: uint64 = itxn[app7#0].LastValid + let app7.Note#0: bytes = itxn[app7#0].Note + let app7.Lease#0: bytes = itxn[app7#0].Lease + let app7.Receiver#0: bytes = itxn[app7#0].Receiver + let app7.Amount#0: uint64 = itxn[app7#0].Amount + let app7.CloseRemainderTo#0: bytes = itxn[app7#0].CloseRemainderTo + let app7.VotePK#0: bytes = itxn[app7#0].VotePK + let app7.SelectionPK#0: bytes = itxn[app7#0].SelectionPK + let app7.VoteFirst#0: uint64 = itxn[app7#0].VoteFirst + let app7.VoteLast#0: uint64 = itxn[app7#0].VoteLast + let app7.VoteKeyDilution#0: uint64 = itxn[app7#0].VoteKeyDilution + let app7.Type#0: bytes = itxn[app7#0].Type + let app7.TypeEnum#0: uint64 = itxn[app7#0].TypeEnum + let app7.XferAsset#0: uint64 = itxn[app7#0].XferAsset + let app7.AssetAmount#0: uint64 = itxn[app7#0].AssetAmount + let app7.AssetSender#0: bytes = itxn[app7#0].AssetSender + let app7.AssetReceiver#0: bytes = itxn[app7#0].AssetReceiver + let app7.AssetCloseTo#0: bytes = itxn[app7#0].AssetCloseTo + let app7.GroupIndex#0: uint64 = itxn[app7#0].GroupIndex + let app7.TxID#0: bytes = itxn[app7#0].TxID + let app7.ApplicationID#0: uint64 = itxn[app7#0].ApplicationID + let app7.OnCompletion#0: uint64 = itxn[app7#0].OnCompletion + let app7.NumAppArgs#0: uint64 = itxn[app7#0].NumAppArgs + let app7.NumAccounts#0: uint64 = itxn[app7#0].NumAccounts + let app7.ApprovalProgram#0: bytes = itxn[app7#0].ApprovalProgram + let app7.ClearStateProgram#0: bytes = itxn[app7#0].ClearStateProgram + let app7.RekeyTo#0: bytes = itxn[app7#0].RekeyTo + let app7.ConfigAsset#0: uint64 = itxn[app7#0].ConfigAsset + let app7.ConfigAssetTotal#0: uint64 = itxn[app7#0].ConfigAssetTotal + let app7.ConfigAssetDecimals#0: uint64 = itxn[app7#0].ConfigAssetDecimals + let app7.ConfigAssetDefaultFrozen#0: bool = itxn[app7#0].ConfigAssetDefaultFrozen + let app7.ConfigAssetUnitName#0: bytes = itxn[app7#0].ConfigAssetUnitName + let app7.ConfigAssetName#0: bytes = itxn[app7#0].ConfigAssetName + let app7.ConfigAssetURL#0: bytes = itxn[app7#0].ConfigAssetURL + let app7.ConfigAssetMetadataHash#0: bytes = itxn[app7#0].ConfigAssetMetadataHash + let app7.ConfigAssetManager#0: bytes = itxn[app7#0].ConfigAssetManager + let app7.ConfigAssetReserve#0: bytes = itxn[app7#0].ConfigAssetReserve + let app7.ConfigAssetFreeze#0: bytes = itxn[app7#0].ConfigAssetFreeze + let app7.ConfigAssetClawback#0: bytes = itxn[app7#0].ConfigAssetClawback + let app7.FreezeAsset#0: uint64 = itxn[app7#0].FreezeAsset + let app7.FreezeAssetAccount#0: bytes = itxn[app7#0].FreezeAssetAccount + let app7.FreezeAssetFrozen#0: bool = itxn[app7#0].FreezeAssetFrozen + let app7.NumAssets#0: uint64 = itxn[app7#0].NumAssets + let app7.NumApplications#0: uint64 = itxn[app7#0].NumApplications + let app7.GlobalNumUint#0: uint64 = itxn[app7#0].GlobalNumUint + let app7.GlobalNumByteSlice#0: uint64 = itxn[app7#0].GlobalNumByteSlice + let app7.LocalNumUint#0: uint64 = itxn[app7#0].LocalNumUint + let app7.LocalNumByteSlice#0: uint64 = itxn[app7#0].LocalNumByteSlice + let app7.ExtraProgramPages#0: uint64 = itxn[app7#0].ExtraProgramPages + let app7.Nonparticipation#0: bool = itxn[app7#0].Nonparticipation + let app7.NumLogs#0: uint64 = itxn[app7#0].NumLogs + let app7.CreatedAssetID#0: uint64 = itxn[app7#0].CreatedAssetID + let app7.CreatedApplicationID#0: uint64 = itxn[app7#0].CreatedApplicationID + let app7.LastLog#0: bytes = itxn[app7#0].LastLog + let app7.StateProofPK#0: bytes = itxn[app7#0].StateProofPK + let app7.NumApprovalProgramPages#0: uint64 = itxn[app7#0].NumApprovalProgramPages + let app7.NumClearStateProgramPages#0: uint64 = itxn[app7#0].NumClearStateProgramPages + let app8._is_last#0: bool = 0u + let app8.Sender#0: bytes = itxn[app8#0].Sender + let app8.Fee#0: uint64 = itxn[app8#0].Fee + let app8.FirstValid#0: uint64 = itxn[app8#0].FirstValid + let app8.FirstValidTime#0: uint64 = itxn[app8#0].FirstValidTime + let app8.LastValid#0: uint64 = itxn[app8#0].LastValid + let app8.Note#0: bytes = itxn[app8#0].Note + let app8.Lease#0: bytes = itxn[app8#0].Lease + let app8.Receiver#0: bytes = itxn[app8#0].Receiver + let app8.Amount#0: uint64 = itxn[app8#0].Amount + let app8.CloseRemainderTo#0: bytes = itxn[app8#0].CloseRemainderTo + let app8.VotePK#0: bytes = itxn[app8#0].VotePK + let app8.SelectionPK#0: bytes = itxn[app8#0].SelectionPK + let app8.VoteFirst#0: uint64 = itxn[app8#0].VoteFirst + let app8.VoteLast#0: uint64 = itxn[app8#0].VoteLast + let app8.VoteKeyDilution#0: uint64 = itxn[app8#0].VoteKeyDilution + let app8.Type#0: bytes = itxn[app8#0].Type + let app8.TypeEnum#0: uint64 = itxn[app8#0].TypeEnum + let app8.XferAsset#0: uint64 = itxn[app8#0].XferAsset + let app8.AssetAmount#0: uint64 = itxn[app8#0].AssetAmount + let app8.AssetSender#0: bytes = itxn[app8#0].AssetSender + let app8.AssetReceiver#0: bytes = itxn[app8#0].AssetReceiver + let app8.AssetCloseTo#0: bytes = itxn[app8#0].AssetCloseTo + let app8.GroupIndex#0: uint64 = itxn[app8#0].GroupIndex + let app8.TxID#0: bytes = itxn[app8#0].TxID + let app8.ApplicationID#0: uint64 = itxn[app8#0].ApplicationID + let app8.OnCompletion#0: uint64 = itxn[app8#0].OnCompletion + let app8.NumAppArgs#0: uint64 = itxn[app8#0].NumAppArgs + let app8.NumAccounts#0: uint64 = itxn[app8#0].NumAccounts + let app8.ApprovalProgram#0: bytes = itxn[app8#0].ApprovalProgram + let app8.ClearStateProgram#0: bytes = itxn[app8#0].ClearStateProgram + let app8.RekeyTo#0: bytes = itxn[app8#0].RekeyTo + let app8.ConfigAsset#0: uint64 = itxn[app8#0].ConfigAsset + let app8.ConfigAssetTotal#0: uint64 = itxn[app8#0].ConfigAssetTotal + let app8.ConfigAssetDecimals#0: uint64 = itxn[app8#0].ConfigAssetDecimals + let app8.ConfigAssetDefaultFrozen#0: bool = itxn[app8#0].ConfigAssetDefaultFrozen + let app8.ConfigAssetUnitName#0: bytes = itxn[app8#0].ConfigAssetUnitName + let app8.ConfigAssetName#0: bytes = itxn[app8#0].ConfigAssetName + let app8.ConfigAssetURL#0: bytes = itxn[app8#0].ConfigAssetURL + let app8.ConfigAssetMetadataHash#0: bytes = itxn[app8#0].ConfigAssetMetadataHash + let app8.ConfigAssetManager#0: bytes = itxn[app8#0].ConfigAssetManager + let app8.ConfigAssetReserve#0: bytes = itxn[app8#0].ConfigAssetReserve + let app8.ConfigAssetFreeze#0: bytes = itxn[app8#0].ConfigAssetFreeze + let app8.ConfigAssetClawback#0: bytes = itxn[app8#0].ConfigAssetClawback + let app8.FreezeAsset#0: uint64 = itxn[app8#0].FreezeAsset + let app8.FreezeAssetAccount#0: bytes = itxn[app8#0].FreezeAssetAccount + let app8.FreezeAssetFrozen#0: bool = itxn[app8#0].FreezeAssetFrozen + let app8.NumAssets#0: uint64 = itxn[app8#0].NumAssets + let app8.NumApplications#0: uint64 = itxn[app8#0].NumApplications + let app8.GlobalNumUint#0: uint64 = itxn[app8#0].GlobalNumUint + let app8.GlobalNumByteSlice#0: uint64 = itxn[app8#0].GlobalNumByteSlice + let app8.LocalNumUint#0: uint64 = itxn[app8#0].LocalNumUint + let app8.LocalNumByteSlice#0: uint64 = itxn[app8#0].LocalNumByteSlice + let app8.ExtraProgramPages#0: uint64 = itxn[app8#0].ExtraProgramPages + let app8.Nonparticipation#0: bool = itxn[app8#0].Nonparticipation + let app8.NumLogs#0: uint64 = itxn[app8#0].NumLogs + let app8.CreatedAssetID#0: uint64 = itxn[app8#0].CreatedAssetID + let app8.CreatedApplicationID#0: uint64 = itxn[app8#0].CreatedApplicationID + let app8.LastLog#0: bytes = itxn[app8#0].LastLog + let app8.StateProofPK#0: bytes = itxn[app8#0].StateProofPK + let app8.NumApprovalProgramPages#0: uint64 = itxn[app8#0].NumApprovalProgramPages + let app8.NumClearStateProgramPages#0: uint64 = itxn[app8#0].NumClearStateProgramPages + let app9._is_last#0: bool = 0u + let app9.Sender#0: bytes = itxn[app9#0].Sender + let app9.Fee#0: uint64 = itxn[app9#0].Fee + let app9.FirstValid#0: uint64 = itxn[app9#0].FirstValid + let app9.FirstValidTime#0: uint64 = itxn[app9#0].FirstValidTime + let app9.LastValid#0: uint64 = itxn[app9#0].LastValid + let app9.Note#0: bytes = itxn[app9#0].Note + let app9.Lease#0: bytes = itxn[app9#0].Lease + let app9.Receiver#0: bytes = itxn[app9#0].Receiver + let app9.Amount#0: uint64 = itxn[app9#0].Amount + let app9.CloseRemainderTo#0: bytes = itxn[app9#0].CloseRemainderTo + let app9.VotePK#0: bytes = itxn[app9#0].VotePK + let app9.SelectionPK#0: bytes = itxn[app9#0].SelectionPK + let app9.VoteFirst#0: uint64 = itxn[app9#0].VoteFirst + let app9.VoteLast#0: uint64 = itxn[app9#0].VoteLast + let app9.VoteKeyDilution#0: uint64 = itxn[app9#0].VoteKeyDilution + let app9.Type#0: bytes = itxn[app9#0].Type + let app9.TypeEnum#0: uint64 = itxn[app9#0].TypeEnum + let app9.XferAsset#0: uint64 = itxn[app9#0].XferAsset + let app9.AssetAmount#0: uint64 = itxn[app9#0].AssetAmount + let app9.AssetSender#0: bytes = itxn[app9#0].AssetSender + let app9.AssetReceiver#0: bytes = itxn[app9#0].AssetReceiver + let app9.AssetCloseTo#0: bytes = itxn[app9#0].AssetCloseTo + let app9.GroupIndex#0: uint64 = itxn[app9#0].GroupIndex + let app9.TxID#0: bytes = itxn[app9#0].TxID + let app9.ApplicationID#0: uint64 = itxn[app9#0].ApplicationID + let app9.OnCompletion#0: uint64 = itxn[app9#0].OnCompletion + let app9.NumAppArgs#0: uint64 = itxn[app9#0].NumAppArgs + let app9.NumAccounts#0: uint64 = itxn[app9#0].NumAccounts + let app9.ApprovalProgram#0: bytes = itxn[app9#0].ApprovalProgram + let app9.ClearStateProgram#0: bytes = itxn[app9#0].ClearStateProgram + let app9.RekeyTo#0: bytes = itxn[app9#0].RekeyTo + let app9.ConfigAsset#0: uint64 = itxn[app9#0].ConfigAsset + let app9.ConfigAssetTotal#0: uint64 = itxn[app9#0].ConfigAssetTotal + let app9.ConfigAssetDecimals#0: uint64 = itxn[app9#0].ConfigAssetDecimals + let app9.ConfigAssetDefaultFrozen#0: bool = itxn[app9#0].ConfigAssetDefaultFrozen + let app9.ConfigAssetUnitName#0: bytes = itxn[app9#0].ConfigAssetUnitName + let app9.ConfigAssetName#0: bytes = itxn[app9#0].ConfigAssetName + let app9.ConfigAssetURL#0: bytes = itxn[app9#0].ConfigAssetURL + let app9.ConfigAssetMetadataHash#0: bytes = itxn[app9#0].ConfigAssetMetadataHash + let app9.ConfigAssetManager#0: bytes = itxn[app9#0].ConfigAssetManager + let app9.ConfigAssetReserve#0: bytes = itxn[app9#0].ConfigAssetReserve + let app9.ConfigAssetFreeze#0: bytes = itxn[app9#0].ConfigAssetFreeze + let app9.ConfigAssetClawback#0: bytes = itxn[app9#0].ConfigAssetClawback + let app9.FreezeAsset#0: uint64 = itxn[app9#0].FreezeAsset + let app9.FreezeAssetAccount#0: bytes = itxn[app9#0].FreezeAssetAccount + let app9.FreezeAssetFrozen#0: bool = itxn[app9#0].FreezeAssetFrozen + let app9.NumAssets#0: uint64 = itxn[app9#0].NumAssets + let app9.NumApplications#0: uint64 = itxn[app9#0].NumApplications + let app9.GlobalNumUint#0: uint64 = itxn[app9#0].GlobalNumUint + let app9.GlobalNumByteSlice#0: uint64 = itxn[app9#0].GlobalNumByteSlice + let app9.LocalNumUint#0: uint64 = itxn[app9#0].LocalNumUint + let app9.LocalNumByteSlice#0: uint64 = itxn[app9#0].LocalNumByteSlice + let app9.ExtraProgramPages#0: uint64 = itxn[app9#0].ExtraProgramPages + let app9.Nonparticipation#0: bool = itxn[app9#0].Nonparticipation + let app9.NumLogs#0: uint64 = itxn[app9#0].NumLogs + let app9.CreatedAssetID#0: uint64 = itxn[app9#0].CreatedAssetID + let app9.CreatedApplicationID#0: uint64 = itxn[app9#0].CreatedApplicationID + let app9.LastLog#0: bytes = itxn[app9#0].LastLog + let app9.StateProofPK#0: bytes = itxn[app9#0].StateProofPK + let app9.NumApprovalProgramPages#0: uint64 = itxn[app9#0].NumApprovalProgramPages + let app9.NumClearStateProgramPages#0: uint64 = itxn[app9#0].NumClearStateProgramPages + let app10._is_last#0: bool = 0u + let app10.Sender#0: bytes = itxn[app10#0].Sender + let app10.Fee#0: uint64 = itxn[app10#0].Fee + let app10.FirstValid#0: uint64 = itxn[app10#0].FirstValid + let app10.FirstValidTime#0: uint64 = itxn[app10#0].FirstValidTime + let app10.LastValid#0: uint64 = itxn[app10#0].LastValid + let app10.Note#0: bytes = itxn[app10#0].Note + let app10.Lease#0: bytes = itxn[app10#0].Lease + let app10.Receiver#0: bytes = itxn[app10#0].Receiver + let app10.Amount#0: uint64 = itxn[app10#0].Amount + let app10.CloseRemainderTo#0: bytes = itxn[app10#0].CloseRemainderTo + let app10.VotePK#0: bytes = itxn[app10#0].VotePK + let app10.SelectionPK#0: bytes = itxn[app10#0].SelectionPK + let app10.VoteFirst#0: uint64 = itxn[app10#0].VoteFirst + let app10.VoteLast#0: uint64 = itxn[app10#0].VoteLast + let app10.VoteKeyDilution#0: uint64 = itxn[app10#0].VoteKeyDilution + let app10.Type#0: bytes = itxn[app10#0].Type + let app10.TypeEnum#0: uint64 = itxn[app10#0].TypeEnum + let app10.XferAsset#0: uint64 = itxn[app10#0].XferAsset + let app10.AssetAmount#0: uint64 = itxn[app10#0].AssetAmount + let app10.AssetSender#0: bytes = itxn[app10#0].AssetSender + let app10.AssetReceiver#0: bytes = itxn[app10#0].AssetReceiver + let app10.AssetCloseTo#0: bytes = itxn[app10#0].AssetCloseTo + let app10.GroupIndex#0: uint64 = itxn[app10#0].GroupIndex + let app10.TxID#0: bytes = itxn[app10#0].TxID + let app10.ApplicationID#0: uint64 = itxn[app10#0].ApplicationID + let app10.OnCompletion#0: uint64 = itxn[app10#0].OnCompletion + let app10.NumAppArgs#0: uint64 = itxn[app10#0].NumAppArgs + let app10.NumAccounts#0: uint64 = itxn[app10#0].NumAccounts + let app10.ApprovalProgram#0: bytes = itxn[app10#0].ApprovalProgram + let app10.ClearStateProgram#0: bytes = itxn[app10#0].ClearStateProgram + let app10.RekeyTo#0: bytes = itxn[app10#0].RekeyTo + let app10.ConfigAsset#0: uint64 = itxn[app10#0].ConfigAsset + let app10.ConfigAssetTotal#0: uint64 = itxn[app10#0].ConfigAssetTotal + let app10.ConfigAssetDecimals#0: uint64 = itxn[app10#0].ConfigAssetDecimals + let app10.ConfigAssetDefaultFrozen#0: bool = itxn[app10#0].ConfigAssetDefaultFrozen + let app10.ConfigAssetUnitName#0: bytes = itxn[app10#0].ConfigAssetUnitName + let app10.ConfigAssetName#0: bytes = itxn[app10#0].ConfigAssetName + let app10.ConfigAssetURL#0: bytes = itxn[app10#0].ConfigAssetURL + let app10.ConfigAssetMetadataHash#0: bytes = itxn[app10#0].ConfigAssetMetadataHash + let app10.ConfigAssetManager#0: bytes = itxn[app10#0].ConfigAssetManager + let app10.ConfigAssetReserve#0: bytes = itxn[app10#0].ConfigAssetReserve + let app10.ConfigAssetFreeze#0: bytes = itxn[app10#0].ConfigAssetFreeze + let app10.ConfigAssetClawback#0: bytes = itxn[app10#0].ConfigAssetClawback + let app10.FreezeAsset#0: uint64 = itxn[app10#0].FreezeAsset + let app10.FreezeAssetAccount#0: bytes = itxn[app10#0].FreezeAssetAccount + let app10.FreezeAssetFrozen#0: bool = itxn[app10#0].FreezeAssetFrozen + let app10.NumAssets#0: uint64 = itxn[app10#0].NumAssets + let app10.NumApplications#0: uint64 = itxn[app10#0].NumApplications + let app10.GlobalNumUint#0: uint64 = itxn[app10#0].GlobalNumUint + let app10.GlobalNumByteSlice#0: uint64 = itxn[app10#0].GlobalNumByteSlice + let app10.LocalNumUint#0: uint64 = itxn[app10#0].LocalNumUint + let app10.LocalNumByteSlice#0: uint64 = itxn[app10#0].LocalNumByteSlice + let app10.ExtraProgramPages#0: uint64 = itxn[app10#0].ExtraProgramPages + let app10.Nonparticipation#0: bool = itxn[app10#0].Nonparticipation + let app10.NumLogs#0: uint64 = itxn[app10#0].NumLogs + let app10.CreatedAssetID#0: uint64 = itxn[app10#0].CreatedAssetID + let app10.CreatedApplicationID#0: uint64 = itxn[app10#0].CreatedApplicationID + let app10.LastLog#0: bytes = itxn[app10#0].LastLog + let app10.StateProofPK#0: bytes = itxn[app10#0].StateProofPK + let app10.NumApprovalProgramPages#0: uint64 = itxn[app10#0].NumApprovalProgramPages + let app10.NumClearStateProgramPages#0: uint64 = itxn[app10#0].NumClearStateProgramPages + let app11._is_last#0: bool = 0u + let app11.Sender#0: bytes = itxn[app11#0].Sender + let app11.Fee#0: uint64 = itxn[app11#0].Fee + let app11.FirstValid#0: uint64 = itxn[app11#0].FirstValid + let app11.FirstValidTime#0: uint64 = itxn[app11#0].FirstValidTime + let app11.LastValid#0: uint64 = itxn[app11#0].LastValid + let app11.Note#0: bytes = itxn[app11#0].Note + let app11.Lease#0: bytes = itxn[app11#0].Lease + let app11.Receiver#0: bytes = itxn[app11#0].Receiver + let app11.Amount#0: uint64 = itxn[app11#0].Amount + let app11.CloseRemainderTo#0: bytes = itxn[app11#0].CloseRemainderTo + let app11.VotePK#0: bytes = itxn[app11#0].VotePK + let app11.SelectionPK#0: bytes = itxn[app11#0].SelectionPK + let app11.VoteFirst#0: uint64 = itxn[app11#0].VoteFirst + let app11.VoteLast#0: uint64 = itxn[app11#0].VoteLast + let app11.VoteKeyDilution#0: uint64 = itxn[app11#0].VoteKeyDilution + let app11.Type#0: bytes = itxn[app11#0].Type + let app11.TypeEnum#0: uint64 = itxn[app11#0].TypeEnum + let app11.XferAsset#0: uint64 = itxn[app11#0].XferAsset + let app11.AssetAmount#0: uint64 = itxn[app11#0].AssetAmount + let app11.AssetSender#0: bytes = itxn[app11#0].AssetSender + let app11.AssetReceiver#0: bytes = itxn[app11#0].AssetReceiver + let app11.AssetCloseTo#0: bytes = itxn[app11#0].AssetCloseTo + let app11.GroupIndex#0: uint64 = itxn[app11#0].GroupIndex + let app11.TxID#0: bytes = itxn[app11#0].TxID + let app11.ApplicationID#0: uint64 = itxn[app11#0].ApplicationID + let app11.OnCompletion#0: uint64 = itxn[app11#0].OnCompletion + let app11.NumAppArgs#0: uint64 = itxn[app11#0].NumAppArgs + let app11.NumAccounts#0: uint64 = itxn[app11#0].NumAccounts + let app11.ApprovalProgram#0: bytes = itxn[app11#0].ApprovalProgram + let app11.ClearStateProgram#0: bytes = itxn[app11#0].ClearStateProgram + let app11.RekeyTo#0: bytes = itxn[app11#0].RekeyTo + let app11.ConfigAsset#0: uint64 = itxn[app11#0].ConfigAsset + let app11.ConfigAssetTotal#0: uint64 = itxn[app11#0].ConfigAssetTotal + let app11.ConfigAssetDecimals#0: uint64 = itxn[app11#0].ConfigAssetDecimals + let app11.ConfigAssetDefaultFrozen#0: bool = itxn[app11#0].ConfigAssetDefaultFrozen + let app11.ConfigAssetUnitName#0: bytes = itxn[app11#0].ConfigAssetUnitName + let app11.ConfigAssetName#0: bytes = itxn[app11#0].ConfigAssetName + let app11.ConfigAssetURL#0: bytes = itxn[app11#0].ConfigAssetURL + let app11.ConfigAssetMetadataHash#0: bytes = itxn[app11#0].ConfigAssetMetadataHash + let app11.ConfigAssetManager#0: bytes = itxn[app11#0].ConfigAssetManager + let app11.ConfigAssetReserve#0: bytes = itxn[app11#0].ConfigAssetReserve + let app11.ConfigAssetFreeze#0: bytes = itxn[app11#0].ConfigAssetFreeze + let app11.ConfigAssetClawback#0: bytes = itxn[app11#0].ConfigAssetClawback + let app11.FreezeAsset#0: uint64 = itxn[app11#0].FreezeAsset + let app11.FreezeAssetAccount#0: bytes = itxn[app11#0].FreezeAssetAccount + let app11.FreezeAssetFrozen#0: bool = itxn[app11#0].FreezeAssetFrozen + let app11.NumAssets#0: uint64 = itxn[app11#0].NumAssets + let app11.NumApplications#0: uint64 = itxn[app11#0].NumApplications + let app11.GlobalNumUint#0: uint64 = itxn[app11#0].GlobalNumUint + let app11.GlobalNumByteSlice#0: uint64 = itxn[app11#0].GlobalNumByteSlice + let app11.LocalNumUint#0: uint64 = itxn[app11#0].LocalNumUint + let app11.LocalNumByteSlice#0: uint64 = itxn[app11#0].LocalNumByteSlice + let app11.ExtraProgramPages#0: uint64 = itxn[app11#0].ExtraProgramPages + let app11.Nonparticipation#0: bool = itxn[app11#0].Nonparticipation + let app11.NumLogs#0: uint64 = itxn[app11#0].NumLogs + let app11.CreatedAssetID#0: uint64 = itxn[app11#0].CreatedAssetID + let app11.CreatedApplicationID#0: uint64 = itxn[app11#0].CreatedApplicationID + let app11.LastLog#0: bytes = itxn[app11#0].LastLog + let app11.StateProofPK#0: bytes = itxn[app11#0].StateProofPK + let app11.NumApprovalProgramPages#0: uint64 = itxn[app11#0].NumApprovalProgramPages + let app11.NumClearStateProgramPages#0: uint64 = itxn[app11#0].NumClearStateProgramPages + let app12._is_last#0: bool = 0u + let app12.Sender#0: bytes = itxn[app12#0].Sender + let app12.Fee#0: uint64 = itxn[app12#0].Fee + let app12.FirstValid#0: uint64 = itxn[app12#0].FirstValid + let app12.FirstValidTime#0: uint64 = itxn[app12#0].FirstValidTime + let app12.LastValid#0: uint64 = itxn[app12#0].LastValid + let app12.Note#0: bytes = itxn[app12#0].Note + let app12.Lease#0: bytes = itxn[app12#0].Lease + let app12.Receiver#0: bytes = itxn[app12#0].Receiver + let app12.Amount#0: uint64 = itxn[app12#0].Amount + let app12.CloseRemainderTo#0: bytes = itxn[app12#0].CloseRemainderTo + let app12.VotePK#0: bytes = itxn[app12#0].VotePK + let app12.SelectionPK#0: bytes = itxn[app12#0].SelectionPK + let app12.VoteFirst#0: uint64 = itxn[app12#0].VoteFirst + let app12.VoteLast#0: uint64 = itxn[app12#0].VoteLast + let app12.VoteKeyDilution#0: uint64 = itxn[app12#0].VoteKeyDilution + let app12.Type#0: bytes = itxn[app12#0].Type + let app12.TypeEnum#0: uint64 = itxn[app12#0].TypeEnum + let app12.XferAsset#0: uint64 = itxn[app12#0].XferAsset + let app12.AssetAmount#0: uint64 = itxn[app12#0].AssetAmount + let app12.AssetSender#0: bytes = itxn[app12#0].AssetSender + let app12.AssetReceiver#0: bytes = itxn[app12#0].AssetReceiver + let app12.AssetCloseTo#0: bytes = itxn[app12#0].AssetCloseTo + let app12.GroupIndex#0: uint64 = itxn[app12#0].GroupIndex + let app12.TxID#0: bytes = itxn[app12#0].TxID + let app12.ApplicationID#0: uint64 = itxn[app12#0].ApplicationID + let app12.OnCompletion#0: uint64 = itxn[app12#0].OnCompletion + let app12.NumAppArgs#0: uint64 = itxn[app12#0].NumAppArgs + let app12.NumAccounts#0: uint64 = itxn[app12#0].NumAccounts + let app12.ApprovalProgram#0: bytes = itxn[app12#0].ApprovalProgram + let app12.ClearStateProgram#0: bytes = itxn[app12#0].ClearStateProgram + let app12.RekeyTo#0: bytes = itxn[app12#0].RekeyTo + let app12.ConfigAsset#0: uint64 = itxn[app12#0].ConfigAsset + let app12.ConfigAssetTotal#0: uint64 = itxn[app12#0].ConfigAssetTotal + let app12.ConfigAssetDecimals#0: uint64 = itxn[app12#0].ConfigAssetDecimals + let app12.ConfigAssetDefaultFrozen#0: bool = itxn[app12#0].ConfigAssetDefaultFrozen + let app12.ConfigAssetUnitName#0: bytes = itxn[app12#0].ConfigAssetUnitName + let app12.ConfigAssetName#0: bytes = itxn[app12#0].ConfigAssetName + let app12.ConfigAssetURL#0: bytes = itxn[app12#0].ConfigAssetURL + let app12.ConfigAssetMetadataHash#0: bytes = itxn[app12#0].ConfigAssetMetadataHash + let app12.ConfigAssetManager#0: bytes = itxn[app12#0].ConfigAssetManager + let app12.ConfigAssetReserve#0: bytes = itxn[app12#0].ConfigAssetReserve + let app12.ConfigAssetFreeze#0: bytes = itxn[app12#0].ConfigAssetFreeze + let app12.ConfigAssetClawback#0: bytes = itxn[app12#0].ConfigAssetClawback + let app12.FreezeAsset#0: uint64 = itxn[app12#0].FreezeAsset + let app12.FreezeAssetAccount#0: bytes = itxn[app12#0].FreezeAssetAccount + let app12.FreezeAssetFrozen#0: bool = itxn[app12#0].FreezeAssetFrozen + let app12.NumAssets#0: uint64 = itxn[app12#0].NumAssets + let app12.NumApplications#0: uint64 = itxn[app12#0].NumApplications + let app12.GlobalNumUint#0: uint64 = itxn[app12#0].GlobalNumUint + let app12.GlobalNumByteSlice#0: uint64 = itxn[app12#0].GlobalNumByteSlice + let app12.LocalNumUint#0: uint64 = itxn[app12#0].LocalNumUint + let app12.LocalNumByteSlice#0: uint64 = itxn[app12#0].LocalNumByteSlice + let app12.ExtraProgramPages#0: uint64 = itxn[app12#0].ExtraProgramPages + let app12.Nonparticipation#0: bool = itxn[app12#0].Nonparticipation + let app12.NumLogs#0: uint64 = itxn[app12#0].NumLogs + let app12.CreatedAssetID#0: uint64 = itxn[app12#0].CreatedAssetID + let app12.CreatedApplicationID#0: uint64 = itxn[app12#0].CreatedApplicationID + let app12.LastLog#0: bytes = itxn[app12#0].LastLog + let app12.StateProofPK#0: bytes = itxn[app12#0].StateProofPK + let app12.NumApprovalProgramPages#0: uint64 = itxn[app12#0].NumApprovalProgramPages + let app12.NumClearStateProgramPages#0: uint64 = itxn[app12#0].NumClearStateProgramPages + let app13._is_last#0: bool = 0u + let app13.Sender#0: bytes = itxn[app13#0].Sender + let app13.Fee#0: uint64 = itxn[app13#0].Fee + let app13.FirstValid#0: uint64 = itxn[app13#0].FirstValid + let app13.FirstValidTime#0: uint64 = itxn[app13#0].FirstValidTime + let app13.LastValid#0: uint64 = itxn[app13#0].LastValid + let app13.Note#0: bytes = itxn[app13#0].Note + let app13.Lease#0: bytes = itxn[app13#0].Lease + let app13.Receiver#0: bytes = itxn[app13#0].Receiver + let app13.Amount#0: uint64 = itxn[app13#0].Amount + let app13.CloseRemainderTo#0: bytes = itxn[app13#0].CloseRemainderTo + let app13.VotePK#0: bytes = itxn[app13#0].VotePK + let app13.SelectionPK#0: bytes = itxn[app13#0].SelectionPK + let app13.VoteFirst#0: uint64 = itxn[app13#0].VoteFirst + let app13.VoteLast#0: uint64 = itxn[app13#0].VoteLast + let app13.VoteKeyDilution#0: uint64 = itxn[app13#0].VoteKeyDilution + let app13.Type#0: bytes = itxn[app13#0].Type + let app13.TypeEnum#0: uint64 = itxn[app13#0].TypeEnum + let app13.XferAsset#0: uint64 = itxn[app13#0].XferAsset + let app13.AssetAmount#0: uint64 = itxn[app13#0].AssetAmount + let app13.AssetSender#0: bytes = itxn[app13#0].AssetSender + let app13.AssetReceiver#0: bytes = itxn[app13#0].AssetReceiver + let app13.AssetCloseTo#0: bytes = itxn[app13#0].AssetCloseTo + let app13.GroupIndex#0: uint64 = itxn[app13#0].GroupIndex + let app13.TxID#0: bytes = itxn[app13#0].TxID + let app13.ApplicationID#0: uint64 = itxn[app13#0].ApplicationID + let app13.OnCompletion#0: uint64 = itxn[app13#0].OnCompletion + let app13.NumAppArgs#0: uint64 = itxn[app13#0].NumAppArgs + let app13.NumAccounts#0: uint64 = itxn[app13#0].NumAccounts + let app13.ApprovalProgram#0: bytes = itxn[app13#0].ApprovalProgram + let app13.ClearStateProgram#0: bytes = itxn[app13#0].ClearStateProgram + let app13.RekeyTo#0: bytes = itxn[app13#0].RekeyTo + let app13.ConfigAsset#0: uint64 = itxn[app13#0].ConfigAsset + let app13.ConfigAssetTotal#0: uint64 = itxn[app13#0].ConfigAssetTotal + let app13.ConfigAssetDecimals#0: uint64 = itxn[app13#0].ConfigAssetDecimals + let app13.ConfigAssetDefaultFrozen#0: bool = itxn[app13#0].ConfigAssetDefaultFrozen + let app13.ConfigAssetUnitName#0: bytes = itxn[app13#0].ConfigAssetUnitName + let app13.ConfigAssetName#0: bytes = itxn[app13#0].ConfigAssetName + let app13.ConfigAssetURL#0: bytes = itxn[app13#0].ConfigAssetURL + let app13.ConfigAssetMetadataHash#0: bytes = itxn[app13#0].ConfigAssetMetadataHash + let app13.ConfigAssetManager#0: bytes = itxn[app13#0].ConfigAssetManager + let app13.ConfigAssetReserve#0: bytes = itxn[app13#0].ConfigAssetReserve + let app13.ConfigAssetFreeze#0: bytes = itxn[app13#0].ConfigAssetFreeze + let app13.ConfigAssetClawback#0: bytes = itxn[app13#0].ConfigAssetClawback + let app13.FreezeAsset#0: uint64 = itxn[app13#0].FreezeAsset + let app13.FreezeAssetAccount#0: bytes = itxn[app13#0].FreezeAssetAccount + let app13.FreezeAssetFrozen#0: bool = itxn[app13#0].FreezeAssetFrozen + let app13.NumAssets#0: uint64 = itxn[app13#0].NumAssets + let app13.NumApplications#0: uint64 = itxn[app13#0].NumApplications + let app13.GlobalNumUint#0: uint64 = itxn[app13#0].GlobalNumUint + let app13.GlobalNumByteSlice#0: uint64 = itxn[app13#0].GlobalNumByteSlice + let app13.LocalNumUint#0: uint64 = itxn[app13#0].LocalNumUint + let app13.LocalNumByteSlice#0: uint64 = itxn[app13#0].LocalNumByteSlice + let app13.ExtraProgramPages#0: uint64 = itxn[app13#0].ExtraProgramPages + let app13.Nonparticipation#0: bool = itxn[app13#0].Nonparticipation + let app13.NumLogs#0: uint64 = itxn[app13#0].NumLogs + let app13.CreatedAssetID#0: uint64 = itxn[app13#0].CreatedAssetID + let app13.CreatedApplicationID#0: uint64 = itxn[app13#0].CreatedApplicationID + let app13.LastLog#0: bytes = itxn[app13#0].LastLog + let app13.StateProofPK#0: bytes = itxn[app13#0].StateProofPK + let app13.NumApprovalProgramPages#0: uint64 = itxn[app13#0].NumApprovalProgramPages + let app13.NumClearStateProgramPages#0: uint64 = itxn[app13#0].NumClearStateProgramPages + let app14._is_last#0: bool = 0u + let app14.Sender#0: bytes = itxn[app14#0].Sender + let app14.Fee#0: uint64 = itxn[app14#0].Fee + let app14.FirstValid#0: uint64 = itxn[app14#0].FirstValid + let app14.FirstValidTime#0: uint64 = itxn[app14#0].FirstValidTime + let app14.LastValid#0: uint64 = itxn[app14#0].LastValid + let app14.Note#0: bytes = itxn[app14#0].Note + let app14.Lease#0: bytes = itxn[app14#0].Lease + let app14.Receiver#0: bytes = itxn[app14#0].Receiver + let app14.Amount#0: uint64 = itxn[app14#0].Amount + let app14.CloseRemainderTo#0: bytes = itxn[app14#0].CloseRemainderTo + let app14.VotePK#0: bytes = itxn[app14#0].VotePK + let app14.SelectionPK#0: bytes = itxn[app14#0].SelectionPK + let app14.VoteFirst#0: uint64 = itxn[app14#0].VoteFirst + let app14.VoteLast#0: uint64 = itxn[app14#0].VoteLast + let app14.VoteKeyDilution#0: uint64 = itxn[app14#0].VoteKeyDilution + let app14.Type#0: bytes = itxn[app14#0].Type + let app14.TypeEnum#0: uint64 = itxn[app14#0].TypeEnum + let app14.XferAsset#0: uint64 = itxn[app14#0].XferAsset + let app14.AssetAmount#0: uint64 = itxn[app14#0].AssetAmount + let app14.AssetSender#0: bytes = itxn[app14#0].AssetSender + let app14.AssetReceiver#0: bytes = itxn[app14#0].AssetReceiver + let app14.AssetCloseTo#0: bytes = itxn[app14#0].AssetCloseTo + let app14.GroupIndex#0: uint64 = itxn[app14#0].GroupIndex + let app14.TxID#0: bytes = itxn[app14#0].TxID + let app14.ApplicationID#0: uint64 = itxn[app14#0].ApplicationID + let app14.OnCompletion#0: uint64 = itxn[app14#0].OnCompletion + let app14.NumAppArgs#0: uint64 = itxn[app14#0].NumAppArgs + let app14.NumAccounts#0: uint64 = itxn[app14#0].NumAccounts + let app14.ApprovalProgram#0: bytes = itxn[app14#0].ApprovalProgram + let app14.ClearStateProgram#0: bytes = itxn[app14#0].ClearStateProgram + let app14.RekeyTo#0: bytes = itxn[app14#0].RekeyTo + let app14.ConfigAsset#0: uint64 = itxn[app14#0].ConfigAsset + let app14.ConfigAssetTotal#0: uint64 = itxn[app14#0].ConfigAssetTotal + let app14.ConfigAssetDecimals#0: uint64 = itxn[app14#0].ConfigAssetDecimals + let app14.ConfigAssetDefaultFrozen#0: bool = itxn[app14#0].ConfigAssetDefaultFrozen + let app14.ConfigAssetUnitName#0: bytes = itxn[app14#0].ConfigAssetUnitName + let app14.ConfigAssetName#0: bytes = itxn[app14#0].ConfigAssetName + let app14.ConfigAssetURL#0: bytes = itxn[app14#0].ConfigAssetURL + let app14.ConfigAssetMetadataHash#0: bytes = itxn[app14#0].ConfigAssetMetadataHash + let app14.ConfigAssetManager#0: bytes = itxn[app14#0].ConfigAssetManager + let app14.ConfigAssetReserve#0: bytes = itxn[app14#0].ConfigAssetReserve + let app14.ConfigAssetFreeze#0: bytes = itxn[app14#0].ConfigAssetFreeze + let app14.ConfigAssetClawback#0: bytes = itxn[app14#0].ConfigAssetClawback + let app14.FreezeAsset#0: uint64 = itxn[app14#0].FreezeAsset + let app14.FreezeAssetAccount#0: bytes = itxn[app14#0].FreezeAssetAccount + let app14.FreezeAssetFrozen#0: bool = itxn[app14#0].FreezeAssetFrozen + let app14.NumAssets#0: uint64 = itxn[app14#0].NumAssets + let app14.NumApplications#0: uint64 = itxn[app14#0].NumApplications + let app14.GlobalNumUint#0: uint64 = itxn[app14#0].GlobalNumUint + let app14.GlobalNumByteSlice#0: uint64 = itxn[app14#0].GlobalNumByteSlice + let app14.LocalNumUint#0: uint64 = itxn[app14#0].LocalNumUint + let app14.LocalNumByteSlice#0: uint64 = itxn[app14#0].LocalNumByteSlice + let app14.ExtraProgramPages#0: uint64 = itxn[app14#0].ExtraProgramPages + let app14.Nonparticipation#0: bool = itxn[app14#0].Nonparticipation + let app14.NumLogs#0: uint64 = itxn[app14#0].NumLogs + let app14.CreatedAssetID#0: uint64 = itxn[app14#0].CreatedAssetID + let app14.CreatedApplicationID#0: uint64 = itxn[app14#0].CreatedApplicationID + let app14.LastLog#0: bytes = itxn[app14#0].LastLog + let app14.StateProofPK#0: bytes = itxn[app14#0].StateProofPK + let app14.NumApprovalProgramPages#0: uint64 = itxn[app14#0].NumApprovalProgramPages + let app14.NumClearStateProgramPages#0: uint64 = itxn[app14#0].NumClearStateProgramPages + let app15._is_last#0: bool = 0u + let app15.Sender#0: bytes = itxn[app15#0].Sender + let app15.Fee#0: uint64 = itxn[app15#0].Fee + let app15.FirstValid#0: uint64 = itxn[app15#0].FirstValid + let app15.FirstValidTime#0: uint64 = itxn[app15#0].FirstValidTime + let app15.LastValid#0: uint64 = itxn[app15#0].LastValid + let app15.Note#0: bytes = itxn[app15#0].Note + let app15.Lease#0: bytes = itxn[app15#0].Lease + let app15.Receiver#0: bytes = itxn[app15#0].Receiver + let app15.Amount#0: uint64 = itxn[app15#0].Amount + let app15.CloseRemainderTo#0: bytes = itxn[app15#0].CloseRemainderTo + let app15.VotePK#0: bytes = itxn[app15#0].VotePK + let app15.SelectionPK#0: bytes = itxn[app15#0].SelectionPK + let app15.VoteFirst#0: uint64 = itxn[app15#0].VoteFirst + let app15.VoteLast#0: uint64 = itxn[app15#0].VoteLast + let app15.VoteKeyDilution#0: uint64 = itxn[app15#0].VoteKeyDilution + let app15.Type#0: bytes = itxn[app15#0].Type + let app15.TypeEnum#0: uint64 = itxn[app15#0].TypeEnum + let app15.XferAsset#0: uint64 = itxn[app15#0].XferAsset + let app15.AssetAmount#0: uint64 = itxn[app15#0].AssetAmount + let app15.AssetSender#0: bytes = itxn[app15#0].AssetSender + let app15.AssetReceiver#0: bytes = itxn[app15#0].AssetReceiver + let app15.AssetCloseTo#0: bytes = itxn[app15#0].AssetCloseTo + let app15.GroupIndex#0: uint64 = itxn[app15#0].GroupIndex + let app15.TxID#0: bytes = itxn[app15#0].TxID + let app15.ApplicationID#0: uint64 = itxn[app15#0].ApplicationID + let app15.OnCompletion#0: uint64 = itxn[app15#0].OnCompletion + let app15.NumAppArgs#0: uint64 = itxn[app15#0].NumAppArgs + let app15.NumAccounts#0: uint64 = itxn[app15#0].NumAccounts + let app15.ApprovalProgram#0: bytes = itxn[app15#0].ApprovalProgram + let app15.ClearStateProgram#0: bytes = itxn[app15#0].ClearStateProgram + let app15.RekeyTo#0: bytes = itxn[app15#0].RekeyTo + let app15.ConfigAsset#0: uint64 = itxn[app15#0].ConfigAsset + let app15.ConfigAssetTotal#0: uint64 = itxn[app15#0].ConfigAssetTotal + let app15.ConfigAssetDecimals#0: uint64 = itxn[app15#0].ConfigAssetDecimals + let app15.ConfigAssetDefaultFrozen#0: bool = itxn[app15#0].ConfigAssetDefaultFrozen + let app15.ConfigAssetUnitName#0: bytes = itxn[app15#0].ConfigAssetUnitName + let app15.ConfigAssetName#0: bytes = itxn[app15#0].ConfigAssetName + let app15.ConfigAssetURL#0: bytes = itxn[app15#0].ConfigAssetURL + let app15.ConfigAssetMetadataHash#0: bytes = itxn[app15#0].ConfigAssetMetadataHash + let app15.ConfigAssetManager#0: bytes = itxn[app15#0].ConfigAssetManager + let app15.ConfigAssetReserve#0: bytes = itxn[app15#0].ConfigAssetReserve + let app15.ConfigAssetFreeze#0: bytes = itxn[app15#0].ConfigAssetFreeze + let app15.ConfigAssetClawback#0: bytes = itxn[app15#0].ConfigAssetClawback + let app15.FreezeAsset#0: uint64 = itxn[app15#0].FreezeAsset + let app15.FreezeAssetAccount#0: bytes = itxn[app15#0].FreezeAssetAccount + let app15.FreezeAssetFrozen#0: bool = itxn[app15#0].FreezeAssetFrozen + let app15.NumAssets#0: uint64 = itxn[app15#0].NumAssets + let app15.NumApplications#0: uint64 = itxn[app15#0].NumApplications + let app15.GlobalNumUint#0: uint64 = itxn[app15#0].GlobalNumUint + let app15.GlobalNumByteSlice#0: uint64 = itxn[app15#0].GlobalNumByteSlice + let app15.LocalNumUint#0: uint64 = itxn[app15#0].LocalNumUint + let app15.LocalNumByteSlice#0: uint64 = itxn[app15#0].LocalNumByteSlice + let app15.ExtraProgramPages#0: uint64 = itxn[app15#0].ExtraProgramPages + let app15.Nonparticipation#0: bool = itxn[app15#0].Nonparticipation + let app15.NumLogs#0: uint64 = itxn[app15#0].NumLogs + let app15.CreatedAssetID#0: uint64 = itxn[app15#0].CreatedAssetID + let app15.CreatedApplicationID#0: uint64 = itxn[app15#0].CreatedApplicationID + let app15.LastLog#0: bytes = itxn[app15#0].LastLog + let app15.StateProofPK#0: bytes = itxn[app15#0].StateProofPK + let app15.NumApprovalProgramPages#0: uint64 = itxn[app15#0].NumApprovalProgramPages + let app15.NumClearStateProgramPages#0: uint64 = itxn[app15#0].NumClearStateProgramPages + let app16._is_last#0: bool = 1u + let app16.Sender#0: bytes = itxn[app16#0].Sender + let app16.Fee#0: uint64 = itxn[app16#0].Fee + let app16.FirstValid#0: uint64 = itxn[app16#0].FirstValid + let app16.FirstValidTime#0: uint64 = itxn[app16#0].FirstValidTime + let app16.LastValid#0: uint64 = itxn[app16#0].LastValid + let app16.Note#0: bytes = itxn[app16#0].Note + let app16.Lease#0: bytes = itxn[app16#0].Lease + let app16.Receiver#0: bytes = itxn[app16#0].Receiver + let app16.Amount#0: uint64 = itxn[app16#0].Amount + let app16.CloseRemainderTo#0: bytes = itxn[app16#0].CloseRemainderTo + let app16.VotePK#0: bytes = itxn[app16#0].VotePK + let app16.SelectionPK#0: bytes = itxn[app16#0].SelectionPK + let app16.VoteFirst#0: uint64 = itxn[app16#0].VoteFirst + let app16.VoteLast#0: uint64 = itxn[app16#0].VoteLast + let app16.VoteKeyDilution#0: uint64 = itxn[app16#0].VoteKeyDilution + let app16.Type#0: bytes = itxn[app16#0].Type + let app16.TypeEnum#0: uint64 = itxn[app16#0].TypeEnum + let app16.XferAsset#0: uint64 = itxn[app16#0].XferAsset + let app16.AssetAmount#0: uint64 = itxn[app16#0].AssetAmount + let app16.AssetSender#0: bytes = itxn[app16#0].AssetSender + let app16.AssetReceiver#0: bytes = itxn[app16#0].AssetReceiver + let app16.AssetCloseTo#0: bytes = itxn[app16#0].AssetCloseTo + let app16.GroupIndex#0: uint64 = itxn[app16#0].GroupIndex + let app16.TxID#0: bytes = itxn[app16#0].TxID + let app16.ApplicationID#0: uint64 = itxn[app16#0].ApplicationID + let app16.OnCompletion#0: uint64 = itxn[app16#0].OnCompletion + let app16.NumAppArgs#0: uint64 = itxn[app16#0].NumAppArgs + let app16.NumAccounts#0: uint64 = itxn[app16#0].NumAccounts + let app16.ApprovalProgram#0: bytes = itxn[app16#0].ApprovalProgram + let app16.ClearStateProgram#0: bytes = itxn[app16#0].ClearStateProgram + let app16.RekeyTo#0: bytes = itxn[app16#0].RekeyTo + let app16.ConfigAsset#0: uint64 = itxn[app16#0].ConfigAsset + let app16.ConfigAssetTotal#0: uint64 = itxn[app16#0].ConfigAssetTotal + let app16.ConfigAssetDecimals#0: uint64 = itxn[app16#0].ConfigAssetDecimals + let app16.ConfigAssetDefaultFrozen#0: bool = itxn[app16#0].ConfigAssetDefaultFrozen + let app16.ConfigAssetUnitName#0: bytes = itxn[app16#0].ConfigAssetUnitName + let app16.ConfigAssetName#0: bytes = itxn[app16#0].ConfigAssetName + let app16.ConfigAssetURL#0: bytes = itxn[app16#0].ConfigAssetURL + let app16.ConfigAssetMetadataHash#0: bytes = itxn[app16#0].ConfigAssetMetadataHash + let app16.ConfigAssetManager#0: bytes = itxn[app16#0].ConfigAssetManager + let app16.ConfigAssetReserve#0: bytes = itxn[app16#0].ConfigAssetReserve + let app16.ConfigAssetFreeze#0: bytes = itxn[app16#0].ConfigAssetFreeze + let app16.ConfigAssetClawback#0: bytes = itxn[app16#0].ConfigAssetClawback + let app16.FreezeAsset#0: uint64 = itxn[app16#0].FreezeAsset + let app16.FreezeAssetAccount#0: bytes = itxn[app16#0].FreezeAssetAccount + let app16.FreezeAssetFrozen#0: bool = itxn[app16#0].FreezeAssetFrozen + let app16.NumAssets#0: uint64 = itxn[app16#0].NumAssets + let app16.NumApplications#0: uint64 = itxn[app16#0].NumApplications + let app16.GlobalNumUint#0: uint64 = itxn[app16#0].GlobalNumUint + let app16.GlobalNumByteSlice#0: uint64 = itxn[app16#0].GlobalNumByteSlice + let app16.LocalNumUint#0: uint64 = itxn[app16#0].LocalNumUint + let app16.LocalNumByteSlice#0: uint64 = itxn[app16#0].LocalNumByteSlice + let app16.ExtraProgramPages#0: uint64 = itxn[app16#0].ExtraProgramPages + let app16.Nonparticipation#0: bool = itxn[app16#0].Nonparticipation + let app16.NumLogs#0: uint64 = itxn[app16#0].NumLogs + let app16.CreatedAssetID#0: uint64 = itxn[app16#0].CreatedAssetID + let app16.CreatedApplicationID#0: uint64 = itxn[app16#0].CreatedApplicationID + let app16.LastLog#0: bytes = itxn[app16#0].LastLog + let app16.StateProofPK#0: bytes = itxn[app16#0].StateProofPK + let app16.NumApprovalProgramPages#0: uint64 = itxn[app16#0].NumApprovalProgramPages + let app16.NumClearStateProgramPages#0: uint64 = itxn[app16#0].NumClearStateProgramPages + let tmp%0#0: bytes = itxn[app1#0].Logs[0u] + let tmp%1#0: bool = (== tmp%0#0 "1") + (assert tmp%1#0) + let tmp%2#0: bytes = itxn[app2#0].Logs[0u] + let tmp%3#0: bool = (== tmp%2#0 "2") + (assert tmp%3#0) + let tmp%4#0: bytes = itxn[app3#0].Logs[0u] + let tmp%5#0: bool = (== tmp%4#0 "3") + (assert tmp%5#0) + let tmp%6#0: bytes = itxn[app4#0].Logs[0u] + let tmp%7#0: bool = (== tmp%6#0 "4") + (assert tmp%7#0) + let tmp%8#0: bytes = itxn[app5#0].Logs[0u] + let tmp%9#0: bool = (== tmp%8#0 "5") + (assert tmp%9#0) + let tmp%10#0: bytes = itxn[app6#0].Logs[0u] + let tmp%11#0: bool = (== tmp%10#0 "6") + (assert tmp%11#0) + let tmp%12#0: bytes = itxn[app7#0].Logs[0u] + let tmp%13#0: bool = (== tmp%12#0 "7") + (assert tmp%13#0) + let tmp%14#0: bytes = itxn[app8#0].Logs[0u] + let tmp%15#0: bool = (== tmp%14#0 "8") + (assert tmp%15#0) + let tmp%16#0: bytes = itxn[app9#0].Logs[0u] + let tmp%17#0: bool = (== tmp%16#0 "9") + (assert tmp%17#0) + let tmp%18#0: bytes = itxn[app10#0].Logs[0u] + let tmp%19#0: bool = (== tmp%18#0 "10") + (assert tmp%19#0) + let tmp%20#0: bytes = itxn[app11#0].Logs[0u] + let tmp%21#0: bool = (== tmp%20#0 "11") + (assert tmp%21#0) + let tmp%22#0: bytes = itxn[app12#0].Logs[0u] + let tmp%23#0: bool = (== tmp%22#0 "12") + (assert tmp%23#0) + let tmp%24#0: bytes = itxn[app13#0].Logs[0u] + let tmp%25#0: bool = (== tmp%24#0 "13") + (assert tmp%25#0) + let tmp%26#0: bytes = itxn[app14#0].Logs[0u] + let tmp%27#0: bool = (== tmp%26#0 "14") + (assert tmp%27#0) + let tmp%28#0: bytes = itxn[app15#0].Logs[0u] + let tmp%29#0: bool = (== tmp%28#0 "15") + (assert tmp%29#0) + let tmp%30#0: bytes = itxn[app16#0].Logs[0u] + let tmp%31#0: bool = (== tmp%30#0 "16") + (assert tmp%31#0) + return + +subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test4() -> void: + block@0: // L171 + let lotsOfBytes#0: bytes = (bzero 2044u) + let approval1#0: bytes = 0x098101 + let tmp%0#0: bytes = (concat 0x80fc0f lotsOfBytes#0) + let approval2#0: bytes = (concat tmp%0#0 0x48) + let appTxn1#0: itxn_field_set = itxn_field_set(0) + let appTxn1%%param_Fee_idx_0#0: uint64 = 0u + let appTxn1%%Fee_length#0: uint64 = 1u + let appTxn1%%param_TypeEnum_idx_0#0: uint64 = 6u + let appTxn1%%TypeEnum_length#0: uint64 = 1u + let appTxn1%%param_ApprovalProgramPages_idx_0#0: bytes = approval1#0 + let appTxn1%%param_ApprovalProgramPages_idx_1#0: bytes = approval2#0 + let appTxn1%%param_ApprovalProgramPages_idx_2#0: bytes = approval2#0 + let appTxn1%%param_ApprovalProgramPages_idx_3#0: bytes = approval2#0 + let appTxn1%%ApprovalProgramPages_length#0: uint64 = 4u + let appTxn1%%param_ClearStateProgramPages_idx_0#0: bytes = 0x098101 + let appTxn1%%ClearStateProgramPages_length#0: uint64 = 1u + let appTxn1%%param_OnCompletion_idx_0#0: uint64 = 5u + let appTxn1%%OnCompletion_length#0: uint64 = 1u + let appTxn1%%param_ApplicationArgs_idx_0#0: bytes = "1" + let appTxn1%%ApplicationArgs_length#0: uint64 = 1u + let appTxn1%%param_ExtraProgramPages_idx_0#0: uint64 = 3u + let appTxn1%%ExtraProgramPages_length#0: uint64 = 1u + let appTxn1%%Sender_length#0: uint64 = 0u + let appTxn1%%Note_length#0: uint64 = 0u + let appTxn1%%Receiver_length#0: uint64 = 0u + let appTxn1%%Amount_length#0: uint64 = 0u + let appTxn1%%CloseRemainderTo_length#0: uint64 = 0u + let appTxn1%%VotePK_length#0: uint64 = 0u + let appTxn1%%SelectionPK_length#0: uint64 = 0u + let appTxn1%%VoteFirst_length#0: uint64 = 0u + let appTxn1%%VoteLast_length#0: uint64 = 0u + let appTxn1%%VoteKeyDilution_length#0: uint64 = 0u + let appTxn1%%Type_length#0: uint64 = 0u + let appTxn1%%XferAsset_length#0: uint64 = 0u + let appTxn1%%AssetAmount_length#0: uint64 = 0u + let appTxn1%%AssetSender_length#0: uint64 = 0u + let appTxn1%%AssetReceiver_length#0: uint64 = 0u + let appTxn1%%AssetCloseTo_length#0: uint64 = 0u + let appTxn1%%ApplicationID_length#0: uint64 = 0u + let appTxn1%%ApprovalProgram_length#0: uint64 = 0u + let appTxn1%%ClearStateProgram_length#0: uint64 = 0u + let appTxn1%%RekeyTo_length#0: uint64 = 0u + let appTxn1%%ConfigAsset_length#0: uint64 = 0u + let appTxn1%%ConfigAssetTotal_length#0: uint64 = 0u + let appTxn1%%ConfigAssetDecimals_length#0: uint64 = 0u + let appTxn1%%ConfigAssetDefaultFrozen_length#0: uint64 = 0u + let appTxn1%%ConfigAssetUnitName_length#0: uint64 = 0u + let appTxn1%%ConfigAssetName_length#0: uint64 = 0u + let appTxn1%%ConfigAssetURL_length#0: uint64 = 0u + let appTxn1%%ConfigAssetMetadataHash_length#0: uint64 = 0u + let appTxn1%%ConfigAssetManager_length#0: uint64 = 0u + let appTxn1%%ConfigAssetReserve_length#0: uint64 = 0u + let appTxn1%%ConfigAssetFreeze_length#0: uint64 = 0u + let appTxn1%%ConfigAssetClawback_length#0: uint64 = 0u + let appTxn1%%FreezeAsset_length#0: uint64 = 0u + let appTxn1%%FreezeAssetAccount_length#0: uint64 = 0u + let appTxn1%%FreezeAssetFrozen_length#0: uint64 = 0u + let appTxn1%%GlobalNumUint_length#0: uint64 = 0u + let appTxn1%%GlobalNumByteSlice_length#0: uint64 = 0u + let appTxn1%%LocalNumUint_length#0: uint64 = 0u + let appTxn1%%LocalNumByteSlice_length#0: uint64 = 0u + let appTxn1%%Nonparticipation_length#0: uint64 = 0u + let appTxn1%%StateProofPK_length#0: uint64 = 0u + let appTxn1%%Accounts_length#0: uint64 = 0u + let appTxn1%%Assets_length#0: uint64 = 0u + let appTxn1%%Applications_length#0: uint64 = 0u + itxn_begin + ((itxn_field ExtraProgramPages) appTxn1%%param_ExtraProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn1%%param_ApplicationArgs_idx_0#0) + ((itxn_field OnCompletion) appTxn1%%param_OnCompletion_idx_0#0) + ((itxn_field ClearStateProgramPages) appTxn1%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn1%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn1%%param_ApprovalProgramPages_idx_1#0) + ((itxn_field ApprovalProgramPages) appTxn1%%param_ApprovalProgramPages_idx_2#0) + ((itxn_field ApprovalProgramPages) appTxn1%%param_ApprovalProgramPages_idx_3#0) + ((itxn_field TypeEnum) appTxn1%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn1%%param_Fee_idx_0#0) + goto block@1 + block@1: // next_txn_L185 + itxn_submit + let app1#0: itxn_group_idx = itxn_group_idx(0) + let app1._is_last#0: bool = 1u + let app1.Sender#0: bytes = itxn[app1#0].Sender + let app1.Fee#0: uint64 = itxn[app1#0].Fee + let app1.FirstValid#0: uint64 = itxn[app1#0].FirstValid + let app1.FirstValidTime#0: uint64 = itxn[app1#0].FirstValidTime + let app1.LastValid#0: uint64 = itxn[app1#0].LastValid + let app1.Note#0: bytes = itxn[app1#0].Note + let app1.Lease#0: bytes = itxn[app1#0].Lease + let app1.Receiver#0: bytes = itxn[app1#0].Receiver + let app1.Amount#0: uint64 = itxn[app1#0].Amount + let app1.CloseRemainderTo#0: bytes = itxn[app1#0].CloseRemainderTo + let app1.VotePK#0: bytes = itxn[app1#0].VotePK + let app1.SelectionPK#0: bytes = itxn[app1#0].SelectionPK + let app1.VoteFirst#0: uint64 = itxn[app1#0].VoteFirst + let app1.VoteLast#0: uint64 = itxn[app1#0].VoteLast + let app1.VoteKeyDilution#0: uint64 = itxn[app1#0].VoteKeyDilution + let app1.Type#0: bytes = itxn[app1#0].Type + let app1.TypeEnum#0: uint64 = itxn[app1#0].TypeEnum + let app1.XferAsset#0: uint64 = itxn[app1#0].XferAsset + let app1.AssetAmount#0: uint64 = itxn[app1#0].AssetAmount + let app1.AssetSender#0: bytes = itxn[app1#0].AssetSender + let app1.AssetReceiver#0: bytes = itxn[app1#0].AssetReceiver + let app1.AssetCloseTo#0: bytes = itxn[app1#0].AssetCloseTo + let app1.GroupIndex#0: uint64 = itxn[app1#0].GroupIndex + let app1.TxID#0: bytes = itxn[app1#0].TxID + let app1.ApplicationID#0: uint64 = itxn[app1#0].ApplicationID + let app1.OnCompletion#0: uint64 = itxn[app1#0].OnCompletion + let app1.NumAppArgs#0: uint64 = itxn[app1#0].NumAppArgs + let app1.NumAccounts#0: uint64 = itxn[app1#0].NumAccounts + let app1.ApprovalProgram#0: bytes = itxn[app1#0].ApprovalProgram + let app1.ClearStateProgram#0: bytes = itxn[app1#0].ClearStateProgram + let app1.RekeyTo#0: bytes = itxn[app1#0].RekeyTo + let app1.ConfigAsset#0: uint64 = itxn[app1#0].ConfigAsset + let app1.ConfigAssetTotal#0: uint64 = itxn[app1#0].ConfigAssetTotal + let app1.ConfigAssetDecimals#0: uint64 = itxn[app1#0].ConfigAssetDecimals + let app1.ConfigAssetDefaultFrozen#0: bool = itxn[app1#0].ConfigAssetDefaultFrozen + let app1.ConfigAssetUnitName#0: bytes = itxn[app1#0].ConfigAssetUnitName + let app1.ConfigAssetName#0: bytes = itxn[app1#0].ConfigAssetName + let app1.ConfigAssetURL#0: bytes = itxn[app1#0].ConfigAssetURL + let app1.ConfigAssetMetadataHash#0: bytes = itxn[app1#0].ConfigAssetMetadataHash + let app1.ConfigAssetManager#0: bytes = itxn[app1#0].ConfigAssetManager + let app1.ConfigAssetReserve#0: bytes = itxn[app1#0].ConfigAssetReserve + let app1.ConfigAssetFreeze#0: bytes = itxn[app1#0].ConfigAssetFreeze + let app1.ConfigAssetClawback#0: bytes = itxn[app1#0].ConfigAssetClawback + let app1.FreezeAsset#0: uint64 = itxn[app1#0].FreezeAsset + let app1.FreezeAssetAccount#0: bytes = itxn[app1#0].FreezeAssetAccount + let app1.FreezeAssetFrozen#0: bool = itxn[app1#0].FreezeAssetFrozen + let app1.NumAssets#0: uint64 = itxn[app1#0].NumAssets + let app1.NumApplications#0: uint64 = itxn[app1#0].NumApplications + let app1.GlobalNumUint#0: uint64 = itxn[app1#0].GlobalNumUint + let app1.GlobalNumByteSlice#0: uint64 = itxn[app1#0].GlobalNumByteSlice + let app1.LocalNumUint#0: uint64 = itxn[app1#0].LocalNumUint + let app1.LocalNumByteSlice#0: uint64 = itxn[app1#0].LocalNumByteSlice + let app1.ExtraProgramPages#0: uint64 = itxn[app1#0].ExtraProgramPages + let app1.Nonparticipation#0: bool = itxn[app1#0].Nonparticipation + let app1.NumLogs#0: uint64 = itxn[app1#0].NumLogs + let app1.CreatedAssetID#0: uint64 = itxn[app1#0].CreatedAssetID + let app1.CreatedApplicationID#0: uint64 = itxn[app1#0].CreatedApplicationID + let app1.LastLog#0: bytes = itxn[app1#0].LastLog + let app1.StateProofPK#0: bytes = itxn[app1#0].StateProofPK + let app1.NumApprovalProgramPages#0: uint64 = itxn[app1#0].NumApprovalProgramPages + let app1.NumClearStateProgramPages#0: uint64 = itxn[app1#0].NumClearStateProgramPages + let tmp%1#0: bool = (== app1.ExtraProgramPages#0 3u) + (assert tmp%1#0) // extra pages = 3 + let tmp%2#0: bool = (== app1.NumApprovalProgramPages#0 2u) + (assert tmp%2#0) // approval pages = 2 + let tmp%3#0: bytes = itxn[app1#0].ApprovalProgramPages[0u] + let tmp%4#0: bytes = (concat approval1#0 approval2#0) + let length%0#0: uint64 = (len approval2#0) + let is_out_of_bounds%0#0: bool = (>= 0u length%0#0) + let bounded_index%0#0: uint64 = (select 0u length%0#0 is_out_of_bounds%0#0) + let is_out_of_bounds%1#0: bool = (>= 3u length%0#0) + let bounded_offset%0#0: uint64 = (select 3u length%0#0 is_out_of_bounds%1#0) + let bounded_index%1#0: uint64 = (- length%0#0 bounded_offset%0#0) + let end_before_start%0#0: bool = (< bounded_index%1#0 bounded_index%0#0) + let end%0#0: uint64 = (select bounded_index%1#0 bounded_index%0#0 end_before_start%0#0) + let tmp%5#0: bytes = (substring3 approval2#0 bounded_index%0#0 end%0#0) + let tmp%6#0: bytes = (concat tmp%4#0 tmp%5#0) + let tmp%7#0: bool = (== tmp%3#0 tmp%6#0) + (assert tmp%7#0) // expected approval page 0 + let tmp%8#0: bytes = itxn[app1#0].ApprovalProgramPages[1u] + let length%1#0: uint64 = (len approval2#0) + let is_out_of_bounds%2#0: bool = (>= 3u length%1#0) + let bounded_offset%1#0: uint64 = (select 3u length%1#0 is_out_of_bounds%2#0) + let bounded_index%2#0: uint64 = (- length%1#0 bounded_offset%1#0) + let tmp%9#0: bytes = (substring3 approval2#0 bounded_index%2#0 length%1#0) + let tmp%10#0: bytes = (concat tmp%9#0 approval2#0) + let tmp%11#0: bool = (== tmp%8#0 tmp%10#0) + (assert tmp%11#0) // expected approval page 1 + let tmp%12#0: bool = (== app1.NumClearStateProgramPages#0 1u) + (assert tmp%12#0) // clear state pages = 1 + let tmp%13#0: bytes = itxn[app1#0].ClearStateProgramPages[0u] + let tmp%14#0: bool = (== tmp%13#0 0x098101) + (assert tmp%14#0) // expected clear state page + return + +subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.__algots__.defaultCreate() -> void: + block@0: // L7 return \ No newline at end of file diff --git a/tests/approvals/out/o2/itxn/itxn.awst b/tests/approvals/out/o2/itxn/itxn.awst index 29df9cb94..cf009fdd8 100644 --- a/tests/approvals/out/o2/itxn/itxn.awst +++ b/tests/approvals/out/o2/itxn/itxn.awst @@ -8,26 +8,7 @@ contract ItxnDemoContract if (!Boolean(txn())) { this.constructor() } - if (Boolean(txn())) { - switch (txnas(0)) { - case "test1": - #switch₁ᶜ₀: - this.test1() - goto #switch₁ᵇ - case "test2": - #switch₁ᶜ₁: - this.test2() - goto #switch₁ᵇ - case "test3": - #switch₁ᶜ₂: - goto #switch₁ᶜ₃ - case "test4": - #switch₁ᶜ₃: - goto #switch₁ᵇ - } - #switch₁ᵇ: - } - return True + return arc4Router() } clearProgram(): bool @@ -50,7 +31,7 @@ contract ItxnDemoContract appCreateParams: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[0x098101], ClearStateProgramPages=[0x098101]) update_inner_transaction(assetParams, ConfigAssetName="AST3") [appCreateTxn, asset3_txn]: readonlytuple[inner_transaction_appl, inner_transaction_acfg] = submit_txn(appCreateParams, assetParams) - assert(Boolean(appCreateTxn.ApplicationID), comment=app is created) + assert(Boolean(appCreateTxn.CreatedApplicationID), comment=app is created) assert(asset3_txn.ConfigAssetName == "AST3", comment=asset3_txn is correct) update_inner_transaction(appCreateParams, Note="3rd") update_inner_transaction(assetParams, Note="3rd") @@ -61,14 +42,85 @@ contract ItxnDemoContract { if (Boolean(txn())) { args: readonlytuple[bytes, bytes] = ["1", "2"] - createAppParams: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[" "], ClearStateProgramPages=[" "], ApplicationArgs=[args.0, args.1], OnCompletion=0, Note="with args param set") + createAppParams: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[0x098101], ClearStateProgramPages=[0x098101], ApplicationArgs=[args.0, args.1], OnCompletion=0, Note="with args param set") } else { - createAppParams: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[" "], ClearStateProgramPages=[" "], ApplicationArgs=["3", "4", "5"], Note="no args param set") + createAppParams: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[0x098101], ClearStateProgramPages=[0x098101], ApplicationArgs=["3", "4", "5"], Note="no args param set") } createAppTxn: inner_transaction_appl = submit_txn(createAppParams) assert(createAppTxn.ApplicationArgs[0] == "1", comment=correct args used 1) assert(createAppTxn.ApplicationArgs[1] == "2", comment=correct args used 2) - assert(createAppTxn.Note == "with args param set") + if (txn() > 1) { + createAppTxn2: inner_transaction_appl = submit_txn(create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[0x098101], ClearStateProgramPages=[0x098101], OnCompletion=5, ApplicationArgs=["42"])) + assert(createAppTxn2.ApplicationArgs[0] == "42", comment=correct args used 2) + assert(createAppTxn.Note == "with args param set") + } + } + + test3(): void + { + appTxn1: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[0x09361a00b08101], ClearStateProgramPages=[0x098101], OnCompletion=5, ApplicationArgs=["1"]) + appTxn2: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn2, ApplicationArgs=["2"]) + appTxn3: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn3, ApplicationArgs=["3"]) + appTxn4: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn4, ApplicationArgs=["4"]) + appTxn5: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn5, ApplicationArgs=["5"]) + appTxn6: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn6, ApplicationArgs=["6"]) + appTxn7: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn7, ApplicationArgs=["7"]) + appTxn8: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn8, ApplicationArgs=["8"]) + appTxn9: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn9, ApplicationArgs=["9"]) + appTxn10: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn10, ApplicationArgs=["10"]) + appTxn11: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn11, ApplicationArgs=["11"]) + appTxn12: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn12, ApplicationArgs=["12"]) + appTxn13: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn13, ApplicationArgs=["13"]) + appTxn14: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn14, ApplicationArgs=["14"]) + appTxn15: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn15, ApplicationArgs=["15"]) + appTxn16: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn16, ApplicationArgs=["16"]) + [app1, app2, app3, app4, app5, app6, app7, app8, app9, app10, app11, app12, app13, app14, app15, app16]: readonlytuple[inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl] = submit_txn(appTxn1, appTxn2, appTxn3, appTxn4, appTxn5, appTxn6, appTxn7, appTxn8, appTxn9, appTxn10, appTxn11, appTxn12, appTxn13, appTxn14, appTxn15, appTxn16) + assert(app1.Logs[0] == "1") + assert(app2.Logs[0] == "2") + assert(app3.Logs[0] == "3") + assert(app4.Logs[0] == "4") + assert(app5.Logs[0] == "5") + assert(app6.Logs[0] == "6") + assert(app7.Logs[0] == "7") + assert(app8.Logs[0] == "8") + assert(app9.Logs[0] == "9") + assert(app10.Logs[0] == "10") + assert(app11.Logs[0] == "11") + assert(app12.Logs[0] == "12") + assert(app13.Logs[0] == "13") + assert(app14.Logs[0] == "14") + assert(app15.Logs[0] == "15") + assert(app16.Logs[0] == "16") + } + + test4(): void + { + lotsOfBytes: bytes = bzero(2044) + approval1: bytes = 0x098101 + approval2: bytes = concat(concat(0x80fc0f, lotsOfBytes), 0x48) + appTxn1: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[approval1, approval2, approval2, approval2], ClearStateProgramPages=[0x098101], OnCompletion=5, ApplicationArgs=["1"], ExtraProgramPages=3) + app1: inner_transaction_appl = submit_txn(appTxn1) + assert(app1.ExtraProgramPages == 3, comment=extra pages = 3) + assert(app1.NumApprovalProgramPages == 2, comment=approval pages = 2) + assert(app1.ApprovalProgramPages[0] == concat(concat(approval1, approval2), approval2.slice(0, -3)), comment=expected approval page 0) + assert(app1.ApprovalProgramPages[1] == concat(approval2.slice(-3), approval2), comment=expected approval page 1) + assert(app1.NumClearStateProgramPages == 1, comment=clear state pages = 1) + assert(app1.ClearStateProgramPages[0] == 0x098101, comment=expected clear state page) } constructor(): void @@ -77,4 +129,8 @@ contract ItxnDemoContract GlobalState["name"]: bytes = 0x } + __algots__.defaultCreate(): void + { + } + } \ No newline at end of file diff --git a/tests/approvals/out/o2/itxn/itxn.awst.json b/tests/approvals/out/o2/itxn/itxn.awst.json index 3ac28de19..a4a44deda 100644 --- a/tests/approvals/out/o2/itxn/itxn.awst.json +++ b/tests/approvals/out/o2/itxn/itxn.awst.json @@ -6,22 +6,24 @@ "line": 7, "end_line": 7, "column": 0, - "end_column": 52 + "end_column": 48 }, "id": "tests/approvals/itxn.algo.ts::ItxnDemoContract", "name": "ItxnDemoContract", "description": null, "method_resolution_order": [ + "@algorandfoundation/algorand-typescript/arc4/index.d.ts::Contract", "@algorandfoundation/algorand-typescript/base-contract.d.ts::BaseContract" ], "approval_program": { "_type": "ContractMethod", "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 10, - "end_line": 10, - "column": 2, - "end_column": 35 + "_type": "SourceLocation", + "file": null, + "line": 1, + "end_line": 1, + "column": 0, + "end_column": 1 }, "args": [], "return_type": { @@ -165,490 +167,33 @@ { "_type": "Block", "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 10, - "end_line": 25, - "column": 36, - "end_column": 3 + "_type": "SourceLocation", + "file": null, + "line": 1, + "end_line": 1, + "column": 0, + "end_column": 1 }, "body": [ - { - "_type": "IfElse", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 11, - "end_line": 11, - "column": 4, - "end_column": 23 - }, - "condition": { - "_type": "ReinterpretCast", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 11, - "end_line": 11, - "column": 8, - "end_column": 22 - }, - "wtype": { - "_type": "WType", - "name": "bool", - "immutable": true, - "ephemeral": false, - "scalar_type": 2 - }, - "expr": { - "_type": "IntrinsicCall", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 11, - "end_line": 11, - "column": 12, - "end_column": 22 - }, - "wtype": { - "_type": "WType", - "name": "uint64", - "immutable": true, - "ephemeral": false, - "scalar_type": 2 - }, - "op_code": "txn", - "immediates": [ - "NumAppArgs" - ], - "stack_args": [] - } - }, - "if_branch": { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 11, - "end_line": 23, - "column": 24, - "end_column": 5 - }, - "body": [ - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 11, - "end_line": 23, - "column": 24, - "end_column": 5 - }, - "body": [ - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 12, - "end_line": 22, - "column": 6, - "end_column": 7 - }, - "body": [ - { - "_type": "Switch", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 12, - "end_line": 22, - "column": 6, - "end_column": 7 - }, - "value": { - "_type": "IntrinsicCall", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 12, - "end_line": 12, - "column": 14, - "end_column": 36 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 - }, - "op_code": "txnas", - "immediates": [ - "ApplicationArgs" - ], - "stack_args": [ - { - "_type": "IntegerConstant", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 12, - "end_line": 12, - "column": 34, - "end_column": 35 - }, - "wtype": { - "_type": "WType", - "name": "uint64", - "immutable": true, - "ephemeral": false, - "scalar_type": 2 - }, - "value": "0", - "teal_alias": null - } - ] - }, - "cases": [ - [ - { - "_type": "BytesConstant", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 13, - "end_line": 13, - "column": 19, - "end_column": 26 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 - }, - "value": "bY*jNF#", - "encoding": "utf8" - }, - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 13, - "end_line": 15, - "column": 8, - "end_column": 15 - }, - "body": [ - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 13, - "end_line": 15, - "column": 8, - "end_column": 15 - }, - "body": [], - "label": "#switch₁ᶜ₀", - "comment": null - }, - { - "_type": "ExpressionStatement", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 14, - "end_line": 14, - "column": 10, - "end_column": 22 - }, - "expr": { - "_type": "SubroutineCallExpression", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 14, - "end_line": 14, - "column": 10, - "end_column": 22 - }, - "wtype": { - "_type": "WType", - "name": "void", - "immutable": true, - "ephemeral": false, - "scalar_type": null - }, - "target": { - "_type": "InstanceMethodTarget", - "member_name": "test1" - }, - "args": [] - } - }, - { - "_type": "Goto", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 15, - "end_line": 15, - "column": 10, - "end_column": 15 - }, - "target": "#switch₁ᵇ" - } - ], - "label": null, - "comment": null - } - ], - [ - { - "_type": "BytesConstant", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 16, - "end_line": 16, - "column": 19, - "end_column": 26 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 - }, - "value": "bY*jNG5", - "encoding": "utf8" - }, - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 16, - "end_line": 18, - "column": 8, - "end_column": 15 - }, - "body": [ - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 16, - "end_line": 18, - "column": 8, - "end_column": 15 - }, - "body": [], - "label": "#switch₁ᶜ₁", - "comment": null - }, - { - "_type": "ExpressionStatement", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 17, - "end_line": 17, - "column": 10, - "end_column": 22 - }, - "expr": { - "_type": "SubroutineCallExpression", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 17, - "end_line": 17, - "column": 10, - "end_column": 22 - }, - "wtype": { - "_type": "WType", - "name": "void", - "immutable": true, - "ephemeral": false, - "scalar_type": null - }, - "target": { - "_type": "InstanceMethodTarget", - "member_name": "test2" - }, - "args": [] - } - }, - { - "_type": "Goto", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 18, - "end_line": 18, - "column": 10, - "end_column": 15 - }, - "target": "#switch₁ᵇ" - } - ], - "label": null, - "comment": null - } - ], - [ - { - "_type": "BytesConstant", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 19, - "end_line": 19, - "column": 19, - "end_column": 26 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 - }, - "value": "bY*jNGX", - "encoding": "utf8" - }, - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 19, - "end_line": 19, - "column": 8, - "end_column": 28 - }, - "body": [ - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 19, - "end_line": 19, - "column": 8, - "end_column": 28 - }, - "body": [], - "label": "#switch₁ᶜ₂", - "comment": null - }, - { - "_type": "Goto", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 19, - "end_line": 19, - "column": 8, - "end_column": 28 - }, - "target": "#switch₁ᶜ₃" - } - ], - "label": null, - "comment": null - } - ], - [ - { - "_type": "BytesConstant", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 20, - "end_line": 20, - "column": 19, - "end_column": 26 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 - }, - "value": "bY*jNGy", - "encoding": "utf8" - }, - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 20, - "end_line": 21, - "column": 8, - "end_column": 15 - }, - "body": [ - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 20, - "end_line": 21, - "column": 8, - "end_column": 15 - }, - "body": [], - "label": "#switch₁ᶜ₃", - "comment": null - }, - { - "_type": "Goto", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 21, - "end_line": 21, - "column": 10, - "end_column": 15 - }, - "target": "#switch₁ᵇ" - } - ], - "label": null, - "comment": null - } - ] - ], - "default_case": null - }, - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 12, - "end_line": 22, - "column": 6, - "end_column": 7 - }, - "body": [], - "label": "#switch₁ᵇ", - "comment": null - } - ], - "label": null, - "comment": null - } - ], - "label": null, - "comment": null - } - ], - "label": null, - "comment": null - }, - "else_branch": null - }, { "_type": "ReturnStatement", "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 24, - "end_line": 24, - "column": 4, - "end_column": 15 + "_type": "SourceLocation", + "file": null, + "line": 1, + "end_line": 1, + "column": 0, + "end_column": 1 }, "value": { - "_type": "BoolConstant", + "_type": "ARC4Router", "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 24, - "end_line": 24, - "column": 11, - "end_column": 15 + "_type": "SourceLocation", + "file": null, + "line": 1, + "end_line": 1, + "column": 0, + "end_column": 1 }, "wtype": { "_type": "WType", @@ -656,8 +201,7 @@ "immutable": true, "ephemeral": false, "scalar_type": 2 - }, - "value": true + } } } ], @@ -674,7 +218,7 @@ "args": {}, "returns": null }, - "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", + "cref": "@algorandfoundation/algorand-typescript/arc4/index.d.ts::Contract", "member_name": "approvalProgram", "arc4_method_config": null }, @@ -756,10 +300,10 @@ "_type": "ContractMethod", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 27, - "end_line": 27, + "line": 10, + "end_line": 10, "column": 2, - "end_column": 17 + "end_column": 16 }, "args": [], "return_type": { @@ -773,9 +317,9 @@ "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 27, - "end_line": 73, - "column": 18, + "line": 10, + "end_line": 56, + "column": 17, "end_column": 3 }, "body": [ @@ -783,8 +327,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 28, - "end_line": 28, + "line": 11, + "end_line": 11, "column": 4, "end_column": 35 }, @@ -792,8 +336,8 @@ "_type": "AppStateExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 28, - "end_line": 28, + "line": 11, + "end_line": 11, "column": 14, "end_column": 19 }, @@ -829,8 +373,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 28, - "end_line": 28, + "line": 11, + "end_line": 11, "column": 28, "end_column": 34 }, @@ -849,8 +393,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 30, - "end_line": 37, + "line": 13, + "end_line": 20, "column": 10, "end_column": 6 }, @@ -858,8 +402,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 30, - "end_line": 30, + "line": 13, + "end_line": 13, "column": 10, "end_column": 21 }, @@ -877,8 +421,8 @@ "_type": "CreateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 30, - "end_line": 37, + "line": 13, + "end_line": 20, "column": 24, "end_column": 6 }, @@ -895,8 +439,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 30, - "end_line": 37, + "line": 13, + "end_line": 20, "column": 24, "end_column": 6 }, @@ -914,8 +458,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 30, - "end_line": 37, + "line": 13, + "end_line": 20, "column": 24, "end_column": 6 }, @@ -933,8 +477,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 31, - "end_line": 31, + "line": 14, + "end_line": 14, "column": 13, "end_column": 17 }, @@ -952,8 +496,8 @@ "_type": "AppStateExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 32, - "end_line": 32, + "line": 15, + "end_line": 15, "column": 27, "end_column": 32 }, @@ -989,8 +533,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 33, - "end_line": 33, + "line": 16, + "end_line": 16, "column": 16, "end_column": 22 }, @@ -1008,8 +552,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 34, - "end_line": 34, + "line": 17, + "end_line": 17, "column": 16, "end_column": 17 }, @@ -1027,8 +571,8 @@ "_type": "IntrinsicCall", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 35, - "end_line": 35, + "line": 18, + "end_line": 18, "column": 22, "end_column": 47 }, @@ -1049,8 +593,8 @@ "_type": "IntrinsicCall", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 36, - "end_line": 36, + "line": 19, + "end_line": 19, "column": 22, "end_column": 47 }, @@ -1074,8 +618,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 39, - "end_line": 39, + "line": 22, + "end_line": 22, "column": 4, "end_column": 35 }, @@ -1083,8 +627,8 @@ "_type": "AppStateExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 39, - "end_line": 39, + "line": 22, + "end_line": 22, "column": 14, "end_column": 19 }, @@ -1120,8 +664,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 39, - "end_line": 39, + "line": 22, + "end_line": 22, "column": 28, "end_column": 34 }, @@ -1140,8 +684,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 40, - "end_line": 40, + "line": 23, + "end_line": 23, "column": 10, "end_column": 43 }, @@ -1149,8 +693,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 40, - "end_line": 40, + "line": 23, + "end_line": 23, "column": 10, "end_column": 20 }, @@ -1168,8 +712,8 @@ "_type": "SubmitInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 40, - "end_line": 40, + "line": 23, + "end_line": 23, "column": 23, "end_column": 43 }, @@ -1186,8 +730,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 40, - "end_line": 40, + "line": 23, + "end_line": 23, "column": 23, "end_column": 34 }, @@ -1208,8 +752,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 41, - "end_line": 43, + "line": 24, + "end_line": 26, "column": 4, "end_column": 6 }, @@ -1217,8 +761,8 @@ "_type": "UpdateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 41, - "end_line": 43, + "line": 24, + "end_line": 26, "column": 4, "end_column": 6 }, @@ -1234,8 +778,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 41, - "end_line": 41, + "line": 24, + "end_line": 24, "column": 4, "end_column": 15 }, @@ -1254,8 +798,8 @@ "_type": "AppStateExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 42, - "end_line": 42, + "line": 25, + "end_line": 25, "column": 27, "end_column": 32 }, @@ -1294,8 +838,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 44, - "end_line": 44, + "line": 27, + "end_line": 27, "column": 10, "end_column": 43 }, @@ -1303,8 +847,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 44, - "end_line": 44, + "line": 27, + "end_line": 27, "column": 10, "end_column": 20 }, @@ -1322,8 +866,8 @@ "_type": "SubmitInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 44, - "end_line": 44, + "line": 27, + "end_line": 27, "column": 23, "end_column": 43 }, @@ -1340,8 +884,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 44, - "end_line": 44, + "line": 27, + "end_line": 27, "column": 23, "end_column": 34 }, @@ -1362,8 +906,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 46, - "end_line": 46, + "line": 29, + "end_line": 29, "column": 4, "end_column": 75 }, @@ -1371,8 +915,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 46, - "end_line": 46, + "line": 29, + "end_line": 29, "column": 4, "end_column": 75 }, @@ -1387,8 +931,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 46, - "end_line": 46, + "line": 29, + "end_line": 29, "column": 11, "end_column": 49 }, @@ -1403,8 +947,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 46, - "end_line": 46, + "line": 29, + "end_line": 29, "column": 22, "end_column": 31 }, @@ -1419,8 +963,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 46, - "end_line": 46, + "line": 29, + "end_line": 29, "column": 11, "end_column": 21 }, @@ -1442,8 +986,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 46, - "end_line": 46, + "line": 29, + "end_line": 29, "column": 42, "end_column": 48 }, @@ -1465,8 +1009,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 47, - "end_line": 47, + "line": 30, + "end_line": 30, "column": 4, "end_column": 75 }, @@ -1474,8 +1018,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 47, - "end_line": 47, + "line": 30, + "end_line": 30, "column": 4, "end_column": 75 }, @@ -1490,8 +1034,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 47, - "end_line": 47, + "line": 30, + "end_line": 30, "column": 11, "end_column": 49 }, @@ -1506,8 +1050,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 47, - "end_line": 47, + "line": 30, + "end_line": 30, "column": 22, "end_column": 31 }, @@ -1522,8 +1066,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 47, - "end_line": 47, + "line": 30, + "end_line": 30, "column": 11, "end_column": 21 }, @@ -1545,8 +1089,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 47, - "end_line": 47, + "line": 30, + "end_line": 30, "column": 42, "end_column": 48 }, @@ -1568,8 +1112,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 4, "end_column": 88 }, @@ -1577,8 +1121,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 4, "end_column": 88 }, @@ -1593,8 +1137,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 11, "end_column": 57 }, @@ -1609,8 +1153,8 @@ "_type": "CheckedMaybe", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 35, "end_column": 39 }, @@ -1625,8 +1169,8 @@ "_type": "IntrinsicCall", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 35, "end_column": 39 }, @@ -1662,8 +1206,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 22, "end_column": 34 }, @@ -1678,8 +1222,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 11, "end_column": 21 }, @@ -1705,8 +1249,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 50, "end_column": 56 }, @@ -1728,8 +1272,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 4, "end_column": 88 }, @@ -1737,8 +1281,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 4, "end_column": 88 }, @@ -1753,8 +1297,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 11, "end_column": 57 }, @@ -1769,8 +1313,8 @@ "_type": "CheckedMaybe", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 35, "end_column": 39 }, @@ -1785,8 +1329,8 @@ "_type": "IntrinsicCall", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 35, "end_column": 39 }, @@ -1822,8 +1366,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 22, "end_column": 34 }, @@ -1838,8 +1382,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 11, "end_column": 21 }, @@ -1865,8 +1409,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 50, "end_column": 56 }, @@ -1888,8 +1432,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 51, - "end_line": 55, + "line": 34, + "end_line": 38, "column": 10, "end_column": 6 }, @@ -1897,8 +1441,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 51, - "end_line": 51, + "line": 34, + "end_line": 34, "column": 10, "end_column": 25 }, @@ -1916,8 +1460,8 @@ "_type": "CreateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 51, - "end_line": 55, + "line": 34, + "end_line": 38, "column": 28, "end_column": 6 }, @@ -1934,8 +1478,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 54, - "end_line": 54, + "line": 37, + "end_line": 37, "column": 11, "end_column": 12 }, @@ -1953,8 +1497,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 51, - "end_line": 55, + "line": 34, + "end_line": 38, "column": 28, "end_column": 6 }, @@ -1972,10 +1516,10 @@ "_type": "TupleExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 52, - "end_line": 52, - "column": 23, - "end_column": 46 + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WTuple", @@ -1998,10 +1542,10 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 52, - "end_line": 52, - "column": 23, - "end_column": 46 + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WType", @@ -2019,10 +1563,10 @@ "_type": "TupleExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 53, - "end_line": 53, - "column": 25, - "end_column": 48 + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WTuple", @@ -2045,10 +1589,10 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 53, - "end_line": 53, - "column": 25, - "end_column": 48 + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WType", @@ -2069,8 +1613,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 57, - "end_line": 59, + "line": 40, + "end_line": 42, "column": 4, "end_column": 6 }, @@ -2078,8 +1622,8 @@ "_type": "UpdateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 57, - "end_line": 59, + "line": 40, + "end_line": 42, "column": 4, "end_column": 6 }, @@ -2095,8 +1639,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 57, - "end_line": 57, + "line": 40, + "end_line": 40, "column": 4, "end_column": 15 }, @@ -2115,8 +1659,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 58, - "end_line": 58, + "line": 41, + "end_line": 41, "column": 17, "end_column": 23 }, @@ -2137,8 +1681,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 10, "end_column": 85 }, @@ -2146,8 +1690,8 @@ "_type": "TupleExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 10, "end_column": 85 }, @@ -2181,8 +1725,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 11, "end_column": 23 }, @@ -2200,8 +1744,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 25, "end_column": 35 }, @@ -2221,8 +1765,8 @@ "_type": "SubmitInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 39, "end_column": 85 }, @@ -2256,8 +1800,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 56, "end_column": 71 }, @@ -2275,8 +1819,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 73, "end_column": 84 }, @@ -2297,19 +1841,19 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 63, - "end_line": 63, + "line": 46, + "end_line": 46, "column": 4, - "end_column": 48 + "end_column": 53 }, "expr": { "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 63, - "end_line": 63, + "line": 46, + "end_line": 46, "column": 4, - "end_column": 48 + "end_column": 53 }, "wtype": { "_type": "WType", @@ -2322,10 +1866,10 @@ "_type": "ReinterpretCast", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 63, - "end_line": 63, + "line": 46, + "end_line": 46, "column": 4, - "end_column": 48 + "end_column": 53 }, "wtype": { "_type": "WType", @@ -2338,10 +1882,10 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 63, - "end_line": 63, + "line": 46, + "end_line": 46, "column": 24, - "end_column": 29 + "end_column": 34 }, "wtype": { "_type": "WType", @@ -2354,8 +1898,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 63, - "end_line": 63, + "line": 46, + "end_line": 46, "column": 11, "end_column": 23 }, @@ -2369,7 +1913,7 @@ }, "name": "appCreateTxn" }, - "field": "ApplicationID", + "field": "CreatedApplicationID", "array_index": null } }, @@ -2380,8 +1924,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 64, - "end_line": 64, + "line": 47, + "end_line": 47, "column": 4, "end_column": 75 }, @@ -2389,8 +1933,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 64, - "end_line": 64, + "line": 47, + "end_line": 47, "column": 4, "end_column": 75 }, @@ -2405,8 +1949,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 64, - "end_line": 64, + "line": 47, + "end_line": 47, "column": 11, "end_column": 49 }, @@ -2421,8 +1965,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 64, - "end_line": 64, + "line": 47, + "end_line": 47, "column": 22, "end_column": 31 }, @@ -2437,8 +1981,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 64, - "end_line": 64, + "line": 47, + "end_line": 47, "column": 11, "end_column": 21 }, @@ -2460,8 +2004,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 64, - "end_line": 64, + "line": 47, + "end_line": 47, "column": 42, "end_column": 48 }, @@ -2483,8 +2027,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 66, - "end_line": 68, + "line": 49, + "end_line": 51, "column": 4, "end_column": 6 }, @@ -2492,8 +2036,8 @@ "_type": "UpdateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 66, - "end_line": 68, + "line": 49, + "end_line": 51, "column": 4, "end_column": 6 }, @@ -2509,8 +2053,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 66, - "end_line": 66, + "line": 49, + "end_line": 49, "column": 4, "end_column": 19 }, @@ -2529,8 +2073,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 67, - "end_line": 67, + "line": 50, + "end_line": 50, "column": 12, "end_column": 17 }, @@ -2551,8 +2095,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 69, - "end_line": 71, + "line": 52, + "end_line": 54, "column": 4, "end_column": 6 }, @@ -2560,8 +2104,8 @@ "_type": "UpdateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 69, - "end_line": 71, + "line": 52, + "end_line": 54, "column": 4, "end_column": 6 }, @@ -2577,8 +2121,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 69, - "end_line": 69, + "line": 52, + "end_line": 52, "column": 4, "end_column": 15 }, @@ -2597,8 +2141,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 70, - "end_line": 70, + "line": 53, + "end_line": 53, "column": 12, "end_column": 17 }, @@ -2619,8 +2163,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 72, - "end_line": 72, + "line": 55, + "end_line": 55, "column": 4, "end_column": 50 }, @@ -2628,8 +2172,8 @@ "_type": "SubmitInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 72, - "end_line": 72, + "line": 55, + "end_line": 55, "column": 4, "end_column": 50 }, @@ -2663,8 +2207,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 72, - "end_line": 72, + "line": 55, + "end_line": 55, "column": 21, "end_column": 36 }, @@ -2682,8 +2226,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 72, - "end_line": 72, + "line": 55, + "end_line": 55, "column": 38, "end_column": 49 }, @@ -2712,16 +2256,34 @@ }, "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", "member_name": "test1", - "arc4_method_config": null + "arc4_method_config": { + "_type": "ARC4ABIMethodConfig", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 10, + "end_line": 10, + "column": 2, + "end_column": 16 + }, + "name": "test1", + "is_bare": false, + "create": 3, + "readonly": false, + "allowed_completion_types": [ + 0 + ], + "default_args": {}, + "structs": {} + } }, { "_type": "ContractMethod", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 75, - "end_line": 75, + "line": 58, + "end_line": 58, "column": 2, - "end_column": 17 + "end_column": 16 }, "args": [], "return_type": { @@ -2735,9 +2297,9 @@ "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 75, - "end_line": 98, - "column": 18, + "line": 58, + "end_line": 93, + "column": 17, "end_column": 3 }, "body": [ @@ -2745,8 +2307,8 @@ "_type": "IfElse", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 77, - "end_line": 77, + "line": 60, + "end_line": 60, "column": 4, "end_column": 23 }, @@ -2754,8 +2316,8 @@ "_type": "ReinterpretCast", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 77, - "end_line": 77, + "line": 60, + "end_line": 60, "column": 8, "end_column": 22 }, @@ -2770,8 +2332,8 @@ "_type": "IntrinsicCall", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 77, - "end_line": 77, + "line": 60, + "end_line": 60, "column": 12, "end_column": 22 }, @@ -2793,8 +2355,8 @@ "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 77, - "end_line": 86, + "line": 60, + "end_line": 69, "column": 24, "end_column": 5 }, @@ -2803,8 +2365,8 @@ "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 77, - "end_line": 86, + "line": 60, + "end_line": 69, "column": 24, "end_column": 5 }, @@ -2813,8 +2375,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 78, - "end_line": 78, + "line": 61, + "end_line": 61, "column": 12, "end_column": 52 }, @@ -2822,8 +2384,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 78, - "end_line": 78, + "line": 61, + "end_line": 61, "column": 12, "end_column": 16 }, @@ -2856,8 +2418,8 @@ "_type": "TupleExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 78, - "end_line": 78, + "line": 61, + "end_line": 61, "column": 19, "end_column": 43 }, @@ -2889,8 +2451,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 78, - "end_line": 78, + "line": 61, + "end_line": 61, "column": 26, "end_column": 29 }, @@ -2908,8 +2470,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 78, - "end_line": 78, + "line": 61, + "end_line": 61, "column": 38, "end_column": 41 }, @@ -2930,8 +2492,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 79, - "end_line": 85, + "line": 62, + "end_line": 68, "column": 6, "end_column": 8 }, @@ -2939,8 +2501,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 79, - "end_line": 79, + "line": 62, + "end_line": 62, "column": 6, "end_column": 21 }, @@ -2958,8 +2520,8 @@ "_type": "CreateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 79, - "end_line": 85, + "line": 62, + "end_line": 68, "column": 24, "end_column": 8 }, @@ -2976,8 +2538,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 79, - "end_line": 85, + "line": 62, + "end_line": 68, "column": 24, "end_column": 8 }, @@ -2995,8 +2557,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 79, - "end_line": 85, + "line": 62, + "end_line": 68, "column": 24, "end_column": 8 }, @@ -3016,8 +2578,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WTuple", @@ -3042,8 +2604,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WType", @@ -3052,8 +2614,8 @@ "ephemeral": false, "scalar_type": 1 }, - "value": "3BrK^", - "encoding": "utf8" + "value": "34s9", + "encoding": "base16" } ] }, @@ -3063,8 +2625,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WTuple", @@ -3089,8 +2651,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WType", @@ -3099,8 +2661,8 @@ "ephemeral": false, "scalar_type": 1 }, - "value": "3BrK^", - "encoding": "utf8" + "value": "34s9", + "encoding": "base16" } ] }, @@ -3108,8 +2670,8 @@ "_type": "TupleExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 82, - "end_line": 82, + "line": 65, + "end_line": 65, "column": 17, "end_column": 21 }, @@ -3141,8 +2703,8 @@ "_type": "TupleItemExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 82, - "end_line": 82, + "line": 65, + "end_line": 65, "column": 17, "end_column": 21 }, @@ -3157,8 +2719,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 82, - "end_line": 82, + "line": 65, + "end_line": 65, "column": 17, "end_column": 21 }, @@ -3193,8 +2755,8 @@ "_type": "TupleItemExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 82, - "end_line": 82, + "line": 65, + "end_line": 65, "column": 17, "end_column": 21 }, @@ -3209,8 +2771,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 82, - "end_line": 82, + "line": 65, + "end_line": 65, "column": 17, "end_column": 21 }, @@ -3247,8 +2809,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 83, - "end_line": 83, + "line": 66, + "end_line": 66, "column": 39, "end_column": 43 }, @@ -3266,8 +2828,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 84, - "end_line": 84, + "line": 67, + "end_line": 67, "column": 14, "end_column": 35 }, @@ -3296,8 +2858,8 @@ "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 86, - "end_line": 93, + "line": 69, + "end_line": 76, "column": 11, "end_column": 5 }, @@ -3306,8 +2868,8 @@ "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 86, - "end_line": 93, + "line": 69, + "end_line": 76, "column": 11, "end_column": 5 }, @@ -3316,8 +2878,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 87, - "end_line": 92, + "line": 70, + "end_line": 75, "column": 6, "end_column": 8 }, @@ -3325,8 +2887,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 87, - "end_line": 87, + "line": 70, + "end_line": 70, "column": 6, "end_column": 21 }, @@ -3344,8 +2906,8 @@ "_type": "CreateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 87, - "end_line": 92, + "line": 70, + "end_line": 75, "column": 24, "end_column": 8 }, @@ -3362,8 +2924,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 87, - "end_line": 92, + "line": 70, + "end_line": 75, "column": 24, "end_column": 8 }, @@ -3381,8 +2943,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 87, - "end_line": 92, + "line": 70, + "end_line": 75, "column": 24, "end_column": 8 }, @@ -3402,8 +2964,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WTuple", @@ -3428,8 +2990,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WType", @@ -3438,8 +3000,8 @@ "ephemeral": false, "scalar_type": 1 }, - "value": "3BrK^", - "encoding": "utf8" + "value": "34s9", + "encoding": "base16" } ] }, @@ -3449,8 +3011,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WTuple", @@ -3475,8 +3037,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WType", @@ -3485,8 +3047,8 @@ "ephemeral": false, "scalar_type": 1 }, - "value": "3BrK^", - "encoding": "utf8" + "value": "34s9", + "encoding": "base16" } ] }, @@ -3494,8 +3056,8 @@ "_type": "TupleExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 90, - "end_line": 90, + "line": 73, + "end_line": 73, "column": 17, "end_column": 46 }, @@ -3534,8 +3096,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 90, - "end_line": 90, + "line": 73, + "end_line": 73, "column": 24, "end_column": 27 }, @@ -3553,8 +3115,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 90, - "end_line": 90, + "line": 73, + "end_line": 73, "column": 30, "end_column": 33 }, @@ -3572,8 +3134,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 90, - "end_line": 90, + "line": 73, + "end_line": 73, "column": 41, "end_column": 44 }, @@ -3593,8 +3155,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 91, - "end_line": 91, + "line": 74, + "end_line": 74, "column": 14, "end_column": 33 }, @@ -3624,8 +3186,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 94, - "end_line": 94, + "line": 77, + "end_line": 77, "column": 10, "end_column": 49 }, @@ -3633,8 +3195,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 94, - "end_line": 94, + "line": 77, + "end_line": 77, "column": 10, "end_column": 22 }, @@ -3652,8 +3214,8 @@ "_type": "SubmitInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 94, - "end_line": 94, + "line": 77, + "end_line": 77, "column": 25, "end_column": 49 }, @@ -3670,8 +3232,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 94, - "end_line": 94, + "line": 77, + "end_line": 77, "column": 25, "end_column": 40 }, @@ -3692,8 +3254,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 4, "end_column": 73 }, @@ -3701,8 +3263,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 4, "end_column": 73 }, @@ -3717,8 +3279,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 11, "end_column": 49 }, @@ -3733,8 +3295,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 11, "end_column": 34 }, @@ -3749,8 +3311,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 11, "end_column": 23 }, @@ -3769,8 +3331,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 32, "end_column": 33 }, @@ -3790,8 +3352,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 45, "end_column": 48 }, @@ -3813,8 +3375,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 4, "end_column": 73 }, @@ -3822,8 +3384,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 4, "end_column": 73 }, @@ -3838,8 +3400,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 11, "end_column": 49 }, @@ -3854,8 +3416,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 11, "end_column": 34 }, @@ -3870,8 +3432,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 11, "end_column": 23 }, @@ -3890,8 +3452,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 32, "end_column": 33 }, @@ -3911,8 +3473,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 45, "end_column": 48 }, @@ -3931,147 +3493,7790 @@ } }, { - "_type": "ExpressionStatement", + "_type": "IfElse", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 97, - "end_line": 97, + "line": 81, + "end_line": 81, "column": 4, - "end_column": 62 + "end_column": 27 }, - "expr": { - "_type": "AssertExpression", + "condition": { + "_type": "NumericComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 97, - "end_line": 97, - "column": 4, - "end_column": 62 + "line": 81, + "end_line": 81, + "column": 8, + "end_column": 26 }, "wtype": { "_type": "WType", - "name": "void", + "name": "bool", "immutable": true, "ephemeral": false, - "scalar_type": null + "scalar_type": 2 }, - "condition": { - "_type": "BytesComparisonExpression", + "lhs": { + "_type": "IntrinsicCall", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 97, - "end_line": 97, - "column": 11, - "end_column": 61 + "line": 81, + "end_line": 81, + "column": 12, + "end_column": 22 }, "wtype": { "_type": "WType", - "name": "bool", + "name": "uint64", "immutable": true, "ephemeral": false, "scalar_type": 2 }, - "lhs": { - "_type": "InnerTransactionField", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 97, - "end_line": 97, - "column": 24, - "end_column": 28 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 - }, - "itxn": { - "_type": "VarExpression", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 97, - "end_line": 97, - "column": 11, - "end_column": 23 - }, - "wtype": { - "_type": "WInnerTransaction", - "name": "inner_transaction_appl", - "immutable": true, - "ephemeral": false, - "scalar_type": null, - "transaction_type": 6 - }, - "name": "createAppTxn" - }, - "field": "Note", - "array_index": null + "op_code": "txn", + "immediates": [ + "NumAppArgs" + ], + "stack_args": [] + }, + "operator": ">", + "rhs": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 81, + "end_line": 81, + "column": 25, + "end_column": 26 }, - "operator": "==", - "rhs": { - "_type": "BytesConstant", + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "1", + "teal_alias": null + } + }, + "if_branch": { + "_type": "Block", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 81, + "end_line": 92, + "column": 28, + "end_column": 5 + }, + "body": [ + { + "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 97, - "end_line": 97, - "column": 39, - "end_column": 60 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 + "line": 81, + "end_line": 92, + "column": 28, + "end_column": 5 }, - "value": "cWHEJAYpQ6b0BbGa$#*Cb7gb", - "encoding": "utf8" - } - }, - "error_message": null - } - } - ], - "label": null, - "comment": null - }, - "documentation": { - "_type": "MethodDocumentation", - "description": null, - "args": {}, - "returns": null - }, - "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", - "member_name": "test2", - "arc4_method_config": null - }, - { - "_type": "ContractMethod", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 7, - "end_line": 7, - "column": 0, - "end_column": 52 - }, - "args": [], - "return_type": { - "_type": "WType", - "name": "void", - "immutable": true, - "ephemeral": false, - "scalar_type": null - }, - "body": { + "body": [ + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 82, + "end_line": 89, + "column": 12, + "end_column": 17 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 82, + "end_line": 82, + "column": 12, + "end_column": 25 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "createAppTxn2" + }, + "value": { + "_type": "SubmitInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 82, + "end_line": 89, + "column": 28, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxns": [ + { + "_type": "CreateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 82, + "end_line": 88, + "column": 28, + "end_column": 10 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "fields": { + "Fee": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 82, + "end_line": 88, + "column": 28, + "end_column": 10 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + }, + "TypeEnum": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 82, + "end_line": 88, + "column": 28, + "end_column": 10 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "6", + "teal_alias": null + }, + "ApprovalProgramPages": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "34s9", + "encoding": "base16" + } + ] + }, + "ClearStateProgramPages": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "34s9", + "encoding": "base16" + } + ] + }, + "OnCompletion": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 86, + "end_line": 86, + "column": 41, + "end_column": 58 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "5", + "teal_alias": null + }, + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 87, + "end_line": 87, + "column": 19, + "end_column": 32 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 87, + "end_line": 87, + "column": 26, + "end_column": 30 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "G%^", + "encoding": "utf8" + } + ] + } + } + } + ] + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 6, + "end_column": 77 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 6, + "end_column": 77 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 13, + "end_column": 53 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 13, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 13, + "end_column": 26 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "createAppTxn2" + }, + "field": "ApplicationArgs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 35, + "end_column": 36 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 48, + "end_column": 52 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "G%^", + "encoding": "utf8" + } + }, + "error_message": "correct args used 2" + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 91, + "end_line": 91, + "column": 6, + "end_column": 64 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 91, + "end_line": 91, + "column": 6, + "end_column": 64 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 91, + "end_line": 91, + "column": 13, + "end_column": 63 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 91, + "end_line": 91, + "column": 26, + "end_column": 30 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 91, + "end_line": 91, + "column": 13, + "end_column": 25 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "createAppTxn" + }, + "field": "Note", + "array_index": null + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 91, + "end_line": 91, + "column": 41, + "end_column": 62 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "cWHEJAYpQ6b0BbGa$#*Cb7gb", + "encoding": "utf8" + } + }, + "error_message": null + } + } + ], + "label": null, + "comment": null + } + ], + "label": null, + "comment": null + }, + "else_branch": null + } + ], + "label": null, + "comment": null + }, + "documentation": { + "_type": "MethodDocumentation", + "description": null, + "args": {}, + "returns": null + }, + "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", + "member_name": "test2", + "arc4_method_config": { + "_type": "ARC4ABIMethodConfig", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 58, + "end_line": 58, + "column": 2, + "end_column": 16 + }, + "name": "test2", + "is_bare": false, + "create": 3, + "readonly": false, + "allowed_completion_types": [ + 0 + ], + "default_args": {}, + "structs": {} + } + }, + { + "_type": "ContractMethod", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 95, + "end_line": 95, + "column": 2, + "end_column": 16 + }, + "args": [], + "return_type": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "body": { + "_type": "Block", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 95, + "end_line": 169, + "column": 17, + "end_column": 3 + }, + "body": [ + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 96, + "end_line": 101, + "column": 10, + "end_column": 6 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 96, + "end_line": 96, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + }, + "value": { + "_type": "CreateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 96, + "end_line": 101, + "column": 20, + "end_column": 6 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "fields": { + "Fee": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 96, + "end_line": 101, + "column": 20, + "end_column": 6 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + }, + "TypeEnum": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 96, + "end_line": 101, + "column": 20, + "end_column": 6 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "6", + "teal_alias": null + }, + "ApprovalProgramPages": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 4, + "end_line": 4, + "column": 32, + "end_column": 63 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 4, + "end_line": 4, + "column": 32, + "end_column": 63 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "2{sx4uz>*", + "encoding": "base16" + } + ] + }, + "ClearStateProgramPages": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "34s9", + "encoding": "base16" + } + ] + }, + "OnCompletion": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 99, + "end_line": 99, + "column": 37, + "end_column": 54 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "5", + "teal_alias": null + }, + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 100, + "end_line": 100, + "column": 15, + "end_column": 27 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 100, + "end_line": 100, + "column": 22, + "end_column": 25 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F#", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 103, + "end_line": 103, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 103, + "end_line": 103, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn2" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 103, + "end_line": 103, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 103, + "end_line": 103, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 104, + "end_line": 104, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 104, + "end_line": 104, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 104, + "end_line": 104, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn2" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 104, + "end_line": 104, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 104, + "end_line": 104, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "G5", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 105, + "end_line": 105, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 105, + "end_line": 105, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn3" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 105, + "end_line": 105, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 105, + "end_line": 105, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 106, + "end_line": 106, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 106, + "end_line": 106, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 106, + "end_line": 106, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn3" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 106, + "end_line": 106, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 106, + "end_line": 106, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "GX", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 107, + "end_line": 107, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 107, + "end_line": 107, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn4" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 107, + "end_line": 107, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 107, + "end_line": 107, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 108, + "end_line": 108, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 108, + "end_line": 108, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 108, + "end_line": 108, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn4" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 108, + "end_line": 108, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 108, + "end_line": 108, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "Gy", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 109, + "end_line": 109, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 109, + "end_line": 109, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn5" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 109, + "end_line": 109, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 109, + "end_line": 109, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 110, + "end_line": 110, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 110, + "end_line": 110, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 110, + "end_line": 110, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn5" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 110, + "end_line": 110, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 110, + "end_line": 110, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "H2", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 111, + "end_line": 111, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 111, + "end_line": 111, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn6" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 111, + "end_line": 111, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 111, + "end_line": 111, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 112, + "end_line": 112, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 112, + "end_line": 112, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 112, + "end_line": 112, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn6" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 112, + "end_line": 112, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 112, + "end_line": 112, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "HU", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 113, + "end_line": 113, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 113, + "end_line": 113, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn7" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 113, + "end_line": 113, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 113, + "end_line": 113, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 114, + "end_line": 114, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 114, + "end_line": 114, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 114, + "end_line": 114, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn7" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 114, + "end_line": 114, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 114, + "end_line": 114, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "Hv", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 115, + "end_line": 115, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 115, + "end_line": 115, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn8" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 115, + "end_line": 115, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 115, + "end_line": 115, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 116, + "end_line": 116, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 116, + "end_line": 116, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 116, + "end_line": 116, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn8" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 116, + "end_line": 116, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 116, + "end_line": 116, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "H~", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 117, + "end_line": 117, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 117, + "end_line": 117, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn9" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 117, + "end_line": 117, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 117, + "end_line": 117, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 118, + "end_line": 118, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 118, + "end_line": 118, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 118, + "end_line": 118, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn9" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 118, + "end_line": 118, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 118, + "end_line": 118, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "IR", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 119, + "end_line": 119, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 119, + "end_line": 119, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn10" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 119, + "end_line": 119, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 119, + "end_line": 119, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 120, + "end_line": 120, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 120, + "end_line": 120, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 120, + "end_line": 120, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn10" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 120, + "end_line": 120, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 120, + "end_line": 120, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F)#", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 121, + "end_line": 121, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 121, + "end_line": 121, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn11" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 121, + "end_line": 121, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 121, + "end_line": 121, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 122, + "end_line": 122, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 122, + "end_line": 122, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 122, + "end_line": 122, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn11" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 122, + "end_line": 122, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 122, + "end_line": 122, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F);", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 123, + "end_line": 123, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 123, + "end_line": 123, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn12" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 123, + "end_line": 123, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 123, + "end_line": 123, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 124, + "end_line": 124, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 124, + "end_line": 124, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 124, + "end_line": 124, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn12" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 124, + "end_line": 124, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 124, + "end_line": 124, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F){", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 125, + "end_line": 125, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 125, + "end_line": 125, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn13" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 125, + "end_line": 125, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 125, + "end_line": 125, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 126, + "end_line": 126, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 126, + "end_line": 126, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 126, + "end_line": 126, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn13" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 126, + "end_line": 126, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 126, + "end_line": 126, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*5", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 127, + "end_line": 127, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 127, + "end_line": 127, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn14" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 127, + "end_line": 127, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 127, + "end_line": 127, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 128, + "end_line": 128, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 128, + "end_line": 128, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 128, + "end_line": 128, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn14" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 128, + "end_line": 128, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 128, + "end_line": 128, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*E", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 129, + "end_line": 129, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 129, + "end_line": 129, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn15" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 129, + "end_line": 129, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 129, + "end_line": 129, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 130, + "end_line": 130, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 130, + "end_line": 130, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 130, + "end_line": 130, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn15" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 130, + "end_line": 130, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 130, + "end_line": 130, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*N", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 131, + "end_line": 131, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 131, + "end_line": 131, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn16" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 131, + "end_line": 131, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 131, + "end_line": 131, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 132, + "end_line": 132, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 132, + "end_line": 132, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 132, + "end_line": 132, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn16" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 132, + "end_line": 132, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 132, + "end_line": 132, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*X", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 151, + "column": 10, + "end_column": 5 + }, + "target": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 151, + "column": 10, + "end_column": 5 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + } + ] + }, + "items": [ + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 17, + "end_column": 21 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app2" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 23, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app3" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 29, + "end_column": 33 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app4" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app5" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 41, + "end_column": 45 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app6" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 47, + "end_column": 51 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app7" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 53, + "end_column": 57 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app8" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 59, + "end_column": 63 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app9" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 65, + "end_column": 70 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app10" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 72, + "end_column": 77 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app11" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 79, + "end_column": 84 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app12" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 86, + "end_column": 91 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app13" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 93, + "end_column": 98 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app14" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 100, + "end_column": 105 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app15" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 107, + "end_column": 112 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app16" + } + ] + }, + "value": { + "_type": "SubmitInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 151, + "column": 116, + "end_column": 5 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + } + ] + }, + "itxns": [ + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 135, + "end_line": 135, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 136, + "end_line": 136, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn2" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 137, + "end_line": 137, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn3" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 138, + "end_line": 138, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn4" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 139, + "end_line": 139, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn5" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 140, + "end_line": 140, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn6" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 141, + "end_line": 141, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn7" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 142, + "end_line": 142, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn8" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 143, + "end_line": 143, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn9" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 144, + "end_line": 144, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn10" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 145, + "end_line": 145, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn11" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 146, + "end_line": 146, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn12" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 147, + "end_line": 147, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn13" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 148, + "end_line": 148, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn14" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 149, + "end_line": 149, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn15" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 150, + "end_line": 150, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn16" + } + ] + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F#", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app2" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "G5", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app3" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "GX", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app4" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "Gy", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app5" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "H2", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app6" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "HU", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app7" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "Hv", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app8" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "H~", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app9" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "IR", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app10" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F)#", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app11" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F);", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app12" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F){", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app13" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*5", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app14" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*E", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app15" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*N", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app16" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*X", + "encoding": "utf8" + } + }, + "error_message": null + } + } + ], + "label": null, + "comment": null + }, + "documentation": { + "_type": "MethodDocumentation", + "description": null, + "args": {}, + "returns": null + }, + "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", + "member_name": "test3", + "arc4_method_config": { + "_type": "ARC4ABIMethodConfig", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 95, + "end_line": 95, + "column": 2, + "end_column": 16 + }, + "name": "test3", + "is_bare": false, + "create": 3, + "readonly": false, + "allowed_completion_types": [ + 0 + ], + "default_args": {}, + "structs": {} + } + }, + { + "_type": "ContractMethod", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 171, + "end_line": 171, + "column": 2, + "end_column": 16 + }, + "args": [], + "return_type": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "body": { + "_type": "Block", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 171, + "end_line": 192, + "column": 17, + "end_column": 3 + }, + "body": [ + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 172, + "end_line": 172, + "column": 10, + "end_column": 38 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 172, + "end_line": 172, + "column": 10, + "end_column": 21 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "lotsOfBytes" + }, + "value": { + "_type": "IntrinsicCall", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 172, + "end_line": 172, + "column": 24, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "op_code": "bzero", + "immediates": [], + "stack_args": [ + { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 172, + "end_line": 172, + "column": 33, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "2044", + "teal_alias": null + } + ] + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 173, + "end_line": 173, + "column": 10, + "end_column": 29 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 173, + "end_line": 173, + "column": 10, + "end_column": 19 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval1" + }, + "value": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "34s9", + "encoding": "base16" + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 174, + "end_line": 176, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 174, + "end_line": 174, + "column": 10, + "end_column": 19 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + }, + "value": { + "_type": "IntrinsicCall", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 174, + "end_line": 176, + "column": 22, + "end_column": 34 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "op_code": "concat", + "immediates": [], + "stack_args": [ + { + "_type": "IntrinsicCall", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 174, + "end_line": 175, + "column": 22, + "end_column": 26 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "op_code": "concat", + "immediates": [], + "stack_args": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 174, + "end_line": 174, + "column": 22, + "end_column": 50 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "fcy^", + "encoding": "base16" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 175, + "end_line": 175, + "column": 14, + "end_column": 25 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "lotsOfBytes" + } + ] + }, + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 176, + "end_line": 176, + "column": 14, + "end_column": 33 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "NB", + "encoding": "base16" + } + ] + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 178, + "end_line": 184, + "column": 10, + "end_column": 6 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 178, + "end_line": 178, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + }, + "value": { + "_type": "CreateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 178, + "end_line": 184, + "column": 20, + "end_column": 6 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "fields": { + "Fee": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 178, + "end_line": 184, + "column": 20, + "end_column": 6 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + }, + "TypeEnum": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 178, + "end_line": 184, + "column": 20, + "end_column": 6 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "6", + "teal_alias": null + }, + "ApprovalProgramPages": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 179, + "end_line": 179, + "column": 23, + "end_column": 67 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 179, + "end_line": 179, + "column": 24, + "end_column": 33 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval1" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 179, + "end_line": 179, + "column": 35, + "end_column": 44 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 179, + "end_line": 179, + "column": 46, + "end_column": 55 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 179, + "end_line": 179, + "column": 57, + "end_column": 66 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + } + ] + }, + "ClearStateProgramPages": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "34s9", + "encoding": "base16" + } + ] + }, + "OnCompletion": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 181, + "end_line": 181, + "column": 37, + "end_column": 54 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "5", + "teal_alias": null + }, + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 182, + "end_line": 182, + "column": 15, + "end_column": 27 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 182, + "end_line": 182, + "column": 22, + "end_column": 25 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F#", + "encoding": "utf8" + } + ] + }, + "ExtraProgramPages": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 183, + "end_line": 183, + "column": 25, + "end_column": 26 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "3", + "teal_alias": null + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 185, + "end_line": 185, + "column": 10, + "end_column": 33 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 185, + "end_line": 185, + "column": 10, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "value": { + "_type": "SubmitInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 185, + "end_line": 185, + "column": 17, + "end_column": 33 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxns": [ + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 185, + "end_line": 185, + "column": 17, + "end_column": 24 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + ] + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 186, + "end_line": 186, + "column": 4, + "end_column": 59 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 186, + "end_line": 186, + "column": 4, + "end_column": 59 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "NumericComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 186, + "end_line": 186, + "column": 11, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 186, + "end_line": 186, + "column": 16, + "end_column": 33 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 186, + "end_line": 186, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "ExtraProgramPages", + "array_index": null + }, + "operator": "==", + "rhs": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 186, + "end_line": 186, + "column": 38, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "3", + "teal_alias": null + } + }, + "error_message": "extra pages = 3" + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 187, + "end_line": 187, + "column": 4, + "end_column": 68 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 187, + "end_line": 187, + "column": 4, + "end_column": 68 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "NumericComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 187, + "end_line": 187, + "column": 11, + "end_column": 45 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 187, + "end_line": 187, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 187, + "end_line": 187, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "NumApprovalProgramPages", + "array_index": null + }, + "operator": "==", + "rhs": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 187, + "end_line": 187, + "column": 44, + "end_column": 45 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "2", + "teal_alias": null + } + }, + "error_message": "approval pages = 2" + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 4, + "end_column": 131 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 4, + "end_column": 131 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 11, + "end_column": 102 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 11, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "ApprovalProgramPages", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 37, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "IntrinsicCall", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 44, + "end_column": 102 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "op_code": "concat", + "immediates": [], + "stack_args": [ + { + "_type": "IntrinsicCall", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 44, + "end_column": 71 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "op_code": "concat", + "immediates": [], + "stack_args": [ + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 44, + "end_column": 53 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval1" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 61, + "end_column": 70 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + } + ] + }, + { + "_type": "IntersectionSliceExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 79, + "end_column": 101 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "base": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 79, + "end_column": 88 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + }, + "begin_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 95, + "end_column": 96 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + }, + "end_index": -3 + } + ] + } + }, + "error_message": "expected approval page 0" + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 4, + "end_column": 110 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 4, + "end_column": 110 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 11, + "end_column": 81 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 11, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "ApprovalProgramPages", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 37, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "1", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "IntrinsicCall", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 44, + "end_column": 81 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "op_code": "concat", + "immediates": [], + "stack_args": [ + { + "_type": "IntersectionSliceExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 44, + "end_column": 63 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "base": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 44, + "end_column": 53 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + }, + "begin_index": -3, + "end_index": null + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 71, + "end_column": 80 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + } + ] + } + }, + "error_message": "expected approval page 1" + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 190, + "end_line": 190, + "column": 4, + "end_column": 73 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 190, + "end_line": 190, + "column": 4, + "end_column": 73 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "NumericComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 190, + "end_line": 190, + "column": 11, + "end_column": 47 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 190, + "end_line": 190, + "column": 16, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 190, + "end_line": 190, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "NumClearStateProgramPages", + "array_index": null + }, + "operator": "==", + "rhs": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 190, + "end_line": 190, + "column": 46, + "end_column": 47 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "1", + "teal_alias": null + } + }, + "error_message": "clear state pages = 1" + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 191, + "end_line": 191, + "column": 4, + "end_column": 83 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 191, + "end_line": 191, + "column": 4, + "end_column": 83 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 191, + "end_line": 191, + "column": 11, + "end_column": 53 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 191, + "end_line": 191, + "column": 11, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 191, + "end_line": 191, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "ClearStateProgramPages", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 191, + "end_line": 191, + "column": 39, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "34s9", + "encoding": "base16" + } + }, + "error_message": "expected clear state page" + } + } + ], + "label": null, + "comment": null + }, + "documentation": { + "_type": "MethodDocumentation", + "description": null, + "args": {}, + "returns": null + }, + "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", + "member_name": "test4", + "arc4_method_config": { + "_type": "ARC4ABIMethodConfig", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 171, + "end_line": 171, + "column": 2, + "end_column": 16 + }, + "name": "test4", + "is_bare": false, + "create": 3, + "readonly": false, + "allowed_completion_types": [ + 0 + ], + "default_args": {}, + "structs": {} + } + }, + { + "_type": "ContractMethod", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 7, + "end_line": 7, + "column": 0, + "end_column": 48 + }, + "args": [], + "return_type": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "body": { "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", "line": 7, "end_line": 7, "column": 0, - "end_column": 52 + "end_column": 48 }, "body": [ { @@ -4081,7 +11286,7 @@ "line": 7, "end_line": 7, "column": 0, - "end_column": 52 + "end_column": 48 }, "expr": { "_type": "VoidConstant", @@ -4090,7 +11295,7 @@ "line": 7, "end_line": 7, "column": 0, - "end_column": 52 + "end_column": 48 }, "wtype": { "_type": "WType", @@ -4180,6 +11385,60 @@ "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", "member_name": "constructor", "arc4_method_config": null + }, + { + "_type": "ContractMethod", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 7, + "end_line": 7, + "column": 0, + "end_column": 48 + }, + "args": [], + "return_type": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "body": { + "_type": "Block", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 7, + "end_line": 7, + "column": 0, + "end_column": 48 + }, + "body": [], + "label": null, + "comment": null + }, + "documentation": { + "_type": "MethodDocumentation", + "description": "Implicitly generated create method", + "args": {}, + "returns": null + }, + "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", + "member_name": "__algots__.defaultCreate", + "arc4_method_config": { + "_type": "ARC4BareMethodConfig", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 7, + "end_line": 7, + "column": 0, + "end_column": 48 + }, + "allowed_completion_types": [ + 0 + ], + "create": 2, + "is_bare": true + } } ], "app_state": [ diff --git a/tests/approvals/out/unoptimized/itxn/ItxnDemoContract.approval.teal b/tests/approvals/out/unoptimized/itxn/ItxnDemoContract.approval.teal index 7af408548..5e19ef86b 100644 --- a/tests/approvals/out/unoptimized/itxn/ItxnDemoContract.approval.teal +++ b/tests/approvals/out/unoptimized/itxn/ItxnDemoContract.approval.teal @@ -1,10 +1,10 @@ #pragma version 10 #pragma typetrack false -// tests/approvals/itxn.algo.ts::ItxnDemoContract.approvalProgram() -> uint64: +// @algorandfoundation/algorand-typescript/arc4/index.d.ts::Contract.approvalProgram() -> uint64: main: - intcblock 0 3 1 1000 - bytecblock "name" "unit" 0x098101 0x "AST1" "AST2" "AST3" "3rd" "with args param set" "\t\xc2\x81\x01" + intcblock 0 6 5 3 1000 + bytecblock 0x098101 0x09361a00b08101 "name" "1" "unit" "2" "AST1" "AST2" "AST3" "3" "4" "5" "3rd" "with args param set" "42" "10" "11" "12" "13" "14" "15" "16" txn ApplicationID bnz main_after_if_else@2 @@ -12,162 +12,195 @@ main_if_body@1: callsub constructor main_after_if_else@2: - // tests/approvals/itxn.algo.ts:11 - // if (Txn.numAppArgs) { - txn NumAppArgs - bz main_after_if_else@15 -main_if_body@3: - // tests/approvals/itxn.algo.ts:12 - // switch (Txn.applicationArgs(0)) { +main_block@3: + // tests/approvals/itxn.algo.ts:7 + // export class ItxnDemoContract extends Contract { + txn NumAppArgs intc_0 // 0 - txnas ApplicationArgs - // tests/approvals/itxn.algo.ts:13 - // case Bytes('test1'): - pushbytes "test1" - // tests/approvals/itxn.algo.ts:16 - // case Bytes('test2'): - pushbytes "test2" - // tests/approvals/itxn.algo.ts:19 - // case Bytes('test3'): - pushbytes "test3" - // tests/approvals/itxn.algo.ts:20 - // case Bytes('test4'): - pushbytes "test4" - // tests/approvals/itxn.algo.ts:12-22 - // switch (Txn.applicationArgs(0)) { - // case Bytes('test1'): - // this.test1() - // break - // case Bytes('test2'): - // this.test2() - // break - // case Bytes('test3'): - // case Bytes('test4'): - // break - // } - uncover 4 - match main_switch_case_0@4 main_switch_case_1@6 main_switch_case_2@8 main_switch_case_3@10 + != + bz main_bare_routing@11 -main_switch_case_default@12: +main_abi_routing@4: + // tests/approvals/itxn.algo.ts:7 + // export class ItxnDemoContract extends Contract { + txna ApplicationArgs 0 + pushbytes 0x20254f91 // method "test1()void" + pushbytes 0xf1908524 // method "test2()void" + pushbytes 0xdf920f37 // method "test3()void" + pushbytes 0x3d46345c // method "test4()void" + uncover 4 + match main_test1_route@5 main_test2_route@6 main_test3_route@7 main_test4_route@8 -main_switch_case_next@13: +main_switch_case_default@9: -main_block@14: +main_switch_case_next@10: main_after_if_else@15: - // tests/approvals/itxn.algo.ts:24 - // return true - intc_2 // 1 + // tests/approvals/itxn.algo.ts:7 + // export class ItxnDemoContract extends Contract { + intc_0 // 0 + +main_after_inlined_tests/approvals/itxn.algo.ts::ItxnDemoContract.__puya_arc4_router__@16: return -main_switch_case_3@10: +main_test4_route@8: + // tests/approvals/itxn.algo.ts:171 + // public test4() { + txn OnCompletion + intc_0 // NoOp + == + assert // OnCompletion is not NoOp + txn ApplicationID + intc_0 // 0 + != + assert // can only call when not creating + callsub test4 + pushint 1 // 1 + b main_after_inlined_tests/approvals/itxn.algo.ts::ItxnDemoContract.__puya_arc4_router__@16 -main_block@11: - // tests/approvals/itxn.algo.ts:21 - // break - b main_block@14 +main_test3_route@7: + // tests/approvals/itxn.algo.ts:95 + // public test3() { + txn OnCompletion + intc_0 // NoOp + == + assert // OnCompletion is not NoOp + txn ApplicationID + intc_0 // 0 + != + assert // can only call when not creating + callsub test3 + pushint 1 // 1 + b main_after_inlined_tests/approvals/itxn.algo.ts::ItxnDemoContract.__puya_arc4_router__@16 -main_switch_case_2@8: +main_test2_route@6: + // tests/approvals/itxn.algo.ts:58 + // public test2() { + txn OnCompletion + intc_0 // NoOp + == + assert // OnCompletion is not NoOp + txn ApplicationID + intc_0 // 0 + != + assert // can only call when not creating + callsub test2 + pushint 1 // 1 + b main_after_inlined_tests/approvals/itxn.algo.ts::ItxnDemoContract.__puya_arc4_router__@16 -main_block@9: - // tests/approvals/itxn.algo.ts:19 - // case Bytes('test3'): - b main_block@11 +main_test1_route@5: + // tests/approvals/itxn.algo.ts:10 + // public test1() { + txn OnCompletion + intc_0 // NoOp + == + assert // OnCompletion is not NoOp + txn ApplicationID + intc_0 // 0 + != + assert // can only call when not creating + callsub test1 + pushint 1 // 1 + b main_after_inlined_tests/approvals/itxn.algo.ts::ItxnDemoContract.__puya_arc4_router__@16 -main_switch_case_1@6: +main_bare_routing@11: + // tests/approvals/itxn.algo.ts:7 + // export class ItxnDemoContract extends Contract { + txn OnCompletion + intc_0 // 0 + swap + match main___algots__.defaultCreate@12 -main_block@7: - // tests/approvals/itxn.algo.ts:17 - // this.test2() - callsub test2 - // tests/approvals/itxn.algo.ts:18 - // break - b main_block@14 +main_switch_case_default@13: -main_switch_case_0@4: +main_switch_case_next@14: + b main_after_if_else@15 -main_block@5: - // tests/approvals/itxn.algo.ts:14 - // this.test1() - callsub test1 - // tests/approvals/itxn.algo.ts:15 - // break - b main_block@14 +main___algots__.defaultCreate@12: + // tests/approvals/itxn.algo.ts:7 + // export class ItxnDemoContract extends Contract { + txn ApplicationID + intc_0 // 0 + == + assert // can only call when creating + callsub __algots__.defaultCreate + pushint 1 // 1 + b main_after_inlined_tests/approvals/itxn.algo.ts::ItxnDemoContract.__puya_arc4_router__@16 // tests/approvals/itxn.algo.ts::ItxnDemoContract.constructor() -> void: constructor: // tests/approvals/itxn.algo.ts:7 - // export class ItxnDemoContract extends BaseContract { + // export class ItxnDemoContract extends Contract { proto 0 0 // tests/approvals/itxn.algo.ts:8 // name = GlobalState({ initialValue: Bytes() }) - bytec_0 // "name" - bytec_3 // 0x + bytec_2 // "name" + pushbytes 0x app_global_put retsub // tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: test1: - // tests/approvals/itxn.algo.ts:27 - // private test1() { + // tests/approvals/itxn.algo.ts:10 + // public test1() { proto 0 0 intc_0 // 0 // tests/approvals/itxn.algo.ts:8 // name = GlobalState({ initialValue: Bytes() }) - bytec_0 // "name" - // tests/approvals/itxn.algo.ts:28 + bytec_2 // "name" + // tests/approvals/itxn.algo.ts:11 // this.name.value = Bytes('AST1') - bytec 4 // "AST1" + bytec 6 // "AST1" app_global_put - // tests/approvals/itxn.algo.ts:32 + // tests/approvals/itxn.algo.ts:15 // assetName: this.name.value, intc_0 // 0 // tests/approvals/itxn.algo.ts:8 // name = GlobalState({ initialValue: Bytes() }) - bytec_0 // "name" - // tests/approvals/itxn.algo.ts:32 + bytec_2 // "name" + // tests/approvals/itxn.algo.ts:15 // assetName: this.name.value, app_global_get_ex assert // check GlobalState exists - // tests/approvals/itxn.algo.ts:35 + // tests/approvals/itxn.algo.ts:18 // manager: Global.currentApplicationAddress, global CurrentApplicationAddress dup cover 2 - // tests/approvals/itxn.algo.ts:36 + // tests/approvals/itxn.algo.ts:19 // reserve: Global.currentApplicationAddress, global CurrentApplicationAddress dup cover 3 // tests/approvals/itxn.algo.ts:8 // name = GlobalState({ initialValue: Bytes() }) - bytec_0 // "name" - // tests/approvals/itxn.algo.ts:39 + bytec_2 // "name" + // tests/approvals/itxn.algo.ts:22 // this.name.value = Bytes('AST2') - bytec 5 // "AST2" + bytec 7 // "AST2" app_global_put - // tests/approvals/itxn.algo.ts:40 + // tests/approvals/itxn.algo.ts:23 // const asset1_txn = assetParams.submit() itxn_begin itxn_field ConfigAssetReserve itxn_field ConfigAssetManager - // tests/approvals/itxn.algo.ts:34 + // tests/approvals/itxn.algo.ts:17 // decimals: 3, - intc_1 // 3 + intc_3 // 3 itxn_field ConfigAssetDecimals - // tests/approvals/itxn.algo.ts:33 + // tests/approvals/itxn.algo.ts:16 // unitName: 'unit', - bytec_1 // "unit" + bytec 4 // "unit" itxn_field ConfigAssetUnitName itxn_field ConfigAssetName - // tests/approvals/itxn.algo.ts:31 + // tests/approvals/itxn.algo.ts:14 // total: 1000, - intc_3 // 1000 + intc 4 // 1000 itxn_field ConfigAssetTotal - // tests/approvals/itxn.algo.ts:30-37 + // tests/approvals/itxn.algo.ts:13-20 // const assetParams = itxn.assetConfig({ // total: 1000, // assetName: this.name.value, @@ -176,49 +209,49 @@ test1: // manager: Global.currentApplicationAddress, // reserve: Global.currentApplicationAddress, // }) - intc_1 // 3 + intc_3 // 3 itxn_field TypeEnum intc_0 // 0 itxn_field Fee test1_next_txn@1: - // tests/approvals/itxn.algo.ts:40 + // tests/approvals/itxn.algo.ts:23 // const asset1_txn = assetParams.submit() itxn_submit itxn ConfigAssetName frame_bury 0 itxn CreatedAssetID - // tests/approvals/itxn.algo.ts:42 + // tests/approvals/itxn.algo.ts:25 // assetName: this.name.value, intc_0 // 0 // tests/approvals/itxn.algo.ts:8 // name = GlobalState({ initialValue: Bytes() }) - bytec_0 // "name" - // tests/approvals/itxn.algo.ts:42 + bytec_2 // "name" + // tests/approvals/itxn.algo.ts:25 // assetName: this.name.value, app_global_get_ex assert // check GlobalState exists - // tests/approvals/itxn.algo.ts:44 + // tests/approvals/itxn.algo.ts:27 // const asset2_txn = assetParams.submit() itxn_begin frame_dig 2 itxn_field ConfigAssetReserve frame_dig 1 itxn_field ConfigAssetManager - // tests/approvals/itxn.algo.ts:34 + // tests/approvals/itxn.algo.ts:17 // decimals: 3, - intc_1 // 3 + intc_3 // 3 itxn_field ConfigAssetDecimals - // tests/approvals/itxn.algo.ts:33 + // tests/approvals/itxn.algo.ts:16 // unitName: 'unit', - bytec_1 // "unit" + bytec 4 // "unit" itxn_field ConfigAssetUnitName itxn_field ConfigAssetName - // tests/approvals/itxn.algo.ts:31 + // tests/approvals/itxn.algo.ts:14 // total: 1000, - intc_3 // 1000 + intc 4 // 1000 itxn_field ConfigAssetTotal - // tests/approvals/itxn.algo.ts:30-37 + // tests/approvals/itxn.algo.ts:13-20 // const assetParams = itxn.assetConfig({ // total: 1000, // assetName: this.name.value, @@ -227,93 +260,91 @@ test1_next_txn@1: // manager: Global.currentApplicationAddress, // reserve: Global.currentApplicationAddress, // }) - intc_1 // 3 + intc_3 // 3 itxn_field TypeEnum intc_0 // 0 itxn_field Fee test1_next_txn@2: - // tests/approvals/itxn.algo.ts:44 + // tests/approvals/itxn.algo.ts:27 // const asset2_txn = assetParams.submit() itxn_submit itxn ConfigAssetName itxn CreatedAssetID swap - // tests/approvals/itxn.algo.ts:46 + // tests/approvals/itxn.algo.ts:29 // assert(asset1_txn.assetName === Bytes('AST1'), 'asset1_txn is correct') frame_dig 0 - bytec 4 // "AST1" + bytec 6 // "AST1" == assert // asset1_txn is correct - // tests/approvals/itxn.algo.ts:47 + // tests/approvals/itxn.algo.ts:30 // assert(asset2_txn.assetName === Bytes('AST2'), 'asset2_txn is correct') - bytec 5 // "AST2" + bytec 7 // "AST2" == assert // asset2_txn is correct - // tests/approvals/itxn.algo.ts:48 + // tests/approvals/itxn.algo.ts:31 // assert(asset1_txn.createdAsset.name === Bytes('AST1'), 'created asset 1 is correct') swap asset_params_get AssetName assert // asset exists - bytec 4 // "AST1" + bytec 6 // "AST1" == assert // created asset 1 is correct - // tests/approvals/itxn.algo.ts:49 + // tests/approvals/itxn.algo.ts:32 // assert(asset2_txn.createdAsset.name === Bytes('AST2'), 'created asset 2 is correct') asset_params_get AssetName assert // asset exists - bytec 5 // "AST2" + bytec 7 // "AST2" == assert // created asset 2 is correct - // tests/approvals/itxn.algo.ts:61 + // tests/approvals/itxn.algo.ts:44 // const [appCreateTxn, asset3_txn] = itxn.submitGroup(appCreateParams, assetParams) itxn_begin - // tests/approvals/itxn.algo.ts:53 - // clearStateProgram: Bytes.fromHex('098101'), - bytec_2 // 0x098101 + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 itxn_field ClearStateProgramPages - // tests/approvals/itxn.algo.ts:52 - // approvalProgram: Bytes.fromHex('098101'), - bytec_2 // 0x098101 + bytec_0 // 0x098101 itxn_field ApprovalProgramPages - // tests/approvals/itxn.algo.ts:51-55 + // tests/approvals/itxn.algo.ts:34-38 // const appCreateParams = itxn.applicationCall({ - // approvalProgram: Bytes.fromHex('098101'), - // clearStateProgram: Bytes.fromHex('098101'), + // approvalProgram: APPROVE, + // clearStateProgram: APPROVE, // fee: 0, // }) - pushint 6 // 6 + intc_1 // 6 itxn_field TypeEnum - // tests/approvals/itxn.algo.ts:54 + // tests/approvals/itxn.algo.ts:37 // fee: 0, intc_0 // 0 itxn_field Fee test1_next_txn@3: - // tests/approvals/itxn.algo.ts:61 + // tests/approvals/itxn.algo.ts:44 // const [appCreateTxn, asset3_txn] = itxn.submitGroup(appCreateParams, assetParams) itxn_next frame_dig 2 itxn_field ConfigAssetReserve frame_dig 1 itxn_field ConfigAssetManager - // tests/approvals/itxn.algo.ts:34 + // tests/approvals/itxn.algo.ts:17 // decimals: 3, - intc_1 // 3 + intc_3 // 3 itxn_field ConfigAssetDecimals - // tests/approvals/itxn.algo.ts:33 + // tests/approvals/itxn.algo.ts:16 // unitName: 'unit', - bytec_1 // "unit" + bytec 4 // "unit" itxn_field ConfigAssetUnitName - // tests/approvals/itxn.algo.ts:58 + // tests/approvals/itxn.algo.ts:41 // assetName: 'AST3', - bytec 6 // "AST3" + bytec 8 // "AST3" itxn_field ConfigAssetName - // tests/approvals/itxn.algo.ts:31 + // tests/approvals/itxn.algo.ts:14 // total: 1000, - intc_3 // 1000 + intc 4 // 1000 itxn_field ConfigAssetTotal - // tests/approvals/itxn.algo.ts:30-37 + // tests/approvals/itxn.algo.ts:13-20 // const assetParams = itxn.assetConfig({ // total: 1000, // assetName: this.name.value, @@ -322,83 +353,81 @@ test1_next_txn@3: // manager: Global.currentApplicationAddress, // reserve: Global.currentApplicationAddress, // }) - intc_1 // 3 + intc_3 // 3 itxn_field TypeEnum intc_0 // 0 itxn_field Fee test1_next_txn@4: - // tests/approvals/itxn.algo.ts:61 + // tests/approvals/itxn.algo.ts:44 // const [appCreateTxn, asset3_txn] = itxn.submitGroup(appCreateParams, assetParams) itxn_submit - gitxn 0 ApplicationID + gitxn 0 CreatedApplicationID itxn ConfigAssetName swap - // tests/approvals/itxn.algo.ts:63 - // assert(appCreateTxn.appId, 'app is created') + // tests/approvals/itxn.algo.ts:46 + // assert(appCreateTxn.createdApp, 'app is created') assert // app is created - // tests/approvals/itxn.algo.ts:64 + // tests/approvals/itxn.algo.ts:47 // assert(asset3_txn.assetName === Bytes('AST3'), 'asset3_txn is correct') - bytec 6 // "AST3" + bytec 8 // "AST3" == assert // asset3_txn is correct - // tests/approvals/itxn.algo.ts:72 + // tests/approvals/itxn.algo.ts:55 // itxn.submitGroup(appCreateParams, assetParams) itxn_begin - // tests/approvals/itxn.algo.ts:67 + // tests/approvals/itxn.algo.ts:50 // note: '3rd', - intc_2 // 1 + pushint 1 // 1 dup >= - // tests/approvals/itxn.algo.ts:72 + // tests/approvals/itxn.algo.ts:55 // itxn.submitGroup(appCreateParams, assetParams) bz test1_next_field@6 test1_set_Note_0_to_0@5: - // tests/approvals/itxn.algo.ts:67 + // tests/approvals/itxn.algo.ts:50 // note: '3rd', - bytec 7 // "3rd" + bytec 12 // "3rd" itxn_field Note test1_next_field@6: - // tests/approvals/itxn.algo.ts:53 - // clearStateProgram: Bytes.fromHex('098101'), - bytec_2 // 0x098101 + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 itxn_field ClearStateProgramPages - // tests/approvals/itxn.algo.ts:52 - // approvalProgram: Bytes.fromHex('098101'), - bytec_2 // 0x098101 + bytec_0 // 0x098101 itxn_field ApprovalProgramPages - // tests/approvals/itxn.algo.ts:51-55 + // tests/approvals/itxn.algo.ts:34-38 // const appCreateParams = itxn.applicationCall({ - // approvalProgram: Bytes.fromHex('098101'), - // clearStateProgram: Bytes.fromHex('098101'), + // approvalProgram: APPROVE, + // clearStateProgram: APPROVE, // fee: 0, // }) - pushint 6 // 6 + intc_1 // 6 itxn_field TypeEnum - // tests/approvals/itxn.algo.ts:54 + // tests/approvals/itxn.algo.ts:37 // fee: 0, intc_0 // 0 itxn_field Fee test1_next_txn@7: - // tests/approvals/itxn.algo.ts:72 + // tests/approvals/itxn.algo.ts:55 // itxn.submitGroup(appCreateParams, assetParams) itxn_next - // tests/approvals/itxn.algo.ts:70 + // tests/approvals/itxn.algo.ts:53 // note: '3rd', - intc_2 // 1 + pushint 1 // 1 dup >= - // tests/approvals/itxn.algo.ts:72 + // tests/approvals/itxn.algo.ts:55 // itxn.submitGroup(appCreateParams, assetParams) bz test1_next_field@9 test1_set_Note_0_to_0@8: - // tests/approvals/itxn.algo.ts:70 + // tests/approvals/itxn.algo.ts:53 // note: '3rd', - bytec 7 // "3rd" + bytec 12 // "3rd" itxn_field Note test1_next_field@9: @@ -406,23 +435,23 @@ test1_next_field@9: itxn_field ConfigAssetReserve frame_dig 1 itxn_field ConfigAssetManager - // tests/approvals/itxn.algo.ts:34 + // tests/approvals/itxn.algo.ts:17 // decimals: 3, - intc_1 // 3 + intc_3 // 3 itxn_field ConfigAssetDecimals - // tests/approvals/itxn.algo.ts:33 + // tests/approvals/itxn.algo.ts:16 // unitName: 'unit', - bytec_1 // "unit" + bytec 4 // "unit" itxn_field ConfigAssetUnitName - // tests/approvals/itxn.algo.ts:58 + // tests/approvals/itxn.algo.ts:41 // assetName: 'AST3', - bytec 6 // "AST3" + bytec 8 // "AST3" itxn_field ConfigAssetName - // tests/approvals/itxn.algo.ts:31 + // tests/approvals/itxn.algo.ts:14 // total: 1000, - intc_3 // 1000 + intc 4 // 1000 itxn_field ConfigAssetTotal - // tests/approvals/itxn.algo.ts:30-37 + // tests/approvals/itxn.algo.ts:13-20 // const assetParams = itxn.assetConfig({ // total: 1000, // assetName: this.name.value, @@ -431,13 +460,13 @@ test1_next_field@9: // manager: Global.currentApplicationAddress, // reserve: Global.currentApplicationAddress, // }) - intc_1 // 3 + intc_3 // 3 itxn_field TypeEnum intc_0 // 0 itxn_field Fee test1_next_txn@10: - // tests/approvals/itxn.algo.ts:72 + // tests/approvals/itxn.algo.ts:55 // itxn.submitGroup(appCreateParams, assetParams) itxn_submit retsub @@ -445,53 +474,53 @@ test1_next_txn@10: // tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() -> void: test2: - // tests/approvals/itxn.algo.ts:75 - // private test2() { + // tests/approvals/itxn.algo.ts:58 + // public test2() { proto 0 0 intc_0 // 0 - dup - bytec_3 // "" + dupn 2 + pushbytes "" dup intc_0 // 0 - bytec_3 // "" - // tests/approvals/itxn.algo.ts:77 + pushbytes "" + // tests/approvals/itxn.algo.ts:60 // if (Txn.numAppArgs) { txn NumAppArgs bz test2_else_body@2 test2_if_body@1: - // tests/approvals/itxn.algo.ts:78 + // tests/approvals/itxn.algo.ts:61 // const args = [Bytes('1'), Bytes('2')] as const - pushbytes "1" + bytec_3 // "1" frame_bury 0 - pushbytes "2" + bytec 5 // "2" frame_bury 1 - // tests/approvals/itxn.algo.ts:82 + // tests/approvals/itxn.algo.ts:65 // appArgs: args, pushint 2 // 2 - frame_bury 2 - // tests/approvals/itxn.algo.ts:83 + frame_bury 3 + // tests/approvals/itxn.algo.ts:66 // onCompletion: OnCompleteAction.NoOp, intc_0 // 0 - frame_bury 5 - intc_2 // 1 - frame_bury 3 - // tests/approvals/itxn.algo.ts:84 + frame_bury 6 + pushint 1 // 1 + frame_bury 4 + // tests/approvals/itxn.algo.ts:67 // note: 'with args param set', - bytec 8 // "with args param set" + bytec 13 // "with args param set" test2_after_if_else@3: - // tests/approvals/itxn.algo.ts:94 + // tests/approvals/itxn.algo.ts:77 // const createAppTxn = createAppParams.submit() itxn_begin itxn_field Note - frame_dig 3 - intc_2 // 1 + frame_dig 4 + pushint 1 // 1 >= bz test2_next_field@5 test2_set_OnCompletion_0_to_0@4: - frame_dig 5 + frame_dig 6 itxn_field OnCompletion test2_next_field@5: @@ -499,25 +528,25 @@ test2_next_field@5: itxn_field ApplicationArgs frame_dig 1 itxn_field ApplicationArgs - frame_dig 2 - intc_1 // 3 + frame_dig 3 + intc_3 // 3 >= - // tests/approvals/itxn.algo.ts:94 + // tests/approvals/itxn.algo.ts:77 // const createAppTxn = createAppParams.submit() bz test2_next_field@7 test2_set_ApplicationArgs_2_to_2@6: - frame_dig 4 + frame_dig 5 itxn_field ApplicationArgs test2_next_field@7: // tests/approvals/itxn.algo.ts:5 - // const APPROVE = Bytes('\x09\x81\x01') - bytec 9 // "\t\xc2\x81\x01" + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 itxn_field ClearStateProgramPages - bytec 9 // "\t\xc2\x81\x01" + bytec_0 // 0x098101 itxn_field ApprovalProgramPages - // tests/approvals/itxn.algo.ts:79-85 + // tests/approvals/itxn.algo.ts:62-68 // createAppParams = itxn.applicationCall({ // approvalProgram: APPROVE, // clearStateProgram: APPROVE, @@ -525,53 +554,976 @@ test2_next_field@7: // onCompletion: OnCompleteAction.NoOp, // note: 'with args param set', // }) - pushint 6 // 6 + intc_1 // 6 itxn_field TypeEnum intc_0 // 0 itxn_field Fee test2_next_txn@8: - // tests/approvals/itxn.algo.ts:94 + // tests/approvals/itxn.algo.ts:77 // const createAppTxn = createAppParams.submit() itxn_submit itxn Note - // tests/approvals/itxn.algo.ts:95 + frame_bury 2 + // tests/approvals/itxn.algo.ts:78 // assert(createAppTxn.appArgs(0) === Bytes('1'), 'correct args used 1') intc_0 // 0 itxnas ApplicationArgs - pushbytes "1" + bytec_3 // "1" == assert // correct args used 1 - // tests/approvals/itxn.algo.ts:96 + // tests/approvals/itxn.algo.ts:79 // assert(createAppTxn.appArgs(1) === Bytes('2'), 'correct args used 2') - intc_2 // 1 + pushint 1 // 1 itxnas ApplicationArgs - pushbytes "2" + bytec 5 // "2" == assert // correct args used 2 - // tests/approvals/itxn.algo.ts:97 + // tests/approvals/itxn.algo.ts:81 + // if (Txn.numAppArgs > 1) { + txn NumAppArgs + pushint 1 // 1 + > + bz test2_after_if_else@11 + +test2_if_body@9: + // tests/approvals/itxn.algo.ts:82-89 + // const createAppTxn2 = itxn + // .applicationCall({ + // approvalProgram: APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('42')], + // }) + // .submit() + itxn_begin + // tests/approvals/itxn.algo.ts:87 + // appArgs: [Bytes('42')], + bytec 14 // "42" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:86 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + bytec_0 // 0x098101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:82-88 + // const createAppTxn2 = itxn + // .applicationCall({ + // approvalProgram: APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('42')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + +test2_next_txn@10: + // tests/approvals/itxn.algo.ts:82-89 + // const createAppTxn2 = itxn + // .applicationCall({ + // approvalProgram: APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('42')], + // }) + // .submit() + itxn_submit + // tests/approvals/itxn.algo.ts:90 + // assert(createAppTxn2.appArgs(0) === Bytes('42'), 'correct args used 2') + intc_0 // 0 + itxnas ApplicationArgs + bytec 14 // "42" + == + assert // correct args used 2 + // tests/approvals/itxn.algo.ts:91 // assert(createAppTxn.note === Bytes('with args param set')) - bytec 8 // "with args param set" + frame_dig 2 + bytec 13 // "with args param set" == assert + +test2_after_if_else@11: retsub test2_else_body@2: - // tests/approvals/itxn.algo.ts:90 + // tests/approvals/itxn.algo.ts:73 // appArgs: [Bytes('3'), '4', Bytes('5')], - pushbytes "3" + bytec 9 // "3" frame_bury 0 - pushbytes "4" + bytec 10 // "4" frame_bury 1 - pushbytes "5" - frame_bury 4 - intc_1 // 3 - frame_bury 2 - // tests/approvals/itxn.algo.ts:91 + bytec 11 // "5" + frame_bury 5 + intc_3 // 3 + frame_bury 3 + // tests/approvals/itxn.algo.ts:74 // note: 'no args param set', pushbytes "no args param set" - // tests/approvals/itxn.algo.ts:87 + // tests/approvals/itxn.algo.ts:70 // createAppParams = itxn.applicationCall({ intc_0 // 0 - frame_bury 3 + frame_bury 4 b test2_after_if_else@3 + + +// tests/approvals/itxn.algo.ts::ItxnDemoContract.test3() -> void: +test3: + // tests/approvals/itxn.algo.ts:95 + // public test3() { + proto 0 0 + // tests/approvals/itxn.algo.ts:134-151 + // const [app1, app2, app3, app4, app5, app6, app7, app8, app9, app10, app11, app12, app13, app14, app15, app16] = itxn.submitGroup( + // appTxn1, + // appTxn2, + // appTxn3, + // appTxn4, + // appTxn5, + // appTxn6, + // appTxn7, + // appTxn8, + // appTxn9, + // appTxn10, + // appTxn11, + // appTxn12, + // appTxn13, + // appTxn14, + // appTxn15, + // appTxn16, + // ) + itxn_begin + // tests/approvals/itxn.algo.ts:100 + // appArgs: [Bytes('1')], + bytec_3 // "1" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + +test3_next_txn@1: + // tests/approvals/itxn.algo.ts:136 + // appTxn2, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:104 + // appTxn2.set({ appArgs: [Bytes('2')] }) + bytec 5 // "2" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + +test3_next_txn@2: + // tests/approvals/itxn.algo.ts:137 + // appTxn3, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:106 + // appTxn3.set({ appArgs: [Bytes('3')] }) + bytec 9 // "3" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + +test3_next_txn@3: + // tests/approvals/itxn.algo.ts:138 + // appTxn4, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:108 + // appTxn4.set({ appArgs: [Bytes('4')] }) + bytec 10 // "4" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + +test3_next_txn@4: + // tests/approvals/itxn.algo.ts:139 + // appTxn5, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:110 + // appTxn5.set({ appArgs: [Bytes('5')] }) + bytec 11 // "5" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + +test3_next_txn@5: + // tests/approvals/itxn.algo.ts:140 + // appTxn6, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:112 + // appTxn6.set({ appArgs: [Bytes('6')] }) + pushbytes "6" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + +test3_next_txn@6: + // tests/approvals/itxn.algo.ts:141 + // appTxn7, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:114 + // appTxn7.set({ appArgs: [Bytes('7')] }) + pushbytes "7" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + +test3_next_txn@7: + // tests/approvals/itxn.algo.ts:142 + // appTxn8, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:116 + // appTxn8.set({ appArgs: [Bytes('8')] }) + pushbytes "8" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + +test3_next_txn@8: + // tests/approvals/itxn.algo.ts:143 + // appTxn9, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:118 + // appTxn9.set({ appArgs: [Bytes('9')] }) + pushbytes "9" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + +test3_next_txn@9: + // tests/approvals/itxn.algo.ts:144 + // appTxn10, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:120 + // appTxn10.set({ appArgs: [Bytes('10')] }) + bytec 15 // "10" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + +test3_next_txn@10: + // tests/approvals/itxn.algo.ts:145 + // appTxn11, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:122 + // appTxn11.set({ appArgs: [Bytes('11')] }) + bytec 16 // "11" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + +test3_next_txn@11: + // tests/approvals/itxn.algo.ts:146 + // appTxn12, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:124 + // appTxn12.set({ appArgs: [Bytes('12')] }) + bytec 17 // "12" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + +test3_next_txn@12: + // tests/approvals/itxn.algo.ts:147 + // appTxn13, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:126 + // appTxn13.set({ appArgs: [Bytes('13')] }) + bytec 18 // "13" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + +test3_next_txn@13: + // tests/approvals/itxn.algo.ts:148 + // appTxn14, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:128 + // appTxn14.set({ appArgs: [Bytes('14')] }) + bytec 19 // "14" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + +test3_next_txn@14: + // tests/approvals/itxn.algo.ts:149 + // appTxn15, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:130 + // appTxn15.set({ appArgs: [Bytes('15')] }) + bytec 20 // "15" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + +test3_next_txn@15: + // tests/approvals/itxn.algo.ts:150 + // appTxn16, + itxn_next + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + // tests/approvals/itxn.algo.ts:4 + // const LOG_1ST_ARG_AND_APPROVE = Bytes.fromHex('09361A00B08101') + bytec_1 // 0x09361a00b08101 + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:132 + // appTxn16.set({ appArgs: [Bytes('16')] }) + bytec 21 // "16" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:99 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:96-101 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: LOG_1ST_ARG_AND_APPROVE, + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + +test3_next_txn@16: + // tests/approvals/itxn.algo.ts:134-151 + // const [app1, app2, app3, app4, app5, app6, app7, app8, app9, app10, app11, app12, app13, app14, app15, app16] = itxn.submitGroup( + // appTxn1, + // appTxn2, + // appTxn3, + // appTxn4, + // appTxn5, + // appTxn6, + // appTxn7, + // appTxn8, + // appTxn9, + // appTxn10, + // appTxn11, + // appTxn12, + // appTxn13, + // appTxn14, + // appTxn15, + // appTxn16, + // ) + itxn_submit + // tests/approvals/itxn.algo.ts:153 + // assert(app1.logs(0) === Bytes('1')) + intc_0 // 0 + gitxnas 0 Logs + bytec_3 // "1" + == + assert + // tests/approvals/itxn.algo.ts:154 + // assert(app2.logs(0) === Bytes('2')) + intc_0 // 0 + gitxnas 1 Logs + bytec 5 // "2" + == + assert + // tests/approvals/itxn.algo.ts:155 + // assert(app3.logs(0) === Bytes('3')) + intc_0 // 0 + gitxnas 2 Logs + bytec 9 // "3" + == + assert + // tests/approvals/itxn.algo.ts:156 + // assert(app4.logs(0) === Bytes('4')) + intc_0 // 0 + gitxnas 3 Logs + bytec 10 // "4" + == + assert + // tests/approvals/itxn.algo.ts:157 + // assert(app5.logs(0) === Bytes('5')) + intc_0 // 0 + gitxnas 4 Logs + bytec 11 // "5" + == + assert + // tests/approvals/itxn.algo.ts:158 + // assert(app6.logs(0) === Bytes('6')) + intc_0 // 0 + gitxnas 5 Logs + pushbytes "6" + == + assert + // tests/approvals/itxn.algo.ts:159 + // assert(app7.logs(0) === Bytes('7')) + intc_0 // 0 + gitxnas 6 Logs + pushbytes "7" + == + assert + // tests/approvals/itxn.algo.ts:160 + // assert(app8.logs(0) === Bytes('8')) + intc_0 // 0 + gitxnas 7 Logs + pushbytes "8" + == + assert + // tests/approvals/itxn.algo.ts:161 + // assert(app9.logs(0) === Bytes('9')) + intc_0 // 0 + gitxnas 8 Logs + pushbytes "9" + == + assert + // tests/approvals/itxn.algo.ts:162 + // assert(app10.logs(0) === Bytes('10')) + intc_0 // 0 + gitxnas 9 Logs + bytec 15 // "10" + == + assert + // tests/approvals/itxn.algo.ts:163 + // assert(app11.logs(0) === Bytes('11')) + intc_0 // 0 + gitxnas 10 Logs + bytec 16 // "11" + == + assert + // tests/approvals/itxn.algo.ts:164 + // assert(app12.logs(0) === Bytes('12')) + intc_0 // 0 + gitxnas 11 Logs + bytec 17 // "12" + == + assert + // tests/approvals/itxn.algo.ts:165 + // assert(app13.logs(0) === Bytes('13')) + intc_0 // 0 + gitxnas 12 Logs + bytec 18 // "13" + == + assert + // tests/approvals/itxn.algo.ts:166 + // assert(app14.logs(0) === Bytes('14')) + intc_0 // 0 + gitxnas 13 Logs + bytec 19 // "14" + == + assert + // tests/approvals/itxn.algo.ts:167 + // assert(app15.logs(0) === Bytes('15')) + intc_0 // 0 + gitxnas 14 Logs + bytec 20 // "15" + == + assert + // tests/approvals/itxn.algo.ts:168 + // assert(app16.logs(0) === Bytes('16')) + intc_0 // 0 + itxnas Logs + bytec 21 // "16" + == + assert + retsub + + +// tests/approvals/itxn.algo.ts::ItxnDemoContract.test4() -> void: +test4: + // tests/approvals/itxn.algo.ts:171 + // public test4() { + proto 0 0 + // tests/approvals/itxn.algo.ts:172 + // const lotsOfBytes = op.bzero(2044) + pushint 2044 // 2044 + bzero + // tests/approvals/itxn.algo.ts:174 + // const approval2 = Bytes.fromHex('80' + 'FC0f') + pushbytes 0x80fc0f + // tests/approvals/itxn.algo.ts:174-175 + // const approval2 = Bytes.fromHex('80' + 'FC0f') + // .concat(lotsOfBytes) + swap + concat + // tests/approvals/itxn.algo.ts:176 + // .concat(Bytes.fromHex('48')) + pushbytes 0x48 + // tests/approvals/itxn.algo.ts:174-176 + // const approval2 = Bytes.fromHex('80' + 'FC0f') + // .concat(lotsOfBytes) + // .concat(Bytes.fromHex('48')) + concat + dupn 3 + // tests/approvals/itxn.algo.ts:179 + // approvalProgram: [approval1, approval2, approval2, approval2], + cover 2 + cover 2 + // tests/approvals/itxn.algo.ts:185 + // const app1 = appTxn1.submit() + itxn_begin + // tests/approvals/itxn.algo.ts:183 + // extraProgramPages: 3, + intc_3 // 3 + itxn_field ExtraProgramPages + // tests/approvals/itxn.algo.ts:182 + // appArgs: [Bytes('1')], + bytec_3 // "1" + itxn_field ApplicationArgs + // tests/approvals/itxn.algo.ts:181 + // onCompletion: OnCompleteAction.DeleteApplication, + intc_2 // 5 + itxn_field OnCompletion + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + itxn_field ClearStateProgramPages + bytec_0 // 0x098101 + itxn_field ApprovalProgramPages + itxn_field ApprovalProgramPages + itxn_field ApprovalProgramPages + itxn_field ApprovalProgramPages + // tests/approvals/itxn.algo.ts:178-184 + // const appTxn1 = itxn.applicationCall({ + // approvalProgram: [approval1, approval2, approval2, approval2], + // clearStateProgram: APPROVE, + // onCompletion: OnCompleteAction.DeleteApplication, + // appArgs: [Bytes('1')], + // extraProgramPages: 3, + // }) + intc_1 // 6 + itxn_field TypeEnum + intc_0 // 0 + itxn_field Fee + +test4_next_txn@1: + // tests/approvals/itxn.algo.ts:185 + // const app1 = appTxn1.submit() + itxn_submit + itxn ExtraProgramPages + itxn NumApprovalProgramPages + swap + itxn NumClearStateProgramPages + cover 2 + // tests/approvals/itxn.algo.ts:186 + // assert(app1.extraProgramPages === 3, 'extra pages = 3') + intc_3 // 3 + == + assert // extra pages = 3 + // tests/approvals/itxn.algo.ts:187 + // assert(app1.numApprovalProgramPages === 2, 'approval pages = 2') + pushint 2 // 2 + == + assert // approval pages = 2 + // tests/approvals/itxn.algo.ts:188 + // assert(app1.approvalProgramPages(0) === approval1.concat(approval2).concat(approval2.slice(0, -3)), 'expected approval page 0') + intc_0 // 0 + itxnas ApprovalProgramPages + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + // tests/approvals/itxn.algo.ts:188 + // assert(app1.approvalProgramPages(0) === approval1.concat(approval2).concat(approval2.slice(0, -3)), 'expected approval page 0') + uncover 3 + dup + cover 2 + concat + swap + dup + len + intc_0 // 0 + dig 1 + >= + intc_0 // 0 + dig 2 + uncover 2 + select + swap + intc_3 // 3 + dig 1 + >= + intc_3 // 3 + dig 2 + uncover 2 + select + - + dup + dig 2 + < + swap + dig 2 + uncover 2 + select + dig 2 + uncover 2 + uncover 2 + substring3 + uncover 2 + swap + concat + uncover 2 + == + assert // expected approval page 0 + // tests/approvals/itxn.algo.ts:189 + // assert(app1.approvalProgramPages(1) === approval2.slice(-3).concat(approval2), 'expected approval page 1') + pushint 1 // 1 + itxnas ApprovalProgramPages + swap + dup + len + intc_3 // 3 + dig 1 + >= + intc_3 // 3 + dig 2 + uncover 2 + select + dig 1 + swap + - + dig 2 + swap + uncover 2 + substring3 + swap + concat + == + assert // expected approval page 1 + // tests/approvals/itxn.algo.ts:190 + // assert(app1.numClearStateProgramPages === 1, 'clear state pages = 1') + pushint 1 // 1 + == + assert // clear state pages = 1 + // tests/approvals/itxn.algo.ts:191 + // assert(app1.clearStateProgramPages(0) === APPROVE, 'expected clear state page') + intc_0 // 0 + itxnas ClearStateProgramPages + // tests/approvals/itxn.algo.ts:5 + // const APPROVE = Bytes.fromHex('098101') + bytec_0 // 0x098101 + // tests/approvals/itxn.algo.ts:191 + // assert(app1.clearStateProgramPages(0) === APPROVE, 'expected clear state page') + == + assert // expected clear state page + retsub + + +// tests/approvals/itxn.algo.ts::ItxnDemoContract.__algots__.defaultCreate() -> void: +__algots__.defaultCreate: + // tests/approvals/itxn.algo.ts:7 + // export class ItxnDemoContract extends Contract { + proto 0 0 + retsub diff --git a/tests/approvals/out/unoptimized/itxn/ItxnDemoContract.arc32.json b/tests/approvals/out/unoptimized/itxn/ItxnDemoContract.arc32.json new file mode 100644 index 000000000..b47dfac5d --- /dev/null +++ b/tests/approvals/out/unoptimized/itxn/ItxnDemoContract.arc32.json @@ -0,0 +1,94 @@ +{ + "hints": { + "test1()void": { + "call_config": { + "no_op": "CALL" + } + }, + "test2()void": { + "call_config": { + "no_op": "CALL" + } + }, + "test3()void": { + "call_config": { + "no_op": "CALL" + } + }, + "test4()void": { + "call_config": { + "no_op": "CALL" + } + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMCA2IDUgMyAxMDAwCiAgICBieXRlY2Jsb2NrIDB4MDk4MTAxIDB4MDkzNjFhMDBiMDgxMDEgIm5hbWUiICIxIiAidW5pdCIgIjIiICJBU1QxIiAiQVNUMiIgIkFTVDMiICIzIiAiNCIgIjUiICIzcmQiICJ3aXRoIGFyZ3MgcGFyYW0gc2V0IiAiNDIiICIxMCIgIjExIiAiMTIiICIxMyIgIjE0IiAiMTUiICIxNiIKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDIKCm1haW5faWZfYm9keUAxOgogICAgY2FsbHN1YiBjb25zdHJ1Y3RvcgoKbWFpbl9hZnRlcl9pZl9lbHNlQDI6CgptYWluX2Jsb2NrQDM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjcKICAgIC8vIGV4cG9ydCBjbGFzcyBJdHhuRGVtb0NvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE51bUFwcEFyZ3MKICAgIGludGNfMCAvLyAwCiAgICAhPQogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAMTEKCm1haW5fYWJpX3JvdXRpbmdANDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NwogICAgLy8gZXhwb3J0IGNsYXNzIEl0eG5EZW1vQ29udHJhY3QgZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBwdXNoYnl0ZXMgMHgyMDI1NGY5MSAvLyBtZXRob2QgInRlc3QxKCl2b2lkIgogICAgcHVzaGJ5dGVzIDB4ZjE5MDg1MjQgLy8gbWV0aG9kICJ0ZXN0Migpdm9pZCIKICAgIHB1c2hieXRlcyAweGRmOTIwZjM3IC8vIG1ldGhvZCAidGVzdDMoKXZvaWQiCiAgICBwdXNoYnl0ZXMgMHgzZDQ2MzQ1YyAvLyBtZXRob2QgInRlc3Q0KCl2b2lkIgogICAgdW5jb3ZlciA0CiAgICBtYXRjaCBtYWluX3Rlc3QxX3JvdXRlQDUgbWFpbl90ZXN0Ml9yb3V0ZUA2IG1haW5fdGVzdDNfcm91dGVANyBtYWluX3Rlc3Q0X3JvdXRlQDgKCm1haW5fc3dpdGNoX2Nhc2VfZGVmYXVsdEA5OgoKbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDEwOgoKbWFpbl9hZnRlcl9pZl9lbHNlQDE1OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3CiAgICAvLyBleHBvcnQgY2xhc3MgSXR4bkRlbW9Db250cmFjdCBleHRlbmRzIENvbnRyYWN0IHsKICAgIGludGNfMCAvLyAwCgptYWluX2FmdGVyX2lubGluZWRfdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC5fX3B1eWFfYXJjNF9yb3V0ZXJfX0AxNjoKICAgIHJldHVybgoKbWFpbl90ZXN0NF9yb3V0ZUA4OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzEKICAgIC8vIHB1YmxpYyB0ZXN0NCgpIHsKICAgIHR4biBPbkNvbXBsZXRpb24KICAgIGludGNfMCAvLyBOb09wCiAgICA9PQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGludGNfMCAvLyAwCiAgICAhPQogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgdGVzdDQKICAgIHB1c2hpbnQgMSAvLyAxCiAgICBiIG1haW5fYWZ0ZXJfaW5saW5lZF90ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0Ll9fcHV5YV9hcmM0X3JvdXRlcl9fQDE2CgptYWluX3Rlc3QzX3JvdXRlQDc6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk1CiAgICAvLyBwdWJsaWMgdGVzdDMoKSB7CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICBpbnRjXzAgLy8gTm9PcAogICAgPT0KICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBpbnRjXzAgLy8gMAogICAgIT0KICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICBjYWxsc3ViIHRlc3QzCiAgICBwdXNoaW50IDEgLy8gMQogICAgYiBtYWluX2FmdGVyX2lubGluZWRfdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC5fX3B1eWFfYXJjNF9yb3V0ZXJfX0AxNgoKbWFpbl90ZXN0Ml9yb3V0ZUA2OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1OAogICAgLy8gcHVibGljIHRlc3QyKCkgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgaW50Y18wIC8vIE5vT3AKICAgID09CiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgaW50Y18wIC8vIDAKICAgICE9CiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgY2FsbHN1YiB0ZXN0MgogICAgcHVzaGludCAxIC8vIDEKICAgIGIgbWFpbl9hZnRlcl9pbmxpbmVkX3Rlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QuX19wdXlhX2FyYzRfcm91dGVyX19AMTYKCm1haW5fdGVzdDFfcm91dGVANToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTAKICAgIC8vIHB1YmxpYyB0ZXN0MSgpIHsKICAgIHR4biBPbkNvbXBsZXRpb24KICAgIGludGNfMCAvLyBOb09wCiAgICA9PQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGludGNfMCAvLyAwCiAgICAhPQogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgdGVzdDEKICAgIHB1c2hpbnQgMSAvLyAxCiAgICBiIG1haW5fYWZ0ZXJfaW5saW5lZF90ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0Ll9fcHV5YV9hcmM0X3JvdXRlcl9fQDE2CgptYWluX2JhcmVfcm91dGluZ0AxMToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NwogICAgLy8gZXhwb3J0IGNsYXNzIEl0eG5EZW1vQ29udHJhY3QgZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICBpbnRjXzAgLy8gMAogICAgc3dhcAogICAgbWF0Y2ggbWFpbl9fX2FsZ290c19fLmRlZmF1bHRDcmVhdGVAMTIKCm1haW5fc3dpdGNoX2Nhc2VfZGVmYXVsdEAxMzoKCm1haW5fc3dpdGNoX2Nhc2VfbmV4dEAxNDoKICAgIGIgbWFpbl9hZnRlcl9pZl9lbHNlQDE1CgptYWluX19fYWxnb3RzX18uZGVmYXVsdENyZWF0ZUAxMjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NwogICAgLy8gZXhwb3J0IGNsYXNzIEl0eG5EZW1vQ29udHJhY3QgZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgaW50Y18wIC8vIDAKICAgID09CiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIGNyZWF0aW5nCiAgICBjYWxsc3ViIF9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZQogICAgcHVzaGludCAxIC8vIDEKICAgIGIgbWFpbl9hZnRlcl9pbmxpbmVkX3Rlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QuX19wdXlhX2FyYzRfcm91dGVyX19AMTYKCgovLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LmNvbnN0cnVjdG9yKCkgLT4gdm9pZDoKY29uc3RydWN0b3I6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjcKICAgIC8vIGV4cG9ydCBjbGFzcyBJdHhuRGVtb0NvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3QgewogICAgcHJvdG8gMCAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgKICAgIC8vIG5hbWUgPSBHbG9iYWxTdGF0ZSh7IGluaXRpYWxWYWx1ZTogQnl0ZXMoKSB9KQogICAgYnl0ZWNfMiAvLyAibmFtZSIKICAgIHB1c2hieXRlcyAweAogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1YgoKCi8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDEoKSAtPiB2b2lkOgp0ZXN0MToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTAKICAgIC8vIHB1YmxpYyB0ZXN0MSgpIHsKICAgIHByb3RvIDAgMAogICAgaW50Y18wIC8vIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OAogICAgLy8gbmFtZSA9IEdsb2JhbFN0YXRlKHsgaW5pdGlhbFZhbHVlOiBCeXRlcygpIH0pCiAgICBieXRlY18yIC8vICJuYW1lIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMQogICAgLy8gdGhpcy5uYW1lLnZhbHVlID0gQnl0ZXMoJ0FTVDEnKQogICAgYnl0ZWMgNiAvLyAiQVNUMSIKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1CiAgICAvLyBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIGludGNfMCAvLyAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgKICAgIC8vIG5hbWUgPSBHbG9iYWxTdGF0ZSh7IGluaXRpYWxWYWx1ZTogQnl0ZXMoKSB9KQogICAgYnl0ZWNfMiAvLyAibmFtZSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTUKICAgIC8vIGFzc2V0TmFtZTogdGhpcy5uYW1lLnZhbHVlLAogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTgKICAgIC8vIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKICAgIGR1cAogICAgY292ZXIgMgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxOQogICAgLy8gcmVzZXJ2ZTogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgZHVwCiAgICBjb3ZlciAzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgKICAgIC8vIG5hbWUgPSBHbG9iYWxTdGF0ZSh7IGluaXRpYWxWYWx1ZTogQnl0ZXMoKSB9KQogICAgYnl0ZWNfMiAvLyAibmFtZSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjIKICAgIC8vIHRoaXMubmFtZS52YWx1ZSA9IEJ5dGVzKCdBU1QyJykKICAgIGJ5dGVjIDcgLy8gIkFTVDIiCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMwogICAgLy8gY29uc3QgYXNzZXQxX3R4biA9IGFzc2V0UGFyYW1zLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0UmVzZXJ2ZQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE1hbmFnZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcKICAgIC8vIGRlY2ltYWxzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXREZWNpbWFscwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNgogICAgLy8gdW5pdE5hbWU6ICd1bml0JywKICAgIGJ5dGVjIDQgLy8gInVuaXQiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VW5pdE5hbWUKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0CiAgICAvLyB0b3RhbDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMtMjAKICAgIC8vIGNvbnN0IGFzc2V0UGFyYW1zID0gaXR4bi5hc3NldENvbmZpZyh7CiAgICAvLyAgIHRvdGFsOiAxMDAwLAogICAgLy8gICBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIC8vICAgdW5pdE5hbWU6ICd1bml0JywKICAgIC8vICAgZGVjaW1hbHM6IDMsCiAgICAvLyAgIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vIH0pCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0MV9uZXh0X3R4bkAxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMwogICAgLy8gY29uc3QgYXNzZXQxX3R4biA9IGFzc2V0UGFyYW1zLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBDb25maWdBc3NldE5hbWUKICAgIGZyYW1lX2J1cnkgMAogICAgaXR4biBDcmVhdGVkQXNzZXRJRAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyNQogICAgLy8gYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICBpbnRjXzAgLy8gMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4CiAgICAvLyBuYW1lID0gR2xvYmFsU3RhdGUoeyBpbml0aWFsVmFsdWU6IEJ5dGVzKCkgfSkKICAgIGJ5dGVjXzIgLy8gIm5hbWUiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI1CiAgICAvLyBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI3CiAgICAvLyBjb25zdCBhc3NldDJfdHhuID0gYXNzZXRQYXJhbXMuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIGZyYW1lX2RpZyAyCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0UmVzZXJ2ZQogICAgZnJhbWVfZGlnIDEKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRNYW5hZ2VyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3CiAgICAvLyBkZWNpbWFsczogMywKICAgIGludGNfMyAvLyAzCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0RGVjaW1hbHMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTYKICAgIC8vIHVuaXROYW1lOiAndW5pdCcsCiAgICBieXRlYyA0IC8vICJ1bml0IgogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFVuaXROYW1lCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TmFtZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNAogICAgLy8gdG90YWw6IDEwMDAsCiAgICBpbnRjIDQgLy8gMTAwMAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFRvdGFsCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzLTIwCiAgICAvLyBjb25zdCBhc3NldFBhcmFtcyA9IGl0eG4uYXNzZXRDb25maWcoewogICAgLy8gICB0b3RhbDogMTAwMCwKICAgIC8vICAgYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICAvLyAgIHVuaXROYW1lOiAndW5pdCcsCiAgICAvLyAgIGRlY2ltYWxzOiAzLAogICAgLy8gICBtYW5hZ2VyOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vICAgcmVzZXJ2ZTogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyB9KQogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQoKdGVzdDFfbmV4dF90eG5AMjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjcKICAgIC8vIGNvbnN0IGFzc2V0Ml90eG4gPSBhc3NldFBhcmFtcy5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gQ29uZmlnQXNzZXROYW1lCiAgICBpdHhuIENyZWF0ZWRBc3NldElECiAgICBzd2FwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI5CiAgICAvLyBhc3NlcnQoYXNzZXQxX3R4bi5hc3NldE5hbWUgPT09IEJ5dGVzKCdBU1QxJyksICdhc3NldDFfdHhuIGlzIGNvcnJlY3QnKQogICAgZnJhbWVfZGlnIDAKICAgIGJ5dGVjIDYgLy8gIkFTVDEiCiAgICA9PQogICAgYXNzZXJ0IC8vIGFzc2V0MV90eG4gaXMgY29ycmVjdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozMAogICAgLy8gYXNzZXJ0KGFzc2V0Ml90eG4uYXNzZXROYW1lID09PSBCeXRlcygnQVNUMicpLCAnYXNzZXQyX3R4biBpcyBjb3JyZWN0JykKICAgIGJ5dGVjIDcgLy8gIkFTVDIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGFzc2V0Ml90eG4gaXMgY29ycmVjdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozMQogICAgLy8gYXNzZXJ0KGFzc2V0MV90eG4uY3JlYXRlZEFzc2V0Lm5hbWUgPT09IEJ5dGVzKCdBU1QxJyksICdjcmVhdGVkIGFzc2V0IDEgaXMgY29ycmVjdCcpCiAgICBzd2FwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TmFtZQogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgYnl0ZWMgNiAvLyAiQVNUMSIKICAgID09CiAgICBhc3NlcnQgLy8gY3JlYXRlZCBhc3NldCAxIGlzIGNvcnJlY3QKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzIKICAgIC8vIGFzc2VydChhc3NldDJfdHhuLmNyZWF0ZWRBc3NldC5uYW1lID09PSBCeXRlcygnQVNUMicpLCAnY3JlYXRlZCBhc3NldCAyIGlzIGNvcnJlY3QnKQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE5hbWUKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIGJ5dGVjIDcgLy8gIkFTVDIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNyZWF0ZWQgYXNzZXQgMiBpcyBjb3JyZWN0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQ0CiAgICAvLyBjb25zdCBbYXBwQ3JlYXRlVHhuLCBhc3NldDNfdHhuXSA9IGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fYmVnaW4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzQtMzgKICAgIC8vIGNvbnN0IGFwcENyZWF0ZVBhcmFtcyA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgZmVlOiAwLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjM3CiAgICAvLyBmZWU6IDAsCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QxX25leHRfdHhuQDM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQ0CiAgICAvLyBjb25zdCBbYXBwQ3JlYXRlVHhuLCBhc3NldDNfdHhuXSA9IGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fbmV4dAogICAgZnJhbWVfZGlnIDIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRSZXNlcnZlCiAgICBmcmFtZV9kaWcgMQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE1hbmFnZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcKICAgIC8vIGRlY2ltYWxzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXREZWNpbWFscwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNgogICAgLy8gdW5pdE5hbWU6ICd1bml0JywKICAgIGJ5dGVjIDQgLy8gInVuaXQiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VW5pdE5hbWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDEKICAgIC8vIGFzc2V0TmFtZTogJ0FTVDMnLAogICAgYnl0ZWMgOCAvLyAiQVNUMyIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0CiAgICAvLyB0b3RhbDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMtMjAKICAgIC8vIGNvbnN0IGFzc2V0UGFyYW1zID0gaXR4bi5hc3NldENvbmZpZyh7CiAgICAvLyAgIHRvdGFsOiAxMDAwLAogICAgLy8gICBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIC8vICAgdW5pdE5hbWU6ICd1bml0JywKICAgIC8vICAgZGVjaW1hbHM6IDMsCiAgICAvLyAgIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vIH0pCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0MV9uZXh0X3R4bkA0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0NAogICAgLy8gY29uc3QgW2FwcENyZWF0ZVR4biwgYXNzZXQzX3R4bl0gPSBpdHhuLnN1Ym1pdEdyb3VwKGFwcENyZWF0ZVBhcmFtcywgYXNzZXRQYXJhbXMpCiAgICBpdHhuX3N1Ym1pdAogICAgZ2l0eG4gMCBDcmVhdGVkQXBwbGljYXRpb25JRAogICAgaXR4biBDb25maWdBc3NldE5hbWUKICAgIHN3YXAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDYKICAgIC8vIGFzc2VydChhcHBDcmVhdGVUeG4uY3JlYXRlZEFwcCwgJ2FwcCBpcyBjcmVhdGVkJykKICAgIGFzc2VydCAvLyBhcHAgaXMgY3JlYXRlZAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0NwogICAgLy8gYXNzZXJ0KGFzc2V0M190eG4uYXNzZXROYW1lID09PSBCeXRlcygnQVNUMycpLCAnYXNzZXQzX3R4biBpcyBjb3JyZWN0JykKICAgIGJ5dGVjIDggLy8gIkFTVDMiCiAgICA9PQogICAgYXNzZXJ0IC8vIGFzc2V0M190eG4gaXMgY29ycmVjdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1NQogICAgLy8gaXR4bi5zdWJtaXRHcm91cChhcHBDcmVhdGVQYXJhbXMsIGFzc2V0UGFyYW1zKQogICAgaXR4bl9iZWdpbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1MAogICAgLy8gbm90ZTogJzNyZCcsCiAgICBwdXNoaW50IDEgLy8gMQogICAgZHVwCiAgICA+PQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1NQogICAgLy8gaXR4bi5zdWJtaXRHcm91cChhcHBDcmVhdGVQYXJhbXMsIGFzc2V0UGFyYW1zKQogICAgYnogdGVzdDFfbmV4dF9maWVsZEA2Cgp0ZXN0MV9zZXRfTm90ZV8wX3RvXzBANToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTAKICAgIC8vIG5vdGU6ICczcmQnLAogICAgYnl0ZWMgMTIgLy8gIjNyZCIKICAgIGl0eG5fZmllbGQgTm90ZQoKdGVzdDFfbmV4dF9maWVsZEA2OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozNC0zOAogICAgLy8gY29uc3QgYXBwQ3JlYXRlUGFyYW1zID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBmZWU6IDAsCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzcKICAgIC8vIGZlZTogMCwKICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQoKdGVzdDFfbmV4dF90eG5ANzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTUKICAgIC8vIGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1MwogICAgLy8gbm90ZTogJzNyZCcsCiAgICBwdXNoaW50IDEgLy8gMQogICAgZHVwCiAgICA+PQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1NQogICAgLy8gaXR4bi5zdWJtaXRHcm91cChhcHBDcmVhdGVQYXJhbXMsIGFzc2V0UGFyYW1zKQogICAgYnogdGVzdDFfbmV4dF9maWVsZEA5Cgp0ZXN0MV9zZXRfTm90ZV8wX3RvXzBAODoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTMKICAgIC8vIG5vdGU6ICczcmQnLAogICAgYnl0ZWMgMTIgLy8gIjNyZCIKICAgIGl0eG5fZmllbGQgTm90ZQoKdGVzdDFfbmV4dF9maWVsZEA5OgogICAgZnJhbWVfZGlnIDIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRSZXNlcnZlCiAgICBmcmFtZV9kaWcgMQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE1hbmFnZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcKICAgIC8vIGRlY2ltYWxzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXREZWNpbWFscwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNgogICAgLy8gdW5pdE5hbWU6ICd1bml0JywKICAgIGJ5dGVjIDQgLy8gInVuaXQiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VW5pdE5hbWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDEKICAgIC8vIGFzc2V0TmFtZTogJ0FTVDMnLAogICAgYnl0ZWMgOCAvLyAiQVNUMyIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0CiAgICAvLyB0b3RhbDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMtMjAKICAgIC8vIGNvbnN0IGFzc2V0UGFyYW1zID0gaXR4bi5hc3NldENvbmZpZyh7CiAgICAvLyAgIHRvdGFsOiAxMDAwLAogICAgLy8gICBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIC8vICAgdW5pdE5hbWU6ICd1bml0JywKICAgIC8vICAgZGVjaW1hbHM6IDMsCiAgICAvLyAgIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vIH0pCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0MV9uZXh0X3R4bkAxMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTUKICAgIC8vIGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fc3VibWl0CiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QyKCkgLT4gdm9pZDoKdGVzdDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjU4CiAgICAvLyBwdWJsaWMgdGVzdDIoKSB7CiAgICBwcm90byAwIDAKICAgIGludGNfMCAvLyAwCiAgICBkdXBuIDIKICAgIHB1c2hieXRlcyAiIgogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgcHVzaGJ5dGVzICIiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjYwCiAgICAvLyBpZiAoVHhuLm51bUFwcEFyZ3MpIHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiB0ZXN0Ml9lbHNlX2JvZHlAMgoKdGVzdDJfaWZfYm9keUAxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo2MQogICAgLy8gY29uc3QgYXJncyA9IFtCeXRlcygnMScpLCBCeXRlcygnMicpXSBhcyBjb25zdAogICAgYnl0ZWNfMyAvLyAiMSIKICAgIGZyYW1lX2J1cnkgMAogICAgYnl0ZWMgNSAvLyAiMiIKICAgIGZyYW1lX2J1cnkgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo2NQogICAgLy8gYXBwQXJnczogYXJncywKICAgIHB1c2hpbnQgMiAvLyAyCiAgICBmcmFtZV9idXJ5IDMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjYKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5Ob09wLAogICAgaW50Y18wIC8vIDAKICAgIGZyYW1lX2J1cnkgNgogICAgcHVzaGludCAxIC8vIDEKICAgIGZyYW1lX2J1cnkgNAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo2NwogICAgLy8gbm90ZTogJ3dpdGggYXJncyBwYXJhbSBzZXQnLAogICAgYnl0ZWMgMTMgLy8gIndpdGggYXJncyBwYXJhbSBzZXQiCgp0ZXN0Ml9hZnRlcl9pZl9lbHNlQDM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjc3CiAgICAvLyBjb25zdCBjcmVhdGVBcHBUeG4gPSBjcmVhdGVBcHBQYXJhbXMuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIGl0eG5fZmllbGQgTm90ZQogICAgZnJhbWVfZGlnIDQKICAgIHB1c2hpbnQgMSAvLyAxCiAgICA+PQogICAgYnogdGVzdDJfbmV4dF9maWVsZEA1Cgp0ZXN0Ml9zZXRfT25Db21wbGV0aW9uXzBfdG9fMEA0OgogICAgZnJhbWVfZGlnIDYKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCgp0ZXN0Ml9uZXh0X2ZpZWxkQDU6CiAgICBmcmFtZV9kaWcgMAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGZyYW1lX2RpZyAxCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgZnJhbWVfZGlnIDMKICAgIGludGNfMyAvLyAzCiAgICA+PQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3NwogICAgLy8gY29uc3QgY3JlYXRlQXBwVHhuID0gY3JlYXRlQXBwUGFyYW1zLnN1Ym1pdCgpCiAgICBieiB0ZXN0Ml9uZXh0X2ZpZWxkQDcKCnRlc3QyX3NldF9BcHBsaWNhdGlvbkFyZ3NfMl90b18yQDY6CiAgICBmcmFtZV9kaWcgNQogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCnRlc3QyX25leHRfZmllbGRANzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjItNjgKICAgIC8vIGNyZWF0ZUFwcFBhcmFtcyA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgYXBwQXJnczogYXJncywKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLk5vT3AsCiAgICAvLyAgIG5vdGU6ICd3aXRoIGFyZ3MgcGFyYW0gc2V0JywKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0Ml9uZXh0X3R4bkA4OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3NwogICAgLy8gY29uc3QgY3JlYXRlQXBwVHhuID0gY3JlYXRlQXBwUGFyYW1zLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBOb3RlCiAgICBmcmFtZV9idXJ5IDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzgKICAgIC8vIGFzc2VydChjcmVhdGVBcHBUeG4uYXBwQXJncygwKSA9PT0gQnl0ZXMoJzEnKSwgJ2NvcnJlY3QgYXJncyB1c2VkIDEnKQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5hcyBBcHBsaWNhdGlvbkFyZ3MKICAgIGJ5dGVjXzMgLy8gIjEiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNvcnJlY3QgYXJncyB1c2VkIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzkKICAgIC8vIGFzc2VydChjcmVhdGVBcHBUeG4uYXBwQXJncygxKSA9PT0gQnl0ZXMoJzInKSwgJ2NvcnJlY3QgYXJncyB1c2VkIDInKQogICAgcHVzaGludCAxIC8vIDEKICAgIGl0eG5hcyBBcHBsaWNhdGlvbkFyZ3MKICAgIGJ5dGVjIDUgLy8gIjIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNvcnJlY3QgYXJncyB1c2VkIDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6ODEKICAgIC8vIGlmIChUeG4ubnVtQXBwQXJncyA+IDEpIHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBwdXNoaW50IDEgLy8gMQogICAgPgogICAgYnogdGVzdDJfYWZ0ZXJfaWZfZWxzZUAxMQoKdGVzdDJfaWZfYm9keUA5OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4Mi04OQogICAgLy8gY29uc3QgY3JlYXRlQXBwVHhuMiA9IGl0eG4KICAgIC8vICAgLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgICBhcHBBcmdzOiBbQnl0ZXMoJzQyJyldLAogICAgLy8gICB9KQogICAgLy8gICAuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6ODcKICAgIC8vIGFwcEFyZ3M6IFtCeXRlcygnNDInKV0sCiAgICBieXRlYyAxNCAvLyAiNDIiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4NgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgyLTg4CiAgICAvLyBjb25zdCBjcmVhdGVBcHBUeG4yID0gaXR4bgogICAgLy8gICAuYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgICBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICAgIGFwcEFyZ3M6IFtCeXRlcygnNDInKV0sCiAgICAvLyAgIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0Ml9uZXh0X3R4bkAxMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6ODItODkKICAgIC8vIGNvbnN0IGNyZWF0ZUFwcFR4bjIgPSBpdHhuCiAgICAvLyAgIC5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICAgIGFwcHJvdmFsUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgICAgYXBwQXJnczogW0J5dGVzKCc0MicpXSwKICAgIC8vICAgfSkKICAgIC8vICAgLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5MAogICAgLy8gYXNzZXJ0KGNyZWF0ZUFwcFR4bjIuYXBwQXJncygwKSA9PT0gQnl0ZXMoJzQyJyksICdjb3JyZWN0IGFyZ3MgdXNlZCAyJykKICAgIGludGNfMCAvLyAwCiAgICBpdHhuYXMgQXBwbGljYXRpb25BcmdzCiAgICBieXRlYyAxNCAvLyAiNDIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNvcnJlY3QgYXJncyB1c2VkIDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTEKICAgIC8vIGFzc2VydChjcmVhdGVBcHBUeG4ubm90ZSA9PT0gQnl0ZXMoJ3dpdGggYXJncyBwYXJhbSBzZXQnKSkKICAgIGZyYW1lX2RpZyAyCiAgICBieXRlYyAxMyAvLyAid2l0aCBhcmdzIHBhcmFtIHNldCIKICAgID09CiAgICBhc3NlcnQKCnRlc3QyX2FmdGVyX2lmX2Vsc2VAMTE6CiAgICByZXRzdWIKCnRlc3QyX2Vsc2VfYm9keUAyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3MwogICAgLy8gYXBwQXJnczogW0J5dGVzKCczJyksICc0JywgQnl0ZXMoJzUnKV0sCiAgICBieXRlYyA5IC8vICIzIgogICAgZnJhbWVfYnVyeSAwCiAgICBieXRlYyAxMCAvLyAiNCIKICAgIGZyYW1lX2J1cnkgMQogICAgYnl0ZWMgMTEgLy8gIjUiCiAgICBmcmFtZV9idXJ5IDUKICAgIGludGNfMyAvLyAzCiAgICBmcmFtZV9idXJ5IDMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzQKICAgIC8vIG5vdGU6ICdubyBhcmdzIHBhcmFtIHNldCcsCiAgICBwdXNoYnl0ZXMgIm5vIGFyZ3MgcGFyYW0gc2V0IgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3MAogICAgLy8gY3JlYXRlQXBwUGFyYW1zID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgaW50Y18wIC8vIDAKICAgIGZyYW1lX2J1cnkgNAogICAgYiB0ZXN0Ml9hZnRlcl9pZl9lbHNlQDMKCgovLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzKCkgLT4gdm9pZDoKdGVzdDM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk1CiAgICAvLyBwdWJsaWMgdGVzdDMoKSB7CiAgICBwcm90byAwIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTM0LTE1MQogICAgLy8gY29uc3QgW2FwcDEsIGFwcDIsIGFwcDMsIGFwcDQsIGFwcDUsIGFwcDYsIGFwcDcsIGFwcDgsIGFwcDksIGFwcDEwLCBhcHAxMSwgYXBwMTIsIGFwcDEzLCBhcHAxNCwgYXBwMTUsIGFwcDE2XSA9IGl0eG4uc3VibWl0R3JvdXAoCiAgICAvLyAgIGFwcFR4bjEsCiAgICAvLyAgIGFwcFR4bjIsCiAgICAvLyAgIGFwcFR4bjMsCiAgICAvLyAgIGFwcFR4bjQsCiAgICAvLyAgIGFwcFR4bjUsCiAgICAvLyAgIGFwcFR4bjYsCiAgICAvLyAgIGFwcFR4bjcsCiAgICAvLyAgIGFwcFR4bjgsCiAgICAvLyAgIGFwcFR4bjksCiAgICAvLyAgIGFwcFR4bjEwLAogICAgLy8gICBhcHBUeG4xMSwKICAgIC8vICAgYXBwVHhuMTIsCiAgICAvLyAgIGFwcFR4bjEzLAogICAgLy8gICBhcHBUeG4xNCwKICAgIC8vICAgYXBwVHhuMTUsCiAgICAvLyAgIGFwcFR4bjE2LAogICAgLy8gKQogICAgaXR4bl9iZWdpbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDAKICAgIC8vIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIGJ5dGVjXzMgLy8gIjEiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QzX25leHRfdHhuQDE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzNgogICAgLy8gYXBwVHhuMiwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDQKICAgIC8vIGFwcFR4bjIuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcyJyldIH0pCiAgICBieXRlYyA1IC8vICIyIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0M19uZXh0X3R4bkAyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMzcKICAgIC8vIGFwcFR4bjMsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTA2CiAgICAvLyBhcHBUeG4zLnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMycpXSB9KQogICAgYnl0ZWMgOSAvLyAiMyIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQoKdGVzdDNfbmV4dF90eG5AMzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTM4CiAgICAvLyBhcHBUeG40LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwOAogICAgLy8gYXBwVHhuNC5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzQnKV0gfSkKICAgIGJ5dGVjIDEwIC8vICI0IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0M19uZXh0X3R4bkA0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMzkKICAgIC8vIGFwcFR4bjUsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEwCiAgICAvLyBhcHBUeG41LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnNScpXSB9KQogICAgYnl0ZWMgMTEgLy8gIjUiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QzX25leHRfdHhuQDU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0MAogICAgLy8gYXBwVHhuNiwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTIKICAgIC8vIGFwcFR4bjYuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc2JyldIH0pCiAgICBwdXNoYnl0ZXMgIjYiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QzX25leHRfdHhuQDY6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0MQogICAgLy8gYXBwVHhuNywKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTQKICAgIC8vIGFwcFR4bjcuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc3JyldIH0pCiAgICBwdXNoYnl0ZXMgIjciCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QzX25leHRfdHhuQDc6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0MgogICAgLy8gYXBwVHhuOCwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTYKICAgIC8vIGFwcFR4bjguc2V0KHsgYXBwQXJnczogW0J5dGVzKCc4JyldIH0pCiAgICBwdXNoYnl0ZXMgIjgiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QzX25leHRfdHhuQDg6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0MwogICAgLy8gYXBwVHhuOSwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTgKICAgIC8vIGFwcFR4bjkuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc5JyldIH0pCiAgICBwdXNoYnl0ZXMgIjkiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QzX25leHRfdHhuQDk6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0NAogICAgLy8gYXBwVHhuMTAsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTIwCiAgICAvLyBhcHBUeG4xMC5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzEwJyldIH0pCiAgICBieXRlYyAxNSAvLyAiMTAiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QzX25leHRfdHhuQDEwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDUKICAgIC8vIGFwcFR4bjExLAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEyMgogICAgLy8gYXBwVHhuMTEuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcxMScpXSB9KQogICAgYnl0ZWMgMTYgLy8gIjExIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0M19uZXh0X3R4bkAxMToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQ2CiAgICAvLyBhcHBUeG4xMiwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMjQKICAgIC8vIGFwcFR4bjEyLnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTInKV0gfSkKICAgIGJ5dGVjIDE3IC8vICIxMiIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQoKdGVzdDNfbmV4dF90eG5AMTI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0NwogICAgLy8gYXBwVHhuMTMsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTI2CiAgICAvLyBhcHBUeG4xMy5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzEzJyldIH0pCiAgICBieXRlYyAxOCAvLyAiMTMiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QzX25leHRfdHhuQDEzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDgKICAgIC8vIGFwcFR4bjE0LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEyOAogICAgLy8gYXBwVHhuMTQuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcxNCcpXSB9KQogICAgYnl0ZWMgMTkgLy8gIjE0IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0M19uZXh0X3R4bkAxNDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQ5CiAgICAvLyBhcHBUeG4xNSwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMzAKICAgIC8vIGFwcFR4bjE1LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTUnKV0gfSkKICAgIGJ5dGVjIDIwIC8vICIxNSIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQoKdGVzdDNfbmV4dF90eG5AMTU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1MAogICAgLy8gYXBwVHhuMTYsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMyCiAgICAvLyBhcHBUeG4xNi5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzE2JyldIH0pCiAgICBieXRlYyAyMSAvLyAiMTYiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QzX25leHRfdHhuQDE2OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMzQtMTUxCiAgICAvLyBjb25zdCBbYXBwMSwgYXBwMiwgYXBwMywgYXBwNCwgYXBwNSwgYXBwNiwgYXBwNywgYXBwOCwgYXBwOSwgYXBwMTAsIGFwcDExLCBhcHAxMiwgYXBwMTMsIGFwcDE0LCBhcHAxNSwgYXBwMTZdID0gaXR4bi5zdWJtaXRHcm91cCgKICAgIC8vICAgYXBwVHhuMSwKICAgIC8vICAgYXBwVHhuMiwKICAgIC8vICAgYXBwVHhuMywKICAgIC8vICAgYXBwVHhuNCwKICAgIC8vICAgYXBwVHhuNSwKICAgIC8vICAgYXBwVHhuNiwKICAgIC8vICAgYXBwVHhuNywKICAgIC8vICAgYXBwVHhuOCwKICAgIC8vICAgYXBwVHhuOSwKICAgIC8vICAgYXBwVHhuMTAsCiAgICAvLyAgIGFwcFR4bjExLAogICAgLy8gICBhcHBUeG4xMiwKICAgIC8vICAgYXBwVHhuMTMsCiAgICAvLyAgIGFwcFR4bjE0LAogICAgLy8gICBhcHBUeG4xNSwKICAgIC8vICAgYXBwVHhuMTYsCiAgICAvLyApCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTMKICAgIC8vIGFzc2VydChhcHAxLmxvZ3MoMCkgPT09IEJ5dGVzKCcxJykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyAwIExvZ3MKICAgIGJ5dGVjXzMgLy8gIjEiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1NAogICAgLy8gYXNzZXJ0KGFwcDIubG9ncygwKSA9PT0gQnl0ZXMoJzInKSkKICAgIGludGNfMCAvLyAwCiAgICBnaXR4bmFzIDEgTG9ncwogICAgYnl0ZWMgNSAvLyAiMiIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU1CiAgICAvLyBhc3NlcnQoYXBwMy5sb2dzKDApID09PSBCeXRlcygnMycpKQogICAgaW50Y18wIC8vIDAKICAgIGdpdHhuYXMgMiBMb2dzCiAgICBieXRlYyA5IC8vICIzIgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTYKICAgIC8vIGFzc2VydChhcHA0LmxvZ3MoMCkgPT09IEJ5dGVzKCc0JykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyAzIExvZ3MKICAgIGJ5dGVjIDEwIC8vICI0IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTcKICAgIC8vIGFzc2VydChhcHA1LmxvZ3MoMCkgPT09IEJ5dGVzKCc1JykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyA0IExvZ3MKICAgIGJ5dGVjIDExIC8vICI1IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTgKICAgIC8vIGFzc2VydChhcHA2LmxvZ3MoMCkgPT09IEJ5dGVzKCc2JykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyA1IExvZ3MKICAgIHB1c2hieXRlcyAiNiIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU5CiAgICAvLyBhc3NlcnQoYXBwNy5sb2dzKDApID09PSBCeXRlcygnNycpKQogICAgaW50Y18wIC8vIDAKICAgIGdpdHhuYXMgNiBMb2dzCiAgICBwdXNoYnl0ZXMgIjciCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2MAogICAgLy8gYXNzZXJ0KGFwcDgubG9ncygwKSA9PT0gQnl0ZXMoJzgnKSkKICAgIGludGNfMCAvLyAwCiAgICBnaXR4bmFzIDcgTG9ncwogICAgcHVzaGJ5dGVzICI4IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjEKICAgIC8vIGFzc2VydChhcHA5LmxvZ3MoMCkgPT09IEJ5dGVzKCc5JykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyA4IExvZ3MKICAgIHB1c2hieXRlcyAiOSIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTYyCiAgICAvLyBhc3NlcnQoYXBwMTAubG9ncygwKSA9PT0gQnl0ZXMoJzEwJykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyA5IExvZ3MKICAgIGJ5dGVjIDE1IC8vICIxMCIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTYzCiAgICAvLyBhc3NlcnQoYXBwMTEubG9ncygwKSA9PT0gQnl0ZXMoJzExJykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyAxMCBMb2dzCiAgICBieXRlYyAxNiAvLyAiMTEiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2NAogICAgLy8gYXNzZXJ0KGFwcDEyLmxvZ3MoMCkgPT09IEJ5dGVzKCcxMicpKQogICAgaW50Y18wIC8vIDAKICAgIGdpdHhuYXMgMTEgTG9ncwogICAgYnl0ZWMgMTcgLy8gIjEyIgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjUKICAgIC8vIGFzc2VydChhcHAxMy5sb2dzKDApID09PSBCeXRlcygnMTMnKSkKICAgIGludGNfMCAvLyAwCiAgICBnaXR4bmFzIDEyIExvZ3MKICAgIGJ5dGVjIDE4IC8vICIxMyIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTY2CiAgICAvLyBhc3NlcnQoYXBwMTQubG9ncygwKSA9PT0gQnl0ZXMoJzE0JykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyAxMyBMb2dzCiAgICBieXRlYyAxOSAvLyAiMTQiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2NwogICAgLy8gYXNzZXJ0KGFwcDE1LmxvZ3MoMCkgPT09IEJ5dGVzKCcxNScpKQogICAgaW50Y18wIC8vIDAKICAgIGdpdHhuYXMgMTQgTG9ncwogICAgYnl0ZWMgMjAgLy8gIjE1IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjgKICAgIC8vIGFzc2VydChhcHAxNi5sb2dzKDApID09PSBCeXRlcygnMTYnKSkKICAgIGludGNfMCAvLyAwCiAgICBpdHhuYXMgTG9ncwogICAgYnl0ZWMgMjEgLy8gIjE2IgogICAgPT0KICAgIGFzc2VydAogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0NCgpIC0+IHZvaWQ6CnRlc3Q0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzEKICAgIC8vIHB1YmxpYyB0ZXN0NCgpIHsKICAgIHByb3RvIDAgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzIKICAgIC8vIGNvbnN0IGxvdHNPZkJ5dGVzID0gb3AuYnplcm8oMjA0NCkKICAgIHB1c2hpbnQgMjA0NCAvLyAyMDQ0CiAgICBiemVybwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzQKICAgIC8vIGNvbnN0IGFwcHJvdmFsMiA9IEJ5dGVzLmZyb21IZXgoJzgwJyArICdGQzBmJykKICAgIHB1c2hieXRlcyAweDgwZmMwZgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzQtMTc1CiAgICAvLyBjb25zdCBhcHByb3ZhbDIgPSBCeXRlcy5mcm9tSGV4KCc4MCcgKyAnRkMwZicpCiAgICAvLyAgIC5jb25jYXQobG90c09mQnl0ZXMpCiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTc2CiAgICAvLyAuY29uY2F0KEJ5dGVzLmZyb21IZXgoJzQ4JykpCiAgICBwdXNoYnl0ZXMgMHg0OAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzQtMTc2CiAgICAvLyBjb25zdCBhcHByb3ZhbDIgPSBCeXRlcy5mcm9tSGV4KCc4MCcgKyAnRkMwZicpCiAgICAvLyAgIC5jb25jYXQobG90c09mQnl0ZXMpCiAgICAvLyAgIC5jb25jYXQoQnl0ZXMuZnJvbUhleCgnNDgnKSkKICAgIGNvbmNhdAogICAgZHVwbiAzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3OQogICAgLy8gYXBwcm92YWxQcm9ncmFtOiBbYXBwcm92YWwxLCBhcHByb3ZhbDIsIGFwcHJvdmFsMiwgYXBwcm92YWwyXSwKICAgIGNvdmVyIDIKICAgIGNvdmVyIDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg1CiAgICAvLyBjb25zdCBhcHAxID0gYXBwVHhuMS5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxODMKICAgIC8vIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTgyCiAgICAvLyBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICBieXRlY18zIC8vICIxIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTgxCiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTc4LTE4NAogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBbYXBwcm92YWwxLCBhcHByb3ZhbDIsIGFwcHJvdmFsMiwgYXBwcm92YWwyXSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gICBleHRyYVByb2dyYW1QYWdlczogMywKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0NF9uZXh0X3R4bkAxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxODUKICAgIC8vIGNvbnN0IGFwcDEgPSBhcHBUeG4xLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBFeHRyYVByb2dyYW1QYWdlcwogICAgaXR4biBOdW1BcHByb3ZhbFByb2dyYW1QYWdlcwogICAgc3dhcAogICAgaXR4biBOdW1DbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICBjb3ZlciAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4NgogICAgLy8gYXNzZXJ0KGFwcDEuZXh0cmFQcm9ncmFtUGFnZXMgPT09IDMsICdleHRyYSBwYWdlcyA9IDMnKQogICAgaW50Y18zIC8vIDMKICAgID09CiAgICBhc3NlcnQgLy8gZXh0cmEgcGFnZXMgPSAzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4NwogICAgLy8gYXNzZXJ0KGFwcDEubnVtQXBwcm92YWxQcm9ncmFtUGFnZXMgPT09IDIsICdhcHByb3ZhbCBwYWdlcyA9IDInKQogICAgcHVzaGludCAyIC8vIDIKICAgID09CiAgICBhc3NlcnQgLy8gYXBwcm92YWwgcGFnZXMgPSAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4OAogICAgLy8gYXNzZXJ0KGFwcDEuYXBwcm92YWxQcm9ncmFtUGFnZXMoMCkgPT09IGFwcHJvdmFsMS5jb25jYXQoYXBwcm92YWwyKS5jb25jYXQoYXBwcm92YWwyLnNsaWNlKDAsIC0zKSksICdleHBlY3RlZCBhcHByb3ZhbCBwYWdlIDAnKQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5hcyBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg4CiAgICAvLyBhc3NlcnQoYXBwMS5hcHByb3ZhbFByb2dyYW1QYWdlcygwKSA9PT0gYXBwcm92YWwxLmNvbmNhdChhcHByb3ZhbDIpLmNvbmNhdChhcHByb3ZhbDIuc2xpY2UoMCwgLTMpKSwgJ2V4cGVjdGVkIGFwcHJvdmFsIHBhZ2UgMCcpCiAgICB1bmNvdmVyIDMKICAgIGR1cAogICAgY292ZXIgMgogICAgY29uY2F0CiAgICBzd2FwCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDAKICAgIGRpZyAxCiAgICA+PQogICAgaW50Y18wIC8vIDAKICAgIGRpZyAyCiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgc3dhcAogICAgaW50Y18zIC8vIDMKICAgIGRpZyAxCiAgICA+PQogICAgaW50Y18zIC8vIDMKICAgIGRpZyAyCiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgLQogICAgZHVwCiAgICBkaWcgMgogICAgPAogICAgc3dhcAogICAgZGlnIDIKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBkaWcgMgogICAgdW5jb3ZlciAyCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIHVuY292ZXIgMgogICAgc3dhcAogICAgY29uY2F0CiAgICB1bmNvdmVyIDIKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgYXBwcm92YWwgcGFnZSAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4OQogICAgLy8gYXNzZXJ0KGFwcDEuYXBwcm92YWxQcm9ncmFtUGFnZXMoMSkgPT09IGFwcHJvdmFsMi5zbGljZSgtMykuY29uY2F0KGFwcHJvdmFsMiksICdleHBlY3RlZCBhcHByb3ZhbCBwYWdlIDEnKQogICAgcHVzaGludCAxIC8vIDEKICAgIGl0eG5hcyBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgc3dhcAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMyAvLyAzCiAgICBkaWcgMQogICAgPj0KICAgIGludGNfMyAvLyAzCiAgICBkaWcgMgogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIGRpZyAxCiAgICBzd2FwCiAgICAtCiAgICBkaWcgMgogICAgc3dhcAogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBzd2FwCiAgICBjb25jYXQKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgYXBwcm92YWwgcGFnZSAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5MAogICAgLy8gYXNzZXJ0KGFwcDEubnVtQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcyA9PT0gMSwgJ2NsZWFyIHN0YXRlIHBhZ2VzID0gMScpCiAgICBwdXNoaW50IDEgLy8gMQogICAgPT0KICAgIGFzc2VydCAvLyBjbGVhciBzdGF0ZSBwYWdlcyA9IDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTkxCiAgICAvLyBhc3NlcnQoYXBwMS5jbGVhclN0YXRlUHJvZ3JhbVBhZ2VzKDApID09PSBBUFBST1ZFLCAnZXhwZWN0ZWQgY2xlYXIgc3RhdGUgcGFnZScpCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bmFzIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5MQogICAgLy8gYXNzZXJ0KGFwcDEuY2xlYXJTdGF0ZVByb2dyYW1QYWdlcygwKSA9PT0gQVBQUk9WRSwgJ2V4cGVjdGVkIGNsZWFyIHN0YXRlIHBhZ2UnKQogICAgPT0KICAgIGFzc2VydCAvLyBleHBlY3RlZCBjbGVhciBzdGF0ZSBwYWdlCiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0Ll9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZSgpIC0+IHZvaWQ6Cl9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NwogICAgLy8gZXhwb3J0IGNsYXNzIEl0eG5EZW1vQ29udHJhY3QgZXh0ZW5kcyBDb250cmFjdCB7CiAgICBwcm90byAwIDAKICAgIHJldHN1Ygo=", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCg==" + }, + "state": { + "global": { + "num_byte_slices": 1, + "num_uints": 0 + }, + "local": { + "num_byte_slices": 0, + "num_uints": 0 + } + }, + "schema": { + "global": { + "declared": { + "name": { + "type": "bytes", + "key": "name" + } + }, + "reserved": {} + }, + "local": { + "declared": {}, + "reserved": {} + } + }, + "contract": { + "name": "ItxnDemoContract", + "methods": [ + { + "name": "test1", + "args": [], + "readonly": false, + "returns": { + "type": "void" + } + }, + { + "name": "test2", + "args": [], + "readonly": false, + "returns": { + "type": "void" + } + }, + { + "name": "test3", + "args": [], + "readonly": false, + "returns": { + "type": "void" + } + }, + { + "name": "test4", + "args": [], + "readonly": false, + "returns": { + "type": "void" + } + } + ], + "networks": {} + }, + "bare_call_config": { + "no_op": "CREATE" + } +} \ No newline at end of file diff --git a/tests/approvals/out/unoptimized/itxn/ItxnDemoContract.arc56.json b/tests/approvals/out/unoptimized/itxn/ItxnDemoContract.arc56.json new file mode 100644 index 000000000..a70267915 --- /dev/null +++ b/tests/approvals/out/unoptimized/itxn/ItxnDemoContract.arc56.json @@ -0,0 +1,261 @@ +{ + "name": "ItxnDemoContract", + "structs": {}, + "methods": [ + { + "name": "test1", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + }, + "readonly": false, + "events": [], + "recommendations": {} + }, + { + "name": "test2", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + }, + "readonly": false, + "events": [], + "recommendations": {} + }, + { + "name": "test3", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + }, + "readonly": false, + "events": [], + "recommendations": {} + }, + { + "name": "test4", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + }, + "readonly": false, + "events": [], + "recommendations": {} + } + ], + "arcs": [ + 22, + 28 + ], + "networks": {}, + "state": { + "schema": { + "global": { + "ints": 0, + "bytes": 1 + }, + "local": { + "ints": 0, + "bytes": 0 + } + }, + "keys": { + "global": { + "name": { + "keyType": "AVMString", + "valueType": "AVMBytes", + "key": "bmFtZQ==" + } + }, + "local": {}, + "box": {} + }, + "maps": { + "global": {}, + "local": {}, + "box": {} + } + }, + "bareActions": { + "create": [ + "NoOp" + ], + "call": [] + }, + "sourceInfo": { + "approval": { + "sourceInfo": [ + { + "pc": [ + 166, + 184, + 202, + 220 + ], + "errorMessage": "OnCompletion is not NoOp" + }, + { + "pc": [ + 436 + ], + "errorMessage": "app is created" + }, + { + "pc": [ + 1219 + ], + "errorMessage": "approval pages = 2" + }, + { + "pc": [ + 374, + 381 + ], + "errorMessage": "asset exists" + }, + { + "pc": [ + 366 + ], + "errorMessage": "asset1_txn is correct" + }, + { + "pc": [ + 370 + ], + "errorMessage": "asset2_txn is correct" + }, + { + "pc": [ + 440 + ], + "errorMessage": "asset3_txn is correct" + }, + { + "pc": [ + 249 + ], + "errorMessage": "can only call when creating" + }, + { + "pc": [ + 171, + 189, + 207, + 225 + ], + "errorMessage": "can only call when not creating" + }, + { + "pc": [ + 277, + 326 + ], + "errorMessage": "check GlobalState exists" + }, + { + "pc": [ + 1314 + ], + "errorMessage": "clear state pages = 1" + }, + { + "pc": [ + 601 + ], + "errorMessage": "correct args used 1" + }, + { + "pc": [ + 609, + 645 + ], + "errorMessage": "correct args used 2" + }, + { + "pc": [ + 378 + ], + "errorMessage": "created asset 1 is correct" + }, + { + "pc": [ + 385 + ], + "errorMessage": "created asset 2 is correct" + }, + { + "pc": [ + 1279 + ], + "errorMessage": "expected approval page 0" + }, + { + "pc": [ + 1310 + ], + "errorMessage": "expected approval page 1" + }, + { + "pc": [ + 1320 + ], + "errorMessage": "expected clear state page" + }, + { + "pc": [ + 1215 + ], + "errorMessage": "extra pages = 3" + } + ], + "pcOffsetMethod": "none" + }, + "clear": { + "sourceInfo": [], + "pcOffsetMethod": "none" + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMCA2IDUgMyAxMDAwCiAgICBieXRlY2Jsb2NrIDB4MDk4MTAxIDB4MDkzNjFhMDBiMDgxMDEgIm5hbWUiICIxIiAidW5pdCIgIjIiICJBU1QxIiAiQVNUMiIgIkFTVDMiICIzIiAiNCIgIjUiICIzcmQiICJ3aXRoIGFyZ3MgcGFyYW0gc2V0IiAiNDIiICIxMCIgIjExIiAiMTIiICIxMyIgIjE0IiAiMTUiICIxNiIKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDIKCm1haW5faWZfYm9keUAxOgogICAgY2FsbHN1YiBjb25zdHJ1Y3RvcgoKbWFpbl9hZnRlcl9pZl9lbHNlQDI6CgptYWluX2Jsb2NrQDM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjcKICAgIC8vIGV4cG9ydCBjbGFzcyBJdHhuRGVtb0NvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE51bUFwcEFyZ3MKICAgIGludGNfMCAvLyAwCiAgICAhPQogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAMTEKCm1haW5fYWJpX3JvdXRpbmdANDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NwogICAgLy8gZXhwb3J0IGNsYXNzIEl0eG5EZW1vQ29udHJhY3QgZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBwdXNoYnl0ZXMgMHgyMDI1NGY5MSAvLyBtZXRob2QgInRlc3QxKCl2b2lkIgogICAgcHVzaGJ5dGVzIDB4ZjE5MDg1MjQgLy8gbWV0aG9kICJ0ZXN0Migpdm9pZCIKICAgIHB1c2hieXRlcyAweGRmOTIwZjM3IC8vIG1ldGhvZCAidGVzdDMoKXZvaWQiCiAgICBwdXNoYnl0ZXMgMHgzZDQ2MzQ1YyAvLyBtZXRob2QgInRlc3Q0KCl2b2lkIgogICAgdW5jb3ZlciA0CiAgICBtYXRjaCBtYWluX3Rlc3QxX3JvdXRlQDUgbWFpbl90ZXN0Ml9yb3V0ZUA2IG1haW5fdGVzdDNfcm91dGVANyBtYWluX3Rlc3Q0X3JvdXRlQDgKCm1haW5fc3dpdGNoX2Nhc2VfZGVmYXVsdEA5OgoKbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDEwOgoKbWFpbl9hZnRlcl9pZl9lbHNlQDE1OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3CiAgICAvLyBleHBvcnQgY2xhc3MgSXR4bkRlbW9Db250cmFjdCBleHRlbmRzIENvbnRyYWN0IHsKICAgIGludGNfMCAvLyAwCgptYWluX2FmdGVyX2lubGluZWRfdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC5fX3B1eWFfYXJjNF9yb3V0ZXJfX0AxNjoKICAgIHJldHVybgoKbWFpbl90ZXN0NF9yb3V0ZUA4OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzEKICAgIC8vIHB1YmxpYyB0ZXN0NCgpIHsKICAgIHR4biBPbkNvbXBsZXRpb24KICAgIGludGNfMCAvLyBOb09wCiAgICA9PQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGludGNfMCAvLyAwCiAgICAhPQogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgdGVzdDQKICAgIHB1c2hpbnQgMSAvLyAxCiAgICBiIG1haW5fYWZ0ZXJfaW5saW5lZF90ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0Ll9fcHV5YV9hcmM0X3JvdXRlcl9fQDE2CgptYWluX3Rlc3QzX3JvdXRlQDc6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk1CiAgICAvLyBwdWJsaWMgdGVzdDMoKSB7CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICBpbnRjXzAgLy8gTm9PcAogICAgPT0KICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBpbnRjXzAgLy8gMAogICAgIT0KICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICBjYWxsc3ViIHRlc3QzCiAgICBwdXNoaW50IDEgLy8gMQogICAgYiBtYWluX2FmdGVyX2lubGluZWRfdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC5fX3B1eWFfYXJjNF9yb3V0ZXJfX0AxNgoKbWFpbl90ZXN0Ml9yb3V0ZUA2OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1OAogICAgLy8gcHVibGljIHRlc3QyKCkgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgaW50Y18wIC8vIE5vT3AKICAgID09CiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgaW50Y18wIC8vIDAKICAgICE9CiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgY2FsbHN1YiB0ZXN0MgogICAgcHVzaGludCAxIC8vIDEKICAgIGIgbWFpbl9hZnRlcl9pbmxpbmVkX3Rlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QuX19wdXlhX2FyYzRfcm91dGVyX19AMTYKCm1haW5fdGVzdDFfcm91dGVANToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTAKICAgIC8vIHB1YmxpYyB0ZXN0MSgpIHsKICAgIHR4biBPbkNvbXBsZXRpb24KICAgIGludGNfMCAvLyBOb09wCiAgICA9PQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGludGNfMCAvLyAwCiAgICAhPQogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgdGVzdDEKICAgIHB1c2hpbnQgMSAvLyAxCiAgICBiIG1haW5fYWZ0ZXJfaW5saW5lZF90ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0Ll9fcHV5YV9hcmM0X3JvdXRlcl9fQDE2CgptYWluX2JhcmVfcm91dGluZ0AxMToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NwogICAgLy8gZXhwb3J0IGNsYXNzIEl0eG5EZW1vQ29udHJhY3QgZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICBpbnRjXzAgLy8gMAogICAgc3dhcAogICAgbWF0Y2ggbWFpbl9fX2FsZ290c19fLmRlZmF1bHRDcmVhdGVAMTIKCm1haW5fc3dpdGNoX2Nhc2VfZGVmYXVsdEAxMzoKCm1haW5fc3dpdGNoX2Nhc2VfbmV4dEAxNDoKICAgIGIgbWFpbl9hZnRlcl9pZl9lbHNlQDE1CgptYWluX19fYWxnb3RzX18uZGVmYXVsdENyZWF0ZUAxMjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NwogICAgLy8gZXhwb3J0IGNsYXNzIEl0eG5EZW1vQ29udHJhY3QgZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgaW50Y18wIC8vIDAKICAgID09CiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIGNyZWF0aW5nCiAgICBjYWxsc3ViIF9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZQogICAgcHVzaGludCAxIC8vIDEKICAgIGIgbWFpbl9hZnRlcl9pbmxpbmVkX3Rlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QuX19wdXlhX2FyYzRfcm91dGVyX19AMTYKCgovLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LmNvbnN0cnVjdG9yKCkgLT4gdm9pZDoKY29uc3RydWN0b3I6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjcKICAgIC8vIGV4cG9ydCBjbGFzcyBJdHhuRGVtb0NvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3QgewogICAgcHJvdG8gMCAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgKICAgIC8vIG5hbWUgPSBHbG9iYWxTdGF0ZSh7IGluaXRpYWxWYWx1ZTogQnl0ZXMoKSB9KQogICAgYnl0ZWNfMiAvLyAibmFtZSIKICAgIHB1c2hieXRlcyAweAogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1YgoKCi8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDEoKSAtPiB2b2lkOgp0ZXN0MToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTAKICAgIC8vIHB1YmxpYyB0ZXN0MSgpIHsKICAgIHByb3RvIDAgMAogICAgaW50Y18wIC8vIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OAogICAgLy8gbmFtZSA9IEdsb2JhbFN0YXRlKHsgaW5pdGlhbFZhbHVlOiBCeXRlcygpIH0pCiAgICBieXRlY18yIC8vICJuYW1lIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMQogICAgLy8gdGhpcy5uYW1lLnZhbHVlID0gQnl0ZXMoJ0FTVDEnKQogICAgYnl0ZWMgNiAvLyAiQVNUMSIKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1CiAgICAvLyBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIGludGNfMCAvLyAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgKICAgIC8vIG5hbWUgPSBHbG9iYWxTdGF0ZSh7IGluaXRpYWxWYWx1ZTogQnl0ZXMoKSB9KQogICAgYnl0ZWNfMiAvLyAibmFtZSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTUKICAgIC8vIGFzc2V0TmFtZTogdGhpcy5uYW1lLnZhbHVlLAogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTgKICAgIC8vIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKICAgIGR1cAogICAgY292ZXIgMgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxOQogICAgLy8gcmVzZXJ2ZTogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgZHVwCiAgICBjb3ZlciAzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgKICAgIC8vIG5hbWUgPSBHbG9iYWxTdGF0ZSh7IGluaXRpYWxWYWx1ZTogQnl0ZXMoKSB9KQogICAgYnl0ZWNfMiAvLyAibmFtZSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjIKICAgIC8vIHRoaXMubmFtZS52YWx1ZSA9IEJ5dGVzKCdBU1QyJykKICAgIGJ5dGVjIDcgLy8gIkFTVDIiCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMwogICAgLy8gY29uc3QgYXNzZXQxX3R4biA9IGFzc2V0UGFyYW1zLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0UmVzZXJ2ZQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE1hbmFnZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcKICAgIC8vIGRlY2ltYWxzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXREZWNpbWFscwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNgogICAgLy8gdW5pdE5hbWU6ICd1bml0JywKICAgIGJ5dGVjIDQgLy8gInVuaXQiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VW5pdE5hbWUKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0CiAgICAvLyB0b3RhbDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMtMjAKICAgIC8vIGNvbnN0IGFzc2V0UGFyYW1zID0gaXR4bi5hc3NldENvbmZpZyh7CiAgICAvLyAgIHRvdGFsOiAxMDAwLAogICAgLy8gICBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIC8vICAgdW5pdE5hbWU6ICd1bml0JywKICAgIC8vICAgZGVjaW1hbHM6IDMsCiAgICAvLyAgIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vIH0pCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0MV9uZXh0X3R4bkAxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMwogICAgLy8gY29uc3QgYXNzZXQxX3R4biA9IGFzc2V0UGFyYW1zLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBDb25maWdBc3NldE5hbWUKICAgIGZyYW1lX2J1cnkgMAogICAgaXR4biBDcmVhdGVkQXNzZXRJRAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyNQogICAgLy8gYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICBpbnRjXzAgLy8gMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4CiAgICAvLyBuYW1lID0gR2xvYmFsU3RhdGUoeyBpbml0aWFsVmFsdWU6IEJ5dGVzKCkgfSkKICAgIGJ5dGVjXzIgLy8gIm5hbWUiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI1CiAgICAvLyBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI3CiAgICAvLyBjb25zdCBhc3NldDJfdHhuID0gYXNzZXRQYXJhbXMuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIGZyYW1lX2RpZyAyCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0UmVzZXJ2ZQogICAgZnJhbWVfZGlnIDEKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRNYW5hZ2VyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3CiAgICAvLyBkZWNpbWFsczogMywKICAgIGludGNfMyAvLyAzCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0RGVjaW1hbHMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTYKICAgIC8vIHVuaXROYW1lOiAndW5pdCcsCiAgICBieXRlYyA0IC8vICJ1bml0IgogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFVuaXROYW1lCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TmFtZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNAogICAgLy8gdG90YWw6IDEwMDAsCiAgICBpbnRjIDQgLy8gMTAwMAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFRvdGFsCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzLTIwCiAgICAvLyBjb25zdCBhc3NldFBhcmFtcyA9IGl0eG4uYXNzZXRDb25maWcoewogICAgLy8gICB0b3RhbDogMTAwMCwKICAgIC8vICAgYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICAvLyAgIHVuaXROYW1lOiAndW5pdCcsCiAgICAvLyAgIGRlY2ltYWxzOiAzLAogICAgLy8gICBtYW5hZ2VyOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vICAgcmVzZXJ2ZTogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyB9KQogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQoKdGVzdDFfbmV4dF90eG5AMjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjcKICAgIC8vIGNvbnN0IGFzc2V0Ml90eG4gPSBhc3NldFBhcmFtcy5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gQ29uZmlnQXNzZXROYW1lCiAgICBpdHhuIENyZWF0ZWRBc3NldElECiAgICBzd2FwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI5CiAgICAvLyBhc3NlcnQoYXNzZXQxX3R4bi5hc3NldE5hbWUgPT09IEJ5dGVzKCdBU1QxJyksICdhc3NldDFfdHhuIGlzIGNvcnJlY3QnKQogICAgZnJhbWVfZGlnIDAKICAgIGJ5dGVjIDYgLy8gIkFTVDEiCiAgICA9PQogICAgYXNzZXJ0IC8vIGFzc2V0MV90eG4gaXMgY29ycmVjdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozMAogICAgLy8gYXNzZXJ0KGFzc2V0Ml90eG4uYXNzZXROYW1lID09PSBCeXRlcygnQVNUMicpLCAnYXNzZXQyX3R4biBpcyBjb3JyZWN0JykKICAgIGJ5dGVjIDcgLy8gIkFTVDIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGFzc2V0Ml90eG4gaXMgY29ycmVjdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozMQogICAgLy8gYXNzZXJ0KGFzc2V0MV90eG4uY3JlYXRlZEFzc2V0Lm5hbWUgPT09IEJ5dGVzKCdBU1QxJyksICdjcmVhdGVkIGFzc2V0IDEgaXMgY29ycmVjdCcpCiAgICBzd2FwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TmFtZQogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgYnl0ZWMgNiAvLyAiQVNUMSIKICAgID09CiAgICBhc3NlcnQgLy8gY3JlYXRlZCBhc3NldCAxIGlzIGNvcnJlY3QKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzIKICAgIC8vIGFzc2VydChhc3NldDJfdHhuLmNyZWF0ZWRBc3NldC5uYW1lID09PSBCeXRlcygnQVNUMicpLCAnY3JlYXRlZCBhc3NldCAyIGlzIGNvcnJlY3QnKQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE5hbWUKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIGJ5dGVjIDcgLy8gIkFTVDIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNyZWF0ZWQgYXNzZXQgMiBpcyBjb3JyZWN0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQ0CiAgICAvLyBjb25zdCBbYXBwQ3JlYXRlVHhuLCBhc3NldDNfdHhuXSA9IGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fYmVnaW4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzQtMzgKICAgIC8vIGNvbnN0IGFwcENyZWF0ZVBhcmFtcyA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgZmVlOiAwLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjM3CiAgICAvLyBmZWU6IDAsCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QxX25leHRfdHhuQDM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQ0CiAgICAvLyBjb25zdCBbYXBwQ3JlYXRlVHhuLCBhc3NldDNfdHhuXSA9IGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fbmV4dAogICAgZnJhbWVfZGlnIDIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRSZXNlcnZlCiAgICBmcmFtZV9kaWcgMQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE1hbmFnZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcKICAgIC8vIGRlY2ltYWxzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXREZWNpbWFscwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNgogICAgLy8gdW5pdE5hbWU6ICd1bml0JywKICAgIGJ5dGVjIDQgLy8gInVuaXQiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VW5pdE5hbWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDEKICAgIC8vIGFzc2V0TmFtZTogJ0FTVDMnLAogICAgYnl0ZWMgOCAvLyAiQVNUMyIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0CiAgICAvLyB0b3RhbDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMtMjAKICAgIC8vIGNvbnN0IGFzc2V0UGFyYW1zID0gaXR4bi5hc3NldENvbmZpZyh7CiAgICAvLyAgIHRvdGFsOiAxMDAwLAogICAgLy8gICBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIC8vICAgdW5pdE5hbWU6ICd1bml0JywKICAgIC8vICAgZGVjaW1hbHM6IDMsCiAgICAvLyAgIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vIH0pCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0MV9uZXh0X3R4bkA0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0NAogICAgLy8gY29uc3QgW2FwcENyZWF0ZVR4biwgYXNzZXQzX3R4bl0gPSBpdHhuLnN1Ym1pdEdyb3VwKGFwcENyZWF0ZVBhcmFtcywgYXNzZXRQYXJhbXMpCiAgICBpdHhuX3N1Ym1pdAogICAgZ2l0eG4gMCBDcmVhdGVkQXBwbGljYXRpb25JRAogICAgaXR4biBDb25maWdBc3NldE5hbWUKICAgIHN3YXAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDYKICAgIC8vIGFzc2VydChhcHBDcmVhdGVUeG4uY3JlYXRlZEFwcCwgJ2FwcCBpcyBjcmVhdGVkJykKICAgIGFzc2VydCAvLyBhcHAgaXMgY3JlYXRlZAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0NwogICAgLy8gYXNzZXJ0KGFzc2V0M190eG4uYXNzZXROYW1lID09PSBCeXRlcygnQVNUMycpLCAnYXNzZXQzX3R4biBpcyBjb3JyZWN0JykKICAgIGJ5dGVjIDggLy8gIkFTVDMiCiAgICA9PQogICAgYXNzZXJ0IC8vIGFzc2V0M190eG4gaXMgY29ycmVjdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1NQogICAgLy8gaXR4bi5zdWJtaXRHcm91cChhcHBDcmVhdGVQYXJhbXMsIGFzc2V0UGFyYW1zKQogICAgaXR4bl9iZWdpbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1MAogICAgLy8gbm90ZTogJzNyZCcsCiAgICBwdXNoaW50IDEgLy8gMQogICAgZHVwCiAgICA+PQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1NQogICAgLy8gaXR4bi5zdWJtaXRHcm91cChhcHBDcmVhdGVQYXJhbXMsIGFzc2V0UGFyYW1zKQogICAgYnogdGVzdDFfbmV4dF9maWVsZEA2Cgp0ZXN0MV9zZXRfTm90ZV8wX3RvXzBANToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTAKICAgIC8vIG5vdGU6ICczcmQnLAogICAgYnl0ZWMgMTIgLy8gIjNyZCIKICAgIGl0eG5fZmllbGQgTm90ZQoKdGVzdDFfbmV4dF9maWVsZEA2OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozNC0zOAogICAgLy8gY29uc3QgYXBwQ3JlYXRlUGFyYW1zID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBmZWU6IDAsCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzcKICAgIC8vIGZlZTogMCwKICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQoKdGVzdDFfbmV4dF90eG5ANzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTUKICAgIC8vIGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1MwogICAgLy8gbm90ZTogJzNyZCcsCiAgICBwdXNoaW50IDEgLy8gMQogICAgZHVwCiAgICA+PQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1NQogICAgLy8gaXR4bi5zdWJtaXRHcm91cChhcHBDcmVhdGVQYXJhbXMsIGFzc2V0UGFyYW1zKQogICAgYnogdGVzdDFfbmV4dF9maWVsZEA5Cgp0ZXN0MV9zZXRfTm90ZV8wX3RvXzBAODoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTMKICAgIC8vIG5vdGU6ICczcmQnLAogICAgYnl0ZWMgMTIgLy8gIjNyZCIKICAgIGl0eG5fZmllbGQgTm90ZQoKdGVzdDFfbmV4dF9maWVsZEA5OgogICAgZnJhbWVfZGlnIDIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRSZXNlcnZlCiAgICBmcmFtZV9kaWcgMQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE1hbmFnZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcKICAgIC8vIGRlY2ltYWxzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXREZWNpbWFscwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNgogICAgLy8gdW5pdE5hbWU6ICd1bml0JywKICAgIGJ5dGVjIDQgLy8gInVuaXQiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VW5pdE5hbWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDEKICAgIC8vIGFzc2V0TmFtZTogJ0FTVDMnLAogICAgYnl0ZWMgOCAvLyAiQVNUMyIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0CiAgICAvLyB0b3RhbDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMtMjAKICAgIC8vIGNvbnN0IGFzc2V0UGFyYW1zID0gaXR4bi5hc3NldENvbmZpZyh7CiAgICAvLyAgIHRvdGFsOiAxMDAwLAogICAgLy8gICBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIC8vICAgdW5pdE5hbWU6ICd1bml0JywKICAgIC8vICAgZGVjaW1hbHM6IDMsCiAgICAvLyAgIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vIH0pCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0MV9uZXh0X3R4bkAxMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTUKICAgIC8vIGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fc3VibWl0CiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QyKCkgLT4gdm9pZDoKdGVzdDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjU4CiAgICAvLyBwdWJsaWMgdGVzdDIoKSB7CiAgICBwcm90byAwIDAKICAgIGludGNfMCAvLyAwCiAgICBkdXBuIDIKICAgIHB1c2hieXRlcyAiIgogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgcHVzaGJ5dGVzICIiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjYwCiAgICAvLyBpZiAoVHhuLm51bUFwcEFyZ3MpIHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiB0ZXN0Ml9lbHNlX2JvZHlAMgoKdGVzdDJfaWZfYm9keUAxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo2MQogICAgLy8gY29uc3QgYXJncyA9IFtCeXRlcygnMScpLCBCeXRlcygnMicpXSBhcyBjb25zdAogICAgYnl0ZWNfMyAvLyAiMSIKICAgIGZyYW1lX2J1cnkgMAogICAgYnl0ZWMgNSAvLyAiMiIKICAgIGZyYW1lX2J1cnkgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo2NQogICAgLy8gYXBwQXJnczogYXJncywKICAgIHB1c2hpbnQgMiAvLyAyCiAgICBmcmFtZV9idXJ5IDMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjYKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5Ob09wLAogICAgaW50Y18wIC8vIDAKICAgIGZyYW1lX2J1cnkgNgogICAgcHVzaGludCAxIC8vIDEKICAgIGZyYW1lX2J1cnkgNAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo2NwogICAgLy8gbm90ZTogJ3dpdGggYXJncyBwYXJhbSBzZXQnLAogICAgYnl0ZWMgMTMgLy8gIndpdGggYXJncyBwYXJhbSBzZXQiCgp0ZXN0Ml9hZnRlcl9pZl9lbHNlQDM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjc3CiAgICAvLyBjb25zdCBjcmVhdGVBcHBUeG4gPSBjcmVhdGVBcHBQYXJhbXMuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIGl0eG5fZmllbGQgTm90ZQogICAgZnJhbWVfZGlnIDQKICAgIHB1c2hpbnQgMSAvLyAxCiAgICA+PQogICAgYnogdGVzdDJfbmV4dF9maWVsZEA1Cgp0ZXN0Ml9zZXRfT25Db21wbGV0aW9uXzBfdG9fMEA0OgogICAgZnJhbWVfZGlnIDYKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCgp0ZXN0Ml9uZXh0X2ZpZWxkQDU6CiAgICBmcmFtZV9kaWcgMAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGZyYW1lX2RpZyAxCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgZnJhbWVfZGlnIDMKICAgIGludGNfMyAvLyAzCiAgICA+PQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3NwogICAgLy8gY29uc3QgY3JlYXRlQXBwVHhuID0gY3JlYXRlQXBwUGFyYW1zLnN1Ym1pdCgpCiAgICBieiB0ZXN0Ml9uZXh0X2ZpZWxkQDcKCnRlc3QyX3NldF9BcHBsaWNhdGlvbkFyZ3NfMl90b18yQDY6CiAgICBmcmFtZV9kaWcgNQogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCnRlc3QyX25leHRfZmllbGRANzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjItNjgKICAgIC8vIGNyZWF0ZUFwcFBhcmFtcyA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgYXBwQXJnczogYXJncywKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLk5vT3AsCiAgICAvLyAgIG5vdGU6ICd3aXRoIGFyZ3MgcGFyYW0gc2V0JywKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0Ml9uZXh0X3R4bkA4OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3NwogICAgLy8gY29uc3QgY3JlYXRlQXBwVHhuID0gY3JlYXRlQXBwUGFyYW1zLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBOb3RlCiAgICBmcmFtZV9idXJ5IDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzgKICAgIC8vIGFzc2VydChjcmVhdGVBcHBUeG4uYXBwQXJncygwKSA9PT0gQnl0ZXMoJzEnKSwgJ2NvcnJlY3QgYXJncyB1c2VkIDEnKQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5hcyBBcHBsaWNhdGlvbkFyZ3MKICAgIGJ5dGVjXzMgLy8gIjEiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNvcnJlY3QgYXJncyB1c2VkIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzkKICAgIC8vIGFzc2VydChjcmVhdGVBcHBUeG4uYXBwQXJncygxKSA9PT0gQnl0ZXMoJzInKSwgJ2NvcnJlY3QgYXJncyB1c2VkIDInKQogICAgcHVzaGludCAxIC8vIDEKICAgIGl0eG5hcyBBcHBsaWNhdGlvbkFyZ3MKICAgIGJ5dGVjIDUgLy8gIjIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNvcnJlY3QgYXJncyB1c2VkIDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6ODEKICAgIC8vIGlmIChUeG4ubnVtQXBwQXJncyA+IDEpIHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBwdXNoaW50IDEgLy8gMQogICAgPgogICAgYnogdGVzdDJfYWZ0ZXJfaWZfZWxzZUAxMQoKdGVzdDJfaWZfYm9keUA5OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4Mi04OQogICAgLy8gY29uc3QgY3JlYXRlQXBwVHhuMiA9IGl0eG4KICAgIC8vICAgLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgICBhcHBBcmdzOiBbQnl0ZXMoJzQyJyldLAogICAgLy8gICB9KQogICAgLy8gICAuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6ODcKICAgIC8vIGFwcEFyZ3M6IFtCeXRlcygnNDInKV0sCiAgICBieXRlYyAxNCAvLyAiNDIiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4NgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgyLTg4CiAgICAvLyBjb25zdCBjcmVhdGVBcHBUeG4yID0gaXR4bgogICAgLy8gICAuYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgICBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICAgIGFwcEFyZ3M6IFtCeXRlcygnNDInKV0sCiAgICAvLyAgIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0Ml9uZXh0X3R4bkAxMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6ODItODkKICAgIC8vIGNvbnN0IGNyZWF0ZUFwcFR4bjIgPSBpdHhuCiAgICAvLyAgIC5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICAgIGFwcHJvdmFsUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgICAgYXBwQXJnczogW0J5dGVzKCc0MicpXSwKICAgIC8vICAgfSkKICAgIC8vICAgLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5MAogICAgLy8gYXNzZXJ0KGNyZWF0ZUFwcFR4bjIuYXBwQXJncygwKSA9PT0gQnl0ZXMoJzQyJyksICdjb3JyZWN0IGFyZ3MgdXNlZCAyJykKICAgIGludGNfMCAvLyAwCiAgICBpdHhuYXMgQXBwbGljYXRpb25BcmdzCiAgICBieXRlYyAxNCAvLyAiNDIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNvcnJlY3QgYXJncyB1c2VkIDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTEKICAgIC8vIGFzc2VydChjcmVhdGVBcHBUeG4ubm90ZSA9PT0gQnl0ZXMoJ3dpdGggYXJncyBwYXJhbSBzZXQnKSkKICAgIGZyYW1lX2RpZyAyCiAgICBieXRlYyAxMyAvLyAid2l0aCBhcmdzIHBhcmFtIHNldCIKICAgID09CiAgICBhc3NlcnQKCnRlc3QyX2FmdGVyX2lmX2Vsc2VAMTE6CiAgICByZXRzdWIKCnRlc3QyX2Vsc2VfYm9keUAyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3MwogICAgLy8gYXBwQXJnczogW0J5dGVzKCczJyksICc0JywgQnl0ZXMoJzUnKV0sCiAgICBieXRlYyA5IC8vICIzIgogICAgZnJhbWVfYnVyeSAwCiAgICBieXRlYyAxMCAvLyAiNCIKICAgIGZyYW1lX2J1cnkgMQogICAgYnl0ZWMgMTEgLy8gIjUiCiAgICBmcmFtZV9idXJ5IDUKICAgIGludGNfMyAvLyAzCiAgICBmcmFtZV9idXJ5IDMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzQKICAgIC8vIG5vdGU6ICdubyBhcmdzIHBhcmFtIHNldCcsCiAgICBwdXNoYnl0ZXMgIm5vIGFyZ3MgcGFyYW0gc2V0IgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3MAogICAgLy8gY3JlYXRlQXBwUGFyYW1zID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgaW50Y18wIC8vIDAKICAgIGZyYW1lX2J1cnkgNAogICAgYiB0ZXN0Ml9hZnRlcl9pZl9lbHNlQDMKCgovLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzKCkgLT4gdm9pZDoKdGVzdDM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk1CiAgICAvLyBwdWJsaWMgdGVzdDMoKSB7CiAgICBwcm90byAwIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTM0LTE1MQogICAgLy8gY29uc3QgW2FwcDEsIGFwcDIsIGFwcDMsIGFwcDQsIGFwcDUsIGFwcDYsIGFwcDcsIGFwcDgsIGFwcDksIGFwcDEwLCBhcHAxMSwgYXBwMTIsIGFwcDEzLCBhcHAxNCwgYXBwMTUsIGFwcDE2XSA9IGl0eG4uc3VibWl0R3JvdXAoCiAgICAvLyAgIGFwcFR4bjEsCiAgICAvLyAgIGFwcFR4bjIsCiAgICAvLyAgIGFwcFR4bjMsCiAgICAvLyAgIGFwcFR4bjQsCiAgICAvLyAgIGFwcFR4bjUsCiAgICAvLyAgIGFwcFR4bjYsCiAgICAvLyAgIGFwcFR4bjcsCiAgICAvLyAgIGFwcFR4bjgsCiAgICAvLyAgIGFwcFR4bjksCiAgICAvLyAgIGFwcFR4bjEwLAogICAgLy8gICBhcHBUeG4xMSwKICAgIC8vICAgYXBwVHhuMTIsCiAgICAvLyAgIGFwcFR4bjEzLAogICAgLy8gICBhcHBUeG4xNCwKICAgIC8vICAgYXBwVHhuMTUsCiAgICAvLyAgIGFwcFR4bjE2LAogICAgLy8gKQogICAgaXR4bl9iZWdpbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDAKICAgIC8vIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIGJ5dGVjXzMgLy8gIjEiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QzX25leHRfdHhuQDE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzNgogICAgLy8gYXBwVHhuMiwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDQKICAgIC8vIGFwcFR4bjIuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcyJyldIH0pCiAgICBieXRlYyA1IC8vICIyIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0M19uZXh0X3R4bkAyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMzcKICAgIC8vIGFwcFR4bjMsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTA2CiAgICAvLyBhcHBUeG4zLnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMycpXSB9KQogICAgYnl0ZWMgOSAvLyAiMyIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQoKdGVzdDNfbmV4dF90eG5AMzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTM4CiAgICAvLyBhcHBUeG40LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwOAogICAgLy8gYXBwVHhuNC5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzQnKV0gfSkKICAgIGJ5dGVjIDEwIC8vICI0IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0M19uZXh0X3R4bkA0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMzkKICAgIC8vIGFwcFR4bjUsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEwCiAgICAvLyBhcHBUeG41LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnNScpXSB9KQogICAgYnl0ZWMgMTEgLy8gIjUiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QzX25leHRfdHhuQDU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0MAogICAgLy8gYXBwVHhuNiwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTIKICAgIC8vIGFwcFR4bjYuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc2JyldIH0pCiAgICBwdXNoYnl0ZXMgIjYiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QzX25leHRfdHhuQDY6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0MQogICAgLy8gYXBwVHhuNywKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTQKICAgIC8vIGFwcFR4bjcuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc3JyldIH0pCiAgICBwdXNoYnl0ZXMgIjciCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QzX25leHRfdHhuQDc6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0MgogICAgLy8gYXBwVHhuOCwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTYKICAgIC8vIGFwcFR4bjguc2V0KHsgYXBwQXJnczogW0J5dGVzKCc4JyldIH0pCiAgICBwdXNoYnl0ZXMgIjgiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QzX25leHRfdHhuQDg6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0MwogICAgLy8gYXBwVHhuOSwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTgKICAgIC8vIGFwcFR4bjkuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc5JyldIH0pCiAgICBwdXNoYnl0ZXMgIjkiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QzX25leHRfdHhuQDk6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0NAogICAgLy8gYXBwVHhuMTAsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTIwCiAgICAvLyBhcHBUeG4xMC5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzEwJyldIH0pCiAgICBieXRlYyAxNSAvLyAiMTAiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QzX25leHRfdHhuQDEwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDUKICAgIC8vIGFwcFR4bjExLAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEyMgogICAgLy8gYXBwVHhuMTEuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcxMScpXSB9KQogICAgYnl0ZWMgMTYgLy8gIjExIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0M19uZXh0X3R4bkAxMToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQ2CiAgICAvLyBhcHBUeG4xMiwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMjQKICAgIC8vIGFwcFR4bjEyLnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTInKV0gfSkKICAgIGJ5dGVjIDE3IC8vICIxMiIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQoKdGVzdDNfbmV4dF90eG5AMTI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0NwogICAgLy8gYXBwVHhuMTMsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTI2CiAgICAvLyBhcHBUeG4xMy5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzEzJyldIH0pCiAgICBieXRlYyAxOCAvLyAiMTMiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QzX25leHRfdHhuQDEzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDgKICAgIC8vIGFwcFR4bjE0LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUKICAgIC8vIGNvbnN0IEFQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTgxMDEnKQogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQKICAgIC8vIGNvbnN0IExPR18xU1RfQVJHX0FORF9BUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDkzNjFBMDBCMDgxMDEnKQogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEyOAogICAgLy8gYXBwVHhuMTQuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcxNCcpXSB9KQogICAgYnl0ZWMgMTkgLy8gIjE0IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTkKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5Ni0xMDEKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0M19uZXh0X3R4bkAxNDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQ5CiAgICAvLyBhcHBUeG4xNSwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0CiAgICAvLyBjb25zdCBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5MzYxQTAwQjA4MTAxJykKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMzAKICAgIC8vIGFwcFR4bjE1LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTUnKV0gfSkKICAgIGJ5dGVjIDIwIC8vICIxNSIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTYtMTAxCiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQoKdGVzdDNfbmV4dF90eG5AMTU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1MAogICAgLy8gYXBwVHhuMTYsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NAogICAgLy8gY29uc3QgTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUgPSBCeXRlcy5mcm9tSGV4KCcwOTM2MUEwMEIwODEwMScpCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMyCiAgICAvLyBhcHBUeG4xNi5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzE2JyldIH0pCiAgICBieXRlYyAyMSAvLyAiMTYiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk2LTEwMQogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKCnRlc3QzX25leHRfdHhuQDE2OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMzQtMTUxCiAgICAvLyBjb25zdCBbYXBwMSwgYXBwMiwgYXBwMywgYXBwNCwgYXBwNSwgYXBwNiwgYXBwNywgYXBwOCwgYXBwOSwgYXBwMTAsIGFwcDExLCBhcHAxMiwgYXBwMTMsIGFwcDE0LCBhcHAxNSwgYXBwMTZdID0gaXR4bi5zdWJtaXRHcm91cCgKICAgIC8vICAgYXBwVHhuMSwKICAgIC8vICAgYXBwVHhuMiwKICAgIC8vICAgYXBwVHhuMywKICAgIC8vICAgYXBwVHhuNCwKICAgIC8vICAgYXBwVHhuNSwKICAgIC8vICAgYXBwVHhuNiwKICAgIC8vICAgYXBwVHhuNywKICAgIC8vICAgYXBwVHhuOCwKICAgIC8vICAgYXBwVHhuOSwKICAgIC8vICAgYXBwVHhuMTAsCiAgICAvLyAgIGFwcFR4bjExLAogICAgLy8gICBhcHBUeG4xMiwKICAgIC8vICAgYXBwVHhuMTMsCiAgICAvLyAgIGFwcFR4bjE0LAogICAgLy8gICBhcHBUeG4xNSwKICAgIC8vICAgYXBwVHhuMTYsCiAgICAvLyApCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTMKICAgIC8vIGFzc2VydChhcHAxLmxvZ3MoMCkgPT09IEJ5dGVzKCcxJykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyAwIExvZ3MKICAgIGJ5dGVjXzMgLy8gIjEiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1NAogICAgLy8gYXNzZXJ0KGFwcDIubG9ncygwKSA9PT0gQnl0ZXMoJzInKSkKICAgIGludGNfMCAvLyAwCiAgICBnaXR4bmFzIDEgTG9ncwogICAgYnl0ZWMgNSAvLyAiMiIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU1CiAgICAvLyBhc3NlcnQoYXBwMy5sb2dzKDApID09PSBCeXRlcygnMycpKQogICAgaW50Y18wIC8vIDAKICAgIGdpdHhuYXMgMiBMb2dzCiAgICBieXRlYyA5IC8vICIzIgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTYKICAgIC8vIGFzc2VydChhcHA0LmxvZ3MoMCkgPT09IEJ5dGVzKCc0JykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyAzIExvZ3MKICAgIGJ5dGVjIDEwIC8vICI0IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTcKICAgIC8vIGFzc2VydChhcHA1LmxvZ3MoMCkgPT09IEJ5dGVzKCc1JykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyA0IExvZ3MKICAgIGJ5dGVjIDExIC8vICI1IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTgKICAgIC8vIGFzc2VydChhcHA2LmxvZ3MoMCkgPT09IEJ5dGVzKCc2JykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyA1IExvZ3MKICAgIHB1c2hieXRlcyAiNiIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU5CiAgICAvLyBhc3NlcnQoYXBwNy5sb2dzKDApID09PSBCeXRlcygnNycpKQogICAgaW50Y18wIC8vIDAKICAgIGdpdHhuYXMgNiBMb2dzCiAgICBwdXNoYnl0ZXMgIjciCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2MAogICAgLy8gYXNzZXJ0KGFwcDgubG9ncygwKSA9PT0gQnl0ZXMoJzgnKSkKICAgIGludGNfMCAvLyAwCiAgICBnaXR4bmFzIDcgTG9ncwogICAgcHVzaGJ5dGVzICI4IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjEKICAgIC8vIGFzc2VydChhcHA5LmxvZ3MoMCkgPT09IEJ5dGVzKCc5JykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyA4IExvZ3MKICAgIHB1c2hieXRlcyAiOSIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTYyCiAgICAvLyBhc3NlcnQoYXBwMTAubG9ncygwKSA9PT0gQnl0ZXMoJzEwJykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyA5IExvZ3MKICAgIGJ5dGVjIDE1IC8vICIxMCIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTYzCiAgICAvLyBhc3NlcnQoYXBwMTEubG9ncygwKSA9PT0gQnl0ZXMoJzExJykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyAxMCBMb2dzCiAgICBieXRlYyAxNiAvLyAiMTEiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2NAogICAgLy8gYXNzZXJ0KGFwcDEyLmxvZ3MoMCkgPT09IEJ5dGVzKCcxMicpKQogICAgaW50Y18wIC8vIDAKICAgIGdpdHhuYXMgMTEgTG9ncwogICAgYnl0ZWMgMTcgLy8gIjEyIgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjUKICAgIC8vIGFzc2VydChhcHAxMy5sb2dzKDApID09PSBCeXRlcygnMTMnKSkKICAgIGludGNfMCAvLyAwCiAgICBnaXR4bmFzIDEyIExvZ3MKICAgIGJ5dGVjIDE4IC8vICIxMyIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTY2CiAgICAvLyBhc3NlcnQoYXBwMTQubG9ncygwKSA9PT0gQnl0ZXMoJzE0JykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyAxMyBMb2dzCiAgICBieXRlYyAxOSAvLyAiMTQiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2NwogICAgLy8gYXNzZXJ0KGFwcDE1LmxvZ3MoMCkgPT09IEJ5dGVzKCcxNScpKQogICAgaW50Y18wIC8vIDAKICAgIGdpdHhuYXMgMTQgTG9ncwogICAgYnl0ZWMgMjAgLy8gIjE1IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjgKICAgIC8vIGFzc2VydChhcHAxNi5sb2dzKDApID09PSBCeXRlcygnMTYnKSkKICAgIGludGNfMCAvLyAwCiAgICBpdHhuYXMgTG9ncwogICAgYnl0ZWMgMjEgLy8gIjE2IgogICAgPT0KICAgIGFzc2VydAogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0NCgpIC0+IHZvaWQ6CnRlc3Q0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzEKICAgIC8vIHB1YmxpYyB0ZXN0NCgpIHsKICAgIHByb3RvIDAgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzIKICAgIC8vIGNvbnN0IGxvdHNPZkJ5dGVzID0gb3AuYnplcm8oMjA0NCkKICAgIHB1c2hpbnQgMjA0NCAvLyAyMDQ0CiAgICBiemVybwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzQKICAgIC8vIGNvbnN0IGFwcHJvdmFsMiA9IEJ5dGVzLmZyb21IZXgoJzgwJyArICdGQzBmJykKICAgIHB1c2hieXRlcyAweDgwZmMwZgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzQtMTc1CiAgICAvLyBjb25zdCBhcHByb3ZhbDIgPSBCeXRlcy5mcm9tSGV4KCc4MCcgKyAnRkMwZicpCiAgICAvLyAgIC5jb25jYXQobG90c09mQnl0ZXMpCiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTc2CiAgICAvLyAuY29uY2F0KEJ5dGVzLmZyb21IZXgoJzQ4JykpCiAgICBwdXNoYnl0ZXMgMHg0OAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzQtMTc2CiAgICAvLyBjb25zdCBhcHByb3ZhbDIgPSBCeXRlcy5mcm9tSGV4KCc4MCcgKyAnRkMwZicpCiAgICAvLyAgIC5jb25jYXQobG90c09mQnl0ZXMpCiAgICAvLyAgIC5jb25jYXQoQnl0ZXMuZnJvbUhleCgnNDgnKSkKICAgIGNvbmNhdAogICAgZHVwbiAzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3OQogICAgLy8gYXBwcm92YWxQcm9ncmFtOiBbYXBwcm92YWwxLCBhcHByb3ZhbDIsIGFwcHJvdmFsMiwgYXBwcm92YWwyXSwKICAgIGNvdmVyIDIKICAgIGNvdmVyIDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg1CiAgICAvLyBjb25zdCBhcHAxID0gYXBwVHhuMS5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxODMKICAgIC8vIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTgyCiAgICAvLyBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICBieXRlY18zIC8vICIxIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTgxCiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTc4LTE4NAogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBbYXBwcm92YWwxLCBhcHByb3ZhbDIsIGFwcHJvdmFsMiwgYXBwcm92YWwyXSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gICBleHRyYVByb2dyYW1QYWdlczogMywKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCgp0ZXN0NF9uZXh0X3R4bkAxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxODUKICAgIC8vIGNvbnN0IGFwcDEgPSBhcHBUeG4xLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBFeHRyYVByb2dyYW1QYWdlcwogICAgaXR4biBOdW1BcHByb3ZhbFByb2dyYW1QYWdlcwogICAgc3dhcAogICAgaXR4biBOdW1DbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICBjb3ZlciAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4NgogICAgLy8gYXNzZXJ0KGFwcDEuZXh0cmFQcm9ncmFtUGFnZXMgPT09IDMsICdleHRyYSBwYWdlcyA9IDMnKQogICAgaW50Y18zIC8vIDMKICAgID09CiAgICBhc3NlcnQgLy8gZXh0cmEgcGFnZXMgPSAzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4NwogICAgLy8gYXNzZXJ0KGFwcDEubnVtQXBwcm92YWxQcm9ncmFtUGFnZXMgPT09IDIsICdhcHByb3ZhbCBwYWdlcyA9IDInKQogICAgcHVzaGludCAyIC8vIDIKICAgID09CiAgICBhc3NlcnQgLy8gYXBwcm92YWwgcGFnZXMgPSAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4OAogICAgLy8gYXNzZXJ0KGFwcDEuYXBwcm92YWxQcm9ncmFtUGFnZXMoMCkgPT09IGFwcHJvdmFsMS5jb25jYXQoYXBwcm92YWwyKS5jb25jYXQoYXBwcm92YWwyLnNsaWNlKDAsIC0zKSksICdleHBlY3RlZCBhcHByb3ZhbCBwYWdlIDAnKQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5hcyBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1CiAgICAvLyBjb25zdCBBUFBST1ZFID0gQnl0ZXMuZnJvbUhleCgnMDk4MTAxJykKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg4CiAgICAvLyBhc3NlcnQoYXBwMS5hcHByb3ZhbFByb2dyYW1QYWdlcygwKSA9PT0gYXBwcm92YWwxLmNvbmNhdChhcHByb3ZhbDIpLmNvbmNhdChhcHByb3ZhbDIuc2xpY2UoMCwgLTMpKSwgJ2V4cGVjdGVkIGFwcHJvdmFsIHBhZ2UgMCcpCiAgICB1bmNvdmVyIDMKICAgIGR1cAogICAgY292ZXIgMgogICAgY29uY2F0CiAgICBzd2FwCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDAKICAgIGRpZyAxCiAgICA+PQogICAgaW50Y18wIC8vIDAKICAgIGRpZyAyCiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgc3dhcAogICAgaW50Y18zIC8vIDMKICAgIGRpZyAxCiAgICA+PQogICAgaW50Y18zIC8vIDMKICAgIGRpZyAyCiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgLQogICAgZHVwCiAgICBkaWcgMgogICAgPAogICAgc3dhcAogICAgZGlnIDIKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBkaWcgMgogICAgdW5jb3ZlciAyCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIHVuY292ZXIgMgogICAgc3dhcAogICAgY29uY2F0CiAgICB1bmNvdmVyIDIKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgYXBwcm92YWwgcGFnZSAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4OQogICAgLy8gYXNzZXJ0KGFwcDEuYXBwcm92YWxQcm9ncmFtUGFnZXMoMSkgPT09IGFwcHJvdmFsMi5zbGljZSgtMykuY29uY2F0KGFwcHJvdmFsMiksICdleHBlY3RlZCBhcHByb3ZhbCBwYWdlIDEnKQogICAgcHVzaGludCAxIC8vIDEKICAgIGl0eG5hcyBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgc3dhcAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMyAvLyAzCiAgICBkaWcgMQogICAgPj0KICAgIGludGNfMyAvLyAzCiAgICBkaWcgMgogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIGRpZyAxCiAgICBzd2FwCiAgICAtCiAgICBkaWcgMgogICAgc3dhcAogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBzd2FwCiAgICBjb25jYXQKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgYXBwcm92YWwgcGFnZSAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5MAogICAgLy8gYXNzZXJ0KGFwcDEubnVtQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcyA9PT0gMSwgJ2NsZWFyIHN0YXRlIHBhZ2VzID0gMScpCiAgICBwdXNoaW50IDEgLy8gMQogICAgPT0KICAgIGFzc2VydCAvLyBjbGVhciBzdGF0ZSBwYWdlcyA9IDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTkxCiAgICAvLyBhc3NlcnQoYXBwMS5jbGVhclN0YXRlUHJvZ3JhbVBhZ2VzKDApID09PSBBUFBST1ZFLCAnZXhwZWN0ZWQgY2xlYXIgc3RhdGUgcGFnZScpCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bmFzIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NQogICAgLy8gY29uc3QgQVBQUk9WRSA9IEJ5dGVzLmZyb21IZXgoJzA5ODEwMScpCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5MQogICAgLy8gYXNzZXJ0KGFwcDEuY2xlYXJTdGF0ZVByb2dyYW1QYWdlcygwKSA9PT0gQVBQUk9WRSwgJ2V4cGVjdGVkIGNsZWFyIHN0YXRlIHBhZ2UnKQogICAgPT0KICAgIGFzc2VydCAvLyBleHBlY3RlZCBjbGVhciBzdGF0ZSBwYWdlCiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0Ll9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZSgpIC0+IHZvaWQ6Cl9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NwogICAgLy8gZXhwb3J0IGNsYXNzIEl0eG5EZW1vQ29udHJhY3QgZXh0ZW5kcyBDb250cmFjdCB7CiAgICBwcm90byAwIDAKICAgIHJldHN1Ygo=", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCg==" + }, + "byteCode": { + "approval": "CiAFAAYFA+gHJhYDCYEBBwk2GgCwgQEEbmFtZQExBHVuaXQBMgRBU1QxBEFTVDIEQVNUMwEzATQBNQMzcmQTd2l0aCBhcmdzIHBhcmFtIHNldAI0MgIxMAIxMQIxMgIxMwIxNAIxNQIxNjEYQAADiACQMRsiE0EAcTYaAIAEICVPkYAE8ZCFJIAE35IPN4AEPUY0XE8EjgQAOAAmABQAAiJDMRkiEkQxGCITRIgD0IEBQv/tMRkiEkQxGCITRIgB9IEBQv/bMRkiEkQxGCITRIgBKYEBQv/JMRkiEkQxGCITRIgAJYEBQv+3MRkiTI4BAANC/6sxGCISRIgELYEBQv+figAAKoAAZ4mKAAAiKicGZyIqZUQyCklOAjIKSU4DKicHZ7GyKrIpJbIjJwSyJbImIQSyIiWyECKyAbO0JowAtDwiKmVEsYsCsiqLAbIpJbIjJwSyJbImIQSyIiWyECKyAbO0JrQ8TIsAJwYSRCcHEkRMcQREJwYSRHEERCcHEkSxKLJCKLJAI7IQIrIBtosCsiqLAbIpJbIjJwSyJScIsiYhBLIiJbIQIrIBs7cAPbQmTEQnCBJEsYEBSQ9BAAQnDLIFKLJCKLJAI7IQIrIBtoEBSQ9BAAQnDLIFiwKyKosBsiklsiMnBLIlJwiyJiEEsiIlshAisgGziYoAACJHAoAASSKAADEbQQCAK4wAJwWMAYECjAMijAaBAYwEJw2xsgWLBIEBD0EABIsGshmLALIaiwGyGosDJQ9BAASLBbIaKLJCKLJAI7IQIrIBs7QFjAIixRorEkSBAcUaJwUSRDEbgQENQQAisScOshokshkoskIoskAjshAisgGzIsUaJw4SRIsCJw0SRIknCYwAJwqMAScLjAUljAOAEW5vIGFyZ3MgcGFyYW0gc2V0IowEQv9sigAAsSuyGiSyGSiyQimyQCOyECKyAbYoskIpskAnBbIaJLIZI7IQIrIBtiiyQimyQCcJshokshkjshAisgG2KLJCKbJAJwqyGiSyGSOyECKyAbYoskIpskAnC7IaJLIZI7IQIrIBtiiyQimyQIABNrIaJLIZI7IQIrIBtiiyQimyQIABN7IaJLIZI7IQIrIBtiiyQimyQIABOLIaJLIZI7IQIrIBtiiyQimyQIABObIaJLIZI7IQIrIBtiiyQimyQCcPshokshkjshAisgG2KLJCKbJAJxCyGiSyGSOyECKyAbYoskIpskAnEbIaJLIZI7IQIrIBtiiyQimyQCcSshokshkjshAisgG2KLJCKbJAJxOyGiSyGSOyECKyAbYoskIpskAnFLIaJLIZI7IQIrIBtiiyQimyQCcVshokshkjshAisgGzIsYAOisSRCLGATonBRJEIsYCOicJEkQixgM6JwoSRCLGBDonCxJEIsYFOoABNhJEIsYGOoABNxJEIsYHOoABOBJEIsYIOoABORJEIsYJOicPEkQixgo6JxASRCLGCzonERJEIsYMOicSEkQixg06JxMSRCLGDjonFBJEIsU6JxUSRImKAACB/A+vgAOA/A9MUIABSFBHA04CTgKxJbI4K7IaJLIZKLJCKLJAskCyQLJAI7IQIrIBs7Q4tEFMtENOAiUSRIECEkQixUAoTwNJTgJQTEkVIksBDyJLAk8CTUwlSwEPJUsCTwJNCUlLAgxMSwJPAk1LAk8CTwJSTwJMUE8CEkSBAcVATEkVJUsBDyVLAk8CTUsBTAlLAkxPAlJMUBJEgQESRCLFQigSRImKAACJ", + "clear": "CoEBQw==" + }, + "compilerInfo": { + "compiler": "puya", + "compilerVersion": { + "major": 4, + "minor": 2, + "patch": 1 + } + }, + "events": [], + "templateVariables": {} +} \ No newline at end of file diff --git a/tests/approvals/out/unoptimized/itxn/ItxnDemoContract.ir/ItxnDemoContract.approval.0.ssa.ir b/tests/approvals/out/unoptimized/itxn/ItxnDemoContract.ir/ItxnDemoContract.approval.0.ssa.ir index 22f0e1b1b..f2a677e10 100644 --- a/tests/approvals/out/unoptimized/itxn/ItxnDemoContract.ir/ItxnDemoContract.approval.0.ssa.ir +++ b/tests/approvals/out/unoptimized/itxn/ItxnDemoContract.ir/ItxnDemoContract.approval.0.ssa.ir @@ -1,50 +1,85 @@ -main tests/approvals/itxn.algo.ts::ItxnDemoContract.approvalProgram: - block@0: // L10 +main @algorandfoundation/algorand-typescript/arc4/index.d.ts::Contract.approvalProgram: + block@0: // L1 let reinterpret_bool%0#0: bool = (txn ApplicationID) goto reinterpret_bool%0#0 ? block@2 : block@1 block@1: // if_body_L1 tests/approvals/itxn.algo.ts::ItxnDemoContract.constructor() goto block@2 block@2: // after_if_else_L1 - let reinterpret_bool%1#0: bool = (txn NumAppArgs) - goto reinterpret_bool%1#0 ? block@3 : block@15 - block@3: // if_body_L11 - let tmp%0#0: bytes = ((txnas ApplicationArgs) 0u) - switch tmp%0#0 {"test1" => block@4, "test2" => block@6, "test3" => block@8, "test4" => block@10, * => block@12} - block@4: // switch_case_0_L13 - goto block@5 - block@5: // L13 - tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() - goto block@14 - block@6: // switch_case_1_L16 - goto block@7 - block@7: // L16 - tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() - goto block@14 - block@8: // switch_case_2_L19 - goto block@9 - block@9: // L19 - goto block@11 - block@10: // switch_case_3_L20 - goto block@11 - block@11: // L20 - goto block@14 - block@12: // switch_case_default_L12 - goto block@13 - block@13: // switch_case_next_L12 - goto block@14 - block@14: // L12 - goto block@15 - block@15: // after_if_else_L11 - return 1u + let tmp%0#0: bool = tests/approvals/itxn.algo.ts::ItxnDemoContract.__puya_arc4_router__() + return tmp%0#0 subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.constructor() -> void: block@0: // L7 (app_global_put "name" 0x) return +subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.__puya_arc4_router__() -> bool: + block@0: // L7 + let tmp%0#0: uint64 = (txn NumAppArgs) + let tmp%1#0: bool = (!= tmp%0#0 0u) + goto tmp%1#0 ? block@1 : block@8 + block@1: // abi_routing_L7 + let tmp%2#0: bytes = (txna ApplicationArgs 0) + switch tmp%2#0 {method "test1()void" => block@2, method "test2()void" => block@3, method "test3()void" => block@4, method "test4()void" => block@5, * => block@6} + block@2: // test1_route_L10 + let tmp%3#0: uint64 = (txn OnCompletion) + let tmp%4#0: bool = (== tmp%3#0 NoOp) + (assert tmp%4#0) // OnCompletion is not NoOp + let tmp%5#0: uint64 = (txn ApplicationID) + let tmp%6#0: bool = (!= tmp%5#0 0u) + (assert tmp%6#0) // can only call when not creating + tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() + return 1u + block@3: // test2_route_L58 + let tmp%7#0: uint64 = (txn OnCompletion) + let tmp%8#0: bool = (== tmp%7#0 NoOp) + (assert tmp%8#0) // OnCompletion is not NoOp + let tmp%9#0: uint64 = (txn ApplicationID) + let tmp%10#0: bool = (!= tmp%9#0 0u) + (assert tmp%10#0) // can only call when not creating + tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() + return 1u + block@4: // test3_route_L95 + let tmp%11#0: uint64 = (txn OnCompletion) + let tmp%12#0: bool = (== tmp%11#0 NoOp) + (assert tmp%12#0) // OnCompletion is not NoOp + let tmp%13#0: uint64 = (txn ApplicationID) + let tmp%14#0: bool = (!= tmp%13#0 0u) + (assert tmp%14#0) // can only call when not creating + tests/approvals/itxn.algo.ts::ItxnDemoContract.test3() + return 1u + block@5: // test4_route_L171 + let tmp%15#0: uint64 = (txn OnCompletion) + let tmp%16#0: bool = (== tmp%15#0 NoOp) + (assert tmp%16#0) // OnCompletion is not NoOp + let tmp%17#0: uint64 = (txn ApplicationID) + let tmp%18#0: bool = (!= tmp%17#0 0u) + (assert tmp%18#0) // can only call when not creating + tests/approvals/itxn.algo.ts::ItxnDemoContract.test4() + return 1u + block@6: // switch_case_default_L7 + goto block@7 + block@7: // switch_case_next_L7 + goto block@12 + block@8: // bare_routing_L7 + let tmp%19#0: uint64 = (txn OnCompletion) + switch tmp%19#0 {0u => block@9, * => block@10} + block@9: // __algots__.defaultCreate_L7 + let tmp%20#0: uint64 = (txn ApplicationID) + let tmp%21#0: bool = (== tmp%20#0 0u) + (assert tmp%21#0) // can only call when creating + tests/approvals/itxn.algo.ts::ItxnDemoContract.__algots__.defaultCreate() + return 1u + block@10: // switch_case_default_L7 + goto block@11 + block@11: // switch_case_next_L7 + goto block@12 + block@12: // after_if_else_L7 + return 0u + subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: - block@0: // L27 + block@0: // L10 (app_global_put "name" "AST1") let assetParams#0: itxn_field_set = itxn_field_set(0) let assetParams%%param_Fee_idx_0#0: uint64 = 0u @@ -119,7 +154,7 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: ((itxn_field TypeEnum) assetParams%%param_TypeEnum_idx_0#0) ((itxn_field Fee) assetParams%%param_Fee_idx_0#0) goto block@1 - block@1: // next_txn_L40 + block@1: // next_txn_L23 itxn_submit let asset1_txn#0: itxn_group_idx = itxn_group_idx(0) let asset1_txn._is_last#0: bool = 1u @@ -199,7 +234,7 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: ((itxn_field TypeEnum) assetParams%%param_TypeEnum_idx_0#0) ((itxn_field Fee) assetParams%%param_Fee_idx_0#0) goto block@2 - block@2: // next_txn_L44 + block@2: // next_txn_L27 itxn_submit let asset2_txn#0: itxn_group_idx = itxn_group_idx(0) let asset2_txn._is_last#0: bool = 1u @@ -341,7 +376,7 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: ((itxn_field TypeEnum) appCreateParams%%param_TypeEnum_idx_0#0) ((itxn_field Fee) appCreateParams%%param_Fee_idx_0#0) goto block@3 - block@3: // next_txn_L61 + block@3: // next_txn_L44 itxn_next ((itxn_field ConfigAssetReserve) assetParams%%param_ConfigAssetReserve_idx_0#0) ((itxn_field ConfigAssetManager) assetParams%%param_ConfigAssetManager_idx_0#0) @@ -352,7 +387,7 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: ((itxn_field TypeEnum) assetParams%%param_TypeEnum_idx_0#0) ((itxn_field Fee) assetParams%%param_Fee_idx_0#0) goto block@4 - block@4: // next_txn_L61 + block@4: // next_txn_L44 itxn_submit let appCreateTxn#0: itxn_group_idx = itxn_group_idx(0) let asset3_txn#0: itxn_group_idx = itxn_group_idx(1) @@ -480,7 +515,7 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: let asset3_txn.StateProofPK#0: bytes = itxn[asset3_txn#0].StateProofPK let asset3_txn.NumApprovalProgramPages#0: uint64 = itxn[asset3_txn#0].NumApprovalProgramPages let asset3_txn.NumClearStateProgramPages#0: uint64 = itxn[asset3_txn#0].NumClearStateProgramPages - let reinterpret_bool%0#0: bool = appCreateTxn.ApplicationID#0 + let reinterpret_bool%0#0: bool = appCreateTxn.CreatedApplicationID#0 (assert reinterpret_bool%0#0) // app is created let tmp%4#0: bool = (== asset3_txn.ConfigAssetName#0 "AST3") (assert tmp%4#0) // asset3_txn is correct @@ -493,23 +528,23 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: itxn_begin let is_Note_count_gte_1%0#0: bool = (>= appCreateParams%%Note_length#1 1u) goto is_Note_count_gte_1%0#0 ? block@5 : block@6 - block@5: // set_Note_0_to_0_L72 + block@5: // set_Note_0_to_0_L55 ((itxn_field Note) appCreateParams%%param_Note_idx_0#0) goto block@6 - block@6: // next_field_L72 + block@6: // next_field_L55 ((itxn_field ClearStateProgramPages) appCreateParams%%param_ClearStateProgramPages_idx_0#0) ((itxn_field ApprovalProgramPages) appCreateParams%%param_ApprovalProgramPages_idx_0#0) ((itxn_field TypeEnum) appCreateParams%%param_TypeEnum_idx_0#0) ((itxn_field Fee) appCreateParams%%param_Fee_idx_0#0) goto block@7 - block@7: // next_txn_L72 + block@7: // next_txn_L55 itxn_next let is_Note_count_gte_1%1#0: bool = (>= assetParams%%Note_length#1 1u) goto is_Note_count_gte_1%1#0 ? block@8 : block@9 - block@8: // set_Note_0_to_0_L72 + block@8: // set_Note_0_to_0_L55 ((itxn_field Note) assetParams%%param_Note_idx_0#0) goto block@9 - block@9: // next_field_L72 + block@9: // next_field_L55 ((itxn_field ConfigAssetReserve) assetParams%%param_ConfigAssetReserve_idx_0#0) ((itxn_field ConfigAssetManager) assetParams%%param_ConfigAssetManager_idx_0#0) ((itxn_field ConfigAssetDecimals) assetParams%%param_ConfigAssetDecimals_idx_0#0) @@ -519,26 +554,26 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test1() -> void: ((itxn_field TypeEnum) assetParams%%param_TypeEnum_idx_0#0) ((itxn_field Fee) assetParams%%param_Fee_idx_0#0) goto block@10 - block@10: // next_txn_L72 + block@10: // next_txn_L55 itxn_submit return subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() -> void: - block@0: // L75 + block@0: // L58 let createAppParams%%param_OnCompletion_idx_0#2: uint64 = undefined let createAppParams%%param_ApplicationArgs_idx_2#3: bytes = undefined let reinterpret_bool%0#0: bool = (txn NumAppArgs) goto reinterpret_bool%0#0 ? block@1 : block@2 - block@1: // if_body_L77 + block@1: // if_body_L60 let (args.0#0: bytes, args.1#0: bytes) = ("1", "2") let createAppParams#0: itxn_field_set = itxn_field_set(0) let createAppParams%%param_Fee_idx_0#0: uint64 = 0u let createAppParams%%Fee_length#0: uint64 = 1u let createAppParams%%param_TypeEnum_idx_0#0: uint64 = 6u let createAppParams%%TypeEnum_length#0: uint64 = 1u - let createAppParams%%param_ApprovalProgramPages_idx_0#0: bytes = "\t\xc2\x81\x01" + let createAppParams%%param_ApprovalProgramPages_idx_0#0: bytes = 0x098101 let createAppParams%%ApprovalProgramPages_length#0: uint64 = 1u - let createAppParams%%param_ClearStateProgramPages_idx_0#0: bytes = "\t\xc2\x81\x01" + let createAppParams%%param_ClearStateProgramPages_idx_0#0: bytes = 0x098101 let createAppParams%%ClearStateProgramPages_length#0: uint64 = 1u let createAppParams%%param_ApplicationArgs_idx_0#0: bytes = args.0#0 let createAppParams%%param_ApplicationArgs_idx_1#0: bytes = args.1#0 @@ -592,15 +627,15 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() -> void: let createAppParams%%Assets_length#0: uint64 = 0u let createAppParams%%Applications_length#0: uint64 = 0u goto block@3 - block@2: // else_body_L86 + block@2: // else_body_L69 let createAppParams#1: itxn_field_set = itxn_field_set(1) let createAppParams%%param_Fee_idx_0#1: uint64 = 0u let createAppParams%%Fee_length#1: uint64 = 1u let createAppParams%%param_TypeEnum_idx_0#1: uint64 = 6u let createAppParams%%TypeEnum_length#1: uint64 = 1u - let createAppParams%%param_ApprovalProgramPages_idx_0#1: bytes = "\t\xc2\x81\x01" + let createAppParams%%param_ApprovalProgramPages_idx_0#1: bytes = 0x098101 let createAppParams%%ApprovalProgramPages_length#1: uint64 = 1u - let createAppParams%%param_ClearStateProgramPages_idx_0#1: bytes = "\t\xc2\x81\x01" + let createAppParams%%param_ClearStateProgramPages_idx_0#1: bytes = 0x098101 let createAppParams%%ClearStateProgramPages_length#1: uint64 = 1u let createAppParams%%param_ApplicationArgs_idx_0#1: bytes = "3" let createAppParams%%param_ApplicationArgs_idx_1#1: bytes = "4" @@ -654,7 +689,7 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() -> void: let createAppParams%%Assets_length#1: uint64 = 0u let createAppParams%%Applications_length#1: uint64 = 0u goto block@3 - block@3: // after_if_else_L77 + block@3: // after_if_else_L60 let createAppParams%%param_Note_idx_0#2: bytes = φ(createAppParams%%param_Note_idx_0#0 <- block@1, createAppParams%%param_Note_idx_0#1 <- block@2) let createAppParams%%OnCompletion_length#2: uint64 = φ(createAppParams%%OnCompletion_length#0 <- block@1, createAppParams%%OnCompletion_length#1 <- block@2) let createAppParams%%param_OnCompletion_idx_0#1: uint64 = φ(createAppParams%%param_OnCompletion_idx_0#0 <- block@1, createAppParams%%param_OnCompletion_idx_0#2 <- block@2) @@ -670,24 +705,24 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() -> void: ((itxn_field Note) createAppParams%%param_Note_idx_0#2) let is_OnCompletion_count_gte_1%0#0: bool = (>= createAppParams%%OnCompletion_length#2 1u) goto is_OnCompletion_count_gte_1%0#0 ? block@4 : block@5 - block@4: // set_OnCompletion_0_to_0_L94 + block@4: // set_OnCompletion_0_to_0_L77 ((itxn_field OnCompletion) createAppParams%%param_OnCompletion_idx_0#1) goto block@5 - block@5: // next_field_L94 + block@5: // next_field_L77 ((itxn_field ApplicationArgs) createAppParams%%param_ApplicationArgs_idx_0#3) ((itxn_field ApplicationArgs) createAppParams%%param_ApplicationArgs_idx_1#3) let is_ApplicationArgs_count_gte_3%0#0: bool = (>= createAppParams%%ApplicationArgs_length#3 3u) goto is_ApplicationArgs_count_gte_3%0#0 ? block@6 : block@7 - block@6: // set_ApplicationArgs_2_to_2_L94 + block@6: // set_ApplicationArgs_2_to_2_L77 ((itxn_field ApplicationArgs) createAppParams%%param_ApplicationArgs_idx_2#2) goto block@7 - block@7: // next_field_L94 + block@7: // next_field_L77 ((itxn_field ClearStateProgramPages) createAppParams%%param_ClearStateProgramPages_idx_0#4) ((itxn_field ApprovalProgramPages) createAppParams%%param_ApprovalProgramPages_idx_0#4) ((itxn_field TypeEnum) createAppParams%%param_TypeEnum_idx_0#4) ((itxn_field Fee) createAppParams%%param_Fee_idx_0#4) goto block@8 - block@8: // next_txn_L94 + block@8: // next_txn_L77 itxn_submit let createAppTxn#0: itxn_group_idx = itxn_group_idx(0) let createAppTxn._is_last#0: bool = 1u @@ -758,6 +793,2492 @@ subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test2() -> void: let tmp%2#0: bytes = itxn[createAppTxn#0].ApplicationArgs[1u] let tmp%3#0: bool = (== tmp%2#0 "2") (assert tmp%3#0) // correct args used 2 - let tmp%4#0: bool = (== createAppTxn.Note#0 "with args param set") - (assert tmp%4#0) + let tmp%4#0: uint64 = (txn NumAppArgs) + let tmp%5#0: bool = (> tmp%4#0 1u) + goto tmp%5#0 ? block@9 : block@11 + block@9: // if_body_L81 + itxn_begin + let inner_txn_params%0#0: itxn_field_set = itxn_field_set(2) + let inner_txn_params%0%%param_Fee_idx_0#0: uint64 = 0u + let inner_txn_params%0%%Fee_length#0: uint64 = 1u + let inner_txn_params%0%%param_TypeEnum_idx_0#0: uint64 = 6u + let inner_txn_params%0%%TypeEnum_length#0: uint64 = 1u + let inner_txn_params%0%%param_ApprovalProgramPages_idx_0#0: bytes = 0x098101 + let inner_txn_params%0%%ApprovalProgramPages_length#0: uint64 = 1u + let inner_txn_params%0%%param_ClearStateProgramPages_idx_0#0: bytes = 0x098101 + let inner_txn_params%0%%ClearStateProgramPages_length#0: uint64 = 1u + let inner_txn_params%0%%param_OnCompletion_idx_0#0: uint64 = 5u + let inner_txn_params%0%%OnCompletion_length#0: uint64 = 1u + let inner_txn_params%0%%param_ApplicationArgs_idx_0#0: bytes = "42" + let inner_txn_params%0%%ApplicationArgs_length#0: uint64 = 1u + let inner_txn_params%0%%Sender_length#0: uint64 = 0u + let inner_txn_params%0%%Note_length#0: uint64 = 0u + let inner_txn_params%0%%Receiver_length#0: uint64 = 0u + let inner_txn_params%0%%Amount_length#0: uint64 = 0u + let inner_txn_params%0%%CloseRemainderTo_length#0: uint64 = 0u + let inner_txn_params%0%%VotePK_length#0: uint64 = 0u + let inner_txn_params%0%%SelectionPK_length#0: uint64 = 0u + let inner_txn_params%0%%VoteFirst_length#0: uint64 = 0u + let inner_txn_params%0%%VoteLast_length#0: uint64 = 0u + let inner_txn_params%0%%VoteKeyDilution_length#0: uint64 = 0u + let inner_txn_params%0%%Type_length#0: uint64 = 0u + let inner_txn_params%0%%XferAsset_length#0: uint64 = 0u + let inner_txn_params%0%%AssetAmount_length#0: uint64 = 0u + let inner_txn_params%0%%AssetSender_length#0: uint64 = 0u + let inner_txn_params%0%%AssetReceiver_length#0: uint64 = 0u + let inner_txn_params%0%%AssetCloseTo_length#0: uint64 = 0u + let inner_txn_params%0%%ApplicationID_length#0: uint64 = 0u + let inner_txn_params%0%%ApprovalProgram_length#0: uint64 = 0u + let inner_txn_params%0%%ClearStateProgram_length#0: uint64 = 0u + let inner_txn_params%0%%RekeyTo_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAsset_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetTotal_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetDecimals_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetDefaultFrozen_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetUnitName_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetName_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetURL_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetMetadataHash_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetManager_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetReserve_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetFreeze_length#0: uint64 = 0u + let inner_txn_params%0%%ConfigAssetClawback_length#0: uint64 = 0u + let inner_txn_params%0%%FreezeAsset_length#0: uint64 = 0u + let inner_txn_params%0%%FreezeAssetAccount_length#0: uint64 = 0u + let inner_txn_params%0%%FreezeAssetFrozen_length#0: uint64 = 0u + let inner_txn_params%0%%GlobalNumUint_length#0: uint64 = 0u + let inner_txn_params%0%%GlobalNumByteSlice_length#0: uint64 = 0u + let inner_txn_params%0%%LocalNumUint_length#0: uint64 = 0u + let inner_txn_params%0%%LocalNumByteSlice_length#0: uint64 = 0u + let inner_txn_params%0%%ExtraProgramPages_length#0: uint64 = 0u + let inner_txn_params%0%%Nonparticipation_length#0: uint64 = 0u + let inner_txn_params%0%%StateProofPK_length#0: uint64 = 0u + let inner_txn_params%0%%Accounts_length#0: uint64 = 0u + let inner_txn_params%0%%Assets_length#0: uint64 = 0u + let inner_txn_params%0%%Applications_length#0: uint64 = 0u + ((itxn_field ApplicationArgs) inner_txn_params%0%%param_ApplicationArgs_idx_0#0) + ((itxn_field OnCompletion) inner_txn_params%0%%param_OnCompletion_idx_0#0) + ((itxn_field ClearStateProgramPages) inner_txn_params%0%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) inner_txn_params%0%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field TypeEnum) inner_txn_params%0%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) inner_txn_params%0%%param_Fee_idx_0#0) + goto block@10 + block@10: // next_txn_L82 + itxn_submit + let createAppTxn2#0: itxn_group_idx = itxn_group_idx(0) + let createAppTxn2._is_last#0: bool = 1u + let createAppTxn2.Sender#0: bytes = itxn[createAppTxn2#0].Sender + let createAppTxn2.Fee#0: uint64 = itxn[createAppTxn2#0].Fee + let createAppTxn2.FirstValid#0: uint64 = itxn[createAppTxn2#0].FirstValid + let createAppTxn2.FirstValidTime#0: uint64 = itxn[createAppTxn2#0].FirstValidTime + let createAppTxn2.LastValid#0: uint64 = itxn[createAppTxn2#0].LastValid + let createAppTxn2.Note#0: bytes = itxn[createAppTxn2#0].Note + let createAppTxn2.Lease#0: bytes = itxn[createAppTxn2#0].Lease + let createAppTxn2.Receiver#0: bytes = itxn[createAppTxn2#0].Receiver + let createAppTxn2.Amount#0: uint64 = itxn[createAppTxn2#0].Amount + let createAppTxn2.CloseRemainderTo#0: bytes = itxn[createAppTxn2#0].CloseRemainderTo + let createAppTxn2.VotePK#0: bytes = itxn[createAppTxn2#0].VotePK + let createAppTxn2.SelectionPK#0: bytes = itxn[createAppTxn2#0].SelectionPK + let createAppTxn2.VoteFirst#0: uint64 = itxn[createAppTxn2#0].VoteFirst + let createAppTxn2.VoteLast#0: uint64 = itxn[createAppTxn2#0].VoteLast + let createAppTxn2.VoteKeyDilution#0: uint64 = itxn[createAppTxn2#0].VoteKeyDilution + let createAppTxn2.Type#0: bytes = itxn[createAppTxn2#0].Type + let createAppTxn2.TypeEnum#0: uint64 = itxn[createAppTxn2#0].TypeEnum + let createAppTxn2.XferAsset#0: uint64 = itxn[createAppTxn2#0].XferAsset + let createAppTxn2.AssetAmount#0: uint64 = itxn[createAppTxn2#0].AssetAmount + let createAppTxn2.AssetSender#0: bytes = itxn[createAppTxn2#0].AssetSender + let createAppTxn2.AssetReceiver#0: bytes = itxn[createAppTxn2#0].AssetReceiver + let createAppTxn2.AssetCloseTo#0: bytes = itxn[createAppTxn2#0].AssetCloseTo + let createAppTxn2.GroupIndex#0: uint64 = itxn[createAppTxn2#0].GroupIndex + let createAppTxn2.TxID#0: bytes = itxn[createAppTxn2#0].TxID + let createAppTxn2.ApplicationID#0: uint64 = itxn[createAppTxn2#0].ApplicationID + let createAppTxn2.OnCompletion#0: uint64 = itxn[createAppTxn2#0].OnCompletion + let createAppTxn2.NumAppArgs#0: uint64 = itxn[createAppTxn2#0].NumAppArgs + let createAppTxn2.NumAccounts#0: uint64 = itxn[createAppTxn2#0].NumAccounts + let createAppTxn2.ApprovalProgram#0: bytes = itxn[createAppTxn2#0].ApprovalProgram + let createAppTxn2.ClearStateProgram#0: bytes = itxn[createAppTxn2#0].ClearStateProgram + let createAppTxn2.RekeyTo#0: bytes = itxn[createAppTxn2#0].RekeyTo + let createAppTxn2.ConfigAsset#0: uint64 = itxn[createAppTxn2#0].ConfigAsset + let createAppTxn2.ConfigAssetTotal#0: uint64 = itxn[createAppTxn2#0].ConfigAssetTotal + let createAppTxn2.ConfigAssetDecimals#0: uint64 = itxn[createAppTxn2#0].ConfigAssetDecimals + let createAppTxn2.ConfigAssetDefaultFrozen#0: bool = itxn[createAppTxn2#0].ConfigAssetDefaultFrozen + let createAppTxn2.ConfigAssetUnitName#0: bytes = itxn[createAppTxn2#0].ConfigAssetUnitName + let createAppTxn2.ConfigAssetName#0: bytes = itxn[createAppTxn2#0].ConfigAssetName + let createAppTxn2.ConfigAssetURL#0: bytes = itxn[createAppTxn2#0].ConfigAssetURL + let createAppTxn2.ConfigAssetMetadataHash#0: bytes = itxn[createAppTxn2#0].ConfigAssetMetadataHash + let createAppTxn2.ConfigAssetManager#0: bytes = itxn[createAppTxn2#0].ConfigAssetManager + let createAppTxn2.ConfigAssetReserve#0: bytes = itxn[createAppTxn2#0].ConfigAssetReserve + let createAppTxn2.ConfigAssetFreeze#0: bytes = itxn[createAppTxn2#0].ConfigAssetFreeze + let createAppTxn2.ConfigAssetClawback#0: bytes = itxn[createAppTxn2#0].ConfigAssetClawback + let createAppTxn2.FreezeAsset#0: uint64 = itxn[createAppTxn2#0].FreezeAsset + let createAppTxn2.FreezeAssetAccount#0: bytes = itxn[createAppTxn2#0].FreezeAssetAccount + let createAppTxn2.FreezeAssetFrozen#0: bool = itxn[createAppTxn2#0].FreezeAssetFrozen + let createAppTxn2.NumAssets#0: uint64 = itxn[createAppTxn2#0].NumAssets + let createAppTxn2.NumApplications#0: uint64 = itxn[createAppTxn2#0].NumApplications + let createAppTxn2.GlobalNumUint#0: uint64 = itxn[createAppTxn2#0].GlobalNumUint + let createAppTxn2.GlobalNumByteSlice#0: uint64 = itxn[createAppTxn2#0].GlobalNumByteSlice + let createAppTxn2.LocalNumUint#0: uint64 = itxn[createAppTxn2#0].LocalNumUint + let createAppTxn2.LocalNumByteSlice#0: uint64 = itxn[createAppTxn2#0].LocalNumByteSlice + let createAppTxn2.ExtraProgramPages#0: uint64 = itxn[createAppTxn2#0].ExtraProgramPages + let createAppTxn2.Nonparticipation#0: bool = itxn[createAppTxn2#0].Nonparticipation + let createAppTxn2.NumLogs#0: uint64 = itxn[createAppTxn2#0].NumLogs + let createAppTxn2.CreatedAssetID#0: uint64 = itxn[createAppTxn2#0].CreatedAssetID + let createAppTxn2.CreatedApplicationID#0: uint64 = itxn[createAppTxn2#0].CreatedApplicationID + let createAppTxn2.LastLog#0: bytes = itxn[createAppTxn2#0].LastLog + let createAppTxn2.StateProofPK#0: bytes = itxn[createAppTxn2#0].StateProofPK + let createAppTxn2.NumApprovalProgramPages#0: uint64 = itxn[createAppTxn2#0].NumApprovalProgramPages + let createAppTxn2.NumClearStateProgramPages#0: uint64 = itxn[createAppTxn2#0].NumClearStateProgramPages + let tmp%6#0: bytes = itxn[createAppTxn2#0].ApplicationArgs[0u] + let tmp%7#0: bool = (== tmp%6#0 "42") + (assert tmp%7#0) // correct args used 2 + let tmp%8#0: bool = (== createAppTxn.Note#0 "with args param set") + (assert tmp%8#0) + goto block@11 + block@11: // after_if_else_L81 + return + +subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test3() -> void: + block@0: // L95 + let appTxn1#0: itxn_field_set = itxn_field_set(0) + let appTxn1%%param_Fee_idx_0#0: uint64 = 0u + let appTxn1%%Fee_length#0: uint64 = 1u + let appTxn1%%param_TypeEnum_idx_0#0: uint64 = 6u + let appTxn1%%TypeEnum_length#0: uint64 = 1u + let appTxn1%%param_ApprovalProgramPages_idx_0#0: bytes = 0x09361a00b08101 + let appTxn1%%ApprovalProgramPages_length#0: uint64 = 1u + let appTxn1%%param_ClearStateProgramPages_idx_0#0: bytes = 0x098101 + let appTxn1%%ClearStateProgramPages_length#0: uint64 = 1u + let appTxn1%%param_OnCompletion_idx_0#0: uint64 = 5u + let appTxn1%%OnCompletion_length#0: uint64 = 1u + let appTxn1%%param_ApplicationArgs_idx_0#0: bytes = "1" + let appTxn1%%ApplicationArgs_length#0: uint64 = 1u + let appTxn1%%Sender_length#0: uint64 = 0u + let appTxn1%%Note_length#0: uint64 = 0u + let appTxn1%%Receiver_length#0: uint64 = 0u + let appTxn1%%Amount_length#0: uint64 = 0u + let appTxn1%%CloseRemainderTo_length#0: uint64 = 0u + let appTxn1%%VotePK_length#0: uint64 = 0u + let appTxn1%%SelectionPK_length#0: uint64 = 0u + let appTxn1%%VoteFirst_length#0: uint64 = 0u + let appTxn1%%VoteLast_length#0: uint64 = 0u + let appTxn1%%VoteKeyDilution_length#0: uint64 = 0u + let appTxn1%%Type_length#0: uint64 = 0u + let appTxn1%%XferAsset_length#0: uint64 = 0u + let appTxn1%%AssetAmount_length#0: uint64 = 0u + let appTxn1%%AssetSender_length#0: uint64 = 0u + let appTxn1%%AssetReceiver_length#0: uint64 = 0u + let appTxn1%%AssetCloseTo_length#0: uint64 = 0u + let appTxn1%%ApplicationID_length#0: uint64 = 0u + let appTxn1%%ApprovalProgram_length#0: uint64 = 0u + let appTxn1%%ClearStateProgram_length#0: uint64 = 0u + let appTxn1%%RekeyTo_length#0: uint64 = 0u + let appTxn1%%ConfigAsset_length#0: uint64 = 0u + let appTxn1%%ConfigAssetTotal_length#0: uint64 = 0u + let appTxn1%%ConfigAssetDecimals_length#0: uint64 = 0u + let appTxn1%%ConfigAssetDefaultFrozen_length#0: uint64 = 0u + let appTxn1%%ConfigAssetUnitName_length#0: uint64 = 0u + let appTxn1%%ConfigAssetName_length#0: uint64 = 0u + let appTxn1%%ConfigAssetURL_length#0: uint64 = 0u + let appTxn1%%ConfigAssetMetadataHash_length#0: uint64 = 0u + let appTxn1%%ConfigAssetManager_length#0: uint64 = 0u + let appTxn1%%ConfigAssetReserve_length#0: uint64 = 0u + let appTxn1%%ConfigAssetFreeze_length#0: uint64 = 0u + let appTxn1%%ConfigAssetClawback_length#0: uint64 = 0u + let appTxn1%%FreezeAsset_length#0: uint64 = 0u + let appTxn1%%FreezeAssetAccount_length#0: uint64 = 0u + let appTxn1%%FreezeAssetFrozen_length#0: uint64 = 0u + let appTxn1%%GlobalNumUint_length#0: uint64 = 0u + let appTxn1%%GlobalNumByteSlice_length#0: uint64 = 0u + let appTxn1%%LocalNumUint_length#0: uint64 = 0u + let appTxn1%%LocalNumByteSlice_length#0: uint64 = 0u + let appTxn1%%ExtraProgramPages_length#0: uint64 = 0u + let appTxn1%%Nonparticipation_length#0: uint64 = 0u + let appTxn1%%StateProofPK_length#0: uint64 = 0u + let appTxn1%%Accounts_length#0: uint64 = 0u + let appTxn1%%Assets_length#0: uint64 = 0u + let appTxn1%%Applications_length#0: uint64 = 0u + let appTxn2%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn2%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn2%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn2%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn2%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn2%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn2%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn2%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn2%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn2%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn2%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn2%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn2%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn2%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn2%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn2%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn2%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn2%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn2%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn2%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn2%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn2%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn2%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn2%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn2%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn2%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn2%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn2%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn2%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn2%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn2%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn2%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn2%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn2%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn2%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn2%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn2%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn2%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn2%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn2%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn2%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn2%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn2%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn2%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn2%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn2%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn2%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn2%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn2%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn2%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn2%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn2%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn2%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn2%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn2%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn2%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn2%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn2#0: itxn_field_set = itxn_field_set(1) + let appTxn2%%param_ApplicationArgs_idx_0#1: bytes = "2" + let appTxn2%%ApplicationArgs_length#1: uint64 = 1u + let appTxn3%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn3%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn3%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn3%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn3%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn3%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn3%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn3%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn3%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn3%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn3%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn3%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn3%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn3%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn3%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn3%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn3%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn3%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn3%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn3%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn3%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn3%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn3%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn3%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn3%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn3%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn3%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn3%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn3%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn3%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn3%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn3%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn3%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn3%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn3%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn3%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn3%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn3%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn3%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn3%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn3%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn3%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn3%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn3%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn3%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn3%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn3%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn3%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn3%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn3%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn3%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn3%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn3%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn3%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn3%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn3%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn3%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn3#0: itxn_field_set = itxn_field_set(2) + let appTxn3%%param_ApplicationArgs_idx_0#1: bytes = "3" + let appTxn3%%ApplicationArgs_length#1: uint64 = 1u + let appTxn4%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn4%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn4%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn4%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn4%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn4%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn4%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn4%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn4%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn4%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn4%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn4%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn4%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn4%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn4%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn4%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn4%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn4%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn4%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn4%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn4%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn4%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn4%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn4%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn4%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn4%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn4%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn4%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn4%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn4%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn4%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn4%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn4%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn4%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn4%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn4%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn4%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn4%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn4%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn4%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn4%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn4%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn4%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn4%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn4%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn4%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn4%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn4%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn4%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn4%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn4%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn4%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn4%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn4%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn4%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn4%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn4%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn4#0: itxn_field_set = itxn_field_set(3) + let appTxn4%%param_ApplicationArgs_idx_0#1: bytes = "4" + let appTxn4%%ApplicationArgs_length#1: uint64 = 1u + let appTxn5%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn5%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn5%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn5%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn5%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn5%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn5%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn5%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn5%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn5%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn5%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn5%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn5%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn5%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn5%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn5%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn5%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn5%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn5%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn5%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn5%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn5%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn5%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn5%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn5%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn5%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn5%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn5%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn5%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn5%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn5%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn5%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn5%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn5%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn5%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn5%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn5%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn5%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn5%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn5%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn5%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn5%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn5%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn5%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn5%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn5%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn5%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn5%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn5%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn5%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn5%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn5%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn5%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn5%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn5%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn5%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn5%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn5#0: itxn_field_set = itxn_field_set(4) + let appTxn5%%param_ApplicationArgs_idx_0#1: bytes = "5" + let appTxn5%%ApplicationArgs_length#1: uint64 = 1u + let appTxn6%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn6%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn6%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn6%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn6%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn6%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn6%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn6%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn6%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn6%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn6%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn6%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn6%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn6%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn6%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn6%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn6%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn6%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn6%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn6%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn6%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn6%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn6%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn6%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn6%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn6%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn6%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn6%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn6%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn6%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn6%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn6%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn6%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn6%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn6%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn6%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn6%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn6%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn6%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn6%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn6%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn6%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn6%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn6%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn6%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn6%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn6%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn6%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn6%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn6%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn6%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn6%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn6%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn6%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn6%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn6%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn6%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn6#0: itxn_field_set = itxn_field_set(5) + let appTxn6%%param_ApplicationArgs_idx_0#1: bytes = "6" + let appTxn6%%ApplicationArgs_length#1: uint64 = 1u + let appTxn7%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn7%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn7%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn7%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn7%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn7%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn7%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn7%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn7%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn7%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn7%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn7%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn7%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn7%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn7%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn7%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn7%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn7%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn7%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn7%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn7%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn7%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn7%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn7%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn7%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn7%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn7%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn7%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn7%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn7%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn7%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn7%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn7%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn7%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn7%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn7%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn7%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn7%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn7%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn7%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn7%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn7%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn7%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn7%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn7%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn7%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn7%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn7%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn7%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn7%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn7%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn7%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn7%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn7%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn7%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn7%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn7%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn7#0: itxn_field_set = itxn_field_set(6) + let appTxn7%%param_ApplicationArgs_idx_0#1: bytes = "7" + let appTxn7%%ApplicationArgs_length#1: uint64 = 1u + let appTxn8%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn8%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn8%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn8%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn8%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn8%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn8%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn8%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn8%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn8%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn8%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn8%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn8%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn8%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn8%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn8%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn8%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn8%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn8%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn8%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn8%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn8%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn8%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn8%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn8%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn8%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn8%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn8%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn8%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn8%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn8%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn8%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn8%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn8%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn8%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn8%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn8%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn8%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn8%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn8%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn8%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn8%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn8%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn8%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn8%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn8%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn8%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn8%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn8%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn8%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn8%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn8%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn8%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn8%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn8%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn8%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn8%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn8#0: itxn_field_set = itxn_field_set(7) + let appTxn8%%param_ApplicationArgs_idx_0#1: bytes = "8" + let appTxn8%%ApplicationArgs_length#1: uint64 = 1u + let appTxn9%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn9%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn9%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn9%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn9%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn9%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn9%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn9%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn9%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn9%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn9%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn9%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn9%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn9%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn9%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn9%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn9%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn9%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn9%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn9%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn9%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn9%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn9%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn9%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn9%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn9%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn9%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn9%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn9%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn9%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn9%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn9%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn9%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn9%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn9%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn9%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn9%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn9%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn9%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn9%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn9%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn9%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn9%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn9%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn9%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn9%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn9%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn9%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn9%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn9%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn9%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn9%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn9%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn9%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn9%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn9%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn9%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn9#0: itxn_field_set = itxn_field_set(8) + let appTxn9%%param_ApplicationArgs_idx_0#1: bytes = "9" + let appTxn9%%ApplicationArgs_length#1: uint64 = 1u + let appTxn10%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn10%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn10%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn10%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn10%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn10%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn10%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn10%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn10%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn10%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn10%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn10%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn10%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn10%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn10%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn10%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn10%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn10%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn10%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn10%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn10%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn10%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn10%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn10%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn10%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn10%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn10%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn10%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn10%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn10%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn10%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn10%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn10%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn10%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn10%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn10%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn10%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn10%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn10%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn10%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn10%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn10%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn10%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn10%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn10%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn10%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn10%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn10%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn10%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn10%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn10%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn10%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn10%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn10%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn10%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn10%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn10%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn10#0: itxn_field_set = itxn_field_set(9) + let appTxn10%%param_ApplicationArgs_idx_0#1: bytes = "10" + let appTxn10%%ApplicationArgs_length#1: uint64 = 1u + let appTxn11%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn11%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn11%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn11%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn11%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn11%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn11%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn11%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn11%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn11%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn11%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn11%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn11%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn11%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn11%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn11%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn11%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn11%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn11%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn11%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn11%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn11%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn11%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn11%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn11%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn11%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn11%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn11%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn11%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn11%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn11%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn11%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn11%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn11%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn11%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn11%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn11%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn11%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn11%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn11%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn11%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn11%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn11%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn11%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn11%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn11%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn11%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn11%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn11%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn11%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn11%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn11%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn11%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn11%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn11%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn11%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn11%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn11#0: itxn_field_set = itxn_field_set(10) + let appTxn11%%param_ApplicationArgs_idx_0#1: bytes = "11" + let appTxn11%%ApplicationArgs_length#1: uint64 = 1u + let appTxn12%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn12%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn12%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn12%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn12%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn12%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn12%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn12%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn12%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn12%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn12%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn12%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn12%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn12%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn12%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn12%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn12%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn12%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn12%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn12%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn12%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn12%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn12%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn12%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn12%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn12%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn12%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn12%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn12%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn12%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn12%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn12%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn12%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn12%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn12%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn12%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn12%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn12%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn12%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn12%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn12%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn12%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn12%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn12%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn12%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn12%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn12%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn12%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn12%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn12%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn12%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn12%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn12%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn12%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn12%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn12%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn12%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn12#0: itxn_field_set = itxn_field_set(11) + let appTxn12%%param_ApplicationArgs_idx_0#1: bytes = "12" + let appTxn12%%ApplicationArgs_length#1: uint64 = 1u + let appTxn13%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn13%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn13%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn13%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn13%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn13%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn13%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn13%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn13%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn13%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn13%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn13%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn13%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn13%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn13%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn13%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn13%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn13%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn13%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn13%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn13%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn13%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn13%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn13%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn13%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn13%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn13%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn13%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn13%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn13%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn13%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn13%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn13%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn13%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn13%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn13%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn13%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn13%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn13%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn13%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn13%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn13%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn13%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn13%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn13%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn13%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn13%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn13%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn13%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn13%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn13%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn13%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn13%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn13%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn13%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn13%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn13%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn13#0: itxn_field_set = itxn_field_set(12) + let appTxn13%%param_ApplicationArgs_idx_0#1: bytes = "13" + let appTxn13%%ApplicationArgs_length#1: uint64 = 1u + let appTxn14%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn14%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn14%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn14%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn14%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn14%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn14%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn14%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn14%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn14%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn14%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn14%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn14%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn14%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn14%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn14%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn14%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn14%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn14%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn14%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn14%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn14%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn14%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn14%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn14%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn14%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn14%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn14%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn14%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn14%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn14%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn14%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn14%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn14%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn14%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn14%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn14%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn14%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn14%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn14%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn14%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn14%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn14%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn14%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn14%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn14%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn14%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn14%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn14%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn14%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn14%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn14%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn14%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn14%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn14%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn14%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn14%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn14#0: itxn_field_set = itxn_field_set(13) + let appTxn14%%param_ApplicationArgs_idx_0#1: bytes = "14" + let appTxn14%%ApplicationArgs_length#1: uint64 = 1u + let appTxn15%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn15%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn15%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn15%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn15%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn15%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn15%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn15%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn15%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn15%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn15%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn15%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn15%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn15%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn15%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn15%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn15%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn15%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn15%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn15%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn15%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn15%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn15%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn15%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn15%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn15%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn15%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn15%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn15%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn15%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn15%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn15%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn15%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn15%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn15%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn15%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn15%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn15%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn15%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn15%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn15%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn15%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn15%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn15%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn15%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn15%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn15%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn15%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn15%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn15%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn15%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn15%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn15%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn15%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn15%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn15%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn15%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn15#0: itxn_field_set = itxn_field_set(14) + let appTxn15%%param_ApplicationArgs_idx_0#1: bytes = "15" + let appTxn15%%ApplicationArgs_length#1: uint64 = 1u + let appTxn16%%Sender_length#0: uint64 = appTxn1%%Sender_length#0 + let appTxn16%%param_Fee_idx_0#0: uint64 = appTxn1%%param_Fee_idx_0#0 + let appTxn16%%Fee_length#0: uint64 = appTxn1%%Fee_length#0 + let appTxn16%%Note_length#0: uint64 = appTxn1%%Note_length#0 + let appTxn16%%Receiver_length#0: uint64 = appTxn1%%Receiver_length#0 + let appTxn16%%Amount_length#0: uint64 = appTxn1%%Amount_length#0 + let appTxn16%%CloseRemainderTo_length#0: uint64 = appTxn1%%CloseRemainderTo_length#0 + let appTxn16%%VotePK_length#0: uint64 = appTxn1%%VotePK_length#0 + let appTxn16%%SelectionPK_length#0: uint64 = appTxn1%%SelectionPK_length#0 + let appTxn16%%VoteFirst_length#0: uint64 = appTxn1%%VoteFirst_length#0 + let appTxn16%%VoteLast_length#0: uint64 = appTxn1%%VoteLast_length#0 + let appTxn16%%VoteKeyDilution_length#0: uint64 = appTxn1%%VoteKeyDilution_length#0 + let appTxn16%%Type_length#0: uint64 = appTxn1%%Type_length#0 + let appTxn16%%param_TypeEnum_idx_0#0: uint64 = appTxn1%%param_TypeEnum_idx_0#0 + let appTxn16%%TypeEnum_length#0: uint64 = appTxn1%%TypeEnum_length#0 + let appTxn16%%XferAsset_length#0: uint64 = appTxn1%%XferAsset_length#0 + let appTxn16%%AssetAmount_length#0: uint64 = appTxn1%%AssetAmount_length#0 + let appTxn16%%AssetSender_length#0: uint64 = appTxn1%%AssetSender_length#0 + let appTxn16%%AssetReceiver_length#0: uint64 = appTxn1%%AssetReceiver_length#0 + let appTxn16%%AssetCloseTo_length#0: uint64 = appTxn1%%AssetCloseTo_length#0 + let appTxn16%%ApplicationID_length#0: uint64 = appTxn1%%ApplicationID_length#0 + let appTxn16%%param_OnCompletion_idx_0#0: uint64 = appTxn1%%param_OnCompletion_idx_0#0 + let appTxn16%%OnCompletion_length#0: uint64 = appTxn1%%OnCompletion_length#0 + let appTxn16%%ApprovalProgram_length#0: uint64 = appTxn1%%ApprovalProgram_length#0 + let appTxn16%%ClearStateProgram_length#0: uint64 = appTxn1%%ClearStateProgram_length#0 + let appTxn16%%RekeyTo_length#0: uint64 = appTxn1%%RekeyTo_length#0 + let appTxn16%%ConfigAsset_length#0: uint64 = appTxn1%%ConfigAsset_length#0 + let appTxn16%%ConfigAssetTotal_length#0: uint64 = appTxn1%%ConfigAssetTotal_length#0 + let appTxn16%%ConfigAssetDecimals_length#0: uint64 = appTxn1%%ConfigAssetDecimals_length#0 + let appTxn16%%ConfigAssetDefaultFrozen_length#0: uint64 = appTxn1%%ConfigAssetDefaultFrozen_length#0 + let appTxn16%%ConfigAssetUnitName_length#0: uint64 = appTxn1%%ConfigAssetUnitName_length#0 + let appTxn16%%ConfigAssetName_length#0: uint64 = appTxn1%%ConfigAssetName_length#0 + let appTxn16%%ConfigAssetURL_length#0: uint64 = appTxn1%%ConfigAssetURL_length#0 + let appTxn16%%ConfigAssetMetadataHash_length#0: uint64 = appTxn1%%ConfigAssetMetadataHash_length#0 + let appTxn16%%ConfigAssetManager_length#0: uint64 = appTxn1%%ConfigAssetManager_length#0 + let appTxn16%%ConfigAssetReserve_length#0: uint64 = appTxn1%%ConfigAssetReserve_length#0 + let appTxn16%%ConfigAssetFreeze_length#0: uint64 = appTxn1%%ConfigAssetFreeze_length#0 + let appTxn16%%ConfigAssetClawback_length#0: uint64 = appTxn1%%ConfigAssetClawback_length#0 + let appTxn16%%FreezeAsset_length#0: uint64 = appTxn1%%FreezeAsset_length#0 + let appTxn16%%FreezeAssetAccount_length#0: uint64 = appTxn1%%FreezeAssetAccount_length#0 + let appTxn16%%FreezeAssetFrozen_length#0: uint64 = appTxn1%%FreezeAssetFrozen_length#0 + let appTxn16%%GlobalNumUint_length#0: uint64 = appTxn1%%GlobalNumUint_length#0 + let appTxn16%%GlobalNumByteSlice_length#0: uint64 = appTxn1%%GlobalNumByteSlice_length#0 + let appTxn16%%LocalNumUint_length#0: uint64 = appTxn1%%LocalNumUint_length#0 + let appTxn16%%LocalNumByteSlice_length#0: uint64 = appTxn1%%LocalNumByteSlice_length#0 + let appTxn16%%ExtraProgramPages_length#0: uint64 = appTxn1%%ExtraProgramPages_length#0 + let appTxn16%%Nonparticipation_length#0: uint64 = appTxn1%%Nonparticipation_length#0 + let appTxn16%%StateProofPK_length#0: uint64 = appTxn1%%StateProofPK_length#0 + let appTxn16%%param_ApplicationArgs_idx_0#0: bytes = appTxn1%%param_ApplicationArgs_idx_0#0 + let appTxn16%%ApplicationArgs_length#0: uint64 = appTxn1%%ApplicationArgs_length#0 + let appTxn16%%Accounts_length#0: uint64 = appTxn1%%Accounts_length#0 + let appTxn16%%Assets_length#0: uint64 = appTxn1%%Assets_length#0 + let appTxn16%%Applications_length#0: uint64 = appTxn1%%Applications_length#0 + let appTxn16%%param_ApprovalProgramPages_idx_0#0: bytes = appTxn1%%param_ApprovalProgramPages_idx_0#0 + let appTxn16%%ApprovalProgramPages_length#0: uint64 = appTxn1%%ApprovalProgramPages_length#0 + let appTxn16%%param_ClearStateProgramPages_idx_0#0: bytes = appTxn1%%param_ClearStateProgramPages_idx_0#0 + let appTxn16%%ClearStateProgramPages_length#0: uint64 = appTxn1%%ClearStateProgramPages_length#0 + let appTxn16#0: itxn_field_set = itxn_field_set(15) + let appTxn16%%param_ApplicationArgs_idx_0#1: bytes = "16" + let appTxn16%%ApplicationArgs_length#1: uint64 = 1u + itxn_begin + ((itxn_field ApplicationArgs) appTxn1%%param_ApplicationArgs_idx_0#0) + ((itxn_field OnCompletion) appTxn1%%param_OnCompletion_idx_0#0) + ((itxn_field ClearStateProgramPages) appTxn1%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn1%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field TypeEnum) appTxn1%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn1%%param_Fee_idx_0#0) + goto block@1 + block@1: // next_txn_L135 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn2%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn2%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn2%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn2%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn2%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn2%%param_Fee_idx_0#0) + goto block@2 + block@2: // next_txn_L136 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn3%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn3%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn3%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn3%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn3%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn3%%param_Fee_idx_0#0) + goto block@3 + block@3: // next_txn_L137 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn4%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn4%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn4%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn4%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn4%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn4%%param_Fee_idx_0#0) + goto block@4 + block@4: // next_txn_L138 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn5%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn5%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn5%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn5%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn5%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn5%%param_Fee_idx_0#0) + goto block@5 + block@5: // next_txn_L139 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn6%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn6%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn6%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn6%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn6%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn6%%param_Fee_idx_0#0) + goto block@6 + block@6: // next_txn_L140 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn7%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn7%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn7%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn7%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn7%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn7%%param_Fee_idx_0#0) + goto block@7 + block@7: // next_txn_L141 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn8%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn8%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn8%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn8%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn8%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn8%%param_Fee_idx_0#0) + goto block@8 + block@8: // next_txn_L142 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn9%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn9%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn9%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn9%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn9%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn9%%param_Fee_idx_0#0) + goto block@9 + block@9: // next_txn_L143 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn10%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn10%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn10%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn10%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn10%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn10%%param_Fee_idx_0#0) + goto block@10 + block@10: // next_txn_L144 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn11%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn11%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn11%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn11%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn11%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn11%%param_Fee_idx_0#0) + goto block@11 + block@11: // next_txn_L145 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn12%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn12%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn12%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn12%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn12%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn12%%param_Fee_idx_0#0) + goto block@12 + block@12: // next_txn_L146 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn13%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn13%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn13%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn13%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn13%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn13%%param_Fee_idx_0#0) + goto block@13 + block@13: // next_txn_L147 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn14%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn14%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn14%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn14%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn14%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn14%%param_Fee_idx_0#0) + goto block@14 + block@14: // next_txn_L148 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn15%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn15%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn15%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn15%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn15%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn15%%param_Fee_idx_0#0) + goto block@15 + block@15: // next_txn_L149 + itxn_next + ((itxn_field ClearStateProgramPages) appTxn16%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn16%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn16%%param_ApplicationArgs_idx_0#1) + ((itxn_field OnCompletion) appTxn16%%param_OnCompletion_idx_0#0) + ((itxn_field TypeEnum) appTxn16%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn16%%param_Fee_idx_0#0) + goto block@16 + block@16: // next_txn_L150 + itxn_submit + let app1#0: itxn_group_idx = itxn_group_idx(0) + let app2#0: itxn_group_idx = itxn_group_idx(1) + let app3#0: itxn_group_idx = itxn_group_idx(2) + let app4#0: itxn_group_idx = itxn_group_idx(3) + let app5#0: itxn_group_idx = itxn_group_idx(4) + let app6#0: itxn_group_idx = itxn_group_idx(5) + let app7#0: itxn_group_idx = itxn_group_idx(6) + let app8#0: itxn_group_idx = itxn_group_idx(7) + let app9#0: itxn_group_idx = itxn_group_idx(8) + let app10#0: itxn_group_idx = itxn_group_idx(9) + let app11#0: itxn_group_idx = itxn_group_idx(10) + let app12#0: itxn_group_idx = itxn_group_idx(11) + let app13#0: itxn_group_idx = itxn_group_idx(12) + let app14#0: itxn_group_idx = itxn_group_idx(13) + let app15#0: itxn_group_idx = itxn_group_idx(14) + let app16#0: itxn_group_idx = itxn_group_idx(15) + let app1._is_last#0: bool = 0u + let app1.Sender#0: bytes = itxn[app1#0].Sender + let app1.Fee#0: uint64 = itxn[app1#0].Fee + let app1.FirstValid#0: uint64 = itxn[app1#0].FirstValid + let app1.FirstValidTime#0: uint64 = itxn[app1#0].FirstValidTime + let app1.LastValid#0: uint64 = itxn[app1#0].LastValid + let app1.Note#0: bytes = itxn[app1#0].Note + let app1.Lease#0: bytes = itxn[app1#0].Lease + let app1.Receiver#0: bytes = itxn[app1#0].Receiver + let app1.Amount#0: uint64 = itxn[app1#0].Amount + let app1.CloseRemainderTo#0: bytes = itxn[app1#0].CloseRemainderTo + let app1.VotePK#0: bytes = itxn[app1#0].VotePK + let app1.SelectionPK#0: bytes = itxn[app1#0].SelectionPK + let app1.VoteFirst#0: uint64 = itxn[app1#0].VoteFirst + let app1.VoteLast#0: uint64 = itxn[app1#0].VoteLast + let app1.VoteKeyDilution#0: uint64 = itxn[app1#0].VoteKeyDilution + let app1.Type#0: bytes = itxn[app1#0].Type + let app1.TypeEnum#0: uint64 = itxn[app1#0].TypeEnum + let app1.XferAsset#0: uint64 = itxn[app1#0].XferAsset + let app1.AssetAmount#0: uint64 = itxn[app1#0].AssetAmount + let app1.AssetSender#0: bytes = itxn[app1#0].AssetSender + let app1.AssetReceiver#0: bytes = itxn[app1#0].AssetReceiver + let app1.AssetCloseTo#0: bytes = itxn[app1#0].AssetCloseTo + let app1.GroupIndex#0: uint64 = itxn[app1#0].GroupIndex + let app1.TxID#0: bytes = itxn[app1#0].TxID + let app1.ApplicationID#0: uint64 = itxn[app1#0].ApplicationID + let app1.OnCompletion#0: uint64 = itxn[app1#0].OnCompletion + let app1.NumAppArgs#0: uint64 = itxn[app1#0].NumAppArgs + let app1.NumAccounts#0: uint64 = itxn[app1#0].NumAccounts + let app1.ApprovalProgram#0: bytes = itxn[app1#0].ApprovalProgram + let app1.ClearStateProgram#0: bytes = itxn[app1#0].ClearStateProgram + let app1.RekeyTo#0: bytes = itxn[app1#0].RekeyTo + let app1.ConfigAsset#0: uint64 = itxn[app1#0].ConfigAsset + let app1.ConfigAssetTotal#0: uint64 = itxn[app1#0].ConfigAssetTotal + let app1.ConfigAssetDecimals#0: uint64 = itxn[app1#0].ConfigAssetDecimals + let app1.ConfigAssetDefaultFrozen#0: bool = itxn[app1#0].ConfigAssetDefaultFrozen + let app1.ConfigAssetUnitName#0: bytes = itxn[app1#0].ConfigAssetUnitName + let app1.ConfigAssetName#0: bytes = itxn[app1#0].ConfigAssetName + let app1.ConfigAssetURL#0: bytes = itxn[app1#0].ConfigAssetURL + let app1.ConfigAssetMetadataHash#0: bytes = itxn[app1#0].ConfigAssetMetadataHash + let app1.ConfigAssetManager#0: bytes = itxn[app1#0].ConfigAssetManager + let app1.ConfigAssetReserve#0: bytes = itxn[app1#0].ConfigAssetReserve + let app1.ConfigAssetFreeze#0: bytes = itxn[app1#0].ConfigAssetFreeze + let app1.ConfigAssetClawback#0: bytes = itxn[app1#0].ConfigAssetClawback + let app1.FreezeAsset#0: uint64 = itxn[app1#0].FreezeAsset + let app1.FreezeAssetAccount#0: bytes = itxn[app1#0].FreezeAssetAccount + let app1.FreezeAssetFrozen#0: bool = itxn[app1#0].FreezeAssetFrozen + let app1.NumAssets#0: uint64 = itxn[app1#0].NumAssets + let app1.NumApplications#0: uint64 = itxn[app1#0].NumApplications + let app1.GlobalNumUint#0: uint64 = itxn[app1#0].GlobalNumUint + let app1.GlobalNumByteSlice#0: uint64 = itxn[app1#0].GlobalNumByteSlice + let app1.LocalNumUint#0: uint64 = itxn[app1#0].LocalNumUint + let app1.LocalNumByteSlice#0: uint64 = itxn[app1#0].LocalNumByteSlice + let app1.ExtraProgramPages#0: uint64 = itxn[app1#0].ExtraProgramPages + let app1.Nonparticipation#0: bool = itxn[app1#0].Nonparticipation + let app1.NumLogs#0: uint64 = itxn[app1#0].NumLogs + let app1.CreatedAssetID#0: uint64 = itxn[app1#0].CreatedAssetID + let app1.CreatedApplicationID#0: uint64 = itxn[app1#0].CreatedApplicationID + let app1.LastLog#0: bytes = itxn[app1#0].LastLog + let app1.StateProofPK#0: bytes = itxn[app1#0].StateProofPK + let app1.NumApprovalProgramPages#0: uint64 = itxn[app1#0].NumApprovalProgramPages + let app1.NumClearStateProgramPages#0: uint64 = itxn[app1#0].NumClearStateProgramPages + let app2._is_last#0: bool = 0u + let app2.Sender#0: bytes = itxn[app2#0].Sender + let app2.Fee#0: uint64 = itxn[app2#0].Fee + let app2.FirstValid#0: uint64 = itxn[app2#0].FirstValid + let app2.FirstValidTime#0: uint64 = itxn[app2#0].FirstValidTime + let app2.LastValid#0: uint64 = itxn[app2#0].LastValid + let app2.Note#0: bytes = itxn[app2#0].Note + let app2.Lease#0: bytes = itxn[app2#0].Lease + let app2.Receiver#0: bytes = itxn[app2#0].Receiver + let app2.Amount#0: uint64 = itxn[app2#0].Amount + let app2.CloseRemainderTo#0: bytes = itxn[app2#0].CloseRemainderTo + let app2.VotePK#0: bytes = itxn[app2#0].VotePK + let app2.SelectionPK#0: bytes = itxn[app2#0].SelectionPK + let app2.VoteFirst#0: uint64 = itxn[app2#0].VoteFirst + let app2.VoteLast#0: uint64 = itxn[app2#0].VoteLast + let app2.VoteKeyDilution#0: uint64 = itxn[app2#0].VoteKeyDilution + let app2.Type#0: bytes = itxn[app2#0].Type + let app2.TypeEnum#0: uint64 = itxn[app2#0].TypeEnum + let app2.XferAsset#0: uint64 = itxn[app2#0].XferAsset + let app2.AssetAmount#0: uint64 = itxn[app2#0].AssetAmount + let app2.AssetSender#0: bytes = itxn[app2#0].AssetSender + let app2.AssetReceiver#0: bytes = itxn[app2#0].AssetReceiver + let app2.AssetCloseTo#0: bytes = itxn[app2#0].AssetCloseTo + let app2.GroupIndex#0: uint64 = itxn[app2#0].GroupIndex + let app2.TxID#0: bytes = itxn[app2#0].TxID + let app2.ApplicationID#0: uint64 = itxn[app2#0].ApplicationID + let app2.OnCompletion#0: uint64 = itxn[app2#0].OnCompletion + let app2.NumAppArgs#0: uint64 = itxn[app2#0].NumAppArgs + let app2.NumAccounts#0: uint64 = itxn[app2#0].NumAccounts + let app2.ApprovalProgram#0: bytes = itxn[app2#0].ApprovalProgram + let app2.ClearStateProgram#0: bytes = itxn[app2#0].ClearStateProgram + let app2.RekeyTo#0: bytes = itxn[app2#0].RekeyTo + let app2.ConfigAsset#0: uint64 = itxn[app2#0].ConfigAsset + let app2.ConfigAssetTotal#0: uint64 = itxn[app2#0].ConfigAssetTotal + let app2.ConfigAssetDecimals#0: uint64 = itxn[app2#0].ConfigAssetDecimals + let app2.ConfigAssetDefaultFrozen#0: bool = itxn[app2#0].ConfigAssetDefaultFrozen + let app2.ConfigAssetUnitName#0: bytes = itxn[app2#0].ConfigAssetUnitName + let app2.ConfigAssetName#0: bytes = itxn[app2#0].ConfigAssetName + let app2.ConfigAssetURL#0: bytes = itxn[app2#0].ConfigAssetURL + let app2.ConfigAssetMetadataHash#0: bytes = itxn[app2#0].ConfigAssetMetadataHash + let app2.ConfigAssetManager#0: bytes = itxn[app2#0].ConfigAssetManager + let app2.ConfigAssetReserve#0: bytes = itxn[app2#0].ConfigAssetReserve + let app2.ConfigAssetFreeze#0: bytes = itxn[app2#0].ConfigAssetFreeze + let app2.ConfigAssetClawback#0: bytes = itxn[app2#0].ConfigAssetClawback + let app2.FreezeAsset#0: uint64 = itxn[app2#0].FreezeAsset + let app2.FreezeAssetAccount#0: bytes = itxn[app2#0].FreezeAssetAccount + let app2.FreezeAssetFrozen#0: bool = itxn[app2#0].FreezeAssetFrozen + let app2.NumAssets#0: uint64 = itxn[app2#0].NumAssets + let app2.NumApplications#0: uint64 = itxn[app2#0].NumApplications + let app2.GlobalNumUint#0: uint64 = itxn[app2#0].GlobalNumUint + let app2.GlobalNumByteSlice#0: uint64 = itxn[app2#0].GlobalNumByteSlice + let app2.LocalNumUint#0: uint64 = itxn[app2#0].LocalNumUint + let app2.LocalNumByteSlice#0: uint64 = itxn[app2#0].LocalNumByteSlice + let app2.ExtraProgramPages#0: uint64 = itxn[app2#0].ExtraProgramPages + let app2.Nonparticipation#0: bool = itxn[app2#0].Nonparticipation + let app2.NumLogs#0: uint64 = itxn[app2#0].NumLogs + let app2.CreatedAssetID#0: uint64 = itxn[app2#0].CreatedAssetID + let app2.CreatedApplicationID#0: uint64 = itxn[app2#0].CreatedApplicationID + let app2.LastLog#0: bytes = itxn[app2#0].LastLog + let app2.StateProofPK#0: bytes = itxn[app2#0].StateProofPK + let app2.NumApprovalProgramPages#0: uint64 = itxn[app2#0].NumApprovalProgramPages + let app2.NumClearStateProgramPages#0: uint64 = itxn[app2#0].NumClearStateProgramPages + let app3._is_last#0: bool = 0u + let app3.Sender#0: bytes = itxn[app3#0].Sender + let app3.Fee#0: uint64 = itxn[app3#0].Fee + let app3.FirstValid#0: uint64 = itxn[app3#0].FirstValid + let app3.FirstValidTime#0: uint64 = itxn[app3#0].FirstValidTime + let app3.LastValid#0: uint64 = itxn[app3#0].LastValid + let app3.Note#0: bytes = itxn[app3#0].Note + let app3.Lease#0: bytes = itxn[app3#0].Lease + let app3.Receiver#0: bytes = itxn[app3#0].Receiver + let app3.Amount#0: uint64 = itxn[app3#0].Amount + let app3.CloseRemainderTo#0: bytes = itxn[app3#0].CloseRemainderTo + let app3.VotePK#0: bytes = itxn[app3#0].VotePK + let app3.SelectionPK#0: bytes = itxn[app3#0].SelectionPK + let app3.VoteFirst#0: uint64 = itxn[app3#0].VoteFirst + let app3.VoteLast#0: uint64 = itxn[app3#0].VoteLast + let app3.VoteKeyDilution#0: uint64 = itxn[app3#0].VoteKeyDilution + let app3.Type#0: bytes = itxn[app3#0].Type + let app3.TypeEnum#0: uint64 = itxn[app3#0].TypeEnum + let app3.XferAsset#0: uint64 = itxn[app3#0].XferAsset + let app3.AssetAmount#0: uint64 = itxn[app3#0].AssetAmount + let app3.AssetSender#0: bytes = itxn[app3#0].AssetSender + let app3.AssetReceiver#0: bytes = itxn[app3#0].AssetReceiver + let app3.AssetCloseTo#0: bytes = itxn[app3#0].AssetCloseTo + let app3.GroupIndex#0: uint64 = itxn[app3#0].GroupIndex + let app3.TxID#0: bytes = itxn[app3#0].TxID + let app3.ApplicationID#0: uint64 = itxn[app3#0].ApplicationID + let app3.OnCompletion#0: uint64 = itxn[app3#0].OnCompletion + let app3.NumAppArgs#0: uint64 = itxn[app3#0].NumAppArgs + let app3.NumAccounts#0: uint64 = itxn[app3#0].NumAccounts + let app3.ApprovalProgram#0: bytes = itxn[app3#0].ApprovalProgram + let app3.ClearStateProgram#0: bytes = itxn[app3#0].ClearStateProgram + let app3.RekeyTo#0: bytes = itxn[app3#0].RekeyTo + let app3.ConfigAsset#0: uint64 = itxn[app3#0].ConfigAsset + let app3.ConfigAssetTotal#0: uint64 = itxn[app3#0].ConfigAssetTotal + let app3.ConfigAssetDecimals#0: uint64 = itxn[app3#0].ConfigAssetDecimals + let app3.ConfigAssetDefaultFrozen#0: bool = itxn[app3#0].ConfigAssetDefaultFrozen + let app3.ConfigAssetUnitName#0: bytes = itxn[app3#0].ConfigAssetUnitName + let app3.ConfigAssetName#0: bytes = itxn[app3#0].ConfigAssetName + let app3.ConfigAssetURL#0: bytes = itxn[app3#0].ConfigAssetURL + let app3.ConfigAssetMetadataHash#0: bytes = itxn[app3#0].ConfigAssetMetadataHash + let app3.ConfigAssetManager#0: bytes = itxn[app3#0].ConfigAssetManager + let app3.ConfigAssetReserve#0: bytes = itxn[app3#0].ConfigAssetReserve + let app3.ConfigAssetFreeze#0: bytes = itxn[app3#0].ConfigAssetFreeze + let app3.ConfigAssetClawback#0: bytes = itxn[app3#0].ConfigAssetClawback + let app3.FreezeAsset#0: uint64 = itxn[app3#0].FreezeAsset + let app3.FreezeAssetAccount#0: bytes = itxn[app3#0].FreezeAssetAccount + let app3.FreezeAssetFrozen#0: bool = itxn[app3#0].FreezeAssetFrozen + let app3.NumAssets#0: uint64 = itxn[app3#0].NumAssets + let app3.NumApplications#0: uint64 = itxn[app3#0].NumApplications + let app3.GlobalNumUint#0: uint64 = itxn[app3#0].GlobalNumUint + let app3.GlobalNumByteSlice#0: uint64 = itxn[app3#0].GlobalNumByteSlice + let app3.LocalNumUint#0: uint64 = itxn[app3#0].LocalNumUint + let app3.LocalNumByteSlice#0: uint64 = itxn[app3#0].LocalNumByteSlice + let app3.ExtraProgramPages#0: uint64 = itxn[app3#0].ExtraProgramPages + let app3.Nonparticipation#0: bool = itxn[app3#0].Nonparticipation + let app3.NumLogs#0: uint64 = itxn[app3#0].NumLogs + let app3.CreatedAssetID#0: uint64 = itxn[app3#0].CreatedAssetID + let app3.CreatedApplicationID#0: uint64 = itxn[app3#0].CreatedApplicationID + let app3.LastLog#0: bytes = itxn[app3#0].LastLog + let app3.StateProofPK#0: bytes = itxn[app3#0].StateProofPK + let app3.NumApprovalProgramPages#0: uint64 = itxn[app3#0].NumApprovalProgramPages + let app3.NumClearStateProgramPages#0: uint64 = itxn[app3#0].NumClearStateProgramPages + let app4._is_last#0: bool = 0u + let app4.Sender#0: bytes = itxn[app4#0].Sender + let app4.Fee#0: uint64 = itxn[app4#0].Fee + let app4.FirstValid#0: uint64 = itxn[app4#0].FirstValid + let app4.FirstValidTime#0: uint64 = itxn[app4#0].FirstValidTime + let app4.LastValid#0: uint64 = itxn[app4#0].LastValid + let app4.Note#0: bytes = itxn[app4#0].Note + let app4.Lease#0: bytes = itxn[app4#0].Lease + let app4.Receiver#0: bytes = itxn[app4#0].Receiver + let app4.Amount#0: uint64 = itxn[app4#0].Amount + let app4.CloseRemainderTo#0: bytes = itxn[app4#0].CloseRemainderTo + let app4.VotePK#0: bytes = itxn[app4#0].VotePK + let app4.SelectionPK#0: bytes = itxn[app4#0].SelectionPK + let app4.VoteFirst#0: uint64 = itxn[app4#0].VoteFirst + let app4.VoteLast#0: uint64 = itxn[app4#0].VoteLast + let app4.VoteKeyDilution#0: uint64 = itxn[app4#0].VoteKeyDilution + let app4.Type#0: bytes = itxn[app4#0].Type + let app4.TypeEnum#0: uint64 = itxn[app4#0].TypeEnum + let app4.XferAsset#0: uint64 = itxn[app4#0].XferAsset + let app4.AssetAmount#0: uint64 = itxn[app4#0].AssetAmount + let app4.AssetSender#0: bytes = itxn[app4#0].AssetSender + let app4.AssetReceiver#0: bytes = itxn[app4#0].AssetReceiver + let app4.AssetCloseTo#0: bytes = itxn[app4#0].AssetCloseTo + let app4.GroupIndex#0: uint64 = itxn[app4#0].GroupIndex + let app4.TxID#0: bytes = itxn[app4#0].TxID + let app4.ApplicationID#0: uint64 = itxn[app4#0].ApplicationID + let app4.OnCompletion#0: uint64 = itxn[app4#0].OnCompletion + let app4.NumAppArgs#0: uint64 = itxn[app4#0].NumAppArgs + let app4.NumAccounts#0: uint64 = itxn[app4#0].NumAccounts + let app4.ApprovalProgram#0: bytes = itxn[app4#0].ApprovalProgram + let app4.ClearStateProgram#0: bytes = itxn[app4#0].ClearStateProgram + let app4.RekeyTo#0: bytes = itxn[app4#0].RekeyTo + let app4.ConfigAsset#0: uint64 = itxn[app4#0].ConfigAsset + let app4.ConfigAssetTotal#0: uint64 = itxn[app4#0].ConfigAssetTotal + let app4.ConfigAssetDecimals#0: uint64 = itxn[app4#0].ConfigAssetDecimals + let app4.ConfigAssetDefaultFrozen#0: bool = itxn[app4#0].ConfigAssetDefaultFrozen + let app4.ConfigAssetUnitName#0: bytes = itxn[app4#0].ConfigAssetUnitName + let app4.ConfigAssetName#0: bytes = itxn[app4#0].ConfigAssetName + let app4.ConfigAssetURL#0: bytes = itxn[app4#0].ConfigAssetURL + let app4.ConfigAssetMetadataHash#0: bytes = itxn[app4#0].ConfigAssetMetadataHash + let app4.ConfigAssetManager#0: bytes = itxn[app4#0].ConfigAssetManager + let app4.ConfigAssetReserve#0: bytes = itxn[app4#0].ConfigAssetReserve + let app4.ConfigAssetFreeze#0: bytes = itxn[app4#0].ConfigAssetFreeze + let app4.ConfigAssetClawback#0: bytes = itxn[app4#0].ConfigAssetClawback + let app4.FreezeAsset#0: uint64 = itxn[app4#0].FreezeAsset + let app4.FreezeAssetAccount#0: bytes = itxn[app4#0].FreezeAssetAccount + let app4.FreezeAssetFrozen#0: bool = itxn[app4#0].FreezeAssetFrozen + let app4.NumAssets#0: uint64 = itxn[app4#0].NumAssets + let app4.NumApplications#0: uint64 = itxn[app4#0].NumApplications + let app4.GlobalNumUint#0: uint64 = itxn[app4#0].GlobalNumUint + let app4.GlobalNumByteSlice#0: uint64 = itxn[app4#0].GlobalNumByteSlice + let app4.LocalNumUint#0: uint64 = itxn[app4#0].LocalNumUint + let app4.LocalNumByteSlice#0: uint64 = itxn[app4#0].LocalNumByteSlice + let app4.ExtraProgramPages#0: uint64 = itxn[app4#0].ExtraProgramPages + let app4.Nonparticipation#0: bool = itxn[app4#0].Nonparticipation + let app4.NumLogs#0: uint64 = itxn[app4#0].NumLogs + let app4.CreatedAssetID#0: uint64 = itxn[app4#0].CreatedAssetID + let app4.CreatedApplicationID#0: uint64 = itxn[app4#0].CreatedApplicationID + let app4.LastLog#0: bytes = itxn[app4#0].LastLog + let app4.StateProofPK#0: bytes = itxn[app4#0].StateProofPK + let app4.NumApprovalProgramPages#0: uint64 = itxn[app4#0].NumApprovalProgramPages + let app4.NumClearStateProgramPages#0: uint64 = itxn[app4#0].NumClearStateProgramPages + let app5._is_last#0: bool = 0u + let app5.Sender#0: bytes = itxn[app5#0].Sender + let app5.Fee#0: uint64 = itxn[app5#0].Fee + let app5.FirstValid#0: uint64 = itxn[app5#0].FirstValid + let app5.FirstValidTime#0: uint64 = itxn[app5#0].FirstValidTime + let app5.LastValid#0: uint64 = itxn[app5#0].LastValid + let app5.Note#0: bytes = itxn[app5#0].Note + let app5.Lease#0: bytes = itxn[app5#0].Lease + let app5.Receiver#0: bytes = itxn[app5#0].Receiver + let app5.Amount#0: uint64 = itxn[app5#0].Amount + let app5.CloseRemainderTo#0: bytes = itxn[app5#0].CloseRemainderTo + let app5.VotePK#0: bytes = itxn[app5#0].VotePK + let app5.SelectionPK#0: bytes = itxn[app5#0].SelectionPK + let app5.VoteFirst#0: uint64 = itxn[app5#0].VoteFirst + let app5.VoteLast#0: uint64 = itxn[app5#0].VoteLast + let app5.VoteKeyDilution#0: uint64 = itxn[app5#0].VoteKeyDilution + let app5.Type#0: bytes = itxn[app5#0].Type + let app5.TypeEnum#0: uint64 = itxn[app5#0].TypeEnum + let app5.XferAsset#0: uint64 = itxn[app5#0].XferAsset + let app5.AssetAmount#0: uint64 = itxn[app5#0].AssetAmount + let app5.AssetSender#0: bytes = itxn[app5#0].AssetSender + let app5.AssetReceiver#0: bytes = itxn[app5#0].AssetReceiver + let app5.AssetCloseTo#0: bytes = itxn[app5#0].AssetCloseTo + let app5.GroupIndex#0: uint64 = itxn[app5#0].GroupIndex + let app5.TxID#0: bytes = itxn[app5#0].TxID + let app5.ApplicationID#0: uint64 = itxn[app5#0].ApplicationID + let app5.OnCompletion#0: uint64 = itxn[app5#0].OnCompletion + let app5.NumAppArgs#0: uint64 = itxn[app5#0].NumAppArgs + let app5.NumAccounts#0: uint64 = itxn[app5#0].NumAccounts + let app5.ApprovalProgram#0: bytes = itxn[app5#0].ApprovalProgram + let app5.ClearStateProgram#0: bytes = itxn[app5#0].ClearStateProgram + let app5.RekeyTo#0: bytes = itxn[app5#0].RekeyTo + let app5.ConfigAsset#0: uint64 = itxn[app5#0].ConfigAsset + let app5.ConfigAssetTotal#0: uint64 = itxn[app5#0].ConfigAssetTotal + let app5.ConfigAssetDecimals#0: uint64 = itxn[app5#0].ConfigAssetDecimals + let app5.ConfigAssetDefaultFrozen#0: bool = itxn[app5#0].ConfigAssetDefaultFrozen + let app5.ConfigAssetUnitName#0: bytes = itxn[app5#0].ConfigAssetUnitName + let app5.ConfigAssetName#0: bytes = itxn[app5#0].ConfigAssetName + let app5.ConfigAssetURL#0: bytes = itxn[app5#0].ConfigAssetURL + let app5.ConfigAssetMetadataHash#0: bytes = itxn[app5#0].ConfigAssetMetadataHash + let app5.ConfigAssetManager#0: bytes = itxn[app5#0].ConfigAssetManager + let app5.ConfigAssetReserve#0: bytes = itxn[app5#0].ConfigAssetReserve + let app5.ConfigAssetFreeze#0: bytes = itxn[app5#0].ConfigAssetFreeze + let app5.ConfigAssetClawback#0: bytes = itxn[app5#0].ConfigAssetClawback + let app5.FreezeAsset#0: uint64 = itxn[app5#0].FreezeAsset + let app5.FreezeAssetAccount#0: bytes = itxn[app5#0].FreezeAssetAccount + let app5.FreezeAssetFrozen#0: bool = itxn[app5#0].FreezeAssetFrozen + let app5.NumAssets#0: uint64 = itxn[app5#0].NumAssets + let app5.NumApplications#0: uint64 = itxn[app5#0].NumApplications + let app5.GlobalNumUint#0: uint64 = itxn[app5#0].GlobalNumUint + let app5.GlobalNumByteSlice#0: uint64 = itxn[app5#0].GlobalNumByteSlice + let app5.LocalNumUint#0: uint64 = itxn[app5#0].LocalNumUint + let app5.LocalNumByteSlice#0: uint64 = itxn[app5#0].LocalNumByteSlice + let app5.ExtraProgramPages#0: uint64 = itxn[app5#0].ExtraProgramPages + let app5.Nonparticipation#0: bool = itxn[app5#0].Nonparticipation + let app5.NumLogs#0: uint64 = itxn[app5#0].NumLogs + let app5.CreatedAssetID#0: uint64 = itxn[app5#0].CreatedAssetID + let app5.CreatedApplicationID#0: uint64 = itxn[app5#0].CreatedApplicationID + let app5.LastLog#0: bytes = itxn[app5#0].LastLog + let app5.StateProofPK#0: bytes = itxn[app5#0].StateProofPK + let app5.NumApprovalProgramPages#0: uint64 = itxn[app5#0].NumApprovalProgramPages + let app5.NumClearStateProgramPages#0: uint64 = itxn[app5#0].NumClearStateProgramPages + let app6._is_last#0: bool = 0u + let app6.Sender#0: bytes = itxn[app6#0].Sender + let app6.Fee#0: uint64 = itxn[app6#0].Fee + let app6.FirstValid#0: uint64 = itxn[app6#0].FirstValid + let app6.FirstValidTime#0: uint64 = itxn[app6#0].FirstValidTime + let app6.LastValid#0: uint64 = itxn[app6#0].LastValid + let app6.Note#0: bytes = itxn[app6#0].Note + let app6.Lease#0: bytes = itxn[app6#0].Lease + let app6.Receiver#0: bytes = itxn[app6#0].Receiver + let app6.Amount#0: uint64 = itxn[app6#0].Amount + let app6.CloseRemainderTo#0: bytes = itxn[app6#0].CloseRemainderTo + let app6.VotePK#0: bytes = itxn[app6#0].VotePK + let app6.SelectionPK#0: bytes = itxn[app6#0].SelectionPK + let app6.VoteFirst#0: uint64 = itxn[app6#0].VoteFirst + let app6.VoteLast#0: uint64 = itxn[app6#0].VoteLast + let app6.VoteKeyDilution#0: uint64 = itxn[app6#0].VoteKeyDilution + let app6.Type#0: bytes = itxn[app6#0].Type + let app6.TypeEnum#0: uint64 = itxn[app6#0].TypeEnum + let app6.XferAsset#0: uint64 = itxn[app6#0].XferAsset + let app6.AssetAmount#0: uint64 = itxn[app6#0].AssetAmount + let app6.AssetSender#0: bytes = itxn[app6#0].AssetSender + let app6.AssetReceiver#0: bytes = itxn[app6#0].AssetReceiver + let app6.AssetCloseTo#0: bytes = itxn[app6#0].AssetCloseTo + let app6.GroupIndex#0: uint64 = itxn[app6#0].GroupIndex + let app6.TxID#0: bytes = itxn[app6#0].TxID + let app6.ApplicationID#0: uint64 = itxn[app6#0].ApplicationID + let app6.OnCompletion#0: uint64 = itxn[app6#0].OnCompletion + let app6.NumAppArgs#0: uint64 = itxn[app6#0].NumAppArgs + let app6.NumAccounts#0: uint64 = itxn[app6#0].NumAccounts + let app6.ApprovalProgram#0: bytes = itxn[app6#0].ApprovalProgram + let app6.ClearStateProgram#0: bytes = itxn[app6#0].ClearStateProgram + let app6.RekeyTo#0: bytes = itxn[app6#0].RekeyTo + let app6.ConfigAsset#0: uint64 = itxn[app6#0].ConfigAsset + let app6.ConfigAssetTotal#0: uint64 = itxn[app6#0].ConfigAssetTotal + let app6.ConfigAssetDecimals#0: uint64 = itxn[app6#0].ConfigAssetDecimals + let app6.ConfigAssetDefaultFrozen#0: bool = itxn[app6#0].ConfigAssetDefaultFrozen + let app6.ConfigAssetUnitName#0: bytes = itxn[app6#0].ConfigAssetUnitName + let app6.ConfigAssetName#0: bytes = itxn[app6#0].ConfigAssetName + let app6.ConfigAssetURL#0: bytes = itxn[app6#0].ConfigAssetURL + let app6.ConfigAssetMetadataHash#0: bytes = itxn[app6#0].ConfigAssetMetadataHash + let app6.ConfigAssetManager#0: bytes = itxn[app6#0].ConfigAssetManager + let app6.ConfigAssetReserve#0: bytes = itxn[app6#0].ConfigAssetReserve + let app6.ConfigAssetFreeze#0: bytes = itxn[app6#0].ConfigAssetFreeze + let app6.ConfigAssetClawback#0: bytes = itxn[app6#0].ConfigAssetClawback + let app6.FreezeAsset#0: uint64 = itxn[app6#0].FreezeAsset + let app6.FreezeAssetAccount#0: bytes = itxn[app6#0].FreezeAssetAccount + let app6.FreezeAssetFrozen#0: bool = itxn[app6#0].FreezeAssetFrozen + let app6.NumAssets#0: uint64 = itxn[app6#0].NumAssets + let app6.NumApplications#0: uint64 = itxn[app6#0].NumApplications + let app6.GlobalNumUint#0: uint64 = itxn[app6#0].GlobalNumUint + let app6.GlobalNumByteSlice#0: uint64 = itxn[app6#0].GlobalNumByteSlice + let app6.LocalNumUint#0: uint64 = itxn[app6#0].LocalNumUint + let app6.LocalNumByteSlice#0: uint64 = itxn[app6#0].LocalNumByteSlice + let app6.ExtraProgramPages#0: uint64 = itxn[app6#0].ExtraProgramPages + let app6.Nonparticipation#0: bool = itxn[app6#0].Nonparticipation + let app6.NumLogs#0: uint64 = itxn[app6#0].NumLogs + let app6.CreatedAssetID#0: uint64 = itxn[app6#0].CreatedAssetID + let app6.CreatedApplicationID#0: uint64 = itxn[app6#0].CreatedApplicationID + let app6.LastLog#0: bytes = itxn[app6#0].LastLog + let app6.StateProofPK#0: bytes = itxn[app6#0].StateProofPK + let app6.NumApprovalProgramPages#0: uint64 = itxn[app6#0].NumApprovalProgramPages + let app6.NumClearStateProgramPages#0: uint64 = itxn[app6#0].NumClearStateProgramPages + let app7._is_last#0: bool = 0u + let app7.Sender#0: bytes = itxn[app7#0].Sender + let app7.Fee#0: uint64 = itxn[app7#0].Fee + let app7.FirstValid#0: uint64 = itxn[app7#0].FirstValid + let app7.FirstValidTime#0: uint64 = itxn[app7#0].FirstValidTime + let app7.LastValid#0: uint64 = itxn[app7#0].LastValid + let app7.Note#0: bytes = itxn[app7#0].Note + let app7.Lease#0: bytes = itxn[app7#0].Lease + let app7.Receiver#0: bytes = itxn[app7#0].Receiver + let app7.Amount#0: uint64 = itxn[app7#0].Amount + let app7.CloseRemainderTo#0: bytes = itxn[app7#0].CloseRemainderTo + let app7.VotePK#0: bytes = itxn[app7#0].VotePK + let app7.SelectionPK#0: bytes = itxn[app7#0].SelectionPK + let app7.VoteFirst#0: uint64 = itxn[app7#0].VoteFirst + let app7.VoteLast#0: uint64 = itxn[app7#0].VoteLast + let app7.VoteKeyDilution#0: uint64 = itxn[app7#0].VoteKeyDilution + let app7.Type#0: bytes = itxn[app7#0].Type + let app7.TypeEnum#0: uint64 = itxn[app7#0].TypeEnum + let app7.XferAsset#0: uint64 = itxn[app7#0].XferAsset + let app7.AssetAmount#0: uint64 = itxn[app7#0].AssetAmount + let app7.AssetSender#0: bytes = itxn[app7#0].AssetSender + let app7.AssetReceiver#0: bytes = itxn[app7#0].AssetReceiver + let app7.AssetCloseTo#0: bytes = itxn[app7#0].AssetCloseTo + let app7.GroupIndex#0: uint64 = itxn[app7#0].GroupIndex + let app7.TxID#0: bytes = itxn[app7#0].TxID + let app7.ApplicationID#0: uint64 = itxn[app7#0].ApplicationID + let app7.OnCompletion#0: uint64 = itxn[app7#0].OnCompletion + let app7.NumAppArgs#0: uint64 = itxn[app7#0].NumAppArgs + let app7.NumAccounts#0: uint64 = itxn[app7#0].NumAccounts + let app7.ApprovalProgram#0: bytes = itxn[app7#0].ApprovalProgram + let app7.ClearStateProgram#0: bytes = itxn[app7#0].ClearStateProgram + let app7.RekeyTo#0: bytes = itxn[app7#0].RekeyTo + let app7.ConfigAsset#0: uint64 = itxn[app7#0].ConfigAsset + let app7.ConfigAssetTotal#0: uint64 = itxn[app7#0].ConfigAssetTotal + let app7.ConfigAssetDecimals#0: uint64 = itxn[app7#0].ConfigAssetDecimals + let app7.ConfigAssetDefaultFrozen#0: bool = itxn[app7#0].ConfigAssetDefaultFrozen + let app7.ConfigAssetUnitName#0: bytes = itxn[app7#0].ConfigAssetUnitName + let app7.ConfigAssetName#0: bytes = itxn[app7#0].ConfigAssetName + let app7.ConfigAssetURL#0: bytes = itxn[app7#0].ConfigAssetURL + let app7.ConfigAssetMetadataHash#0: bytes = itxn[app7#0].ConfigAssetMetadataHash + let app7.ConfigAssetManager#0: bytes = itxn[app7#0].ConfigAssetManager + let app7.ConfigAssetReserve#0: bytes = itxn[app7#0].ConfigAssetReserve + let app7.ConfigAssetFreeze#0: bytes = itxn[app7#0].ConfigAssetFreeze + let app7.ConfigAssetClawback#0: bytes = itxn[app7#0].ConfigAssetClawback + let app7.FreezeAsset#0: uint64 = itxn[app7#0].FreezeAsset + let app7.FreezeAssetAccount#0: bytes = itxn[app7#0].FreezeAssetAccount + let app7.FreezeAssetFrozen#0: bool = itxn[app7#0].FreezeAssetFrozen + let app7.NumAssets#0: uint64 = itxn[app7#0].NumAssets + let app7.NumApplications#0: uint64 = itxn[app7#0].NumApplications + let app7.GlobalNumUint#0: uint64 = itxn[app7#0].GlobalNumUint + let app7.GlobalNumByteSlice#0: uint64 = itxn[app7#0].GlobalNumByteSlice + let app7.LocalNumUint#0: uint64 = itxn[app7#0].LocalNumUint + let app7.LocalNumByteSlice#0: uint64 = itxn[app7#0].LocalNumByteSlice + let app7.ExtraProgramPages#0: uint64 = itxn[app7#0].ExtraProgramPages + let app7.Nonparticipation#0: bool = itxn[app7#0].Nonparticipation + let app7.NumLogs#0: uint64 = itxn[app7#0].NumLogs + let app7.CreatedAssetID#0: uint64 = itxn[app7#0].CreatedAssetID + let app7.CreatedApplicationID#0: uint64 = itxn[app7#0].CreatedApplicationID + let app7.LastLog#0: bytes = itxn[app7#0].LastLog + let app7.StateProofPK#0: bytes = itxn[app7#0].StateProofPK + let app7.NumApprovalProgramPages#0: uint64 = itxn[app7#0].NumApprovalProgramPages + let app7.NumClearStateProgramPages#0: uint64 = itxn[app7#0].NumClearStateProgramPages + let app8._is_last#0: bool = 0u + let app8.Sender#0: bytes = itxn[app8#0].Sender + let app8.Fee#0: uint64 = itxn[app8#0].Fee + let app8.FirstValid#0: uint64 = itxn[app8#0].FirstValid + let app8.FirstValidTime#0: uint64 = itxn[app8#0].FirstValidTime + let app8.LastValid#0: uint64 = itxn[app8#0].LastValid + let app8.Note#0: bytes = itxn[app8#0].Note + let app8.Lease#0: bytes = itxn[app8#0].Lease + let app8.Receiver#0: bytes = itxn[app8#0].Receiver + let app8.Amount#0: uint64 = itxn[app8#0].Amount + let app8.CloseRemainderTo#0: bytes = itxn[app8#0].CloseRemainderTo + let app8.VotePK#0: bytes = itxn[app8#0].VotePK + let app8.SelectionPK#0: bytes = itxn[app8#0].SelectionPK + let app8.VoteFirst#0: uint64 = itxn[app8#0].VoteFirst + let app8.VoteLast#0: uint64 = itxn[app8#0].VoteLast + let app8.VoteKeyDilution#0: uint64 = itxn[app8#0].VoteKeyDilution + let app8.Type#0: bytes = itxn[app8#0].Type + let app8.TypeEnum#0: uint64 = itxn[app8#0].TypeEnum + let app8.XferAsset#0: uint64 = itxn[app8#0].XferAsset + let app8.AssetAmount#0: uint64 = itxn[app8#0].AssetAmount + let app8.AssetSender#0: bytes = itxn[app8#0].AssetSender + let app8.AssetReceiver#0: bytes = itxn[app8#0].AssetReceiver + let app8.AssetCloseTo#0: bytes = itxn[app8#0].AssetCloseTo + let app8.GroupIndex#0: uint64 = itxn[app8#0].GroupIndex + let app8.TxID#0: bytes = itxn[app8#0].TxID + let app8.ApplicationID#0: uint64 = itxn[app8#0].ApplicationID + let app8.OnCompletion#0: uint64 = itxn[app8#0].OnCompletion + let app8.NumAppArgs#0: uint64 = itxn[app8#0].NumAppArgs + let app8.NumAccounts#0: uint64 = itxn[app8#0].NumAccounts + let app8.ApprovalProgram#0: bytes = itxn[app8#0].ApprovalProgram + let app8.ClearStateProgram#0: bytes = itxn[app8#0].ClearStateProgram + let app8.RekeyTo#0: bytes = itxn[app8#0].RekeyTo + let app8.ConfigAsset#0: uint64 = itxn[app8#0].ConfigAsset + let app8.ConfigAssetTotal#0: uint64 = itxn[app8#0].ConfigAssetTotal + let app8.ConfigAssetDecimals#0: uint64 = itxn[app8#0].ConfigAssetDecimals + let app8.ConfigAssetDefaultFrozen#0: bool = itxn[app8#0].ConfigAssetDefaultFrozen + let app8.ConfigAssetUnitName#0: bytes = itxn[app8#0].ConfigAssetUnitName + let app8.ConfigAssetName#0: bytes = itxn[app8#0].ConfigAssetName + let app8.ConfigAssetURL#0: bytes = itxn[app8#0].ConfigAssetURL + let app8.ConfigAssetMetadataHash#0: bytes = itxn[app8#0].ConfigAssetMetadataHash + let app8.ConfigAssetManager#0: bytes = itxn[app8#0].ConfigAssetManager + let app8.ConfigAssetReserve#0: bytes = itxn[app8#0].ConfigAssetReserve + let app8.ConfigAssetFreeze#0: bytes = itxn[app8#0].ConfigAssetFreeze + let app8.ConfigAssetClawback#0: bytes = itxn[app8#0].ConfigAssetClawback + let app8.FreezeAsset#0: uint64 = itxn[app8#0].FreezeAsset + let app8.FreezeAssetAccount#0: bytes = itxn[app8#0].FreezeAssetAccount + let app8.FreezeAssetFrozen#0: bool = itxn[app8#0].FreezeAssetFrozen + let app8.NumAssets#0: uint64 = itxn[app8#0].NumAssets + let app8.NumApplications#0: uint64 = itxn[app8#0].NumApplications + let app8.GlobalNumUint#0: uint64 = itxn[app8#0].GlobalNumUint + let app8.GlobalNumByteSlice#0: uint64 = itxn[app8#0].GlobalNumByteSlice + let app8.LocalNumUint#0: uint64 = itxn[app8#0].LocalNumUint + let app8.LocalNumByteSlice#0: uint64 = itxn[app8#0].LocalNumByteSlice + let app8.ExtraProgramPages#0: uint64 = itxn[app8#0].ExtraProgramPages + let app8.Nonparticipation#0: bool = itxn[app8#0].Nonparticipation + let app8.NumLogs#0: uint64 = itxn[app8#0].NumLogs + let app8.CreatedAssetID#0: uint64 = itxn[app8#0].CreatedAssetID + let app8.CreatedApplicationID#0: uint64 = itxn[app8#0].CreatedApplicationID + let app8.LastLog#0: bytes = itxn[app8#0].LastLog + let app8.StateProofPK#0: bytes = itxn[app8#0].StateProofPK + let app8.NumApprovalProgramPages#0: uint64 = itxn[app8#0].NumApprovalProgramPages + let app8.NumClearStateProgramPages#0: uint64 = itxn[app8#0].NumClearStateProgramPages + let app9._is_last#0: bool = 0u + let app9.Sender#0: bytes = itxn[app9#0].Sender + let app9.Fee#0: uint64 = itxn[app9#0].Fee + let app9.FirstValid#0: uint64 = itxn[app9#0].FirstValid + let app9.FirstValidTime#0: uint64 = itxn[app9#0].FirstValidTime + let app9.LastValid#0: uint64 = itxn[app9#0].LastValid + let app9.Note#0: bytes = itxn[app9#0].Note + let app9.Lease#0: bytes = itxn[app9#0].Lease + let app9.Receiver#0: bytes = itxn[app9#0].Receiver + let app9.Amount#0: uint64 = itxn[app9#0].Amount + let app9.CloseRemainderTo#0: bytes = itxn[app9#0].CloseRemainderTo + let app9.VotePK#0: bytes = itxn[app9#0].VotePK + let app9.SelectionPK#0: bytes = itxn[app9#0].SelectionPK + let app9.VoteFirst#0: uint64 = itxn[app9#0].VoteFirst + let app9.VoteLast#0: uint64 = itxn[app9#0].VoteLast + let app9.VoteKeyDilution#0: uint64 = itxn[app9#0].VoteKeyDilution + let app9.Type#0: bytes = itxn[app9#0].Type + let app9.TypeEnum#0: uint64 = itxn[app9#0].TypeEnum + let app9.XferAsset#0: uint64 = itxn[app9#0].XferAsset + let app9.AssetAmount#0: uint64 = itxn[app9#0].AssetAmount + let app9.AssetSender#0: bytes = itxn[app9#0].AssetSender + let app9.AssetReceiver#0: bytes = itxn[app9#0].AssetReceiver + let app9.AssetCloseTo#0: bytes = itxn[app9#0].AssetCloseTo + let app9.GroupIndex#0: uint64 = itxn[app9#0].GroupIndex + let app9.TxID#0: bytes = itxn[app9#0].TxID + let app9.ApplicationID#0: uint64 = itxn[app9#0].ApplicationID + let app9.OnCompletion#0: uint64 = itxn[app9#0].OnCompletion + let app9.NumAppArgs#0: uint64 = itxn[app9#0].NumAppArgs + let app9.NumAccounts#0: uint64 = itxn[app9#0].NumAccounts + let app9.ApprovalProgram#0: bytes = itxn[app9#0].ApprovalProgram + let app9.ClearStateProgram#0: bytes = itxn[app9#0].ClearStateProgram + let app9.RekeyTo#0: bytes = itxn[app9#0].RekeyTo + let app9.ConfigAsset#0: uint64 = itxn[app9#0].ConfigAsset + let app9.ConfigAssetTotal#0: uint64 = itxn[app9#0].ConfigAssetTotal + let app9.ConfigAssetDecimals#0: uint64 = itxn[app9#0].ConfigAssetDecimals + let app9.ConfigAssetDefaultFrozen#0: bool = itxn[app9#0].ConfigAssetDefaultFrozen + let app9.ConfigAssetUnitName#0: bytes = itxn[app9#0].ConfigAssetUnitName + let app9.ConfigAssetName#0: bytes = itxn[app9#0].ConfigAssetName + let app9.ConfigAssetURL#0: bytes = itxn[app9#0].ConfigAssetURL + let app9.ConfigAssetMetadataHash#0: bytes = itxn[app9#0].ConfigAssetMetadataHash + let app9.ConfigAssetManager#0: bytes = itxn[app9#0].ConfigAssetManager + let app9.ConfigAssetReserve#0: bytes = itxn[app9#0].ConfigAssetReserve + let app9.ConfigAssetFreeze#0: bytes = itxn[app9#0].ConfigAssetFreeze + let app9.ConfigAssetClawback#0: bytes = itxn[app9#0].ConfigAssetClawback + let app9.FreezeAsset#0: uint64 = itxn[app9#0].FreezeAsset + let app9.FreezeAssetAccount#0: bytes = itxn[app9#0].FreezeAssetAccount + let app9.FreezeAssetFrozen#0: bool = itxn[app9#0].FreezeAssetFrozen + let app9.NumAssets#0: uint64 = itxn[app9#0].NumAssets + let app9.NumApplications#0: uint64 = itxn[app9#0].NumApplications + let app9.GlobalNumUint#0: uint64 = itxn[app9#0].GlobalNumUint + let app9.GlobalNumByteSlice#0: uint64 = itxn[app9#0].GlobalNumByteSlice + let app9.LocalNumUint#0: uint64 = itxn[app9#0].LocalNumUint + let app9.LocalNumByteSlice#0: uint64 = itxn[app9#0].LocalNumByteSlice + let app9.ExtraProgramPages#0: uint64 = itxn[app9#0].ExtraProgramPages + let app9.Nonparticipation#0: bool = itxn[app9#0].Nonparticipation + let app9.NumLogs#0: uint64 = itxn[app9#0].NumLogs + let app9.CreatedAssetID#0: uint64 = itxn[app9#0].CreatedAssetID + let app9.CreatedApplicationID#0: uint64 = itxn[app9#0].CreatedApplicationID + let app9.LastLog#0: bytes = itxn[app9#0].LastLog + let app9.StateProofPK#0: bytes = itxn[app9#0].StateProofPK + let app9.NumApprovalProgramPages#0: uint64 = itxn[app9#0].NumApprovalProgramPages + let app9.NumClearStateProgramPages#0: uint64 = itxn[app9#0].NumClearStateProgramPages + let app10._is_last#0: bool = 0u + let app10.Sender#0: bytes = itxn[app10#0].Sender + let app10.Fee#0: uint64 = itxn[app10#0].Fee + let app10.FirstValid#0: uint64 = itxn[app10#0].FirstValid + let app10.FirstValidTime#0: uint64 = itxn[app10#0].FirstValidTime + let app10.LastValid#0: uint64 = itxn[app10#0].LastValid + let app10.Note#0: bytes = itxn[app10#0].Note + let app10.Lease#0: bytes = itxn[app10#0].Lease + let app10.Receiver#0: bytes = itxn[app10#0].Receiver + let app10.Amount#0: uint64 = itxn[app10#0].Amount + let app10.CloseRemainderTo#0: bytes = itxn[app10#0].CloseRemainderTo + let app10.VotePK#0: bytes = itxn[app10#0].VotePK + let app10.SelectionPK#0: bytes = itxn[app10#0].SelectionPK + let app10.VoteFirst#0: uint64 = itxn[app10#0].VoteFirst + let app10.VoteLast#0: uint64 = itxn[app10#0].VoteLast + let app10.VoteKeyDilution#0: uint64 = itxn[app10#0].VoteKeyDilution + let app10.Type#0: bytes = itxn[app10#0].Type + let app10.TypeEnum#0: uint64 = itxn[app10#0].TypeEnum + let app10.XferAsset#0: uint64 = itxn[app10#0].XferAsset + let app10.AssetAmount#0: uint64 = itxn[app10#0].AssetAmount + let app10.AssetSender#0: bytes = itxn[app10#0].AssetSender + let app10.AssetReceiver#0: bytes = itxn[app10#0].AssetReceiver + let app10.AssetCloseTo#0: bytes = itxn[app10#0].AssetCloseTo + let app10.GroupIndex#0: uint64 = itxn[app10#0].GroupIndex + let app10.TxID#0: bytes = itxn[app10#0].TxID + let app10.ApplicationID#0: uint64 = itxn[app10#0].ApplicationID + let app10.OnCompletion#0: uint64 = itxn[app10#0].OnCompletion + let app10.NumAppArgs#0: uint64 = itxn[app10#0].NumAppArgs + let app10.NumAccounts#0: uint64 = itxn[app10#0].NumAccounts + let app10.ApprovalProgram#0: bytes = itxn[app10#0].ApprovalProgram + let app10.ClearStateProgram#0: bytes = itxn[app10#0].ClearStateProgram + let app10.RekeyTo#0: bytes = itxn[app10#0].RekeyTo + let app10.ConfigAsset#0: uint64 = itxn[app10#0].ConfigAsset + let app10.ConfigAssetTotal#0: uint64 = itxn[app10#0].ConfigAssetTotal + let app10.ConfigAssetDecimals#0: uint64 = itxn[app10#0].ConfigAssetDecimals + let app10.ConfigAssetDefaultFrozen#0: bool = itxn[app10#0].ConfigAssetDefaultFrozen + let app10.ConfigAssetUnitName#0: bytes = itxn[app10#0].ConfigAssetUnitName + let app10.ConfigAssetName#0: bytes = itxn[app10#0].ConfigAssetName + let app10.ConfigAssetURL#0: bytes = itxn[app10#0].ConfigAssetURL + let app10.ConfigAssetMetadataHash#0: bytes = itxn[app10#0].ConfigAssetMetadataHash + let app10.ConfigAssetManager#0: bytes = itxn[app10#0].ConfigAssetManager + let app10.ConfigAssetReserve#0: bytes = itxn[app10#0].ConfigAssetReserve + let app10.ConfigAssetFreeze#0: bytes = itxn[app10#0].ConfigAssetFreeze + let app10.ConfigAssetClawback#0: bytes = itxn[app10#0].ConfigAssetClawback + let app10.FreezeAsset#0: uint64 = itxn[app10#0].FreezeAsset + let app10.FreezeAssetAccount#0: bytes = itxn[app10#0].FreezeAssetAccount + let app10.FreezeAssetFrozen#0: bool = itxn[app10#0].FreezeAssetFrozen + let app10.NumAssets#0: uint64 = itxn[app10#0].NumAssets + let app10.NumApplications#0: uint64 = itxn[app10#0].NumApplications + let app10.GlobalNumUint#0: uint64 = itxn[app10#0].GlobalNumUint + let app10.GlobalNumByteSlice#0: uint64 = itxn[app10#0].GlobalNumByteSlice + let app10.LocalNumUint#0: uint64 = itxn[app10#0].LocalNumUint + let app10.LocalNumByteSlice#0: uint64 = itxn[app10#0].LocalNumByteSlice + let app10.ExtraProgramPages#0: uint64 = itxn[app10#0].ExtraProgramPages + let app10.Nonparticipation#0: bool = itxn[app10#0].Nonparticipation + let app10.NumLogs#0: uint64 = itxn[app10#0].NumLogs + let app10.CreatedAssetID#0: uint64 = itxn[app10#0].CreatedAssetID + let app10.CreatedApplicationID#0: uint64 = itxn[app10#0].CreatedApplicationID + let app10.LastLog#0: bytes = itxn[app10#0].LastLog + let app10.StateProofPK#0: bytes = itxn[app10#0].StateProofPK + let app10.NumApprovalProgramPages#0: uint64 = itxn[app10#0].NumApprovalProgramPages + let app10.NumClearStateProgramPages#0: uint64 = itxn[app10#0].NumClearStateProgramPages + let app11._is_last#0: bool = 0u + let app11.Sender#0: bytes = itxn[app11#0].Sender + let app11.Fee#0: uint64 = itxn[app11#0].Fee + let app11.FirstValid#0: uint64 = itxn[app11#0].FirstValid + let app11.FirstValidTime#0: uint64 = itxn[app11#0].FirstValidTime + let app11.LastValid#0: uint64 = itxn[app11#0].LastValid + let app11.Note#0: bytes = itxn[app11#0].Note + let app11.Lease#0: bytes = itxn[app11#0].Lease + let app11.Receiver#0: bytes = itxn[app11#0].Receiver + let app11.Amount#0: uint64 = itxn[app11#0].Amount + let app11.CloseRemainderTo#0: bytes = itxn[app11#0].CloseRemainderTo + let app11.VotePK#0: bytes = itxn[app11#0].VotePK + let app11.SelectionPK#0: bytes = itxn[app11#0].SelectionPK + let app11.VoteFirst#0: uint64 = itxn[app11#0].VoteFirst + let app11.VoteLast#0: uint64 = itxn[app11#0].VoteLast + let app11.VoteKeyDilution#0: uint64 = itxn[app11#0].VoteKeyDilution + let app11.Type#0: bytes = itxn[app11#0].Type + let app11.TypeEnum#0: uint64 = itxn[app11#0].TypeEnum + let app11.XferAsset#0: uint64 = itxn[app11#0].XferAsset + let app11.AssetAmount#0: uint64 = itxn[app11#0].AssetAmount + let app11.AssetSender#0: bytes = itxn[app11#0].AssetSender + let app11.AssetReceiver#0: bytes = itxn[app11#0].AssetReceiver + let app11.AssetCloseTo#0: bytes = itxn[app11#0].AssetCloseTo + let app11.GroupIndex#0: uint64 = itxn[app11#0].GroupIndex + let app11.TxID#0: bytes = itxn[app11#0].TxID + let app11.ApplicationID#0: uint64 = itxn[app11#0].ApplicationID + let app11.OnCompletion#0: uint64 = itxn[app11#0].OnCompletion + let app11.NumAppArgs#0: uint64 = itxn[app11#0].NumAppArgs + let app11.NumAccounts#0: uint64 = itxn[app11#0].NumAccounts + let app11.ApprovalProgram#0: bytes = itxn[app11#0].ApprovalProgram + let app11.ClearStateProgram#0: bytes = itxn[app11#0].ClearStateProgram + let app11.RekeyTo#0: bytes = itxn[app11#0].RekeyTo + let app11.ConfigAsset#0: uint64 = itxn[app11#0].ConfigAsset + let app11.ConfigAssetTotal#0: uint64 = itxn[app11#0].ConfigAssetTotal + let app11.ConfigAssetDecimals#0: uint64 = itxn[app11#0].ConfigAssetDecimals + let app11.ConfigAssetDefaultFrozen#0: bool = itxn[app11#0].ConfigAssetDefaultFrozen + let app11.ConfigAssetUnitName#0: bytes = itxn[app11#0].ConfigAssetUnitName + let app11.ConfigAssetName#0: bytes = itxn[app11#0].ConfigAssetName + let app11.ConfigAssetURL#0: bytes = itxn[app11#0].ConfigAssetURL + let app11.ConfigAssetMetadataHash#0: bytes = itxn[app11#0].ConfigAssetMetadataHash + let app11.ConfigAssetManager#0: bytes = itxn[app11#0].ConfigAssetManager + let app11.ConfigAssetReserve#0: bytes = itxn[app11#0].ConfigAssetReserve + let app11.ConfigAssetFreeze#0: bytes = itxn[app11#0].ConfigAssetFreeze + let app11.ConfigAssetClawback#0: bytes = itxn[app11#0].ConfigAssetClawback + let app11.FreezeAsset#0: uint64 = itxn[app11#0].FreezeAsset + let app11.FreezeAssetAccount#0: bytes = itxn[app11#0].FreezeAssetAccount + let app11.FreezeAssetFrozen#0: bool = itxn[app11#0].FreezeAssetFrozen + let app11.NumAssets#0: uint64 = itxn[app11#0].NumAssets + let app11.NumApplications#0: uint64 = itxn[app11#0].NumApplications + let app11.GlobalNumUint#0: uint64 = itxn[app11#0].GlobalNumUint + let app11.GlobalNumByteSlice#0: uint64 = itxn[app11#0].GlobalNumByteSlice + let app11.LocalNumUint#0: uint64 = itxn[app11#0].LocalNumUint + let app11.LocalNumByteSlice#0: uint64 = itxn[app11#0].LocalNumByteSlice + let app11.ExtraProgramPages#0: uint64 = itxn[app11#0].ExtraProgramPages + let app11.Nonparticipation#0: bool = itxn[app11#0].Nonparticipation + let app11.NumLogs#0: uint64 = itxn[app11#0].NumLogs + let app11.CreatedAssetID#0: uint64 = itxn[app11#0].CreatedAssetID + let app11.CreatedApplicationID#0: uint64 = itxn[app11#0].CreatedApplicationID + let app11.LastLog#0: bytes = itxn[app11#0].LastLog + let app11.StateProofPK#0: bytes = itxn[app11#0].StateProofPK + let app11.NumApprovalProgramPages#0: uint64 = itxn[app11#0].NumApprovalProgramPages + let app11.NumClearStateProgramPages#0: uint64 = itxn[app11#0].NumClearStateProgramPages + let app12._is_last#0: bool = 0u + let app12.Sender#0: bytes = itxn[app12#0].Sender + let app12.Fee#0: uint64 = itxn[app12#0].Fee + let app12.FirstValid#0: uint64 = itxn[app12#0].FirstValid + let app12.FirstValidTime#0: uint64 = itxn[app12#0].FirstValidTime + let app12.LastValid#0: uint64 = itxn[app12#0].LastValid + let app12.Note#0: bytes = itxn[app12#0].Note + let app12.Lease#0: bytes = itxn[app12#0].Lease + let app12.Receiver#0: bytes = itxn[app12#0].Receiver + let app12.Amount#0: uint64 = itxn[app12#0].Amount + let app12.CloseRemainderTo#0: bytes = itxn[app12#0].CloseRemainderTo + let app12.VotePK#0: bytes = itxn[app12#0].VotePK + let app12.SelectionPK#0: bytes = itxn[app12#0].SelectionPK + let app12.VoteFirst#0: uint64 = itxn[app12#0].VoteFirst + let app12.VoteLast#0: uint64 = itxn[app12#0].VoteLast + let app12.VoteKeyDilution#0: uint64 = itxn[app12#0].VoteKeyDilution + let app12.Type#0: bytes = itxn[app12#0].Type + let app12.TypeEnum#0: uint64 = itxn[app12#0].TypeEnum + let app12.XferAsset#0: uint64 = itxn[app12#0].XferAsset + let app12.AssetAmount#0: uint64 = itxn[app12#0].AssetAmount + let app12.AssetSender#0: bytes = itxn[app12#0].AssetSender + let app12.AssetReceiver#0: bytes = itxn[app12#0].AssetReceiver + let app12.AssetCloseTo#0: bytes = itxn[app12#0].AssetCloseTo + let app12.GroupIndex#0: uint64 = itxn[app12#0].GroupIndex + let app12.TxID#0: bytes = itxn[app12#0].TxID + let app12.ApplicationID#0: uint64 = itxn[app12#0].ApplicationID + let app12.OnCompletion#0: uint64 = itxn[app12#0].OnCompletion + let app12.NumAppArgs#0: uint64 = itxn[app12#0].NumAppArgs + let app12.NumAccounts#0: uint64 = itxn[app12#0].NumAccounts + let app12.ApprovalProgram#0: bytes = itxn[app12#0].ApprovalProgram + let app12.ClearStateProgram#0: bytes = itxn[app12#0].ClearStateProgram + let app12.RekeyTo#0: bytes = itxn[app12#0].RekeyTo + let app12.ConfigAsset#0: uint64 = itxn[app12#0].ConfigAsset + let app12.ConfigAssetTotal#0: uint64 = itxn[app12#0].ConfigAssetTotal + let app12.ConfigAssetDecimals#0: uint64 = itxn[app12#0].ConfigAssetDecimals + let app12.ConfigAssetDefaultFrozen#0: bool = itxn[app12#0].ConfigAssetDefaultFrozen + let app12.ConfigAssetUnitName#0: bytes = itxn[app12#0].ConfigAssetUnitName + let app12.ConfigAssetName#0: bytes = itxn[app12#0].ConfigAssetName + let app12.ConfigAssetURL#0: bytes = itxn[app12#0].ConfigAssetURL + let app12.ConfigAssetMetadataHash#0: bytes = itxn[app12#0].ConfigAssetMetadataHash + let app12.ConfigAssetManager#0: bytes = itxn[app12#0].ConfigAssetManager + let app12.ConfigAssetReserve#0: bytes = itxn[app12#0].ConfigAssetReserve + let app12.ConfigAssetFreeze#0: bytes = itxn[app12#0].ConfigAssetFreeze + let app12.ConfigAssetClawback#0: bytes = itxn[app12#0].ConfigAssetClawback + let app12.FreezeAsset#0: uint64 = itxn[app12#0].FreezeAsset + let app12.FreezeAssetAccount#0: bytes = itxn[app12#0].FreezeAssetAccount + let app12.FreezeAssetFrozen#0: bool = itxn[app12#0].FreezeAssetFrozen + let app12.NumAssets#0: uint64 = itxn[app12#0].NumAssets + let app12.NumApplications#0: uint64 = itxn[app12#0].NumApplications + let app12.GlobalNumUint#0: uint64 = itxn[app12#0].GlobalNumUint + let app12.GlobalNumByteSlice#0: uint64 = itxn[app12#0].GlobalNumByteSlice + let app12.LocalNumUint#0: uint64 = itxn[app12#0].LocalNumUint + let app12.LocalNumByteSlice#0: uint64 = itxn[app12#0].LocalNumByteSlice + let app12.ExtraProgramPages#0: uint64 = itxn[app12#0].ExtraProgramPages + let app12.Nonparticipation#0: bool = itxn[app12#0].Nonparticipation + let app12.NumLogs#0: uint64 = itxn[app12#0].NumLogs + let app12.CreatedAssetID#0: uint64 = itxn[app12#0].CreatedAssetID + let app12.CreatedApplicationID#0: uint64 = itxn[app12#0].CreatedApplicationID + let app12.LastLog#0: bytes = itxn[app12#0].LastLog + let app12.StateProofPK#0: bytes = itxn[app12#0].StateProofPK + let app12.NumApprovalProgramPages#0: uint64 = itxn[app12#0].NumApprovalProgramPages + let app12.NumClearStateProgramPages#0: uint64 = itxn[app12#0].NumClearStateProgramPages + let app13._is_last#0: bool = 0u + let app13.Sender#0: bytes = itxn[app13#0].Sender + let app13.Fee#0: uint64 = itxn[app13#0].Fee + let app13.FirstValid#0: uint64 = itxn[app13#0].FirstValid + let app13.FirstValidTime#0: uint64 = itxn[app13#0].FirstValidTime + let app13.LastValid#0: uint64 = itxn[app13#0].LastValid + let app13.Note#0: bytes = itxn[app13#0].Note + let app13.Lease#0: bytes = itxn[app13#0].Lease + let app13.Receiver#0: bytes = itxn[app13#0].Receiver + let app13.Amount#0: uint64 = itxn[app13#0].Amount + let app13.CloseRemainderTo#0: bytes = itxn[app13#0].CloseRemainderTo + let app13.VotePK#0: bytes = itxn[app13#0].VotePK + let app13.SelectionPK#0: bytes = itxn[app13#0].SelectionPK + let app13.VoteFirst#0: uint64 = itxn[app13#0].VoteFirst + let app13.VoteLast#0: uint64 = itxn[app13#0].VoteLast + let app13.VoteKeyDilution#0: uint64 = itxn[app13#0].VoteKeyDilution + let app13.Type#0: bytes = itxn[app13#0].Type + let app13.TypeEnum#0: uint64 = itxn[app13#0].TypeEnum + let app13.XferAsset#0: uint64 = itxn[app13#0].XferAsset + let app13.AssetAmount#0: uint64 = itxn[app13#0].AssetAmount + let app13.AssetSender#0: bytes = itxn[app13#0].AssetSender + let app13.AssetReceiver#0: bytes = itxn[app13#0].AssetReceiver + let app13.AssetCloseTo#0: bytes = itxn[app13#0].AssetCloseTo + let app13.GroupIndex#0: uint64 = itxn[app13#0].GroupIndex + let app13.TxID#0: bytes = itxn[app13#0].TxID + let app13.ApplicationID#0: uint64 = itxn[app13#0].ApplicationID + let app13.OnCompletion#0: uint64 = itxn[app13#0].OnCompletion + let app13.NumAppArgs#0: uint64 = itxn[app13#0].NumAppArgs + let app13.NumAccounts#0: uint64 = itxn[app13#0].NumAccounts + let app13.ApprovalProgram#0: bytes = itxn[app13#0].ApprovalProgram + let app13.ClearStateProgram#0: bytes = itxn[app13#0].ClearStateProgram + let app13.RekeyTo#0: bytes = itxn[app13#0].RekeyTo + let app13.ConfigAsset#0: uint64 = itxn[app13#0].ConfigAsset + let app13.ConfigAssetTotal#0: uint64 = itxn[app13#0].ConfigAssetTotal + let app13.ConfigAssetDecimals#0: uint64 = itxn[app13#0].ConfigAssetDecimals + let app13.ConfigAssetDefaultFrozen#0: bool = itxn[app13#0].ConfigAssetDefaultFrozen + let app13.ConfigAssetUnitName#0: bytes = itxn[app13#0].ConfigAssetUnitName + let app13.ConfigAssetName#0: bytes = itxn[app13#0].ConfigAssetName + let app13.ConfigAssetURL#0: bytes = itxn[app13#0].ConfigAssetURL + let app13.ConfigAssetMetadataHash#0: bytes = itxn[app13#0].ConfigAssetMetadataHash + let app13.ConfigAssetManager#0: bytes = itxn[app13#0].ConfigAssetManager + let app13.ConfigAssetReserve#0: bytes = itxn[app13#0].ConfigAssetReserve + let app13.ConfigAssetFreeze#0: bytes = itxn[app13#0].ConfigAssetFreeze + let app13.ConfigAssetClawback#0: bytes = itxn[app13#0].ConfigAssetClawback + let app13.FreezeAsset#0: uint64 = itxn[app13#0].FreezeAsset + let app13.FreezeAssetAccount#0: bytes = itxn[app13#0].FreezeAssetAccount + let app13.FreezeAssetFrozen#0: bool = itxn[app13#0].FreezeAssetFrozen + let app13.NumAssets#0: uint64 = itxn[app13#0].NumAssets + let app13.NumApplications#0: uint64 = itxn[app13#0].NumApplications + let app13.GlobalNumUint#0: uint64 = itxn[app13#0].GlobalNumUint + let app13.GlobalNumByteSlice#0: uint64 = itxn[app13#0].GlobalNumByteSlice + let app13.LocalNumUint#0: uint64 = itxn[app13#0].LocalNumUint + let app13.LocalNumByteSlice#0: uint64 = itxn[app13#0].LocalNumByteSlice + let app13.ExtraProgramPages#0: uint64 = itxn[app13#0].ExtraProgramPages + let app13.Nonparticipation#0: bool = itxn[app13#0].Nonparticipation + let app13.NumLogs#0: uint64 = itxn[app13#0].NumLogs + let app13.CreatedAssetID#0: uint64 = itxn[app13#0].CreatedAssetID + let app13.CreatedApplicationID#0: uint64 = itxn[app13#0].CreatedApplicationID + let app13.LastLog#0: bytes = itxn[app13#0].LastLog + let app13.StateProofPK#0: bytes = itxn[app13#0].StateProofPK + let app13.NumApprovalProgramPages#0: uint64 = itxn[app13#0].NumApprovalProgramPages + let app13.NumClearStateProgramPages#0: uint64 = itxn[app13#0].NumClearStateProgramPages + let app14._is_last#0: bool = 0u + let app14.Sender#0: bytes = itxn[app14#0].Sender + let app14.Fee#0: uint64 = itxn[app14#0].Fee + let app14.FirstValid#0: uint64 = itxn[app14#0].FirstValid + let app14.FirstValidTime#0: uint64 = itxn[app14#0].FirstValidTime + let app14.LastValid#0: uint64 = itxn[app14#0].LastValid + let app14.Note#0: bytes = itxn[app14#0].Note + let app14.Lease#0: bytes = itxn[app14#0].Lease + let app14.Receiver#0: bytes = itxn[app14#0].Receiver + let app14.Amount#0: uint64 = itxn[app14#0].Amount + let app14.CloseRemainderTo#0: bytes = itxn[app14#0].CloseRemainderTo + let app14.VotePK#0: bytes = itxn[app14#0].VotePK + let app14.SelectionPK#0: bytes = itxn[app14#0].SelectionPK + let app14.VoteFirst#0: uint64 = itxn[app14#0].VoteFirst + let app14.VoteLast#0: uint64 = itxn[app14#0].VoteLast + let app14.VoteKeyDilution#0: uint64 = itxn[app14#0].VoteKeyDilution + let app14.Type#0: bytes = itxn[app14#0].Type + let app14.TypeEnum#0: uint64 = itxn[app14#0].TypeEnum + let app14.XferAsset#0: uint64 = itxn[app14#0].XferAsset + let app14.AssetAmount#0: uint64 = itxn[app14#0].AssetAmount + let app14.AssetSender#0: bytes = itxn[app14#0].AssetSender + let app14.AssetReceiver#0: bytes = itxn[app14#0].AssetReceiver + let app14.AssetCloseTo#0: bytes = itxn[app14#0].AssetCloseTo + let app14.GroupIndex#0: uint64 = itxn[app14#0].GroupIndex + let app14.TxID#0: bytes = itxn[app14#0].TxID + let app14.ApplicationID#0: uint64 = itxn[app14#0].ApplicationID + let app14.OnCompletion#0: uint64 = itxn[app14#0].OnCompletion + let app14.NumAppArgs#0: uint64 = itxn[app14#0].NumAppArgs + let app14.NumAccounts#0: uint64 = itxn[app14#0].NumAccounts + let app14.ApprovalProgram#0: bytes = itxn[app14#0].ApprovalProgram + let app14.ClearStateProgram#0: bytes = itxn[app14#0].ClearStateProgram + let app14.RekeyTo#0: bytes = itxn[app14#0].RekeyTo + let app14.ConfigAsset#0: uint64 = itxn[app14#0].ConfigAsset + let app14.ConfigAssetTotal#0: uint64 = itxn[app14#0].ConfigAssetTotal + let app14.ConfigAssetDecimals#0: uint64 = itxn[app14#0].ConfigAssetDecimals + let app14.ConfigAssetDefaultFrozen#0: bool = itxn[app14#0].ConfigAssetDefaultFrozen + let app14.ConfigAssetUnitName#0: bytes = itxn[app14#0].ConfigAssetUnitName + let app14.ConfigAssetName#0: bytes = itxn[app14#0].ConfigAssetName + let app14.ConfigAssetURL#0: bytes = itxn[app14#0].ConfigAssetURL + let app14.ConfigAssetMetadataHash#0: bytes = itxn[app14#0].ConfigAssetMetadataHash + let app14.ConfigAssetManager#0: bytes = itxn[app14#0].ConfigAssetManager + let app14.ConfigAssetReserve#0: bytes = itxn[app14#0].ConfigAssetReserve + let app14.ConfigAssetFreeze#0: bytes = itxn[app14#0].ConfigAssetFreeze + let app14.ConfigAssetClawback#0: bytes = itxn[app14#0].ConfigAssetClawback + let app14.FreezeAsset#0: uint64 = itxn[app14#0].FreezeAsset + let app14.FreezeAssetAccount#0: bytes = itxn[app14#0].FreezeAssetAccount + let app14.FreezeAssetFrozen#0: bool = itxn[app14#0].FreezeAssetFrozen + let app14.NumAssets#0: uint64 = itxn[app14#0].NumAssets + let app14.NumApplications#0: uint64 = itxn[app14#0].NumApplications + let app14.GlobalNumUint#0: uint64 = itxn[app14#0].GlobalNumUint + let app14.GlobalNumByteSlice#0: uint64 = itxn[app14#0].GlobalNumByteSlice + let app14.LocalNumUint#0: uint64 = itxn[app14#0].LocalNumUint + let app14.LocalNumByteSlice#0: uint64 = itxn[app14#0].LocalNumByteSlice + let app14.ExtraProgramPages#0: uint64 = itxn[app14#0].ExtraProgramPages + let app14.Nonparticipation#0: bool = itxn[app14#0].Nonparticipation + let app14.NumLogs#0: uint64 = itxn[app14#0].NumLogs + let app14.CreatedAssetID#0: uint64 = itxn[app14#0].CreatedAssetID + let app14.CreatedApplicationID#0: uint64 = itxn[app14#0].CreatedApplicationID + let app14.LastLog#0: bytes = itxn[app14#0].LastLog + let app14.StateProofPK#0: bytes = itxn[app14#0].StateProofPK + let app14.NumApprovalProgramPages#0: uint64 = itxn[app14#0].NumApprovalProgramPages + let app14.NumClearStateProgramPages#0: uint64 = itxn[app14#0].NumClearStateProgramPages + let app15._is_last#0: bool = 0u + let app15.Sender#0: bytes = itxn[app15#0].Sender + let app15.Fee#0: uint64 = itxn[app15#0].Fee + let app15.FirstValid#0: uint64 = itxn[app15#0].FirstValid + let app15.FirstValidTime#0: uint64 = itxn[app15#0].FirstValidTime + let app15.LastValid#0: uint64 = itxn[app15#0].LastValid + let app15.Note#0: bytes = itxn[app15#0].Note + let app15.Lease#0: bytes = itxn[app15#0].Lease + let app15.Receiver#0: bytes = itxn[app15#0].Receiver + let app15.Amount#0: uint64 = itxn[app15#0].Amount + let app15.CloseRemainderTo#0: bytes = itxn[app15#0].CloseRemainderTo + let app15.VotePK#0: bytes = itxn[app15#0].VotePK + let app15.SelectionPK#0: bytes = itxn[app15#0].SelectionPK + let app15.VoteFirst#0: uint64 = itxn[app15#0].VoteFirst + let app15.VoteLast#0: uint64 = itxn[app15#0].VoteLast + let app15.VoteKeyDilution#0: uint64 = itxn[app15#0].VoteKeyDilution + let app15.Type#0: bytes = itxn[app15#0].Type + let app15.TypeEnum#0: uint64 = itxn[app15#0].TypeEnum + let app15.XferAsset#0: uint64 = itxn[app15#0].XferAsset + let app15.AssetAmount#0: uint64 = itxn[app15#0].AssetAmount + let app15.AssetSender#0: bytes = itxn[app15#0].AssetSender + let app15.AssetReceiver#0: bytes = itxn[app15#0].AssetReceiver + let app15.AssetCloseTo#0: bytes = itxn[app15#0].AssetCloseTo + let app15.GroupIndex#0: uint64 = itxn[app15#0].GroupIndex + let app15.TxID#0: bytes = itxn[app15#0].TxID + let app15.ApplicationID#0: uint64 = itxn[app15#0].ApplicationID + let app15.OnCompletion#0: uint64 = itxn[app15#0].OnCompletion + let app15.NumAppArgs#0: uint64 = itxn[app15#0].NumAppArgs + let app15.NumAccounts#0: uint64 = itxn[app15#0].NumAccounts + let app15.ApprovalProgram#0: bytes = itxn[app15#0].ApprovalProgram + let app15.ClearStateProgram#0: bytes = itxn[app15#0].ClearStateProgram + let app15.RekeyTo#0: bytes = itxn[app15#0].RekeyTo + let app15.ConfigAsset#0: uint64 = itxn[app15#0].ConfigAsset + let app15.ConfigAssetTotal#0: uint64 = itxn[app15#0].ConfigAssetTotal + let app15.ConfigAssetDecimals#0: uint64 = itxn[app15#0].ConfigAssetDecimals + let app15.ConfigAssetDefaultFrozen#0: bool = itxn[app15#0].ConfigAssetDefaultFrozen + let app15.ConfigAssetUnitName#0: bytes = itxn[app15#0].ConfigAssetUnitName + let app15.ConfigAssetName#0: bytes = itxn[app15#0].ConfigAssetName + let app15.ConfigAssetURL#0: bytes = itxn[app15#0].ConfigAssetURL + let app15.ConfigAssetMetadataHash#0: bytes = itxn[app15#0].ConfigAssetMetadataHash + let app15.ConfigAssetManager#0: bytes = itxn[app15#0].ConfigAssetManager + let app15.ConfigAssetReserve#0: bytes = itxn[app15#0].ConfigAssetReserve + let app15.ConfigAssetFreeze#0: bytes = itxn[app15#0].ConfigAssetFreeze + let app15.ConfigAssetClawback#0: bytes = itxn[app15#0].ConfigAssetClawback + let app15.FreezeAsset#0: uint64 = itxn[app15#0].FreezeAsset + let app15.FreezeAssetAccount#0: bytes = itxn[app15#0].FreezeAssetAccount + let app15.FreezeAssetFrozen#0: bool = itxn[app15#0].FreezeAssetFrozen + let app15.NumAssets#0: uint64 = itxn[app15#0].NumAssets + let app15.NumApplications#0: uint64 = itxn[app15#0].NumApplications + let app15.GlobalNumUint#0: uint64 = itxn[app15#0].GlobalNumUint + let app15.GlobalNumByteSlice#0: uint64 = itxn[app15#0].GlobalNumByteSlice + let app15.LocalNumUint#0: uint64 = itxn[app15#0].LocalNumUint + let app15.LocalNumByteSlice#0: uint64 = itxn[app15#0].LocalNumByteSlice + let app15.ExtraProgramPages#0: uint64 = itxn[app15#0].ExtraProgramPages + let app15.Nonparticipation#0: bool = itxn[app15#0].Nonparticipation + let app15.NumLogs#0: uint64 = itxn[app15#0].NumLogs + let app15.CreatedAssetID#0: uint64 = itxn[app15#0].CreatedAssetID + let app15.CreatedApplicationID#0: uint64 = itxn[app15#0].CreatedApplicationID + let app15.LastLog#0: bytes = itxn[app15#0].LastLog + let app15.StateProofPK#0: bytes = itxn[app15#0].StateProofPK + let app15.NumApprovalProgramPages#0: uint64 = itxn[app15#0].NumApprovalProgramPages + let app15.NumClearStateProgramPages#0: uint64 = itxn[app15#0].NumClearStateProgramPages + let app16._is_last#0: bool = 1u + let app16.Sender#0: bytes = itxn[app16#0].Sender + let app16.Fee#0: uint64 = itxn[app16#0].Fee + let app16.FirstValid#0: uint64 = itxn[app16#0].FirstValid + let app16.FirstValidTime#0: uint64 = itxn[app16#0].FirstValidTime + let app16.LastValid#0: uint64 = itxn[app16#0].LastValid + let app16.Note#0: bytes = itxn[app16#0].Note + let app16.Lease#0: bytes = itxn[app16#0].Lease + let app16.Receiver#0: bytes = itxn[app16#0].Receiver + let app16.Amount#0: uint64 = itxn[app16#0].Amount + let app16.CloseRemainderTo#0: bytes = itxn[app16#0].CloseRemainderTo + let app16.VotePK#0: bytes = itxn[app16#0].VotePK + let app16.SelectionPK#0: bytes = itxn[app16#0].SelectionPK + let app16.VoteFirst#0: uint64 = itxn[app16#0].VoteFirst + let app16.VoteLast#0: uint64 = itxn[app16#0].VoteLast + let app16.VoteKeyDilution#0: uint64 = itxn[app16#0].VoteKeyDilution + let app16.Type#0: bytes = itxn[app16#0].Type + let app16.TypeEnum#0: uint64 = itxn[app16#0].TypeEnum + let app16.XferAsset#0: uint64 = itxn[app16#0].XferAsset + let app16.AssetAmount#0: uint64 = itxn[app16#0].AssetAmount + let app16.AssetSender#0: bytes = itxn[app16#0].AssetSender + let app16.AssetReceiver#0: bytes = itxn[app16#0].AssetReceiver + let app16.AssetCloseTo#0: bytes = itxn[app16#0].AssetCloseTo + let app16.GroupIndex#0: uint64 = itxn[app16#0].GroupIndex + let app16.TxID#0: bytes = itxn[app16#0].TxID + let app16.ApplicationID#0: uint64 = itxn[app16#0].ApplicationID + let app16.OnCompletion#0: uint64 = itxn[app16#0].OnCompletion + let app16.NumAppArgs#0: uint64 = itxn[app16#0].NumAppArgs + let app16.NumAccounts#0: uint64 = itxn[app16#0].NumAccounts + let app16.ApprovalProgram#0: bytes = itxn[app16#0].ApprovalProgram + let app16.ClearStateProgram#0: bytes = itxn[app16#0].ClearStateProgram + let app16.RekeyTo#0: bytes = itxn[app16#0].RekeyTo + let app16.ConfigAsset#0: uint64 = itxn[app16#0].ConfigAsset + let app16.ConfigAssetTotal#0: uint64 = itxn[app16#0].ConfigAssetTotal + let app16.ConfigAssetDecimals#0: uint64 = itxn[app16#0].ConfigAssetDecimals + let app16.ConfigAssetDefaultFrozen#0: bool = itxn[app16#0].ConfigAssetDefaultFrozen + let app16.ConfigAssetUnitName#0: bytes = itxn[app16#0].ConfigAssetUnitName + let app16.ConfigAssetName#0: bytes = itxn[app16#0].ConfigAssetName + let app16.ConfigAssetURL#0: bytes = itxn[app16#0].ConfigAssetURL + let app16.ConfigAssetMetadataHash#0: bytes = itxn[app16#0].ConfigAssetMetadataHash + let app16.ConfigAssetManager#0: bytes = itxn[app16#0].ConfigAssetManager + let app16.ConfigAssetReserve#0: bytes = itxn[app16#0].ConfigAssetReserve + let app16.ConfigAssetFreeze#0: bytes = itxn[app16#0].ConfigAssetFreeze + let app16.ConfigAssetClawback#0: bytes = itxn[app16#0].ConfigAssetClawback + let app16.FreezeAsset#0: uint64 = itxn[app16#0].FreezeAsset + let app16.FreezeAssetAccount#0: bytes = itxn[app16#0].FreezeAssetAccount + let app16.FreezeAssetFrozen#0: bool = itxn[app16#0].FreezeAssetFrozen + let app16.NumAssets#0: uint64 = itxn[app16#0].NumAssets + let app16.NumApplications#0: uint64 = itxn[app16#0].NumApplications + let app16.GlobalNumUint#0: uint64 = itxn[app16#0].GlobalNumUint + let app16.GlobalNumByteSlice#0: uint64 = itxn[app16#0].GlobalNumByteSlice + let app16.LocalNumUint#0: uint64 = itxn[app16#0].LocalNumUint + let app16.LocalNumByteSlice#0: uint64 = itxn[app16#0].LocalNumByteSlice + let app16.ExtraProgramPages#0: uint64 = itxn[app16#0].ExtraProgramPages + let app16.Nonparticipation#0: bool = itxn[app16#0].Nonparticipation + let app16.NumLogs#0: uint64 = itxn[app16#0].NumLogs + let app16.CreatedAssetID#0: uint64 = itxn[app16#0].CreatedAssetID + let app16.CreatedApplicationID#0: uint64 = itxn[app16#0].CreatedApplicationID + let app16.LastLog#0: bytes = itxn[app16#0].LastLog + let app16.StateProofPK#0: bytes = itxn[app16#0].StateProofPK + let app16.NumApprovalProgramPages#0: uint64 = itxn[app16#0].NumApprovalProgramPages + let app16.NumClearStateProgramPages#0: uint64 = itxn[app16#0].NumClearStateProgramPages + let tmp%0#0: bytes = itxn[app1#0].Logs[0u] + let tmp%1#0: bool = (== tmp%0#0 "1") + (assert tmp%1#0) + let tmp%2#0: bytes = itxn[app2#0].Logs[0u] + let tmp%3#0: bool = (== tmp%2#0 "2") + (assert tmp%3#0) + let tmp%4#0: bytes = itxn[app3#0].Logs[0u] + let tmp%5#0: bool = (== tmp%4#0 "3") + (assert tmp%5#0) + let tmp%6#0: bytes = itxn[app4#0].Logs[0u] + let tmp%7#0: bool = (== tmp%6#0 "4") + (assert tmp%7#0) + let tmp%8#0: bytes = itxn[app5#0].Logs[0u] + let tmp%9#0: bool = (== tmp%8#0 "5") + (assert tmp%9#0) + let tmp%10#0: bytes = itxn[app6#0].Logs[0u] + let tmp%11#0: bool = (== tmp%10#0 "6") + (assert tmp%11#0) + let tmp%12#0: bytes = itxn[app7#0].Logs[0u] + let tmp%13#0: bool = (== tmp%12#0 "7") + (assert tmp%13#0) + let tmp%14#0: bytes = itxn[app8#0].Logs[0u] + let tmp%15#0: bool = (== tmp%14#0 "8") + (assert tmp%15#0) + let tmp%16#0: bytes = itxn[app9#0].Logs[0u] + let tmp%17#0: bool = (== tmp%16#0 "9") + (assert tmp%17#0) + let tmp%18#0: bytes = itxn[app10#0].Logs[0u] + let tmp%19#0: bool = (== tmp%18#0 "10") + (assert tmp%19#0) + let tmp%20#0: bytes = itxn[app11#0].Logs[0u] + let tmp%21#0: bool = (== tmp%20#0 "11") + (assert tmp%21#0) + let tmp%22#0: bytes = itxn[app12#0].Logs[0u] + let tmp%23#0: bool = (== tmp%22#0 "12") + (assert tmp%23#0) + let tmp%24#0: bytes = itxn[app13#0].Logs[0u] + let tmp%25#0: bool = (== tmp%24#0 "13") + (assert tmp%25#0) + let tmp%26#0: bytes = itxn[app14#0].Logs[0u] + let tmp%27#0: bool = (== tmp%26#0 "14") + (assert tmp%27#0) + let tmp%28#0: bytes = itxn[app15#0].Logs[0u] + let tmp%29#0: bool = (== tmp%28#0 "15") + (assert tmp%29#0) + let tmp%30#0: bytes = itxn[app16#0].Logs[0u] + let tmp%31#0: bool = (== tmp%30#0 "16") + (assert tmp%31#0) + return + +subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.test4() -> void: + block@0: // L171 + let lotsOfBytes#0: bytes = (bzero 2044u) + let approval1#0: bytes = 0x098101 + let tmp%0#0: bytes = (concat 0x80fc0f lotsOfBytes#0) + let approval2#0: bytes = (concat tmp%0#0 0x48) + let appTxn1#0: itxn_field_set = itxn_field_set(0) + let appTxn1%%param_Fee_idx_0#0: uint64 = 0u + let appTxn1%%Fee_length#0: uint64 = 1u + let appTxn1%%param_TypeEnum_idx_0#0: uint64 = 6u + let appTxn1%%TypeEnum_length#0: uint64 = 1u + let appTxn1%%param_ApprovalProgramPages_idx_0#0: bytes = approval1#0 + let appTxn1%%param_ApprovalProgramPages_idx_1#0: bytes = approval2#0 + let appTxn1%%param_ApprovalProgramPages_idx_2#0: bytes = approval2#0 + let appTxn1%%param_ApprovalProgramPages_idx_3#0: bytes = approval2#0 + let appTxn1%%ApprovalProgramPages_length#0: uint64 = 4u + let appTxn1%%param_ClearStateProgramPages_idx_0#0: bytes = 0x098101 + let appTxn1%%ClearStateProgramPages_length#0: uint64 = 1u + let appTxn1%%param_OnCompletion_idx_0#0: uint64 = 5u + let appTxn1%%OnCompletion_length#0: uint64 = 1u + let appTxn1%%param_ApplicationArgs_idx_0#0: bytes = "1" + let appTxn1%%ApplicationArgs_length#0: uint64 = 1u + let appTxn1%%param_ExtraProgramPages_idx_0#0: uint64 = 3u + let appTxn1%%ExtraProgramPages_length#0: uint64 = 1u + let appTxn1%%Sender_length#0: uint64 = 0u + let appTxn1%%Note_length#0: uint64 = 0u + let appTxn1%%Receiver_length#0: uint64 = 0u + let appTxn1%%Amount_length#0: uint64 = 0u + let appTxn1%%CloseRemainderTo_length#0: uint64 = 0u + let appTxn1%%VotePK_length#0: uint64 = 0u + let appTxn1%%SelectionPK_length#0: uint64 = 0u + let appTxn1%%VoteFirst_length#0: uint64 = 0u + let appTxn1%%VoteLast_length#0: uint64 = 0u + let appTxn1%%VoteKeyDilution_length#0: uint64 = 0u + let appTxn1%%Type_length#0: uint64 = 0u + let appTxn1%%XferAsset_length#0: uint64 = 0u + let appTxn1%%AssetAmount_length#0: uint64 = 0u + let appTxn1%%AssetSender_length#0: uint64 = 0u + let appTxn1%%AssetReceiver_length#0: uint64 = 0u + let appTxn1%%AssetCloseTo_length#0: uint64 = 0u + let appTxn1%%ApplicationID_length#0: uint64 = 0u + let appTxn1%%ApprovalProgram_length#0: uint64 = 0u + let appTxn1%%ClearStateProgram_length#0: uint64 = 0u + let appTxn1%%RekeyTo_length#0: uint64 = 0u + let appTxn1%%ConfigAsset_length#0: uint64 = 0u + let appTxn1%%ConfigAssetTotal_length#0: uint64 = 0u + let appTxn1%%ConfigAssetDecimals_length#0: uint64 = 0u + let appTxn1%%ConfigAssetDefaultFrozen_length#0: uint64 = 0u + let appTxn1%%ConfigAssetUnitName_length#0: uint64 = 0u + let appTxn1%%ConfigAssetName_length#0: uint64 = 0u + let appTxn1%%ConfigAssetURL_length#0: uint64 = 0u + let appTxn1%%ConfigAssetMetadataHash_length#0: uint64 = 0u + let appTxn1%%ConfigAssetManager_length#0: uint64 = 0u + let appTxn1%%ConfigAssetReserve_length#0: uint64 = 0u + let appTxn1%%ConfigAssetFreeze_length#0: uint64 = 0u + let appTxn1%%ConfigAssetClawback_length#0: uint64 = 0u + let appTxn1%%FreezeAsset_length#0: uint64 = 0u + let appTxn1%%FreezeAssetAccount_length#0: uint64 = 0u + let appTxn1%%FreezeAssetFrozen_length#0: uint64 = 0u + let appTxn1%%GlobalNumUint_length#0: uint64 = 0u + let appTxn1%%GlobalNumByteSlice_length#0: uint64 = 0u + let appTxn1%%LocalNumUint_length#0: uint64 = 0u + let appTxn1%%LocalNumByteSlice_length#0: uint64 = 0u + let appTxn1%%Nonparticipation_length#0: uint64 = 0u + let appTxn1%%StateProofPK_length#0: uint64 = 0u + let appTxn1%%Accounts_length#0: uint64 = 0u + let appTxn1%%Assets_length#0: uint64 = 0u + let appTxn1%%Applications_length#0: uint64 = 0u + itxn_begin + ((itxn_field ExtraProgramPages) appTxn1%%param_ExtraProgramPages_idx_0#0) + ((itxn_field ApplicationArgs) appTxn1%%param_ApplicationArgs_idx_0#0) + ((itxn_field OnCompletion) appTxn1%%param_OnCompletion_idx_0#0) + ((itxn_field ClearStateProgramPages) appTxn1%%param_ClearStateProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn1%%param_ApprovalProgramPages_idx_0#0) + ((itxn_field ApprovalProgramPages) appTxn1%%param_ApprovalProgramPages_idx_1#0) + ((itxn_field ApprovalProgramPages) appTxn1%%param_ApprovalProgramPages_idx_2#0) + ((itxn_field ApprovalProgramPages) appTxn1%%param_ApprovalProgramPages_idx_3#0) + ((itxn_field TypeEnum) appTxn1%%param_TypeEnum_idx_0#0) + ((itxn_field Fee) appTxn1%%param_Fee_idx_0#0) + goto block@1 + block@1: // next_txn_L185 + itxn_submit + let app1#0: itxn_group_idx = itxn_group_idx(0) + let app1._is_last#0: bool = 1u + let app1.Sender#0: bytes = itxn[app1#0].Sender + let app1.Fee#0: uint64 = itxn[app1#0].Fee + let app1.FirstValid#0: uint64 = itxn[app1#0].FirstValid + let app1.FirstValidTime#0: uint64 = itxn[app1#0].FirstValidTime + let app1.LastValid#0: uint64 = itxn[app1#0].LastValid + let app1.Note#0: bytes = itxn[app1#0].Note + let app1.Lease#0: bytes = itxn[app1#0].Lease + let app1.Receiver#0: bytes = itxn[app1#0].Receiver + let app1.Amount#0: uint64 = itxn[app1#0].Amount + let app1.CloseRemainderTo#0: bytes = itxn[app1#0].CloseRemainderTo + let app1.VotePK#0: bytes = itxn[app1#0].VotePK + let app1.SelectionPK#0: bytes = itxn[app1#0].SelectionPK + let app1.VoteFirst#0: uint64 = itxn[app1#0].VoteFirst + let app1.VoteLast#0: uint64 = itxn[app1#0].VoteLast + let app1.VoteKeyDilution#0: uint64 = itxn[app1#0].VoteKeyDilution + let app1.Type#0: bytes = itxn[app1#0].Type + let app1.TypeEnum#0: uint64 = itxn[app1#0].TypeEnum + let app1.XferAsset#0: uint64 = itxn[app1#0].XferAsset + let app1.AssetAmount#0: uint64 = itxn[app1#0].AssetAmount + let app1.AssetSender#0: bytes = itxn[app1#0].AssetSender + let app1.AssetReceiver#0: bytes = itxn[app1#0].AssetReceiver + let app1.AssetCloseTo#0: bytes = itxn[app1#0].AssetCloseTo + let app1.GroupIndex#0: uint64 = itxn[app1#0].GroupIndex + let app1.TxID#0: bytes = itxn[app1#0].TxID + let app1.ApplicationID#0: uint64 = itxn[app1#0].ApplicationID + let app1.OnCompletion#0: uint64 = itxn[app1#0].OnCompletion + let app1.NumAppArgs#0: uint64 = itxn[app1#0].NumAppArgs + let app1.NumAccounts#0: uint64 = itxn[app1#0].NumAccounts + let app1.ApprovalProgram#0: bytes = itxn[app1#0].ApprovalProgram + let app1.ClearStateProgram#0: bytes = itxn[app1#0].ClearStateProgram + let app1.RekeyTo#0: bytes = itxn[app1#0].RekeyTo + let app1.ConfigAsset#0: uint64 = itxn[app1#0].ConfigAsset + let app1.ConfigAssetTotal#0: uint64 = itxn[app1#0].ConfigAssetTotal + let app1.ConfigAssetDecimals#0: uint64 = itxn[app1#0].ConfigAssetDecimals + let app1.ConfigAssetDefaultFrozen#0: bool = itxn[app1#0].ConfigAssetDefaultFrozen + let app1.ConfigAssetUnitName#0: bytes = itxn[app1#0].ConfigAssetUnitName + let app1.ConfigAssetName#0: bytes = itxn[app1#0].ConfigAssetName + let app1.ConfigAssetURL#0: bytes = itxn[app1#0].ConfigAssetURL + let app1.ConfigAssetMetadataHash#0: bytes = itxn[app1#0].ConfigAssetMetadataHash + let app1.ConfigAssetManager#0: bytes = itxn[app1#0].ConfigAssetManager + let app1.ConfigAssetReserve#0: bytes = itxn[app1#0].ConfigAssetReserve + let app1.ConfigAssetFreeze#0: bytes = itxn[app1#0].ConfigAssetFreeze + let app1.ConfigAssetClawback#0: bytes = itxn[app1#0].ConfigAssetClawback + let app1.FreezeAsset#0: uint64 = itxn[app1#0].FreezeAsset + let app1.FreezeAssetAccount#0: bytes = itxn[app1#0].FreezeAssetAccount + let app1.FreezeAssetFrozen#0: bool = itxn[app1#0].FreezeAssetFrozen + let app1.NumAssets#0: uint64 = itxn[app1#0].NumAssets + let app1.NumApplications#0: uint64 = itxn[app1#0].NumApplications + let app1.GlobalNumUint#0: uint64 = itxn[app1#0].GlobalNumUint + let app1.GlobalNumByteSlice#0: uint64 = itxn[app1#0].GlobalNumByteSlice + let app1.LocalNumUint#0: uint64 = itxn[app1#0].LocalNumUint + let app1.LocalNumByteSlice#0: uint64 = itxn[app1#0].LocalNumByteSlice + let app1.ExtraProgramPages#0: uint64 = itxn[app1#0].ExtraProgramPages + let app1.Nonparticipation#0: bool = itxn[app1#0].Nonparticipation + let app1.NumLogs#0: uint64 = itxn[app1#0].NumLogs + let app1.CreatedAssetID#0: uint64 = itxn[app1#0].CreatedAssetID + let app1.CreatedApplicationID#0: uint64 = itxn[app1#0].CreatedApplicationID + let app1.LastLog#0: bytes = itxn[app1#0].LastLog + let app1.StateProofPK#0: bytes = itxn[app1#0].StateProofPK + let app1.NumApprovalProgramPages#0: uint64 = itxn[app1#0].NumApprovalProgramPages + let app1.NumClearStateProgramPages#0: uint64 = itxn[app1#0].NumClearStateProgramPages + let tmp%1#0: bool = (== app1.ExtraProgramPages#0 3u) + (assert tmp%1#0) // extra pages = 3 + let tmp%2#0: bool = (== app1.NumApprovalProgramPages#0 2u) + (assert tmp%2#0) // approval pages = 2 + let tmp%3#0: bytes = itxn[app1#0].ApprovalProgramPages[0u] + let tmp%4#0: bytes = (concat approval1#0 approval2#0) + let length%0#0: uint64 = (len approval2#0) + let is_out_of_bounds%0#0: bool = (>= 0u length%0#0) + let bounded_index%0#0: uint64 = (select 0u length%0#0 is_out_of_bounds%0#0) + let is_out_of_bounds%1#0: bool = (>= 3u length%0#0) + let bounded_offset%0#0: uint64 = (select 3u length%0#0 is_out_of_bounds%1#0) + let bounded_index%1#0: uint64 = (- length%0#0 bounded_offset%0#0) + let end_before_start%0#0: bool = (< bounded_index%1#0 bounded_index%0#0) + let end%0#0: uint64 = (select bounded_index%1#0 bounded_index%0#0 end_before_start%0#0) + let tmp%5#0: bytes = (substring3 approval2#0 bounded_index%0#0 end%0#0) + let tmp%6#0: bytes = (concat tmp%4#0 tmp%5#0) + let tmp%7#0: bool = (== tmp%3#0 tmp%6#0) + (assert tmp%7#0) // expected approval page 0 + let tmp%8#0: bytes = itxn[app1#0].ApprovalProgramPages[1u] + let length%1#0: uint64 = (len approval2#0) + let is_out_of_bounds%2#0: bool = (>= 3u length%1#0) + let bounded_offset%1#0: uint64 = (select 3u length%1#0 is_out_of_bounds%2#0) + let bounded_index%2#0: uint64 = (- length%1#0 bounded_offset%1#0) + let tmp%9#0: bytes = (substring3 approval2#0 bounded_index%2#0 length%1#0) + let tmp%10#0: bytes = (concat tmp%9#0 approval2#0) + let tmp%11#0: bool = (== tmp%8#0 tmp%10#0) + (assert tmp%11#0) // expected approval page 1 + let tmp%12#0: bool = (== app1.NumClearStateProgramPages#0 1u) + (assert tmp%12#0) // clear state pages = 1 + let tmp%13#0: bytes = itxn[app1#0].ClearStateProgramPages[0u] + let tmp%14#0: bool = (== tmp%13#0 0x098101) + (assert tmp%14#0) // expected clear state page + return + +subroutine tests/approvals/itxn.algo.ts::ItxnDemoContract.__algots__.defaultCreate() -> void: + block@0: // L7 return \ No newline at end of file diff --git a/tests/approvals/out/unoptimized/itxn/itxn.awst b/tests/approvals/out/unoptimized/itxn/itxn.awst index 29df9cb94..cf009fdd8 100644 --- a/tests/approvals/out/unoptimized/itxn/itxn.awst +++ b/tests/approvals/out/unoptimized/itxn/itxn.awst @@ -8,26 +8,7 @@ contract ItxnDemoContract if (!Boolean(txn())) { this.constructor() } - if (Boolean(txn())) { - switch (txnas(0)) { - case "test1": - #switch₁ᶜ₀: - this.test1() - goto #switch₁ᵇ - case "test2": - #switch₁ᶜ₁: - this.test2() - goto #switch₁ᵇ - case "test3": - #switch₁ᶜ₂: - goto #switch₁ᶜ₃ - case "test4": - #switch₁ᶜ₃: - goto #switch₁ᵇ - } - #switch₁ᵇ: - } - return True + return arc4Router() } clearProgram(): bool @@ -50,7 +31,7 @@ contract ItxnDemoContract appCreateParams: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[0x098101], ClearStateProgramPages=[0x098101]) update_inner_transaction(assetParams, ConfigAssetName="AST3") [appCreateTxn, asset3_txn]: readonlytuple[inner_transaction_appl, inner_transaction_acfg] = submit_txn(appCreateParams, assetParams) - assert(Boolean(appCreateTxn.ApplicationID), comment=app is created) + assert(Boolean(appCreateTxn.CreatedApplicationID), comment=app is created) assert(asset3_txn.ConfigAssetName == "AST3", comment=asset3_txn is correct) update_inner_transaction(appCreateParams, Note="3rd") update_inner_transaction(assetParams, Note="3rd") @@ -61,14 +42,85 @@ contract ItxnDemoContract { if (Boolean(txn())) { args: readonlytuple[bytes, bytes] = ["1", "2"] - createAppParams: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[" "], ClearStateProgramPages=[" "], ApplicationArgs=[args.0, args.1], OnCompletion=0, Note="with args param set") + createAppParams: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[0x098101], ClearStateProgramPages=[0x098101], ApplicationArgs=[args.0, args.1], OnCompletion=0, Note="with args param set") } else { - createAppParams: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[" "], ClearStateProgramPages=[" "], ApplicationArgs=["3", "4", "5"], Note="no args param set") + createAppParams: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[0x098101], ClearStateProgramPages=[0x098101], ApplicationArgs=["3", "4", "5"], Note="no args param set") } createAppTxn: inner_transaction_appl = submit_txn(createAppParams) assert(createAppTxn.ApplicationArgs[0] == "1", comment=correct args used 1) assert(createAppTxn.ApplicationArgs[1] == "2", comment=correct args used 2) - assert(createAppTxn.Note == "with args param set") + if (txn() > 1) { + createAppTxn2: inner_transaction_appl = submit_txn(create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[0x098101], ClearStateProgramPages=[0x098101], OnCompletion=5, ApplicationArgs=["42"])) + assert(createAppTxn2.ApplicationArgs[0] == "42", comment=correct args used 2) + assert(createAppTxn.Note == "with args param set") + } + } + + test3(): void + { + appTxn1: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[0x09361a00b08101], ClearStateProgramPages=[0x098101], OnCompletion=5, ApplicationArgs=["1"]) + appTxn2: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn2, ApplicationArgs=["2"]) + appTxn3: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn3, ApplicationArgs=["3"]) + appTxn4: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn4, ApplicationArgs=["4"]) + appTxn5: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn5, ApplicationArgs=["5"]) + appTxn6: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn6, ApplicationArgs=["6"]) + appTxn7: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn7, ApplicationArgs=["7"]) + appTxn8: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn8, ApplicationArgs=["8"]) + appTxn9: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn9, ApplicationArgs=["9"]) + appTxn10: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn10, ApplicationArgs=["10"]) + appTxn11: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn11, ApplicationArgs=["11"]) + appTxn12: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn12, ApplicationArgs=["12"]) + appTxn13: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn13, ApplicationArgs=["13"]) + appTxn14: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn14, ApplicationArgs=["14"]) + appTxn15: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn15, ApplicationArgs=["15"]) + appTxn16: inner_transaction_fields_appl = copy(appTxn1) + update_inner_transaction(appTxn16, ApplicationArgs=["16"]) + [app1, app2, app3, app4, app5, app6, app7, app8, app9, app10, app11, app12, app13, app14, app15, app16]: readonlytuple[inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl, inner_transaction_appl] = submit_txn(appTxn1, appTxn2, appTxn3, appTxn4, appTxn5, appTxn6, appTxn7, appTxn8, appTxn9, appTxn10, appTxn11, appTxn12, appTxn13, appTxn14, appTxn15, appTxn16) + assert(app1.Logs[0] == "1") + assert(app2.Logs[0] == "2") + assert(app3.Logs[0] == "3") + assert(app4.Logs[0] == "4") + assert(app5.Logs[0] == "5") + assert(app6.Logs[0] == "6") + assert(app7.Logs[0] == "7") + assert(app8.Logs[0] == "8") + assert(app9.Logs[0] == "9") + assert(app10.Logs[0] == "10") + assert(app11.Logs[0] == "11") + assert(app12.Logs[0] == "12") + assert(app13.Logs[0] == "13") + assert(app14.Logs[0] == "14") + assert(app15.Logs[0] == "15") + assert(app16.Logs[0] == "16") + } + + test4(): void + { + lotsOfBytes: bytes = bzero(2044) + approval1: bytes = 0x098101 + approval2: bytes = concat(concat(0x80fc0f, lotsOfBytes), 0x48) + appTxn1: inner_transaction_fields_appl = create_inner_transaction(Fee=0, TypeEnum=6, ApprovalProgramPages=[approval1, approval2, approval2, approval2], ClearStateProgramPages=[0x098101], OnCompletion=5, ApplicationArgs=["1"], ExtraProgramPages=3) + app1: inner_transaction_appl = submit_txn(appTxn1) + assert(app1.ExtraProgramPages == 3, comment=extra pages = 3) + assert(app1.NumApprovalProgramPages == 2, comment=approval pages = 2) + assert(app1.ApprovalProgramPages[0] == concat(concat(approval1, approval2), approval2.slice(0, -3)), comment=expected approval page 0) + assert(app1.ApprovalProgramPages[1] == concat(approval2.slice(-3), approval2), comment=expected approval page 1) + assert(app1.NumClearStateProgramPages == 1, comment=clear state pages = 1) + assert(app1.ClearStateProgramPages[0] == 0x098101, comment=expected clear state page) } constructor(): void @@ -77,4 +129,8 @@ contract ItxnDemoContract GlobalState["name"]: bytes = 0x } + __algots__.defaultCreate(): void + { + } + } \ No newline at end of file diff --git a/tests/approvals/out/unoptimized/itxn/itxn.awst.json b/tests/approvals/out/unoptimized/itxn/itxn.awst.json index 3ac28de19..a4a44deda 100644 --- a/tests/approvals/out/unoptimized/itxn/itxn.awst.json +++ b/tests/approvals/out/unoptimized/itxn/itxn.awst.json @@ -6,22 +6,24 @@ "line": 7, "end_line": 7, "column": 0, - "end_column": 52 + "end_column": 48 }, "id": "tests/approvals/itxn.algo.ts::ItxnDemoContract", "name": "ItxnDemoContract", "description": null, "method_resolution_order": [ + "@algorandfoundation/algorand-typescript/arc4/index.d.ts::Contract", "@algorandfoundation/algorand-typescript/base-contract.d.ts::BaseContract" ], "approval_program": { "_type": "ContractMethod", "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 10, - "end_line": 10, - "column": 2, - "end_column": 35 + "_type": "SourceLocation", + "file": null, + "line": 1, + "end_line": 1, + "column": 0, + "end_column": 1 }, "args": [], "return_type": { @@ -165,490 +167,33 @@ { "_type": "Block", "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 10, - "end_line": 25, - "column": 36, - "end_column": 3 + "_type": "SourceLocation", + "file": null, + "line": 1, + "end_line": 1, + "column": 0, + "end_column": 1 }, "body": [ - { - "_type": "IfElse", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 11, - "end_line": 11, - "column": 4, - "end_column": 23 - }, - "condition": { - "_type": "ReinterpretCast", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 11, - "end_line": 11, - "column": 8, - "end_column": 22 - }, - "wtype": { - "_type": "WType", - "name": "bool", - "immutable": true, - "ephemeral": false, - "scalar_type": 2 - }, - "expr": { - "_type": "IntrinsicCall", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 11, - "end_line": 11, - "column": 12, - "end_column": 22 - }, - "wtype": { - "_type": "WType", - "name": "uint64", - "immutable": true, - "ephemeral": false, - "scalar_type": 2 - }, - "op_code": "txn", - "immediates": [ - "NumAppArgs" - ], - "stack_args": [] - } - }, - "if_branch": { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 11, - "end_line": 23, - "column": 24, - "end_column": 5 - }, - "body": [ - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 11, - "end_line": 23, - "column": 24, - "end_column": 5 - }, - "body": [ - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 12, - "end_line": 22, - "column": 6, - "end_column": 7 - }, - "body": [ - { - "_type": "Switch", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 12, - "end_line": 22, - "column": 6, - "end_column": 7 - }, - "value": { - "_type": "IntrinsicCall", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 12, - "end_line": 12, - "column": 14, - "end_column": 36 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 - }, - "op_code": "txnas", - "immediates": [ - "ApplicationArgs" - ], - "stack_args": [ - { - "_type": "IntegerConstant", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 12, - "end_line": 12, - "column": 34, - "end_column": 35 - }, - "wtype": { - "_type": "WType", - "name": "uint64", - "immutable": true, - "ephemeral": false, - "scalar_type": 2 - }, - "value": "0", - "teal_alias": null - } - ] - }, - "cases": [ - [ - { - "_type": "BytesConstant", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 13, - "end_line": 13, - "column": 19, - "end_column": 26 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 - }, - "value": "bY*jNF#", - "encoding": "utf8" - }, - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 13, - "end_line": 15, - "column": 8, - "end_column": 15 - }, - "body": [ - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 13, - "end_line": 15, - "column": 8, - "end_column": 15 - }, - "body": [], - "label": "#switch₁ᶜ₀", - "comment": null - }, - { - "_type": "ExpressionStatement", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 14, - "end_line": 14, - "column": 10, - "end_column": 22 - }, - "expr": { - "_type": "SubroutineCallExpression", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 14, - "end_line": 14, - "column": 10, - "end_column": 22 - }, - "wtype": { - "_type": "WType", - "name": "void", - "immutable": true, - "ephemeral": false, - "scalar_type": null - }, - "target": { - "_type": "InstanceMethodTarget", - "member_name": "test1" - }, - "args": [] - } - }, - { - "_type": "Goto", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 15, - "end_line": 15, - "column": 10, - "end_column": 15 - }, - "target": "#switch₁ᵇ" - } - ], - "label": null, - "comment": null - } - ], - [ - { - "_type": "BytesConstant", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 16, - "end_line": 16, - "column": 19, - "end_column": 26 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 - }, - "value": "bY*jNG5", - "encoding": "utf8" - }, - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 16, - "end_line": 18, - "column": 8, - "end_column": 15 - }, - "body": [ - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 16, - "end_line": 18, - "column": 8, - "end_column": 15 - }, - "body": [], - "label": "#switch₁ᶜ₁", - "comment": null - }, - { - "_type": "ExpressionStatement", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 17, - "end_line": 17, - "column": 10, - "end_column": 22 - }, - "expr": { - "_type": "SubroutineCallExpression", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 17, - "end_line": 17, - "column": 10, - "end_column": 22 - }, - "wtype": { - "_type": "WType", - "name": "void", - "immutable": true, - "ephemeral": false, - "scalar_type": null - }, - "target": { - "_type": "InstanceMethodTarget", - "member_name": "test2" - }, - "args": [] - } - }, - { - "_type": "Goto", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 18, - "end_line": 18, - "column": 10, - "end_column": 15 - }, - "target": "#switch₁ᵇ" - } - ], - "label": null, - "comment": null - } - ], - [ - { - "_type": "BytesConstant", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 19, - "end_line": 19, - "column": 19, - "end_column": 26 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 - }, - "value": "bY*jNGX", - "encoding": "utf8" - }, - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 19, - "end_line": 19, - "column": 8, - "end_column": 28 - }, - "body": [ - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 19, - "end_line": 19, - "column": 8, - "end_column": 28 - }, - "body": [], - "label": "#switch₁ᶜ₂", - "comment": null - }, - { - "_type": "Goto", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 19, - "end_line": 19, - "column": 8, - "end_column": 28 - }, - "target": "#switch₁ᶜ₃" - } - ], - "label": null, - "comment": null - } - ], - [ - { - "_type": "BytesConstant", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 20, - "end_line": 20, - "column": 19, - "end_column": 26 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 - }, - "value": "bY*jNGy", - "encoding": "utf8" - }, - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 20, - "end_line": 21, - "column": 8, - "end_column": 15 - }, - "body": [ - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 20, - "end_line": 21, - "column": 8, - "end_column": 15 - }, - "body": [], - "label": "#switch₁ᶜ₃", - "comment": null - }, - { - "_type": "Goto", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 21, - "end_line": 21, - "column": 10, - "end_column": 15 - }, - "target": "#switch₁ᵇ" - } - ], - "label": null, - "comment": null - } - ] - ], - "default_case": null - }, - { - "_type": "Block", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 12, - "end_line": 22, - "column": 6, - "end_column": 7 - }, - "body": [], - "label": "#switch₁ᵇ", - "comment": null - } - ], - "label": null, - "comment": null - } - ], - "label": null, - "comment": null - } - ], - "label": null, - "comment": null - }, - "else_branch": null - }, { "_type": "ReturnStatement", "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 24, - "end_line": 24, - "column": 4, - "end_column": 15 + "_type": "SourceLocation", + "file": null, + "line": 1, + "end_line": 1, + "column": 0, + "end_column": 1 }, "value": { - "_type": "BoolConstant", + "_type": "ARC4Router", "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 24, - "end_line": 24, - "column": 11, - "end_column": 15 + "_type": "SourceLocation", + "file": null, + "line": 1, + "end_line": 1, + "column": 0, + "end_column": 1 }, "wtype": { "_type": "WType", @@ -656,8 +201,7 @@ "immutable": true, "ephemeral": false, "scalar_type": 2 - }, - "value": true + } } } ], @@ -674,7 +218,7 @@ "args": {}, "returns": null }, - "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", + "cref": "@algorandfoundation/algorand-typescript/arc4/index.d.ts::Contract", "member_name": "approvalProgram", "arc4_method_config": null }, @@ -756,10 +300,10 @@ "_type": "ContractMethod", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 27, - "end_line": 27, + "line": 10, + "end_line": 10, "column": 2, - "end_column": 17 + "end_column": 16 }, "args": [], "return_type": { @@ -773,9 +317,9 @@ "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 27, - "end_line": 73, - "column": 18, + "line": 10, + "end_line": 56, + "column": 17, "end_column": 3 }, "body": [ @@ -783,8 +327,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 28, - "end_line": 28, + "line": 11, + "end_line": 11, "column": 4, "end_column": 35 }, @@ -792,8 +336,8 @@ "_type": "AppStateExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 28, - "end_line": 28, + "line": 11, + "end_line": 11, "column": 14, "end_column": 19 }, @@ -829,8 +373,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 28, - "end_line": 28, + "line": 11, + "end_line": 11, "column": 28, "end_column": 34 }, @@ -849,8 +393,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 30, - "end_line": 37, + "line": 13, + "end_line": 20, "column": 10, "end_column": 6 }, @@ -858,8 +402,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 30, - "end_line": 30, + "line": 13, + "end_line": 13, "column": 10, "end_column": 21 }, @@ -877,8 +421,8 @@ "_type": "CreateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 30, - "end_line": 37, + "line": 13, + "end_line": 20, "column": 24, "end_column": 6 }, @@ -895,8 +439,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 30, - "end_line": 37, + "line": 13, + "end_line": 20, "column": 24, "end_column": 6 }, @@ -914,8 +458,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 30, - "end_line": 37, + "line": 13, + "end_line": 20, "column": 24, "end_column": 6 }, @@ -933,8 +477,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 31, - "end_line": 31, + "line": 14, + "end_line": 14, "column": 13, "end_column": 17 }, @@ -952,8 +496,8 @@ "_type": "AppStateExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 32, - "end_line": 32, + "line": 15, + "end_line": 15, "column": 27, "end_column": 32 }, @@ -989,8 +533,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 33, - "end_line": 33, + "line": 16, + "end_line": 16, "column": 16, "end_column": 22 }, @@ -1008,8 +552,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 34, - "end_line": 34, + "line": 17, + "end_line": 17, "column": 16, "end_column": 17 }, @@ -1027,8 +571,8 @@ "_type": "IntrinsicCall", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 35, - "end_line": 35, + "line": 18, + "end_line": 18, "column": 22, "end_column": 47 }, @@ -1049,8 +593,8 @@ "_type": "IntrinsicCall", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 36, - "end_line": 36, + "line": 19, + "end_line": 19, "column": 22, "end_column": 47 }, @@ -1074,8 +618,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 39, - "end_line": 39, + "line": 22, + "end_line": 22, "column": 4, "end_column": 35 }, @@ -1083,8 +627,8 @@ "_type": "AppStateExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 39, - "end_line": 39, + "line": 22, + "end_line": 22, "column": 14, "end_column": 19 }, @@ -1120,8 +664,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 39, - "end_line": 39, + "line": 22, + "end_line": 22, "column": 28, "end_column": 34 }, @@ -1140,8 +684,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 40, - "end_line": 40, + "line": 23, + "end_line": 23, "column": 10, "end_column": 43 }, @@ -1149,8 +693,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 40, - "end_line": 40, + "line": 23, + "end_line": 23, "column": 10, "end_column": 20 }, @@ -1168,8 +712,8 @@ "_type": "SubmitInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 40, - "end_line": 40, + "line": 23, + "end_line": 23, "column": 23, "end_column": 43 }, @@ -1186,8 +730,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 40, - "end_line": 40, + "line": 23, + "end_line": 23, "column": 23, "end_column": 34 }, @@ -1208,8 +752,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 41, - "end_line": 43, + "line": 24, + "end_line": 26, "column": 4, "end_column": 6 }, @@ -1217,8 +761,8 @@ "_type": "UpdateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 41, - "end_line": 43, + "line": 24, + "end_line": 26, "column": 4, "end_column": 6 }, @@ -1234,8 +778,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 41, - "end_line": 41, + "line": 24, + "end_line": 24, "column": 4, "end_column": 15 }, @@ -1254,8 +798,8 @@ "_type": "AppStateExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 42, - "end_line": 42, + "line": 25, + "end_line": 25, "column": 27, "end_column": 32 }, @@ -1294,8 +838,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 44, - "end_line": 44, + "line": 27, + "end_line": 27, "column": 10, "end_column": 43 }, @@ -1303,8 +847,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 44, - "end_line": 44, + "line": 27, + "end_line": 27, "column": 10, "end_column": 20 }, @@ -1322,8 +866,8 @@ "_type": "SubmitInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 44, - "end_line": 44, + "line": 27, + "end_line": 27, "column": 23, "end_column": 43 }, @@ -1340,8 +884,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 44, - "end_line": 44, + "line": 27, + "end_line": 27, "column": 23, "end_column": 34 }, @@ -1362,8 +906,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 46, - "end_line": 46, + "line": 29, + "end_line": 29, "column": 4, "end_column": 75 }, @@ -1371,8 +915,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 46, - "end_line": 46, + "line": 29, + "end_line": 29, "column": 4, "end_column": 75 }, @@ -1387,8 +931,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 46, - "end_line": 46, + "line": 29, + "end_line": 29, "column": 11, "end_column": 49 }, @@ -1403,8 +947,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 46, - "end_line": 46, + "line": 29, + "end_line": 29, "column": 22, "end_column": 31 }, @@ -1419,8 +963,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 46, - "end_line": 46, + "line": 29, + "end_line": 29, "column": 11, "end_column": 21 }, @@ -1442,8 +986,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 46, - "end_line": 46, + "line": 29, + "end_line": 29, "column": 42, "end_column": 48 }, @@ -1465,8 +1009,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 47, - "end_line": 47, + "line": 30, + "end_line": 30, "column": 4, "end_column": 75 }, @@ -1474,8 +1018,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 47, - "end_line": 47, + "line": 30, + "end_line": 30, "column": 4, "end_column": 75 }, @@ -1490,8 +1034,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 47, - "end_line": 47, + "line": 30, + "end_line": 30, "column": 11, "end_column": 49 }, @@ -1506,8 +1050,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 47, - "end_line": 47, + "line": 30, + "end_line": 30, "column": 22, "end_column": 31 }, @@ -1522,8 +1066,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 47, - "end_line": 47, + "line": 30, + "end_line": 30, "column": 11, "end_column": 21 }, @@ -1545,8 +1089,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 47, - "end_line": 47, + "line": 30, + "end_line": 30, "column": 42, "end_column": 48 }, @@ -1568,8 +1112,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 4, "end_column": 88 }, @@ -1577,8 +1121,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 4, "end_column": 88 }, @@ -1593,8 +1137,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 11, "end_column": 57 }, @@ -1609,8 +1153,8 @@ "_type": "CheckedMaybe", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 35, "end_column": 39 }, @@ -1625,8 +1169,8 @@ "_type": "IntrinsicCall", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 35, "end_column": 39 }, @@ -1662,8 +1206,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 22, "end_column": 34 }, @@ -1678,8 +1222,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 11, "end_column": 21 }, @@ -1705,8 +1249,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 48, - "end_line": 48, + "line": 31, + "end_line": 31, "column": 50, "end_column": 56 }, @@ -1728,8 +1272,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 4, "end_column": 88 }, @@ -1737,8 +1281,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 4, "end_column": 88 }, @@ -1753,8 +1297,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 11, "end_column": 57 }, @@ -1769,8 +1313,8 @@ "_type": "CheckedMaybe", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 35, "end_column": 39 }, @@ -1785,8 +1329,8 @@ "_type": "IntrinsicCall", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 35, "end_column": 39 }, @@ -1822,8 +1366,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 22, "end_column": 34 }, @@ -1838,8 +1382,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 11, "end_column": 21 }, @@ -1865,8 +1409,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 49, - "end_line": 49, + "line": 32, + "end_line": 32, "column": 50, "end_column": 56 }, @@ -1888,8 +1432,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 51, - "end_line": 55, + "line": 34, + "end_line": 38, "column": 10, "end_column": 6 }, @@ -1897,8 +1441,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 51, - "end_line": 51, + "line": 34, + "end_line": 34, "column": 10, "end_column": 25 }, @@ -1916,8 +1460,8 @@ "_type": "CreateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 51, - "end_line": 55, + "line": 34, + "end_line": 38, "column": 28, "end_column": 6 }, @@ -1934,8 +1478,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 54, - "end_line": 54, + "line": 37, + "end_line": 37, "column": 11, "end_column": 12 }, @@ -1953,8 +1497,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 51, - "end_line": 55, + "line": 34, + "end_line": 38, "column": 28, "end_column": 6 }, @@ -1972,10 +1516,10 @@ "_type": "TupleExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 52, - "end_line": 52, - "column": 23, - "end_column": 46 + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WTuple", @@ -1998,10 +1542,10 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 52, - "end_line": 52, - "column": 23, - "end_column": 46 + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WType", @@ -2019,10 +1563,10 @@ "_type": "TupleExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 53, - "end_line": 53, - "column": 25, - "end_column": 48 + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WTuple", @@ -2045,10 +1589,10 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 53, - "end_line": 53, - "column": 25, - "end_column": 48 + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WType", @@ -2069,8 +1613,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 57, - "end_line": 59, + "line": 40, + "end_line": 42, "column": 4, "end_column": 6 }, @@ -2078,8 +1622,8 @@ "_type": "UpdateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 57, - "end_line": 59, + "line": 40, + "end_line": 42, "column": 4, "end_column": 6 }, @@ -2095,8 +1639,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 57, - "end_line": 57, + "line": 40, + "end_line": 40, "column": 4, "end_column": 15 }, @@ -2115,8 +1659,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 58, - "end_line": 58, + "line": 41, + "end_line": 41, "column": 17, "end_column": 23 }, @@ -2137,8 +1681,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 10, "end_column": 85 }, @@ -2146,8 +1690,8 @@ "_type": "TupleExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 10, "end_column": 85 }, @@ -2181,8 +1725,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 11, "end_column": 23 }, @@ -2200,8 +1744,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 25, "end_column": 35 }, @@ -2221,8 +1765,8 @@ "_type": "SubmitInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 39, "end_column": 85 }, @@ -2256,8 +1800,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 56, "end_column": 71 }, @@ -2275,8 +1819,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 61, - "end_line": 61, + "line": 44, + "end_line": 44, "column": 73, "end_column": 84 }, @@ -2297,19 +1841,19 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 63, - "end_line": 63, + "line": 46, + "end_line": 46, "column": 4, - "end_column": 48 + "end_column": 53 }, "expr": { "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 63, - "end_line": 63, + "line": 46, + "end_line": 46, "column": 4, - "end_column": 48 + "end_column": 53 }, "wtype": { "_type": "WType", @@ -2322,10 +1866,10 @@ "_type": "ReinterpretCast", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 63, - "end_line": 63, + "line": 46, + "end_line": 46, "column": 4, - "end_column": 48 + "end_column": 53 }, "wtype": { "_type": "WType", @@ -2338,10 +1882,10 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 63, - "end_line": 63, + "line": 46, + "end_line": 46, "column": 24, - "end_column": 29 + "end_column": 34 }, "wtype": { "_type": "WType", @@ -2354,8 +1898,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 63, - "end_line": 63, + "line": 46, + "end_line": 46, "column": 11, "end_column": 23 }, @@ -2369,7 +1913,7 @@ }, "name": "appCreateTxn" }, - "field": "ApplicationID", + "field": "CreatedApplicationID", "array_index": null } }, @@ -2380,8 +1924,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 64, - "end_line": 64, + "line": 47, + "end_line": 47, "column": 4, "end_column": 75 }, @@ -2389,8 +1933,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 64, - "end_line": 64, + "line": 47, + "end_line": 47, "column": 4, "end_column": 75 }, @@ -2405,8 +1949,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 64, - "end_line": 64, + "line": 47, + "end_line": 47, "column": 11, "end_column": 49 }, @@ -2421,8 +1965,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 64, - "end_line": 64, + "line": 47, + "end_line": 47, "column": 22, "end_column": 31 }, @@ -2437,8 +1981,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 64, - "end_line": 64, + "line": 47, + "end_line": 47, "column": 11, "end_column": 21 }, @@ -2460,8 +2004,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 64, - "end_line": 64, + "line": 47, + "end_line": 47, "column": 42, "end_column": 48 }, @@ -2483,8 +2027,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 66, - "end_line": 68, + "line": 49, + "end_line": 51, "column": 4, "end_column": 6 }, @@ -2492,8 +2036,8 @@ "_type": "UpdateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 66, - "end_line": 68, + "line": 49, + "end_line": 51, "column": 4, "end_column": 6 }, @@ -2509,8 +2053,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 66, - "end_line": 66, + "line": 49, + "end_line": 49, "column": 4, "end_column": 19 }, @@ -2529,8 +2073,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 67, - "end_line": 67, + "line": 50, + "end_line": 50, "column": 12, "end_column": 17 }, @@ -2551,8 +2095,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 69, - "end_line": 71, + "line": 52, + "end_line": 54, "column": 4, "end_column": 6 }, @@ -2560,8 +2104,8 @@ "_type": "UpdateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 69, - "end_line": 71, + "line": 52, + "end_line": 54, "column": 4, "end_column": 6 }, @@ -2577,8 +2121,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 69, - "end_line": 69, + "line": 52, + "end_line": 52, "column": 4, "end_column": 15 }, @@ -2597,8 +2141,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 70, - "end_line": 70, + "line": 53, + "end_line": 53, "column": 12, "end_column": 17 }, @@ -2619,8 +2163,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 72, - "end_line": 72, + "line": 55, + "end_line": 55, "column": 4, "end_column": 50 }, @@ -2628,8 +2172,8 @@ "_type": "SubmitInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 72, - "end_line": 72, + "line": 55, + "end_line": 55, "column": 4, "end_column": 50 }, @@ -2663,8 +2207,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 72, - "end_line": 72, + "line": 55, + "end_line": 55, "column": 21, "end_column": 36 }, @@ -2682,8 +2226,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 72, - "end_line": 72, + "line": 55, + "end_line": 55, "column": 38, "end_column": 49 }, @@ -2712,16 +2256,34 @@ }, "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", "member_name": "test1", - "arc4_method_config": null + "arc4_method_config": { + "_type": "ARC4ABIMethodConfig", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 10, + "end_line": 10, + "column": 2, + "end_column": 16 + }, + "name": "test1", + "is_bare": false, + "create": 3, + "readonly": false, + "allowed_completion_types": [ + 0 + ], + "default_args": {}, + "structs": {} + } }, { "_type": "ContractMethod", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 75, - "end_line": 75, + "line": 58, + "end_line": 58, "column": 2, - "end_column": 17 + "end_column": 16 }, "args": [], "return_type": { @@ -2735,9 +2297,9 @@ "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 75, - "end_line": 98, - "column": 18, + "line": 58, + "end_line": 93, + "column": 17, "end_column": 3 }, "body": [ @@ -2745,8 +2307,8 @@ "_type": "IfElse", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 77, - "end_line": 77, + "line": 60, + "end_line": 60, "column": 4, "end_column": 23 }, @@ -2754,8 +2316,8 @@ "_type": "ReinterpretCast", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 77, - "end_line": 77, + "line": 60, + "end_line": 60, "column": 8, "end_column": 22 }, @@ -2770,8 +2332,8 @@ "_type": "IntrinsicCall", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 77, - "end_line": 77, + "line": 60, + "end_line": 60, "column": 12, "end_column": 22 }, @@ -2793,8 +2355,8 @@ "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 77, - "end_line": 86, + "line": 60, + "end_line": 69, "column": 24, "end_column": 5 }, @@ -2803,8 +2365,8 @@ "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 77, - "end_line": 86, + "line": 60, + "end_line": 69, "column": 24, "end_column": 5 }, @@ -2813,8 +2375,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 78, - "end_line": 78, + "line": 61, + "end_line": 61, "column": 12, "end_column": 52 }, @@ -2822,8 +2384,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 78, - "end_line": 78, + "line": 61, + "end_line": 61, "column": 12, "end_column": 16 }, @@ -2856,8 +2418,8 @@ "_type": "TupleExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 78, - "end_line": 78, + "line": 61, + "end_line": 61, "column": 19, "end_column": 43 }, @@ -2889,8 +2451,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 78, - "end_line": 78, + "line": 61, + "end_line": 61, "column": 26, "end_column": 29 }, @@ -2908,8 +2470,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 78, - "end_line": 78, + "line": 61, + "end_line": 61, "column": 38, "end_column": 41 }, @@ -2930,8 +2492,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 79, - "end_line": 85, + "line": 62, + "end_line": 68, "column": 6, "end_column": 8 }, @@ -2939,8 +2501,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 79, - "end_line": 79, + "line": 62, + "end_line": 62, "column": 6, "end_column": 21 }, @@ -2958,8 +2520,8 @@ "_type": "CreateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 79, - "end_line": 85, + "line": 62, + "end_line": 68, "column": 24, "end_column": 8 }, @@ -2976,8 +2538,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 79, - "end_line": 85, + "line": 62, + "end_line": 68, "column": 24, "end_column": 8 }, @@ -2995,8 +2557,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 79, - "end_line": 85, + "line": 62, + "end_line": 68, "column": 24, "end_column": 8 }, @@ -3016,8 +2578,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WTuple", @@ -3042,8 +2604,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WType", @@ -3052,8 +2614,8 @@ "ephemeral": false, "scalar_type": 1 }, - "value": "3BrK^", - "encoding": "utf8" + "value": "34s9", + "encoding": "base16" } ] }, @@ -3063,8 +2625,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WTuple", @@ -3089,8 +2651,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WType", @@ -3099,8 +2661,8 @@ "ephemeral": false, "scalar_type": 1 }, - "value": "3BrK^", - "encoding": "utf8" + "value": "34s9", + "encoding": "base16" } ] }, @@ -3108,8 +2670,8 @@ "_type": "TupleExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 82, - "end_line": 82, + "line": 65, + "end_line": 65, "column": 17, "end_column": 21 }, @@ -3141,8 +2703,8 @@ "_type": "TupleItemExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 82, - "end_line": 82, + "line": 65, + "end_line": 65, "column": 17, "end_column": 21 }, @@ -3157,8 +2719,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 82, - "end_line": 82, + "line": 65, + "end_line": 65, "column": 17, "end_column": 21 }, @@ -3193,8 +2755,8 @@ "_type": "TupleItemExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 82, - "end_line": 82, + "line": 65, + "end_line": 65, "column": 17, "end_column": 21 }, @@ -3209,8 +2771,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 82, - "end_line": 82, + "line": 65, + "end_line": 65, "column": 17, "end_column": 21 }, @@ -3247,8 +2809,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 83, - "end_line": 83, + "line": 66, + "end_line": 66, "column": 39, "end_column": 43 }, @@ -3266,8 +2828,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 84, - "end_line": 84, + "line": 67, + "end_line": 67, "column": 14, "end_column": 35 }, @@ -3296,8 +2858,8 @@ "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 86, - "end_line": 93, + "line": 69, + "end_line": 76, "column": 11, "end_column": 5 }, @@ -3306,8 +2868,8 @@ "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 86, - "end_line": 93, + "line": 69, + "end_line": 76, "column": 11, "end_column": 5 }, @@ -3316,8 +2878,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 87, - "end_line": 92, + "line": 70, + "end_line": 75, "column": 6, "end_column": 8 }, @@ -3325,8 +2887,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 87, - "end_line": 87, + "line": 70, + "end_line": 70, "column": 6, "end_column": 21 }, @@ -3344,8 +2906,8 @@ "_type": "CreateInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 87, - "end_line": 92, + "line": 70, + "end_line": 75, "column": 24, "end_column": 8 }, @@ -3362,8 +2924,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 87, - "end_line": 92, + "line": 70, + "end_line": 75, "column": 24, "end_column": 8 }, @@ -3381,8 +2943,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 87, - "end_line": 92, + "line": 70, + "end_line": 75, "column": 24, "end_column": 8 }, @@ -3402,8 +2964,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WTuple", @@ -3428,8 +2990,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WType", @@ -3438,8 +3000,8 @@ "ephemeral": false, "scalar_type": 1 }, - "value": "3BrK^", - "encoding": "utf8" + "value": "34s9", + "encoding": "base16" } ] }, @@ -3449,8 +3011,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WTuple", @@ -3475,8 +3037,8 @@ "file": "tests/approvals/itxn.algo.ts", "line": 5, "end_line": 5, - "column": 22, - "end_column": 36 + "column": 16, + "end_column": 39 }, "wtype": { "_type": "WType", @@ -3485,8 +3047,8 @@ "ephemeral": false, "scalar_type": 1 }, - "value": "3BrK^", - "encoding": "utf8" + "value": "34s9", + "encoding": "base16" } ] }, @@ -3494,8 +3056,8 @@ "_type": "TupleExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 90, - "end_line": 90, + "line": 73, + "end_line": 73, "column": 17, "end_column": 46 }, @@ -3534,8 +3096,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 90, - "end_line": 90, + "line": 73, + "end_line": 73, "column": 24, "end_column": 27 }, @@ -3553,8 +3115,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 90, - "end_line": 90, + "line": 73, + "end_line": 73, "column": 30, "end_column": 33 }, @@ -3572,8 +3134,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 90, - "end_line": 90, + "line": 73, + "end_line": 73, "column": 41, "end_column": 44 }, @@ -3593,8 +3155,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 91, - "end_line": 91, + "line": 74, + "end_line": 74, "column": 14, "end_column": 33 }, @@ -3624,8 +3186,8 @@ "_type": "AssignmentStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 94, - "end_line": 94, + "line": 77, + "end_line": 77, "column": 10, "end_column": 49 }, @@ -3633,8 +3195,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 94, - "end_line": 94, + "line": 77, + "end_line": 77, "column": 10, "end_column": 22 }, @@ -3652,8 +3214,8 @@ "_type": "SubmitInnerTransaction", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 94, - "end_line": 94, + "line": 77, + "end_line": 77, "column": 25, "end_column": 49 }, @@ -3670,8 +3232,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 94, - "end_line": 94, + "line": 77, + "end_line": 77, "column": 25, "end_column": 40 }, @@ -3692,8 +3254,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 4, "end_column": 73 }, @@ -3701,8 +3263,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 4, "end_column": 73 }, @@ -3717,8 +3279,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 11, "end_column": 49 }, @@ -3733,8 +3295,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 11, "end_column": 34 }, @@ -3749,8 +3311,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 11, "end_column": 23 }, @@ -3769,8 +3331,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 32, "end_column": 33 }, @@ -3790,8 +3352,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 95, - "end_line": 95, + "line": 78, + "end_line": 78, "column": 45, "end_column": 48 }, @@ -3813,8 +3375,8 @@ "_type": "ExpressionStatement", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 4, "end_column": 73 }, @@ -3822,8 +3384,8 @@ "_type": "AssertExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 4, "end_column": 73 }, @@ -3838,8 +3400,8 @@ "_type": "BytesComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 11, "end_column": 49 }, @@ -3854,8 +3416,8 @@ "_type": "InnerTransactionField", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 11, "end_column": 34 }, @@ -3870,8 +3432,8 @@ "_type": "VarExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 11, "end_column": 23 }, @@ -3890,8 +3452,8 @@ "_type": "IntegerConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 32, "end_column": 33 }, @@ -3911,8 +3473,8 @@ "_type": "BytesConstant", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 96, - "end_line": 96, + "line": 79, + "end_line": 79, "column": 45, "end_column": 48 }, @@ -3931,147 +3493,7790 @@ } }, { - "_type": "ExpressionStatement", + "_type": "IfElse", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 97, - "end_line": 97, + "line": 81, + "end_line": 81, "column": 4, - "end_column": 62 + "end_column": 27 }, - "expr": { - "_type": "AssertExpression", + "condition": { + "_type": "NumericComparisonExpression", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 97, - "end_line": 97, - "column": 4, - "end_column": 62 + "line": 81, + "end_line": 81, + "column": 8, + "end_column": 26 }, "wtype": { "_type": "WType", - "name": "void", + "name": "bool", "immutable": true, "ephemeral": false, - "scalar_type": null + "scalar_type": 2 }, - "condition": { - "_type": "BytesComparisonExpression", + "lhs": { + "_type": "IntrinsicCall", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 97, - "end_line": 97, - "column": 11, - "end_column": 61 + "line": 81, + "end_line": 81, + "column": 12, + "end_column": 22 }, "wtype": { "_type": "WType", - "name": "bool", + "name": "uint64", "immutable": true, "ephemeral": false, "scalar_type": 2 }, - "lhs": { - "_type": "InnerTransactionField", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 97, - "end_line": 97, - "column": 24, - "end_column": 28 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 - }, - "itxn": { - "_type": "VarExpression", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 97, - "end_line": 97, - "column": 11, - "end_column": 23 - }, - "wtype": { - "_type": "WInnerTransaction", - "name": "inner_transaction_appl", - "immutable": true, - "ephemeral": false, - "scalar_type": null, - "transaction_type": 6 - }, - "name": "createAppTxn" - }, - "field": "Note", - "array_index": null + "op_code": "txn", + "immediates": [ + "NumAppArgs" + ], + "stack_args": [] + }, + "operator": ">", + "rhs": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 81, + "end_line": 81, + "column": 25, + "end_column": 26 }, - "operator": "==", - "rhs": { - "_type": "BytesConstant", + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "1", + "teal_alias": null + } + }, + "if_branch": { + "_type": "Block", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 81, + "end_line": 92, + "column": 28, + "end_column": 5 + }, + "body": [ + { + "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", - "line": 97, - "end_line": 97, - "column": 39, - "end_column": 60 - }, - "wtype": { - "_type": "WType", - "name": "bytes", - "immutable": true, - "ephemeral": false, - "scalar_type": 1 + "line": 81, + "end_line": 92, + "column": 28, + "end_column": 5 }, - "value": "cWHEJAYpQ6b0BbGa$#*Cb7gb", - "encoding": "utf8" - } - }, - "error_message": null - } - } - ], - "label": null, - "comment": null - }, - "documentation": { - "_type": "MethodDocumentation", - "description": null, - "args": {}, - "returns": null - }, - "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", - "member_name": "test2", - "arc4_method_config": null - }, - { - "_type": "ContractMethod", - "source_location": { - "file": "tests/approvals/itxn.algo.ts", - "line": 7, - "end_line": 7, - "column": 0, - "end_column": 52 - }, - "args": [], - "return_type": { - "_type": "WType", - "name": "void", - "immutable": true, - "ephemeral": false, - "scalar_type": null - }, - "body": { + "body": [ + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 82, + "end_line": 89, + "column": 12, + "end_column": 17 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 82, + "end_line": 82, + "column": 12, + "end_column": 25 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "createAppTxn2" + }, + "value": { + "_type": "SubmitInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 82, + "end_line": 89, + "column": 28, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxns": [ + { + "_type": "CreateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 82, + "end_line": 88, + "column": 28, + "end_column": 10 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "fields": { + "Fee": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 82, + "end_line": 88, + "column": 28, + "end_column": 10 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + }, + "TypeEnum": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 82, + "end_line": 88, + "column": 28, + "end_column": 10 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "6", + "teal_alias": null + }, + "ApprovalProgramPages": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "34s9", + "encoding": "base16" + } + ] + }, + "ClearStateProgramPages": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "34s9", + "encoding": "base16" + } + ] + }, + "OnCompletion": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 86, + "end_line": 86, + "column": 41, + "end_column": 58 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "5", + "teal_alias": null + }, + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 87, + "end_line": 87, + "column": 19, + "end_column": 32 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 87, + "end_line": 87, + "column": 26, + "end_column": 30 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "G%^", + "encoding": "utf8" + } + ] + } + } + } + ] + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 6, + "end_column": 77 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 6, + "end_column": 77 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 13, + "end_column": 53 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 13, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 13, + "end_column": 26 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "createAppTxn2" + }, + "field": "ApplicationArgs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 35, + "end_column": 36 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 90, + "end_line": 90, + "column": 48, + "end_column": 52 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "G%^", + "encoding": "utf8" + } + }, + "error_message": "correct args used 2" + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 91, + "end_line": 91, + "column": 6, + "end_column": 64 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 91, + "end_line": 91, + "column": 6, + "end_column": 64 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 91, + "end_line": 91, + "column": 13, + "end_column": 63 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 91, + "end_line": 91, + "column": 26, + "end_column": 30 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 91, + "end_line": 91, + "column": 13, + "end_column": 25 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "createAppTxn" + }, + "field": "Note", + "array_index": null + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 91, + "end_line": 91, + "column": 41, + "end_column": 62 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "cWHEJAYpQ6b0BbGa$#*Cb7gb", + "encoding": "utf8" + } + }, + "error_message": null + } + } + ], + "label": null, + "comment": null + } + ], + "label": null, + "comment": null + }, + "else_branch": null + } + ], + "label": null, + "comment": null + }, + "documentation": { + "_type": "MethodDocumentation", + "description": null, + "args": {}, + "returns": null + }, + "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", + "member_name": "test2", + "arc4_method_config": { + "_type": "ARC4ABIMethodConfig", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 58, + "end_line": 58, + "column": 2, + "end_column": 16 + }, + "name": "test2", + "is_bare": false, + "create": 3, + "readonly": false, + "allowed_completion_types": [ + 0 + ], + "default_args": {}, + "structs": {} + } + }, + { + "_type": "ContractMethod", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 95, + "end_line": 95, + "column": 2, + "end_column": 16 + }, + "args": [], + "return_type": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "body": { + "_type": "Block", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 95, + "end_line": 169, + "column": 17, + "end_column": 3 + }, + "body": [ + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 96, + "end_line": 101, + "column": 10, + "end_column": 6 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 96, + "end_line": 96, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + }, + "value": { + "_type": "CreateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 96, + "end_line": 101, + "column": 20, + "end_column": 6 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "fields": { + "Fee": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 96, + "end_line": 101, + "column": 20, + "end_column": 6 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + }, + "TypeEnum": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 96, + "end_line": 101, + "column": 20, + "end_column": 6 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "6", + "teal_alias": null + }, + "ApprovalProgramPages": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 4, + "end_line": 4, + "column": 32, + "end_column": 63 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 4, + "end_line": 4, + "column": 32, + "end_column": 63 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "2{sx4uz>*", + "encoding": "base16" + } + ] + }, + "ClearStateProgramPages": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "34s9", + "encoding": "base16" + } + ] + }, + "OnCompletion": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 99, + "end_line": 99, + "column": 37, + "end_column": 54 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "5", + "teal_alias": null + }, + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 100, + "end_line": 100, + "column": 15, + "end_column": 27 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 100, + "end_line": 100, + "column": 22, + "end_column": 25 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F#", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 103, + "end_line": 103, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 103, + "end_line": 103, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn2" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 103, + "end_line": 103, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 103, + "end_line": 103, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 104, + "end_line": 104, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 104, + "end_line": 104, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 104, + "end_line": 104, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn2" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 104, + "end_line": 104, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 104, + "end_line": 104, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "G5", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 105, + "end_line": 105, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 105, + "end_line": 105, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn3" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 105, + "end_line": 105, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 105, + "end_line": 105, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 106, + "end_line": 106, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 106, + "end_line": 106, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 106, + "end_line": 106, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn3" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 106, + "end_line": 106, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 106, + "end_line": 106, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "GX", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 107, + "end_line": 107, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 107, + "end_line": 107, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn4" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 107, + "end_line": 107, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 107, + "end_line": 107, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 108, + "end_line": 108, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 108, + "end_line": 108, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 108, + "end_line": 108, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn4" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 108, + "end_line": 108, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 108, + "end_line": 108, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "Gy", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 109, + "end_line": 109, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 109, + "end_line": 109, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn5" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 109, + "end_line": 109, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 109, + "end_line": 109, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 110, + "end_line": 110, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 110, + "end_line": 110, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 110, + "end_line": 110, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn5" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 110, + "end_line": 110, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 110, + "end_line": 110, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "H2", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 111, + "end_line": 111, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 111, + "end_line": 111, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn6" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 111, + "end_line": 111, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 111, + "end_line": 111, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 112, + "end_line": 112, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 112, + "end_line": 112, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 112, + "end_line": 112, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn6" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 112, + "end_line": 112, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 112, + "end_line": 112, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "HU", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 113, + "end_line": 113, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 113, + "end_line": 113, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn7" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 113, + "end_line": 113, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 113, + "end_line": 113, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 114, + "end_line": 114, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 114, + "end_line": 114, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 114, + "end_line": 114, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn7" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 114, + "end_line": 114, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 114, + "end_line": 114, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "Hv", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 115, + "end_line": 115, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 115, + "end_line": 115, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn8" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 115, + "end_line": 115, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 115, + "end_line": 115, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 116, + "end_line": 116, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 116, + "end_line": 116, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 116, + "end_line": 116, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn8" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 116, + "end_line": 116, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 116, + "end_line": 116, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "H~", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 117, + "end_line": 117, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 117, + "end_line": 117, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn9" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 117, + "end_line": 117, + "column": 20, + "end_column": 34 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 117, + "end_line": 117, + "column": 20, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 118, + "end_line": 118, + "column": 4, + "end_column": 42 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 118, + "end_line": 118, + "column": 4, + "end_column": 42 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 118, + "end_line": 118, + "column": 4, + "end_column": 11 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn9" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 118, + "end_line": 118, + "column": 27, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 118, + "end_line": 118, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "IR", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 119, + "end_line": 119, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 119, + "end_line": 119, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn10" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 119, + "end_line": 119, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 119, + "end_line": 119, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 120, + "end_line": 120, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 120, + "end_line": 120, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 120, + "end_line": 120, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn10" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 120, + "end_line": 120, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 120, + "end_line": 120, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F)#", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 121, + "end_line": 121, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 121, + "end_line": 121, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn11" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 121, + "end_line": 121, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 121, + "end_line": 121, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 122, + "end_line": 122, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 122, + "end_line": 122, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 122, + "end_line": 122, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn11" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 122, + "end_line": 122, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 122, + "end_line": 122, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F);", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 123, + "end_line": 123, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 123, + "end_line": 123, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn12" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 123, + "end_line": 123, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 123, + "end_line": 123, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 124, + "end_line": 124, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 124, + "end_line": 124, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 124, + "end_line": 124, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn12" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 124, + "end_line": 124, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 124, + "end_line": 124, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F){", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 125, + "end_line": 125, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 125, + "end_line": 125, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn13" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 125, + "end_line": 125, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 125, + "end_line": 125, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 126, + "end_line": 126, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 126, + "end_line": 126, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 126, + "end_line": 126, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn13" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 126, + "end_line": 126, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 126, + "end_line": 126, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*5", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 127, + "end_line": 127, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 127, + "end_line": 127, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn14" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 127, + "end_line": 127, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 127, + "end_line": 127, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 128, + "end_line": 128, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 128, + "end_line": 128, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 128, + "end_line": 128, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn14" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 128, + "end_line": 128, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 128, + "end_line": 128, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*E", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 129, + "end_line": 129, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 129, + "end_line": 129, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn15" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 129, + "end_line": 129, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 129, + "end_line": 129, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 130, + "end_line": 130, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 130, + "end_line": 130, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 130, + "end_line": 130, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn15" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 130, + "end_line": 130, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 130, + "end_line": 130, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*N", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 131, + "end_line": 131, + "column": 10, + "end_column": 35 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 131, + "end_line": 131, + "column": 10, + "end_column": 18 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn16" + }, + "value": { + "_type": "Copy", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 131, + "end_line": 131, + "column": 21, + "end_column": 35 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "value": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 131, + "end_line": 131, + "column": 21, + "end_column": 28 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 132, + "end_line": 132, + "column": 4, + "end_column": 44 + }, + "expr": { + "_type": "UpdateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 132, + "end_line": 132, + "column": 4, + "end_column": 44 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 132, + "end_line": 132, + "column": 4, + "end_column": 12 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn16" + }, + "fields": { + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 132, + "end_line": 132, + "column": 28, + "end_column": 41 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 132, + "end_line": 132, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*X", + "encoding": "utf8" + } + ] + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 151, + "column": 10, + "end_column": 5 + }, + "target": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 151, + "column": 10, + "end_column": 5 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + } + ] + }, + "items": [ + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 17, + "end_column": 21 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app2" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 23, + "end_column": 27 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app3" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 29, + "end_column": 33 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app4" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app5" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 41, + "end_column": 45 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app6" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 47, + "end_column": 51 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app7" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 53, + "end_column": 57 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app8" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 59, + "end_column": 63 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app9" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 65, + "end_column": 70 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app10" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 72, + "end_column": 77 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app11" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 79, + "end_column": 84 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app12" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 86, + "end_column": 91 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app13" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 93, + "end_column": 98 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app14" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 100, + "end_column": 105 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app15" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 134, + "column": 107, + "end_column": 112 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app16" + } + ] + }, + "value": { + "_type": "SubmitInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 134, + "end_line": 151, + "column": 116, + "end_column": 5 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + } + ] + }, + "itxns": [ + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 135, + "end_line": 135, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 136, + "end_line": 136, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn2" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 137, + "end_line": 137, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn3" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 138, + "end_line": 138, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn4" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 139, + "end_line": 139, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn5" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 140, + "end_line": 140, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn6" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 141, + "end_line": 141, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn7" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 142, + "end_line": 142, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn8" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 143, + "end_line": 143, + "column": 6, + "end_column": 13 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn9" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 144, + "end_line": 144, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn10" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 145, + "end_line": 145, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn11" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 146, + "end_line": 146, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn12" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 147, + "end_line": 147, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn13" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 148, + "end_line": 148, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn14" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 149, + "end_line": 149, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn15" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 150, + "end_line": 150, + "column": 6, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn16" + } + ] + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 153, + "end_line": 153, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F#", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app2" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 154, + "end_line": 154, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "G5", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app3" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 155, + "end_line": 155, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "GX", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app4" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 156, + "end_line": 156, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "Gy", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app5" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 157, + "end_line": 157, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "H2", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app6" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 158, + "end_line": 158, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "HU", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app7" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 159, + "end_line": 159, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "Hv", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app8" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 160, + "end_line": 160, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "H~", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 4, + "end_column": 39 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 4, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 11, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 11, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app9" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 21, + "end_column": 22 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 161, + "end_line": 161, + "column": 34, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "IR", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app10" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 162, + "end_line": 162, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F)#", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app11" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 163, + "end_line": 163, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F);", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app12" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 164, + "end_line": 164, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F){", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app13" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 165, + "end_line": 165, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*5", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app14" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 166, + "end_line": 166, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*E", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app15" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 167, + "end_line": 167, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*N", + "encoding": "utf8" + } + }, + "error_message": null + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 4, + "end_column": 41 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 4, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 11, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 11, + "end_column": 24 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 11, + "end_column": 16 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app16" + }, + "field": "Logs", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 22, + "end_column": 23 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 168, + "end_line": 168, + "column": 35, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F*X", + "encoding": "utf8" + } + }, + "error_message": null + } + } + ], + "label": null, + "comment": null + }, + "documentation": { + "_type": "MethodDocumentation", + "description": null, + "args": {}, + "returns": null + }, + "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", + "member_name": "test3", + "arc4_method_config": { + "_type": "ARC4ABIMethodConfig", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 95, + "end_line": 95, + "column": 2, + "end_column": 16 + }, + "name": "test3", + "is_bare": false, + "create": 3, + "readonly": false, + "allowed_completion_types": [ + 0 + ], + "default_args": {}, + "structs": {} + } + }, + { + "_type": "ContractMethod", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 171, + "end_line": 171, + "column": 2, + "end_column": 16 + }, + "args": [], + "return_type": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "body": { + "_type": "Block", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 171, + "end_line": 192, + "column": 17, + "end_column": 3 + }, + "body": [ + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 172, + "end_line": 172, + "column": 10, + "end_column": 38 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 172, + "end_line": 172, + "column": 10, + "end_column": 21 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "lotsOfBytes" + }, + "value": { + "_type": "IntrinsicCall", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 172, + "end_line": 172, + "column": 24, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "op_code": "bzero", + "immediates": [], + "stack_args": [ + { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 172, + "end_line": 172, + "column": 33, + "end_column": 37 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "2044", + "teal_alias": null + } + ] + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 173, + "end_line": 173, + "column": 10, + "end_column": 29 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 173, + "end_line": 173, + "column": 10, + "end_column": 19 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval1" + }, + "value": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "34s9", + "encoding": "base16" + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 174, + "end_line": 176, + "column": 10, + "end_column": 34 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 174, + "end_line": 174, + "column": 10, + "end_column": 19 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + }, + "value": { + "_type": "IntrinsicCall", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 174, + "end_line": 176, + "column": 22, + "end_column": 34 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "op_code": "concat", + "immediates": [], + "stack_args": [ + { + "_type": "IntrinsicCall", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 174, + "end_line": 175, + "column": 22, + "end_column": 26 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "op_code": "concat", + "immediates": [], + "stack_args": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 174, + "end_line": 174, + "column": 22, + "end_column": 50 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "fcy^", + "encoding": "base16" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 175, + "end_line": 175, + "column": 14, + "end_column": 25 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "lotsOfBytes" + } + ] + }, + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 176, + "end_line": 176, + "column": 14, + "end_column": 33 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "NB", + "encoding": "base16" + } + ] + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 178, + "end_line": 184, + "column": 10, + "end_column": 6 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 178, + "end_line": 178, + "column": 10, + "end_column": 17 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + }, + "value": { + "_type": "CreateInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 178, + "end_line": 184, + "column": 20, + "end_column": 6 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "fields": { + "Fee": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 178, + "end_line": 184, + "column": 20, + "end_column": 6 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + }, + "TypeEnum": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 178, + "end_line": 184, + "column": 20, + "end_column": 6 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "6", + "teal_alias": null + }, + "ApprovalProgramPages": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 179, + "end_line": 179, + "column": 23, + "end_column": 67 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 179, + "end_line": 179, + "column": 24, + "end_column": 33 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval1" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 179, + "end_line": 179, + "column": 35, + "end_column": 44 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 179, + "end_line": 179, + "column": 46, + "end_column": 55 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 179, + "end_line": 179, + "column": 57, + "end_column": 66 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + } + ] + }, + "ClearStateProgramPages": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "34s9", + "encoding": "base16" + } + ] + }, + "OnCompletion": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 181, + "end_line": 181, + "column": 37, + "end_column": 54 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "5", + "teal_alias": null + }, + "ApplicationArgs": { + "_type": "TupleExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 182, + "end_line": 182, + "column": 15, + "end_column": 27 + }, + "wtype": { + "_type": "WTuple", + "name": "tuple", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "types": [ + { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + } + ] + }, + "items": [ + { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 182, + "end_line": 182, + "column": 22, + "end_column": 25 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "F#", + "encoding": "utf8" + } + ] + }, + "ExtraProgramPages": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 183, + "end_line": 183, + "column": 25, + "end_column": 26 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "3", + "teal_alias": null + } + } + } + }, + { + "_type": "AssignmentStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 185, + "end_line": 185, + "column": 10, + "end_column": 33 + }, + "target": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 185, + "end_line": 185, + "column": 10, + "end_column": 14 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "value": { + "_type": "SubmitInnerTransaction", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 185, + "end_line": 185, + "column": 17, + "end_column": 33 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "itxns": [ + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 185, + "end_line": 185, + "column": 17, + "end_column": 24 + }, + "wtype": { + "_type": "WInnerTransactionFields", + "name": "inner_transaction_fields_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "appTxn1" + } + ] + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 186, + "end_line": 186, + "column": 4, + "end_column": 59 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 186, + "end_line": 186, + "column": 4, + "end_column": 59 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "NumericComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 186, + "end_line": 186, + "column": 11, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 186, + "end_line": 186, + "column": 16, + "end_column": 33 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 186, + "end_line": 186, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "ExtraProgramPages", + "array_index": null + }, + "operator": "==", + "rhs": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 186, + "end_line": 186, + "column": 38, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "3", + "teal_alias": null + } + }, + "error_message": "extra pages = 3" + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 187, + "end_line": 187, + "column": 4, + "end_column": 68 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 187, + "end_line": 187, + "column": 4, + "end_column": 68 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "NumericComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 187, + "end_line": 187, + "column": 11, + "end_column": 45 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 187, + "end_line": 187, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 187, + "end_line": 187, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "NumApprovalProgramPages", + "array_index": null + }, + "operator": "==", + "rhs": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 187, + "end_line": 187, + "column": 44, + "end_column": 45 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "2", + "teal_alias": null + } + }, + "error_message": "approval pages = 2" + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 4, + "end_column": 131 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 4, + "end_column": 131 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 11, + "end_column": 102 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 11, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "ApprovalProgramPages", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 37, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "IntrinsicCall", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 44, + "end_column": 102 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "op_code": "concat", + "immediates": [], + "stack_args": [ + { + "_type": "IntrinsicCall", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 44, + "end_column": 71 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "op_code": "concat", + "immediates": [], + "stack_args": [ + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 44, + "end_column": 53 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval1" + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 61, + "end_column": 70 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + } + ] + }, + { + "_type": "IntersectionSliceExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 79, + "end_column": 101 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "base": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 79, + "end_column": 88 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + }, + "begin_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 188, + "end_line": 188, + "column": 95, + "end_column": 96 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + }, + "end_index": -3 + } + ] + } + }, + "error_message": "expected approval page 0" + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 4, + "end_column": 110 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 4, + "end_column": 110 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 11, + "end_column": 81 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 11, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "ApprovalProgramPages", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 37, + "end_column": 38 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "1", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "IntrinsicCall", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 44, + "end_column": 81 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "op_code": "concat", + "immediates": [], + "stack_args": [ + { + "_type": "IntersectionSliceExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 44, + "end_column": 63 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "base": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 44, + "end_column": 53 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + }, + "begin_index": -3, + "end_index": null + }, + { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 189, + "end_line": 189, + "column": 71, + "end_column": 80 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "name": "approval2" + } + ] + } + }, + "error_message": "expected approval page 1" + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 190, + "end_line": 190, + "column": 4, + "end_column": 73 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 190, + "end_line": 190, + "column": 4, + "end_column": 73 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "NumericComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 190, + "end_line": 190, + "column": 11, + "end_column": 47 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 190, + "end_line": 190, + "column": 16, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 190, + "end_line": 190, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "NumClearStateProgramPages", + "array_index": null + }, + "operator": "==", + "rhs": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 190, + "end_line": 190, + "column": 46, + "end_column": 47 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "1", + "teal_alias": null + } + }, + "error_message": "clear state pages = 1" + } + }, + { + "_type": "ExpressionStatement", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 191, + "end_line": 191, + "column": 4, + "end_column": 83 + }, + "expr": { + "_type": "AssertExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 191, + "end_line": 191, + "column": 4, + "end_column": 83 + }, + "wtype": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "condition": { + "_type": "BytesComparisonExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 191, + "end_line": 191, + "column": 11, + "end_column": 53 + }, + "wtype": { + "_type": "WType", + "name": "bool", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "lhs": { + "_type": "InnerTransactionField", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 191, + "end_line": 191, + "column": 11, + "end_column": 41 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "itxn": { + "_type": "VarExpression", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 191, + "end_line": 191, + "column": 11, + "end_column": 15 + }, + "wtype": { + "_type": "WInnerTransaction", + "name": "inner_transaction_appl", + "immutable": true, + "ephemeral": false, + "scalar_type": null, + "transaction_type": 6 + }, + "name": "app1" + }, + "field": "ClearStateProgramPages", + "array_index": { + "_type": "IntegerConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 191, + "end_line": 191, + "column": 39, + "end_column": 40 + }, + "wtype": { + "_type": "WType", + "name": "uint64", + "immutable": true, + "ephemeral": false, + "scalar_type": 2 + }, + "value": "0", + "teal_alias": null + } + }, + "operator": "==", + "rhs": { + "_type": "BytesConstant", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 5, + "end_line": 5, + "column": 16, + "end_column": 39 + }, + "wtype": { + "_type": "WType", + "name": "bytes", + "immutable": true, + "ephemeral": false, + "scalar_type": 1 + }, + "value": "34s9", + "encoding": "base16" + } + }, + "error_message": "expected clear state page" + } + } + ], + "label": null, + "comment": null + }, + "documentation": { + "_type": "MethodDocumentation", + "description": null, + "args": {}, + "returns": null + }, + "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", + "member_name": "test4", + "arc4_method_config": { + "_type": "ARC4ABIMethodConfig", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 171, + "end_line": 171, + "column": 2, + "end_column": 16 + }, + "name": "test4", + "is_bare": false, + "create": 3, + "readonly": false, + "allowed_completion_types": [ + 0 + ], + "default_args": {}, + "structs": {} + } + }, + { + "_type": "ContractMethod", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 7, + "end_line": 7, + "column": 0, + "end_column": 48 + }, + "args": [], + "return_type": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "body": { "_type": "Block", "source_location": { "file": "tests/approvals/itxn.algo.ts", "line": 7, "end_line": 7, "column": 0, - "end_column": 52 + "end_column": 48 }, "body": [ { @@ -4081,7 +11286,7 @@ "line": 7, "end_line": 7, "column": 0, - "end_column": 52 + "end_column": 48 }, "expr": { "_type": "VoidConstant", @@ -4090,7 +11295,7 @@ "line": 7, "end_line": 7, "column": 0, - "end_column": 52 + "end_column": 48 }, "wtype": { "_type": "WType", @@ -4180,6 +11385,60 @@ "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", "member_name": "constructor", "arc4_method_config": null + }, + { + "_type": "ContractMethod", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 7, + "end_line": 7, + "column": 0, + "end_column": 48 + }, + "args": [], + "return_type": { + "_type": "WType", + "name": "void", + "immutable": true, + "ephemeral": false, + "scalar_type": null + }, + "body": { + "_type": "Block", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 7, + "end_line": 7, + "column": 0, + "end_column": 48 + }, + "body": [], + "label": null, + "comment": null + }, + "documentation": { + "_type": "MethodDocumentation", + "description": "Implicitly generated create method", + "args": {}, + "returns": null + }, + "cref": "tests/approvals/itxn.algo.ts::ItxnDemoContract", + "member_name": "__algots__.defaultCreate", + "arc4_method_config": { + "_type": "ARC4BareMethodConfig", + "source_location": { + "file": "tests/approvals/itxn.algo.ts", + "line": 7, + "end_line": 7, + "column": 0, + "end_column": 48 + }, + "allowed_completion_types": [ + 0 + ], + "create": 2, + "is_bare": true + } } ], "app_state": [ diff --git a/tests/expected-output/biguint-expressions.algo.ts b/tests/expected-output/biguint-expressions.algo.ts index f83687321..ca3c9c05e 100644 --- a/tests/expected-output/biguint-expressions.algo.ts +++ b/tests/expected-output/biguint-expressions.algo.ts @@ -1,9 +1,9 @@ import { BigUint } from '@algorandfoundation/algorand-typescript' function testErrors(b: string) { - // @expect-error biguint overflow or underflow... + // @expect-error Arg 0 of BigUInt has an incorrect type of -1. Expected boolean | string | bytes | biguint | uint64 BigUint(-1) - // @expect-error biguint overflow or underflow... + // @expect-error Arg 0 of BigUInt has an incorrect type of -1n. Expected boolean | string | bytes | biguint | uint64 BigUint(-1n) // @expect-error biguint overflow or underflow... BigUint(2n ** 512n) diff --git a/tests/expected-output/uint64-expressions.algo.ts b/tests/expected-output/uint64-expressions.algo.ts index e30f20469..c75c90a79 100644 --- a/tests/expected-output/uint64-expressions.algo.ts +++ b/tests/expected-output/uint64-expressions.algo.ts @@ -3,15 +3,15 @@ import { Uint64 } from '@algorandfoundation/algorand-typescript' /* eslint-disable no-loss-of-precision */ function test() { - // @expect-error uint64 overflow or underflow... + // @expect-error Arg 0 of Uint64 has an incorrect type of -1. Expected uint64 | boolean | string Uint64(-1) - // @expect-error uint64 overflow or underflow... + // @expect-error Arg 0 of Uint64 has an incorrect type of -1n. Expected uint64 | boolean | string Uint64(-1n) // @expect-error Cannot convert abc to an integer Uint64('abc') // @expect-error Cannot convert 0.1 to an integer Uint64('0.1') - // @expect-error uint64 overflow or underflow... + // @expect-error uint64 overflow or underflow: -1 Uint64('-1') // @expect-error uint64 overflow or underflow... Uint64(18446744073709551617n) diff --git a/tests/onchain/itxn.spec.ts b/tests/onchain/itxn.spec.ts new file mode 100644 index 000000000..4d775f130 --- /dev/null +++ b/tests/onchain/itxn.spec.ts @@ -0,0 +1,25 @@ +import { algos, microAlgos } from '@algorandfoundation/algokit-utils' +import { describe } from 'vitest' +import { createArc4TestFixture } from './util/test-fixture' + +describe('itxn contract', () => { + const test = createArc4TestFixture('tests/approvals/itxn.algo.ts', { + ItxnDemoContract: { funding: algos(2) }, + }) + + test('test1 runs', async ({ appClientItxnDemoContract }) => { + await appClientItxnDemoContract.send.call({ method: 'test1', extraFee: microAlgos(17_000) }) + }) + + test('test2 runs', async ({ appClientItxnDemoContract }) => { + await appClientItxnDemoContract.send.call({ method: 'test2', extraFee: microAlgos(17_000) }) + }) + + test('test3 runs', async ({ appClientItxnDemoContract }) => { + await appClientItxnDemoContract.send.call({ method: 'test3', extraFee: microAlgos(17_000) }) + }) + + test('test4 runs', async ({ appClientItxnDemoContract }) => { + await appClientItxnDemoContract.send.call({ method: 'test4', extraFee: microAlgos(17_000) }) + }) +}) diff --git a/tests/onchain/util/test-fixture.ts b/tests/onchain/util/test-fixture.ts index 22c9da350..6ab48e351 100644 --- a/tests/onchain/util/test-fixture.ts +++ b/tests/onchain/util/test-fixture.ts @@ -1,6 +1,7 @@ import type { AlgorandClient } from '@algorandfoundation/algokit-utils' import { Config, microAlgos } from '@algorandfoundation/algokit-utils' import { algorandFixture } from '@algorandfoundation/algokit-utils/testing' +import type { AlgoAmount } from '@algorandfoundation/algokit-utils/types/amount' import type { SendAppTransactionResult } from '@algorandfoundation/algokit-utils/types/app' import type { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56' import type { AppClient } from '@algorandfoundation/algokit-utils/types/app-client' @@ -151,6 +152,7 @@ type Arc4FixtureContextFor = { type ContractConfig = { deployParams?: AppFactoryDeployParams + funding?: AlgoAmount } export function createArc4TestFixture( @@ -215,6 +217,7 @@ export function createArc4TestFixture( appSpec: appSpec!, }) const { appClient } = await appFactory.deploy(config.deployParams ?? {}) + if (config.funding) await appClient.fundAppAccount({ amount: config.funding }) await use(appClient) } } From daf0bdeefadbd5e17922fe45daea47df23a37e88 Mon Sep 17 00:00:00 2001 From: Tristan Menzel Date: Fri, 31 Jan 2025 17:34:46 -0800 Subject: [PATCH 2/3] build: Use ts script to install supported puyapy version --- .github/workflows/ci-all.yml | 2 +- scripts/install-puyapy.ts | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 scripts/install-puyapy.ts diff --git a/.github/workflows/ci-all.yml b/.github/workflows/ci-all.yml index 7717bc5b2..6b1f76b86 100644 --- a/.github/workflows/ci-all.yml +++ b/.github/workflows/ci-all.yml @@ -48,6 +48,6 @@ jobs: pre-test-script: | pipx install algokit --python 3.12.6 algokit localnet reset --update - pipx install puyapy --python 3.12.6 + npx tsx scripts/install-puyapy.ts test-script: npm run test:ci output-test-results: true diff --git a/scripts/install-puyapy.ts b/scripts/install-puyapy.ts new file mode 100644 index 000000000..74a224b92 --- /dev/null +++ b/scripts/install-puyapy.ts @@ -0,0 +1,10 @@ +import { spawnSync } from 'node:child_process' +import { Constants } from '../src/constants' + +function installPuyapy(version: string) { + spawnSync('pipx', ['install', `puyapy==${version}`, '--python', '3.12'], { + stdio: 'inherit', + }) +} + +installPuyapy(Constants.targetedPuyaVersion) From 757a8e0737be2fdfc5c9df630f3797baa048c20d Mon Sep 17 00:00:00 2001 From: Tristan Menzel Date: Fri, 31 Jan 2025 17:47:28 -0800 Subject: [PATCH 3/3] chore: Lint fix --- src/awst/intrinsic-factory.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/awst/intrinsic-factory.ts b/src/awst/intrinsic-factory.ts index 87e408544..81fb62913 100644 --- a/src/awst/intrinsic-factory.ts +++ b/src/awst/intrinsic-factory.ts @@ -1,17 +1,14 @@ -import { concat } from '@algorandfoundation/algorand-typescript/op' import type { DeliberateAny } from '../typescript-helpers' import { bigIntToUint8Array } from '../util' import { nodeFactory } from './node-factory' -import * as awst from './nodes' import type { Expression } from './nodes' +import * as awst from './nodes' import { BytesConstant, BytesEncoding, StringConstant } from './nodes' import { SourceLocation } from './source-location' import { wtypes } from './wtypes' export const intrinsicFactory = { bytesConcat({ left, right, sourceLocation }: { left: awst.Expression; right: awst.Expression; sourceLocation: SourceLocation }) { - // invariant(left.wtype.equals(right.wtype), 'left and right operand wtypes must match') - if (left.wtype.equals(right.wtype)) { if (left instanceof BytesConstant && right instanceof BytesConstant) { const concatValue = new Uint8Array(left.value.length + right.value.length)