From cd0a9440e86f2fd0c4f069789052ed26022ab564 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Fri, 2 Aug 2024 17:23:14 +0200 Subject: [PATCH 01/13] Allow any expression as constants This is only a start. It compiles, but with a few TODOs left open. In particular, it doesn't currently handle constants depending on other constants or functions; nor does it hoist constants. --- crates/aiken-lang/src/ast.rs | 73 +++++------------- crates/aiken-lang/src/format.rs | 34 +++------ crates/aiken-lang/src/gen_uplc.rs | 76 +++++++++++++++---- crates/aiken-lang/src/gen_uplc/builder.rs | 13 +--- .../src/parser/definition/constant.rs | 68 ++--------------- .../snapshots/g1_element_constant.snap | 1 - .../snapshots/g2_element_constant.snap | 1 - .../aiken-lang/src/parser/expr/when/guard.rs | 23 +++++- crates/aiken-lang/src/tipo.rs | 30 +++++--- crates/aiken-lang/src/tipo/expr.rs | 70 ++--------------- crates/aiken-lang/src/tipo/infer.rs | 26 +++++-- crates/aiken-project/src/config.rs | 25 ++---- crates/aiken-project/src/lib.rs | 6 +- crates/aiken-project/src/module.rs | 4 +- crates/aiken-project/src/test_framework.rs | 11 ++- crates/aiken-project/src/tests/mod.rs | 11 ++- crates/uplc/src/tx/error.rs | 2 +- 17 files changed, 192 insertions(+), 282 deletions(-) diff --git a/crates/aiken-lang/src/ast.rs b/crates/aiken-lang/src/ast.rs index ae90feda..a76ab0f7 100644 --- a/crates/aiken-lang/src/ast.rs +++ b/crates/aiken-lang/src/ast.rs @@ -161,6 +161,7 @@ impl TypedModule { pub fn register_definitions( &self, functions: &mut IndexMap, + constants: &mut IndexMap, data_types: &mut IndexMap, ) { for def in self.definitions() { @@ -203,7 +204,17 @@ impl TypedModule { } } - Definition::TypeAlias(_) | Definition::ModuleConstant(_) | Definition::Use(_) => {} + Definition::ModuleConstant(ModuleConstant { name, value, .. }) => { + constants.insert( + FunctionAccessKey { + module_name: self.name.clone(), + function_name: name.clone(), + }, + value.clone(), + ); + } + + Definition::TypeAlias(_) | Definition::Use(_) => {} } } } @@ -459,18 +470,17 @@ pub struct Use { pub unqualified: Vec, } -pub type TypedModuleConstant = ModuleConstant>; -pub type UntypedModuleConstant = ModuleConstant<()>; +pub type TypedModuleConstant = ModuleConstant; +pub type UntypedModuleConstant = ModuleConstant; #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] -pub struct ModuleConstant { +pub struct ModuleConstant { pub doc: Option, pub location: Span, pub public: bool, pub name: String, pub annotation: Option, - pub value: Box, - pub tipo: T, + pub value: Expr, } pub type TypedValidator = Validator, TypedArg, TypedExpr>; @@ -746,7 +756,7 @@ pub enum Definition { Use(Use), - ModuleConstant(ModuleConstant), + ModuleConstant(ModuleConstant), Test(Function>), @@ -843,55 +853,6 @@ pub struct DefinitionLocation<'module> { pub span: Span, } -#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] -pub enum Constant { - Int { - location: Span, - value: String, - base: Base, - }, - - String { - location: Span, - value: String, - }, - - ByteArray { - location: Span, - bytes: Vec, - preferred_format: ByteArrayFormatPreference, - }, - - CurvePoint { - location: Span, - point: Box, - preferred_format: ByteArrayFormatPreference, - }, -} - -impl Constant { - pub fn tipo(&self) -> Rc { - match self { - Constant::Int { .. } => Type::int(), - Constant::String { .. } => Type::string(), - Constant::ByteArray { .. } => Type::byte_array(), - Constant::CurvePoint { point, .. } => match point.as_ref() { - Curve::Bls12_381(Bls12_381Point::G1(_)) => Type::g1_element(), - Curve::Bls12_381(Bls12_381Point::G2(_)) => Type::g2_element(), - }, - } - } - - pub fn location(&self) -> Span { - match self { - Constant::Int { location, .. } - | Constant::String { location, .. } - | Constant::ByteArray { location, .. } - | Constant::CurvePoint { location, .. } => *location, - } - } -} - pub type TypedCallArg = CallArg; pub type ParsedCallArg = CallArg>; diff --git a/crates/aiken-lang/src/format.rs b/crates/aiken-lang/src/format.rs index f3294673..040fac29 100644 --- a/crates/aiken-lang/src/format.rs +++ b/crates/aiken-lang/src/format.rs @@ -1,7 +1,7 @@ use crate::{ ast::{ Annotation, ArgBy, ArgName, ArgVia, AssignmentKind, AssignmentPattern, BinOp, - ByteArrayFormatPreference, CallArg, Constant, CurveType, DataType, Definition, Function, + ByteArrayFormatPreference, CallArg, CurveType, DataType, Definition, Function, LogicalOpChainKind, ModuleConstant, OnTestFailure, Pattern, RecordConstructor, RecordConstructorArg, RecordUpdateSpread, Span, TraceKind, TypeAlias, TypedArg, TypedValidator, UnOp, UnqualifiedImport, UntypedArg, UntypedArgVia, UntypedAssignmentKind, @@ -9,7 +9,7 @@ use crate::{ UntypedPattern, UntypedRecordUpdateArg, Use, Validator, CAPTURE_VARIABLE, }, docvec, - expr::{FnStyle, UntypedExpr, DEFAULT_ERROR_STR, DEFAULT_TODO_STR}, + expr::{FnStyle, TypedExpr, UntypedExpr, DEFAULT_ERROR_STR, DEFAULT_TODO_STR}, parser::{ extra::{Comment, ModuleExtra}, token::Base, @@ -338,34 +338,20 @@ impl<'comments> Formatter<'comments> { }) } - fn const_expr<'a>(&mut self, value: &'a Constant) -> Document<'a> { - match value { - Constant::ByteArray { - bytes, - preferred_format, - .. - } => self.bytearray(bytes, None, preferred_format), - Constant::CurvePoint { - point, - preferred_format, - .. - } => self.bytearray( - &point.compress(), - Some(point.as_ref().into()), - preferred_format, - ), - Constant::Int { value, base, .. } => self.int(value, base), - Constant::String { value, .. } => self.string(value), - } + fn const_expr<'a>(&mut self, _value: &'a UntypedExpr) -> Document<'a> { + todo!( + "format const_expr: surround complex expressions with a block, and leave simple expression without" + ); } - pub fn docs_const_expr<'a>(&mut self, name: &'a str, value: &'a Constant) -> Document<'a> { + pub fn docs_const_expr<'a>(&mut self, name: &'a str, value: &'a TypedExpr) -> Document<'a> { let mut printer = tipo::pretty::Printer::new(); name.to_doc() .append(": ") .append(printer.print(&value.tipo())) - .append(" = ") - .append(self.const_expr(value)) + // TODO: Show full expression in docs when simple enough + // .append(" = ") + // .append(self.const_expr(value)) } fn documented_definition<'a>(&mut self, s: &'a UntypedDefinition) -> Document<'a> { diff --git a/crates/aiken-lang/src/gen_uplc.rs b/crates/aiken-lang/src/gen_uplc.rs index 5e8e3757..352da36a 100644 --- a/crates/aiken-lang/src/gen_uplc.rs +++ b/crates/aiken-lang/src/gen_uplc.rs @@ -5,9 +5,9 @@ pub mod tree; use self::{ air::Air, builder::{ - cast_validator_args, constants_ir, convert_type_to_data, extract_constant, - modify_cyclic_calls, modify_self_calls, rearrange_list_clauses, AssignmentProperties, - ClauseProperties, CodeGenSpecialFuncs, CycleFunctionNames, HoistableFunction, Variant, + cast_validator_args, convert_type_to_data, extract_constant, modify_cyclic_calls, + modify_self_calls, rearrange_list_clauses, AssignmentProperties, ClauseProperties, + CodeGenSpecialFuncs, CycleFunctionNames, HoistableFunction, Variant, }, tree::{AirTree, TreePath}, }; @@ -58,6 +58,7 @@ pub struct CodeGenerator<'a> { plutus_version: PlutusVersion, /// immutable index maps functions: IndexMap<&'a FunctionAccessKey, &'a TypedFunction>, + constants: IndexMap<&'a FunctionAccessKey, &'a TypedExpr>, data_types: IndexMap<&'a DataTypeKey, &'a TypedDataType>, module_types: IndexMap<&'a str, &'a TypeInfo>, module_src: IndexMap<&'a str, &'a (String, LineNumbers)>, @@ -82,6 +83,7 @@ impl<'a> CodeGenerator<'a> { pub fn new( plutus_version: PlutusVersion, functions: IndexMap<&'a FunctionAccessKey, &'a TypedFunction>, + constants: IndexMap<&'a FunctionAccessKey, &'a TypedExpr>, data_types: IndexMap<&'a DataTypeKey, &'a TypedDataType>, module_types: IndexMap<&'a str, &'a TypeInfo>, module_src: IndexMap<&'a str, &'a (String, LineNumbers)>, @@ -90,6 +92,7 @@ impl<'a> CodeGenerator<'a> { CodeGenerator { plutus_version, functions, + constants, data_types, module_types, module_src, @@ -268,12 +271,7 @@ impl<'a> CodeGenerator<'a> { TypedExpr::Var { constructor, name, .. - } => match &constructor.variant { - ValueConstructorVariant::ModuleConstant { literal, .. } => { - constants_ir(literal) - } - _ => AirTree::var(constructor.clone(), name, ""), - }, + } => AirTree::var(constructor.clone(), name, ""), TypedExpr::Fn { args, body, .. } => AirTree::anon_func( args.iter() @@ -743,8 +741,16 @@ impl<'a> CodeGenerator<'a> { AirTree::builtin(*builtin, tipo.clone(), vec![]) } } - ModuleValueConstructor::Constant { literal, .. } => { - builder::constants_ir(literal) + ModuleValueConstructor::Constant { module, name, .. } => { + let type_info = self.module_types.get(module_name.as_str()).unwrap(); + + let value = type_info.values.get(name).unwrap(); + + AirTree::var( + ValueConstructor::public(tipo.clone(), value.variant.clone()), + format!("{module}_{name}"), + "", + ) } }, @@ -4245,8 +4251,52 @@ impl<'a> CodeGenerator<'a> { } .into(), )), - ValueConstructorVariant::ModuleConstant { .. } => { - unreachable!("{:#?}, {}", constructor, name) + ValueConstructorVariant::ModuleConstant { module, name, .. } => { + let access_key = FunctionAccessKey { + module_name: module.clone(), + function_name: name.clone(), + }; + + let definition = self + .constants + .get(&access_key) + .unwrap_or_else(|| panic!("unknown constant {module}.{name}")); + + let mut value = + AirTree::no_op(self.build(definition, &access_key.module_name, &[])); + + value.traverse_tree_with( + &mut |air_tree, _| { + erase_opaque_type_operations(air_tree, &self.data_types); + }, + true, + ); + + let term = self + .uplc_code_gen(value.to_vec()) + .constr_fields_exposer() + .constr_index_exposer(); + + let mut program: Program = Program { + version: (1, 0, 0), + term: self.special_functions.apply_used_functions(term), + }; + + let mut interner = CodeGenInterner::new(); + + interner.program(&mut program); + + let eval_program: Program = + program.remove_no_inlines().try_into().unwrap(); + + Some( + eval_program + .eval(ExBudget::max()) + .result() + .unwrap_or_else(|e| panic!("Failed to evaluate constant: {e:#?}")) + .try_into() + .unwrap(), + ) } ValueConstructorVariant::ModuleFn { name: func_name, diff --git a/crates/aiken-lang/src/gen_uplc/builder.rs b/crates/aiken-lang/src/gen_uplc/builder.rs index d2f166ac..a05d7d39 100644 --- a/crates/aiken-lang/src/gen_uplc/builder.rs +++ b/crates/aiken-lang/src/gen_uplc/builder.rs @@ -4,8 +4,8 @@ use super::{ }; use crate::{ ast::{ - Constant, DataTypeKey, FunctionAccessKey, Pattern, Span, TraceLevel, TypedArg, - TypedAssignmentKind, TypedClause, TypedDataType, TypedPattern, + DataTypeKey, FunctionAccessKey, Pattern, Span, TraceLevel, TypedArg, TypedAssignmentKind, + TypedClause, TypedDataType, TypedPattern, }, expr::TypedExpr, line_numbers::{LineColumn, LineNumbers}, @@ -287,15 +287,6 @@ impl Default for CodeGenSpecialFuncs { } } -pub fn constants_ir(literal: &Constant) -> AirTree { - match literal { - Constant::Int { value, .. } => AirTree::int(value), - Constant::String { value, .. } => AirTree::string(value), - Constant::ByteArray { bytes, .. } => AirTree::byte_array(bytes.clone()), - Constant::CurvePoint { point, .. } => AirTree::curve(*point.as_ref()), - } -} - pub fn get_generic_variant_name(t: &Rc) -> String { let uplc_type = t.get_uplc_type(); diff --git a/crates/aiken-lang/src/parser/definition/constant.rs b/crates/aiken-lang/src/parser/definition/constant.rs index 469f1abc..c8205be8 100644 --- a/crates/aiken-lang/src/parser/definition/constant.rs +++ b/crates/aiken-lang/src/parser/definition/constant.rs @@ -1,10 +1,8 @@ -use chumsky::prelude::*; -use uplc::machine::runtime::Compressable; - use crate::{ ast, - parser::{annotation, error::ParseError, literal, token::Token, utils}, + parser::{annotation, error::ParseError, expr::pure_expression, token::Token, utils}, }; +use chumsky::prelude::*; pub fn parser() -> impl Parser { utils::optional_flag(Token::Pub) @@ -16,7 +14,9 @@ pub fn parser() -> impl Parser impl Parser impl Parser { - let constant_string_parser = - select! {Token::String {value} => value}.map_with_span(|value, span| { - ast::Constant::String { - location: span, - value, - } - }); - - let constant_int_parser = - literal::int().map_with_span(|(value, base), location| ast::Constant::Int { - location, - value, - base, - }); - - let constant_bytearray_parser = literal::bytearray( - |bytes, preferred_format, curve, location, emit| match curve { - Some(curve @ ast::CurveType::Bls12_381(point)) => { - let point = match point { - ast::Bls12_381PointType::G1 => { - blst::blst_p1::uncompress(&bytes).map(ast::Bls12_381Point::G1) - } - ast::Bls12_381PointType::G2 => { - blst::blst_p2::uncompress(&bytes).map(ast::Bls12_381Point::G2) - } - }; - - let point = point.unwrap_or_else(|_err| { - emit(ParseError::point_not_on_curve(curve, location)); - - ast::Bls12_381Point::default() - }); - - ast::Constant::CurvePoint { - location, - point: ast::Curve::Bls12_381(point).into(), - preferred_format, - } - } - None => ast::Constant::ByteArray { - location, - bytes, - preferred_format, - }, - }, - ); - - choice(( - constant_string_parser, - constant_int_parser, - constant_bytearray_parser, - )) -} - #[cfg(test)] mod tests { use crate::assert_definition; diff --git a/crates/aiken-lang/src/parser/definition/snapshots/g1_element_constant.snap b/crates/aiken-lang/src/parser/definition/snapshots/g1_element_constant.snap index 4a009447..acaac4aa 100644 --- a/crates/aiken-lang/src/parser/definition/snapshots/g1_element_constant.snap +++ b/crates/aiken-lang/src/parser/definition/snapshots/g1_element_constant.snap @@ -49,6 +49,5 @@ ModuleConstant( ), preferred_format: HexadecimalString, }, - tipo: (), }, ) diff --git a/crates/aiken-lang/src/parser/definition/snapshots/g2_element_constant.snap b/crates/aiken-lang/src/parser/definition/snapshots/g2_element_constant.snap index 060b55a0..c9d455d8 100644 --- a/crates/aiken-lang/src/parser/definition/snapshots/g2_element_constant.snap +++ b/crates/aiken-lang/src/parser/definition/snapshots/g2_element_constant.snap @@ -91,6 +91,5 @@ ModuleConstant( ), preferred_format: HexadecimalString, }, - tipo: (), }, ) diff --git a/crates/aiken-lang/src/parser/expr/when/guard.rs b/crates/aiken-lang/src/parser/expr/when/guard.rs index 9a38cdf1..2bda8ac0 100644 --- a/crates/aiken-lang/src/parser/expr/when/guard.rs +++ b/crates/aiken-lang/src/parser/expr/when/guard.rs @@ -1,6 +1,6 @@ use crate::{ ast, - parser::{definition, error::ParseError, token::Token}, + parser::{error::ParseError, literal, token::Token}, }; use chumsky::prelude::*; @@ -12,13 +12,11 @@ pub fn parser() -> impl Parser impl Parser impl Parser { + let constant_string_parser = + select! {Token::String {value} => value}.map(|_| ast::UntypedClauseGuard {}); + + let constant_int_parser = literal::int().map(|_| ast::UntypedClauseGuard {}); + + let constant_bytearray_parser = literal::bytearray(|_, _, _, _, _| ast::UntypedClauseGuard {}); + + choice(( + constant_string_parser, + constant_int_parser, + constant_bytearray_parser, + )) +} diff --git a/crates/aiken-lang/src/tipo.rs b/crates/aiken-lang/src/tipo.rs index fad2f08e..3ea349e1 100644 --- a/crates/aiken-lang/src/tipo.rs +++ b/crates/aiken-lang/src/tipo.rs @@ -1,8 +1,8 @@ use self::{environment::Environment, pretty::Printer}; use crate::{ ast::{ - well_known, Annotation, Constant, DataType, DataTypeKey, DefinitionLocation, ModuleKind, - Span, TypedDataType, + well_known, Annotation, DataType, DataTypeKey, DefinitionLocation, ModuleKind, Span, + TypedDataType, }, tipo::fields::FieldMap, }; @@ -1101,11 +1101,13 @@ impl TypeVar { Self::Link { tipo } => tipo.get_inner_types(), Self::Unbound { .. } => vec![], var => { - vec![Type::Var { - tipo: RefCell::new(var.clone()).into(), - alias: None, - } - .into()] + vec![ + Type::Var { + tipo: RefCell::new(var.clone()).into(), + alias: None, + } + .into(), + ] } } } @@ -1216,7 +1218,7 @@ pub enum ValueConstructorVariant { ModuleConstant { location: Span, module: String, - literal: Constant, + name: String, }, /// A function belonging to the module @@ -1262,11 +1264,14 @@ impl ValueConstructorVariant { location: *location, }, - // TODO: remove this clone with an rc clone Self::ModuleConstant { - literal, location, .. + name, + module, + location, + .. } => ModuleValueConstructor::Constant { - literal: literal.clone(), + name: name.clone(), + module: module.clone(), location: *location, }, @@ -1400,8 +1405,9 @@ pub enum ModuleValueConstructor { }, Constant { - literal: Constant, location: Span, + module: String, + name: String, }, } diff --git a/crates/aiken-lang/src/tipo/expr.rs b/crates/aiken-lang/src/tipo/expr.rs index 2e2e16e0..376281db 100644 --- a/crates/aiken-lang/src/tipo/expr.rs +++ b/crates/aiken-lang/src/tipo/expr.rs @@ -11,11 +11,11 @@ use super::{ use crate::{ ast::{ self, Annotation, ArgName, AssignmentKind, AssignmentPattern, BinOp, Bls12_381Point, - ByteArrayFormatPreference, CallArg, Constant, Curve, Function, IfBranch, - LogicalOpChainKind, Pattern, RecordUpdateSpread, Span, TraceKind, TraceLevel, Tracing, - TypedArg, TypedCallArg, TypedClause, TypedIfBranch, TypedPattern, TypedRecordUpdateArg, - TypedValidator, UnOp, UntypedArg, UntypedAssignmentKind, UntypedClause, UntypedFunction, - UntypedIfBranch, UntypedPattern, UntypedRecordUpdateArg, + ByteArrayFormatPreference, CallArg, Curve, Function, IfBranch, LogicalOpChainKind, Pattern, + RecordUpdateSpread, Span, TraceKind, TraceLevel, Tracing, TypedArg, TypedCallArg, + TypedClause, TypedIfBranch, TypedPattern, TypedRecordUpdateArg, TypedValidator, UnOp, + UntypedArg, UntypedAssignmentKind, UntypedClause, UntypedFunction, UntypedIfBranch, + UntypedPattern, UntypedRecordUpdateArg, }, builtins::{from_default_function, BUILTIN}, expr::{FnStyle, TypedExpr, UntypedExpr}, @@ -1176,7 +1176,7 @@ impl<'a, 'b> ExprTyper<'a, 'b> { Ok((typed_arg, extra_assignment)) } - fn infer_assignment( + pub fn infer_assignment( &mut self, untyped_pattern: UntypedPattern, untyped_value: UntypedExpr, @@ -1466,64 +1466,6 @@ impl<'a, 'b> ExprTyper<'a, 'b> { Ok(typed_patterns) } - // TODO: extract the type annotation checking into a infer_module_const - // function that uses this function internally - pub fn infer_const( - &mut self, - annotation: &Option, - value: Constant, - ) -> Result { - let inferred = match value { - Constant::Int { - location, - value, - base, - } => Ok(Constant::Int { - location, - value, - base, - }), - - Constant::String { location, value } => Ok(Constant::String { location, value }), - - Constant::ByteArray { - location, - bytes, - preferred_format, - } => { - let _ = self.infer_bytearray(bytes.clone(), preferred_format, location)?; - Ok(Constant::ByteArray { - location, - bytes, - preferred_format, - }) - } - Constant::CurvePoint { - location, - point, - preferred_format, - } => Ok(Constant::CurvePoint { - location, - point, - preferred_format, - }), - }?; - - // Check type annotation is accurate. - if let Some(ann) = annotation { - let const_ann = self.type_from_annotation(ann)?; - - self.unify( - const_ann.clone(), - inferred.tipo(), - inferred.location(), - const_ann.is_data(), - )?; - }; - - Ok(inferred) - } - fn infer_if( &mut self, branches: Vec1, diff --git a/crates/aiken-lang/src/tipo/infer.rs b/crates/aiken-lang/src/tipo/infer.rs index 1c669236..7b469c6f 100644 --- a/crates/aiken-lang/src/tipo/infer.rs +++ b/crates/aiken-lang/src/tipo/infer.rs @@ -9,9 +9,10 @@ use crate::{ ast::{ Annotation, ArgName, ArgVia, DataType, Definition, Function, ModuleConstant, ModuleKind, RecordConstructor, RecordConstructorArg, Tracing, TypeAlias, TypedArg, TypedDefinition, - TypedModule, TypedValidator, UntypedArg, UntypedDefinition, UntypedModule, + TypedModule, TypedValidator, UntypedArg, UntypedDefinition, UntypedModule, UntypedPattern, UntypedValidator, Use, Validator, }, + expr::{TypedExpr, UntypedAssignmentKind}, tipo::{expr::infer_function, Span, Type, TypeVar}, IdGenerator, }; @@ -619,10 +620,22 @@ fn infer_definition( annotation, public, value, - tipo: _, }) => { - let typed_expr = - ExprTyper::new(environment, tracing).infer_const(&annotation, *value)?; + let typed_assignment = ExprTyper::new(environment, tracing).infer_assignment( + UntypedPattern::Var { + location, + name: name.clone(), + }, + value, + UntypedAssignmentKind::Let { backpassing: false }, + &annotation, + location, + )?; + + let typed_expr = match typed_assignment { + TypedExpr::Assignment { value, .. } => value, + _ => unreachable!("infer_assignment inferred something else than an assignment?"), + }; let tipo = typed_expr.tipo(); @@ -630,7 +643,7 @@ fn infer_definition( public, variant: ValueConstructorVariant::ModuleConstant { location, - literal: typed_expr.clone(), + name: name.to_owned(), module: module_name.to_owned(), }, tipo: tipo.clone(), @@ -650,8 +663,7 @@ fn infer_definition( name, annotation, public, - value: Box::new(typed_expr), - tipo, + value: *typed_expr, })) } } diff --git a/crates/aiken-project/src/config.rs b/crates/aiken-project/src/config.rs index 4f5e7153..bbd6bca9 100644 --- a/crates/aiken-project/src/config.rs +++ b/crates/aiken-project/src/config.rs @@ -1,8 +1,6 @@ use crate::{github::repo::LatestRelease, package_name::PackageName, paths, Error}; use aiken_lang::{ - ast::{ - Annotation, ByteArrayFormatPreference, Constant, ModuleConstant, Span, UntypedDefinition, - }, + ast::{Annotation, ByteArrayFormatPreference, ModuleConstant, Span, UntypedDefinition}, expr::UntypedExpr, parser::token::Base, }; @@ -78,24 +76,14 @@ impl SimpleExpr { let (value, annotation) = match self { SimpleExpr::Bool(..) => todo!("requires https://github.com/aiken-lang/aiken/pull/992"), - SimpleExpr::Int(i) => ( + SimpleExpr::Int(_) => ( // TODO: Replace with 'self.as_untyped_expr()' after https://github.com/aiken-lang/aiken/pull/992 - Constant::Int { - location, - value: format!("{i}"), - base: Base::Decimal { - numeric_underscore: false, - }, - }, + self.as_untyped_expr(), Some(Annotation::int(location)), ), - SimpleExpr::ByteArray(bs, preferred_format) => ( + SimpleExpr::ByteArray(_, _) => ( // TODO: Replace with 'self.as_untyped_expr()' after https://github.com/aiken-lang/aiken/pull/992 - Constant::ByteArray { - location, - bytes: bs.to_vec(), - preferred_format: *preferred_format, - }, + self.as_untyped_expr(), Some(Annotation::bytearray(location)), ), SimpleExpr::List(..) => todo!("requires https://github.com/aiken-lang/aiken/pull/992"), @@ -107,8 +95,7 @@ impl SimpleExpr { public: true, name: identifier.to_string(), annotation, - value: Box::new(value), - tipo: (), + value, }) } } diff --git a/crates/aiken-project/src/lib.rs b/crates/aiken-project/src/lib.rs index 32a57a91..c356e093 100644 --- a/crates/aiken-project/src/lib.rs +++ b/crates/aiken-project/src/lib.rs @@ -36,7 +36,7 @@ use aiken_lang::{ TypedFunction, UntypedDefinition, }, builtins, - expr::UntypedExpr, + expr::{TypedExpr, UntypedExpr}, format::{Formatter, MAX_COLUMNS}, gen_uplc::CodeGenerator, line_numbers::LineNumbers, @@ -98,6 +98,7 @@ where checks_count: Option, event_listener: T, functions: IndexMap, + constants: IndexMap, data_types: IndexMap, module_sources: HashMap, } @@ -149,6 +150,7 @@ where checks_count: None, event_listener, functions, + constants: IndexMap::new(), data_types, module_sources: HashMap::new(), } @@ -158,6 +160,7 @@ where CodeGenerator::new( self.config.plutus, utils::indexmap::as_ref_values(&self.functions), + utils::indexmap::as_ref_values(&self.constants), utils::indexmap::as_ref_values(&self.data_types), utils::indexmap::as_str_ref_values(&self.module_types), utils::indexmap::as_str_ref_values(&self.module_sources), @@ -805,6 +808,7 @@ where &mut self.module_sources, &mut self.module_types, &mut self.functions, + &mut self.constants, &mut self.data_types, )?; diff --git a/crates/aiken-project/src/module.rs b/crates/aiken-project/src/module.rs index d7e245e0..30ed0357 100644 --- a/crates/aiken-project/src/module.rs +++ b/crates/aiken-project/src/module.rs @@ -5,6 +5,7 @@ use aiken_lang::{ Tracing, TypedDataType, TypedFunction, TypedModule, TypedValidator, UntypedModule, Validator, }, + expr::TypedExpr, line_numbers::LineNumbers, parser::extra::{comments_before, Comment, ModuleExtra}, tipo::TypeInfo, @@ -49,6 +50,7 @@ impl ParsedModule { module_sources: &mut HashMap, module_types: &mut HashMap, functions: &mut IndexMap, + constants: &mut IndexMap, data_types: &mut IndexMap, ) -> Result<(CheckedModule, Vec), Error> { let mut warnings = Vec::new(); @@ -92,7 +94,7 @@ impl ParsedModule { module_types.insert(self.name.clone(), ast.type_info.clone()); // Register function definitions & data-types for easier access later. - ast.register_definitions(functions, data_types); + ast.register_definitions(functions, constants, data_types); Ok(( CheckedModule { diff --git a/crates/aiken-project/src/test_framework.rs b/crates/aiken-project/src/test_framework.rs index 38f39457..c3ca0303 100644 --- a/crates/aiken-project/src/test_framework.rs +++ b/crates/aiken-project/src/test_framework.rs @@ -62,7 +62,8 @@ mod test { let mut functions = builtins::prelude_functions(&id_gen, &module_types); let mut data_types = builtins::prelude_data_types(&id_gen); - ast.register_definitions(&mut functions, &mut data_types); + let mut constants = IndexMap::new(); + ast.register_definitions(&mut functions, &mut constants, &mut data_types); let mut module_sources = HashMap::new(); module_sources.insert( @@ -87,6 +88,7 @@ mod test { let mut generator = CodeGenerator::new( PlutusVersion::default(), utils::indexmap::as_ref_values(&functions), + utils::indexmap::as_ref_values(&constants), utils::indexmap::as_ref_values(&data_types), utils::indexmap::as_str_ref_values(&module_types), utils::indexmap::as_str_ref_values(&module_sources), @@ -240,13 +242,14 @@ mod test { } "#}); - assert!(prop - .run::<()>( + assert!( + prop.run::<()>( 42, PropertyTest::DEFAULT_MAX_SUCCESS, &PlutusVersion::default() ) - .is_success()); + .is_success() + ); } #[test] diff --git a/crates/aiken-project/src/tests/mod.rs b/crates/aiken-project/src/tests/mod.rs index 6039c89c..21273f82 100644 --- a/crates/aiken-project/src/tests/mod.rs +++ b/crates/aiken-project/src/tests/mod.rs @@ -9,6 +9,7 @@ use aiken_lang::{ DataTypeKey, FunctionAccessKey, ModuleKind, TraceLevel, Tracing, TypedDataType, TypedFunction, }, + expr::TypedExpr, gen_uplc::CodeGenerator, line_numbers::LineNumbers, parser, @@ -28,6 +29,7 @@ pub struct TestProject { pub package: PackageName, pub id_gen: IdGenerator, pub functions: IndexMap, + pub constants: IndexMap, pub data_types: IndexMap, pub module_types: HashMap, pub module_sources: HashMap, @@ -48,12 +50,14 @@ impl TestProject { let functions = builtins::prelude_functions(&id_gen, &module_types); let data_types = builtins::prelude_data_types(&id_gen); + let constants = IndexMap::new(); TestProject { package, id_gen, module_types, functions, + constants, data_types, module_sources: HashMap::new(), } @@ -63,6 +67,7 @@ impl TestProject { CodeGenerator::new( PlutusVersion::default(), utils::indexmap::as_ref_values(&self.functions), + utils::indexmap::as_ref_values(&self.constants), utils::indexmap::as_ref_values(&self.data_types), utils::indexmap::as_str_ref_values(&self.module_types), utils::indexmap::as_str_ref_values(&self.module_sources), @@ -104,7 +109,11 @@ impl TestProject { .expect("Failed to type-check module"); // Register function definitions & data-types for easier access later. - ast.register_definitions(&mut self.functions, &mut self.data_types); + ast.register_definitions( + &mut self.functions, + &mut self.constants, + &mut self.data_types, + ); // Register module sources for an easier access later. self.module_sources.insert( diff --git a/crates/uplc/src/tx/error.rs b/crates/uplc/src/tx/error.rs index c7803e45..17308fa1 100644 --- a/crates/uplc/src/tx/error.rs +++ b/crates/uplc/src/tx/error.rs @@ -19,7 +19,7 @@ pub enum Error { format!( "\n{:>13} {}", "Trace", - if trace.contains("\n") { + if trace.contains('\n') { trace.lines() .enumerate() .map(|(ix, row)| { From f674f9ee9748de3bc40ded16d6a2dde11367c154 Mon Sep 17 00:00:00 2001 From: microproofs Date: Wed, 14 Aug 2024 18:43:20 -0400 Subject: [PATCH 02/13] hoist functions to super constants too --- crates/aiken-lang/src/gen_uplc.rs | 155 ++++++++---------------------- 1 file changed, 41 insertions(+), 114 deletions(-) diff --git a/crates/aiken-lang/src/gen_uplc.rs b/crates/aiken-lang/src/gen_uplc.rs index 352da36a..b296c4f8 100644 --- a/crates/aiken-lang/src/gen_uplc.rs +++ b/crates/aiken-lang/src/gen_uplc.rs @@ -68,7 +68,6 @@ pub struct CodeGenerator<'a> { defined_functions: IndexMap, special_functions: CodeGenSpecialFuncs, code_gen_functions: IndexMap, - zero_arg_functions: IndexMap<(FunctionAccessKey, Variant), Vec>, cyclic_functions: IndexMap<(FunctionAccessKey, Variant), (CycleFunctionNames, usize, FunctionAccessKey)>, /// mutable and reset as well @@ -100,7 +99,6 @@ impl<'a> CodeGenerator<'a> { defined_functions: IndexMap::new(), special_functions: CodeGenSpecialFuncs::new(), code_gen_functions: IndexMap::new(), - zero_arg_functions: IndexMap::new(), cyclic_functions: IndexMap::new(), id_gen: IdGenerator::new(), } @@ -108,7 +106,6 @@ impl<'a> CodeGenerator<'a> { pub fn reset(&mut self, reset_special_functions: bool) { self.code_gen_functions = IndexMap::new(); - self.zero_arg_functions = IndexMap::new(); self.defined_functions = IndexMap::new(); self.cyclic_functions = IndexMap::new(); self.id_gen = IdGenerator::new(); @@ -3686,56 +3683,39 @@ impl<'a> CodeGenerator<'a> { // first grab dependencies let func_params = params; - let params_empty = func_params.is_empty(); - let deps = (tree_path, func_deps.clone()); - if !params_empty { - let recursive_nonstatics = if is_recursive { - modify_self_calls(&mut body, key, variant, func_params) - } else { - func_params.clone() - }; - - let node_to_edit = air_tree.find_air_tree_node(tree_path); - - let defined_function = AirTree::define_func( - &key.function_name, - &key.module_name, - variant, - func_params.clone(), - is_recursive, - recursive_nonstatics, - body, - node_to_edit.clone(), - ); - - let defined_dependencies = self.hoist_dependent_functions( - deps, - params_empty, - (key, variant), - hoisted_functions, - functions_to_hoist, - defined_function, - ); - - // now hoist full function onto validator tree - *node_to_edit = defined_dependencies; - - hoisted_functions.push((key.clone(), variant.clone())); + let recursive_nonstatics = if is_recursive { + modify_self_calls(&mut body, key, variant, func_params) } else { - let defined_func = self.hoist_dependent_functions( - deps, - params_empty, - (key, variant), - hoisted_functions, - functions_to_hoist, - body, - ); + func_params.clone() + }; - self.zero_arg_functions - .insert((key.clone(), variant.clone()), defined_func.to_vec()); - } + let node_to_edit = air_tree.find_air_tree_node(tree_path); + + let defined_function = AirTree::define_func( + &key.function_name, + &key.module_name, + variant, + func_params.clone(), + is_recursive, + recursive_nonstatics, + body, + node_to_edit.clone(), + ); + + let defined_dependencies = self.hoist_dependent_functions( + deps, + (key, variant), + hoisted_functions, + functions_to_hoist, + defined_function, + ); + + // now hoist full function onto validator tree + *node_to_edit = defined_dependencies; + + hoisted_functions.push((key.clone(), variant.clone())); } HoistableFunction::CyclicFunction { functions, @@ -3763,8 +3743,6 @@ impl<'a> CodeGenerator<'a> { let defined_dependencies = self.hoist_dependent_functions( deps, - // cyclic functions always have params - false, (key, variant), hoisted_functions, functions_to_hoist, @@ -3788,7 +3766,6 @@ impl<'a> CodeGenerator<'a> { fn hoist_dependent_functions( &mut self, deps: (&TreePath, Vec<(FunctionAccessKey, String)>), - params_empty: bool, func_key_variant: (&FunctionAccessKey, &Variant), hoisted_functions: &mut Vec<(FunctionAccessKey, String)>, functions_to_hoist: &IndexMap< @@ -3855,12 +3832,12 @@ impl<'a> CodeGenerator<'a> { sorted_dep_vec .into_iter() .fold(air_tree, |then, (dep_key, dep_variant)| { - if (!params_empty - // if the dependency is the same as the function we're hoisting - // or we hoisted it, then skip it - && hoisted_functions.iter().any(|(generic, variant)| { - generic == &dep_key && variant == &dep_variant - })) + if + // if the dependency is the same as the function we're hoisting + // or we hoisted it, then skip it + hoisted_functions + .iter() + .any(|(generic, variant)| generic == &dep_key && variant == &dep_variant) || (&dep_key == key && &dep_variant == variant) { return then; @@ -3877,7 +3854,7 @@ impl<'a> CodeGenerator<'a> { // In the case of zero args, we need to hoist the dependency function to the top of the zero arg function // The dependency we are hoisting should have an equal path to the function we hoisted // if we are going to hoist it - if &dep_path.common_ancestor(func_path) == func_path || params_empty { + if &dep_path.common_ancestor(func_path) == func_path { match dep_function.clone() { HoistableFunction::Function { body: mut dep_air_tree, @@ -3904,9 +3881,7 @@ impl<'a> CodeGenerator<'a> { dependent_params.clone() }; - if !params_empty { - hoisted_functions.push((dep_key.clone(), dep_variant.clone())); - } + hoisted_functions.push((dep_key.clone(), dep_variant.clone())); AirTree::define_func( &dep_key.function_name, @@ -3926,9 +3901,7 @@ impl<'a> CodeGenerator<'a> { modify_cyclic_calls(body, &dep_key, &self.cyclic_functions); } - if !params_empty { - hoisted_functions.push((dep_key.clone(), dep_variant.clone())); - } + hoisted_functions.push((dep_key.clone(), dep_variant.clone())); AirTree::define_cyclic_func( &dep_key.function_name, @@ -4272,6 +4245,8 @@ impl<'a> CodeGenerator<'a> { true, ); + value = self.hoist_functions_to_validator(value); + let term = self .uplc_code_gen(value.to_vec()) .constr_fields_exposer() @@ -4638,55 +4613,7 @@ impl<'a> CodeGenerator<'a> { // How we handle zero arg anon functions has changed // We now delay zero arg anon functions and force them on a call operation match term.pierce_no_inlines() { - Term::Var(name) => { - let zero_arg_functions = self.zero_arg_functions.clone(); - let text = &name.text; - - if let Some((_, air_vec)) = zero_arg_functions.iter().find( - |( - ( - FunctionAccessKey { - module_name, - function_name, - }, - variant, - ), - _, - )| { - let name_module = - format!("{module_name}_{function_name}{variant}"); - let name = format!("{function_name}{variant}"); - - text == &name || text == &name_module - }, - ) { - let mut term = self.uplc_code_gen(air_vec.clone()); - - term = term.constr_fields_exposer().constr_index_exposer(); - - let mut program: Program = Program { - version: (1, 0, 0), - term: self.special_functions.apply_used_functions(term), - }; - - let mut interner = CodeGenInterner::new(); - - interner.program(&mut program); - - let eval_program: Program = - program.remove_no_inlines().try_into().unwrap(); - - let result = eval_program.eval(ExBudget::max()).result(); - - let evaluated_term: Term = result.unwrap_or_else(|e| { - panic!("Evaluated a zero argument function and received this error: {e:#?}") - }); - - Some(evaluated_term.try_into().unwrap()) - } else { - Some(term.force()) - } - } + Term::Var(_) => Some(term.force()), Term::Delay(inner_term) => Some(inner_term.as_ref().clone()), Term::Apply { .. } => Some(term.force()), _ => unreachable!( From f35afe8d65b48ece5b4336321893d739bd059123 Mon Sep 17 00:00:00 2001 From: microproofs Date: Fri, 16 Aug 2024 22:04:20 -0400 Subject: [PATCH 03/13] Implement SimpleExpr logic for configuration parsing We can now use boolean, lists & all in configuration. --- crates/aiken-lang/src/ast.rs | 13 +++++ crates/aiken-project/src/config.rs | 77 ++++++++++++++++++++++-------- 2 files changed, 69 insertions(+), 21 deletions(-) diff --git a/crates/aiken-lang/src/ast.rs b/crates/aiken-lang/src/ast.rs index a76ab0f7..57fa6014 100644 --- a/crates/aiken-lang/src/ast.rs +++ b/crates/aiken-lang/src/ast.rs @@ -1259,6 +1259,19 @@ impl Annotation { } } + pub fn list(inner: Annotation, location: Span) -> Self { + Annotation::Constructor { + name: "List".to_string(), + module: None, + arguments: vec![inner], + location, + } + } + + pub fn tuple(elems: Vec, location: Span) -> Self { + Annotation::Tuple { elems, location } + } + pub fn is_logically_equal(&self, other: &Annotation) -> bool { match self { Annotation::Constructor { diff --git a/crates/aiken-project/src/config.rs b/crates/aiken-project/src/config.rs index bbd6bca9..03f8487b 100644 --- a/crates/aiken-project/src/config.rs +++ b/crates/aiken-project/src/config.rs @@ -45,7 +45,7 @@ pub enum SimpleExpr { } impl SimpleExpr { - pub fn as_untyped_expr(&self) -> UntypedExpr { + pub fn as_untyped_expr(&self, annotation: &Annotation) -> UntypedExpr { match self { SimpleExpr::Bool(b) => UntypedExpr::Var { location: Span::empty(), @@ -63,38 +63,73 @@ impl SimpleExpr { bytes: bs.to_vec(), preferred_format: *preferred_format, }, - SimpleExpr::List(es) => UntypedExpr::List { - location: Span::empty(), - elements: es.iter().map(|e| e.as_untyped_expr()).collect(), - tail: None, + SimpleExpr::List(es) => match annotation { + Annotation::Tuple { elems, .. } => UntypedExpr::Tuple { + location: Span::empty(), + elems: es + .iter() + .zip(elems) + .map(|(e, ann)| e.as_untyped_expr(ann)) + .collect(), + }, + Annotation::Constructor { + module, + name, + arguments, + .. + } if name == "List" && module.is_none() => UntypedExpr::List { + location: Span::empty(), + elements: es + .iter() + .map(|e| e.as_untyped_expr(arguments.first().unwrap())) + .collect(), + tail: None, + }, + _ => unreachable!( + "unexpected annotation for simple list expression: {annotation:#?}" + ), }, } } - pub fn as_definition(&self, identifier: &str) -> UntypedDefinition { + pub fn as_annotation(&self) -> Annotation { let location = Span::empty(); + match self { + SimpleExpr::Bool(..) => Annotation::boolean(location), + SimpleExpr::Int(_) => Annotation::int(location), + SimpleExpr::ByteArray(_, _) => Annotation::bytearray(location), + SimpleExpr::List(elems) => { + let elems = elems.iter().map(|e| e.as_annotation()).collect::>(); - let (value, annotation) = match self { - SimpleExpr::Bool(..) => todo!("requires https://github.com/aiken-lang/aiken/pull/992"), - SimpleExpr::Int(_) => ( - // TODO: Replace with 'self.as_untyped_expr()' after https://github.com/aiken-lang/aiken/pull/992 - self.as_untyped_expr(), - Some(Annotation::int(location)), - ), - SimpleExpr::ByteArray(_, _) => ( - // TODO: Replace with 'self.as_untyped_expr()' after https://github.com/aiken-lang/aiken/pull/992 - self.as_untyped_expr(), - Some(Annotation::bytearray(location)), - ), - SimpleExpr::List(..) => todo!("requires https://github.com/aiken-lang/aiken/pull/992"), - }; + let (is_uniform, inner) = + elems + .iter() + .fold((true, None), |(matches, ann), a| match ann { + None => (matches, Some(a)), + Some(b) => (matches && a == b, ann), + }); + if is_uniform { + Annotation::list( + inner.cloned().unwrap_or_else(|| Annotation::data(location)), + location, + ) + } else { + Annotation::tuple(elems, location) + } + } + } + } + + pub fn as_definition(&self, identifier: &str) -> UntypedDefinition { + let annotation = self.as_annotation(); + let value = self.as_untyped_expr(&annotation); UntypedDefinition::ModuleConstant(ModuleConstant { location: Span::empty(), doc: None, public: true, name: identifier.to_string(), - annotation, + annotation: Some(annotation), value, }) } From 9063549f2e958732036e477ae9f0d79e0b0c7b56 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Sat, 17 Aug 2024 14:56:18 +0200 Subject: [PATCH 04/13] Re-use expr formatter for constants. --- crates/aiken-lang/src/format.rs | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/crates/aiken-lang/src/format.rs b/crates/aiken-lang/src/format.rs index 040fac29..7530e10a 100644 --- a/crates/aiken-lang/src/format.rs +++ b/crates/aiken-lang/src/format.rs @@ -295,7 +295,7 @@ impl<'comments> Formatter<'comments> { head.append(" =") .append(break_("", " ")) - .append(self.const_expr(value)) + .append(self.expr(value, true)) .nest(INDENT) .group() } @@ -338,12 +338,6 @@ impl<'comments> Formatter<'comments> { }) } - fn const_expr<'a>(&mut self, _value: &'a UntypedExpr) -> Document<'a> { - todo!( - "format const_expr: surround complex expressions with a block, and leave simple expression without" - ); - } - pub fn docs_const_expr<'a>(&mut self, name: &'a str, value: &'a TypedExpr) -> Document<'a> { let mut printer = tipo::pretty::Printer::new(); name.to_doc() From 38e8c6264dfdcebef568c10ec2911757cfa5be5c Mon Sep 17 00:00:00 2001 From: KtorZ Date: Sat, 17 Aug 2024 14:56:56 +0200 Subject: [PATCH 05/13] Do not trigger warnings for exported configurations. --- crates/aiken-project/src/lib.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/crates/aiken-project/src/lib.rs b/crates/aiken-project/src/lib.rs index c356e093..2e67c46a 100644 --- a/crates/aiken-project/src/lib.rs +++ b/crates/aiken-project/src/lib.rs @@ -812,7 +812,9 @@ where &mut self.data_types, )?; - if our_modules.contains(checked_module.name.as_str()) { + if our_modules.contains(checked_module.name.as_str()) + && checked_module.name.as_str() != ast::CONFIG_MODULE + { self.warnings.extend(warnings); } From a909e9eb0ab2caaea129a2380d0dfdebb748c2b7 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Sat, 17 Aug 2024 15:09:47 +0200 Subject: [PATCH 06/13] Add acceptance_tests/109 to illustrate new config/constants capabilities. --- examples/acceptance_tests/109/aiken.lock | 7 ++++ examples/acceptance_tests/109/aiken.toml | 20 ++++++++++++ examples/acceptance_tests/109/lib/tests.ak | 37 ++++++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 examples/acceptance_tests/109/aiken.lock create mode 100644 examples/acceptance_tests/109/aiken.toml create mode 100644 examples/acceptance_tests/109/lib/tests.ak diff --git a/examples/acceptance_tests/109/aiken.lock b/examples/acceptance_tests/109/aiken.lock new file mode 100644 index 00000000..6e350cda --- /dev/null +++ b/examples/acceptance_tests/109/aiken.lock @@ -0,0 +1,7 @@ +# This file was generated by Aiken +# You typically do not need to edit this file + +requirements = [] +packages = [] + +[etags] diff --git a/examples/acceptance_tests/109/aiken.toml b/examples/acceptance_tests/109/aiken.toml new file mode 100644 index 00000000..b8af4866 --- /dev/null +++ b/examples/acceptance_tests/109/aiken.toml @@ -0,0 +1,20 @@ +name = "aiken-lang/109" +version = "0.0.0" +license = "Apache-2.0" +description = "Aiken contracts for project 'aiken-lang/109'" + +[repository] +user = "aiken-lang" +project = "109" +platform = "github" + +[config.default] +int = 42 +bool = true +string = "foo" +bytearray = { bytes = "666f6f", encoding = "base16" } +tuple = [14, false] +list = [1, 2, 3, 4, 5, 6] +nested_tuple = [[true, "foo"], [1, []]] +nested_list = [[1, 2], [3, 4]] +nested_hybrid = [[1, true], [2, false]] diff --git a/examples/acceptance_tests/109/lib/tests.ak b/examples/acceptance_tests/109/lib/tests.ak new file mode 100644 index 00000000..db9d5673 --- /dev/null +++ b/examples/acceptance_tests/109/lib/tests.ak @@ -0,0 +1,37 @@ +use config + +test config_int() { + config.int == 42 +} + +test config_bool() { + config.bool == True +} + +test config_string() { + config.string == "foo" +} + +test config_bytearray() { + config.bytearray == "foo" +} + +test config_tuple() { + config.tuple == (14, False) +} + +test config_list() { + config.list == [1, 2, 3, 4, 5, 6] +} + +test config_nested_tuple() { + config.nested_tuple == ((True, "foo"), (1, [])) +} + +test config_nested_list() { + config.nested_list == [[1, 2], [3, 4]] +} + +test config_nested_hybrid() { + config.nested_hybrid == [(1, True), (2, False)] +} From 71f90ad49fa005fa84f26c792d9ee5b845e308e5 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Sat, 17 Aug 2024 15:53:48 +0200 Subject: [PATCH 07/13] Fix constant definition parser. Wouldn't allow a proper sequence of results. Now it does. --- crates/aiken-lang/src/parser/definition/constant.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/crates/aiken-lang/src/parser/definition/constant.rs b/crates/aiken-lang/src/parser/definition/constant.rs index c8205be8..43a1c1c2 100644 --- a/crates/aiken-lang/src/parser/definition/constant.rs +++ b/crates/aiken-lang/src/parser/definition/constant.rs @@ -14,8 +14,10 @@ pub fn parser() -> impl Parser Date: Sat, 17 Aug 2024 15:54:20 +0200 Subject: [PATCH 08/13] Re-implement and extend docs formatter for constants --- crates/aiken-lang/src/expr.rs | 3 ++ crates/aiken-lang/src/format.rs | 51 +++++++++++++++++-- crates/aiken-lang/src/parser/expr/sequence.rs | 3 +- crates/aiken-lang/src/tipo/expr.rs | 22 +++++--- 4 files changed, 66 insertions(+), 13 deletions(-) diff --git a/crates/aiken-lang/src/expr.rs b/crates/aiken-lang/src/expr.rs index 07659b36..9a19ce64 100644 --- a/crates/aiken-lang/src/expr.rs +++ b/crates/aiken-lang/src/expr.rs @@ -30,6 +30,7 @@ pub enum TypedExpr { location: Span, tipo: Rc, value: String, + base: Base, }, String { @@ -42,12 +43,14 @@ pub enum TypedExpr { location: Span, tipo: Rc, bytes: Vec, + preferred_format: ByteArrayFormatPreference, }, CurvePoint { location: Span, tipo: Rc, point: Box, + preferred_format: ByteArrayFormatPreference, }, Sequence { diff --git a/crates/aiken-lang/src/format.rs b/crates/aiken-lang/src/format.rs index 7530e10a..6bfbc3d0 100644 --- a/crates/aiken-lang/src/format.rs +++ b/crates/aiken-lang/src/format.rs @@ -340,12 +340,53 @@ impl<'comments> Formatter<'comments> { pub fn docs_const_expr<'a>(&mut self, name: &'a str, value: &'a TypedExpr) -> Document<'a> { let mut printer = tipo::pretty::Printer::new(); - name.to_doc() + let doc = name + .to_doc() .append(": ") - .append(printer.print(&value.tipo())) - // TODO: Show full expression in docs when simple enough - // .append(" = ") - // .append(self.const_expr(value)) + .append(printer.print(&value.tipo())); + + // NOTE: Only display the full value for simple expressions. + let value = self.const_expr(value); + if value.is_empty() { + doc + } else { + doc.append(" = ").append(value) + } + } + + pub fn const_expr<'a>(&mut self, value: &'a TypedExpr) -> Document<'a> { + match value { + TypedExpr::UInt { value, base, .. } => self.int(value, base), + TypedExpr::String { value, .. } => self.string(value), + TypedExpr::ByteArray { + bytes, + preferred_format, + .. + } => self.bytearray(bytes, None, preferred_format), + TypedExpr::CurvePoint { + point, + preferred_format, + .. + } => self.bytearray( + &point.compress(), + Some(point.as_ref().into()), + preferred_format, + ), + TypedExpr::Tuple { elems, .. } => { + wrap_args(elems.iter().map(|e| (self.const_expr(e), false))).group() + } + TypedExpr::Pair { fst, snd, .. } => { + let elems = [fst, snd]; + "Pair" + .to_doc() + .append(wrap_args(elems.iter().map(|e| (self.const_expr(e), false))).group()) + } + TypedExpr::List { elements, .. } => { + wrap_args(elements.iter().map(|e| (self.const_expr(e), false))).group() + } + TypedExpr::Var { name, .. } => name.to_doc(), + _ => Document::Str(""), + } } fn documented_definition<'a>(&mut self, s: &'a UntypedDefinition) -> Document<'a> { diff --git a/crates/aiken-lang/src/parser/expr/sequence.rs b/crates/aiken-lang/src/parser/expr/sequence.rs index 1920bdc6..3b36b871 100644 --- a/crates/aiken-lang/src/parser/expr/sequence.rs +++ b/crates/aiken-lang/src/parser/expr/sequence.rs @@ -1,9 +1,8 @@ -use chumsky::prelude::*; - use crate::{ expr::UntypedExpr, parser::{error::ParseError, token::Token}, }; +use chumsky::prelude::*; pub fn parser() -> impl Parser { recursive(|sequence| { diff --git a/crates/aiken-lang/src/tipo/expr.rs b/crates/aiken-lang/src/tipo/expr.rs index 376281db..a802ff25 100644 --- a/crates/aiken-lang/src/tipo/expr.rs +++ b/crates/aiken-lang/src/tipo/expr.rs @@ -20,6 +20,7 @@ use crate::{ builtins::{from_default_function, BUILTIN}, expr::{FnStyle, TypedExpr, UntypedExpr}, format, + parser::token::Base, tipo::{fields::FieldMap, DefaultFunction, PatternConstructor, TypeVar}, IdGenerator, }; @@ -434,8 +435,8 @@ impl<'a, 'b> ExprTyper<'a, 'b> { UntypedExpr::UInt { location, value, - base: _, - } => Ok(self.infer_uint(value, location)), + base, + } => Ok(self.infer_uint(value, base, location)), UntypedExpr::Sequence { expressions, @@ -550,8 +551,8 @@ impl<'a, 'b> ExprTyper<'a, 'b> { UntypedExpr::CurvePoint { location, point, - preferred_format: _, - } => self.infer_curve_point(*point, location), + preferred_format, + } => self.infer_curve_point(*point, preferred_format, location), UntypedExpr::RecordUpdate { location, @@ -592,10 +593,16 @@ impl<'a, 'b> ExprTyper<'a, 'b> { location, bytes, tipo: Type::byte_array(), + preferred_format, }) } - fn infer_curve_point(&mut self, curve: Curve, location: Span) -> Result { + fn infer_curve_point( + &mut self, + curve: Curve, + preferred_format: ByteArrayFormatPreference, + location: Span, + ) -> Result { let tipo = match curve { Curve::Bls12_381(point) => match point { Bls12_381Point::G1(_) => Type::g1_element(), @@ -607,6 +614,7 @@ impl<'a, 'b> ExprTyper<'a, 'b> { location, point: curve.into(), tipo, + preferred_format, }) } @@ -1707,11 +1715,12 @@ impl<'a, 'b> ExprTyper<'a, 'b> { Ok((args, body, return_type)) } - fn infer_uint(&mut self, value: String, location: Span) -> TypedExpr { + fn infer_uint(&mut self, value: String, base: Base, location: Span) -> TypedExpr { TypedExpr::UInt { location, value, tipo: Type::int(), + base, } } @@ -2720,6 +2729,7 @@ fn diagnose_expr(expr: TypedExpr) -> TypedExpr { tipo: Type::byte_array(), bytes: vec![], location, + preferred_format: ByteArrayFormatPreference::HexadecimalString, }, }, ], From e772ff17873dc2edd1aba457dbf7bb444beab613 Mon Sep 17 00:00:00 2001 From: microproofs Date: Sat, 17 Aug 2024 18:45:52 -0400 Subject: [PATCH 09/13] Missed some zero parameter check --- crates/aiken-lang/src/gen_uplc.rs | 47 ++--- examples/acceptance_tests/.gitignore | 4 +- examples/acceptance_tests/001/aiken.lock | 7 - examples/acceptance_tests/002/aiken.lock | 7 - examples/acceptance_tests/003/aiken.lock | 7 - examples/acceptance_tests/004/aiken.lock | 7 - examples/acceptance_tests/005/aiken.lock | 7 - examples/acceptance_tests/006/aiken.lock | 7 - examples/acceptance_tests/006/plutus.json | 12 -- examples/acceptance_tests/007/aiken.lock | 7 - examples/acceptance_tests/008/aiken.lock | 7 - examples/acceptance_tests/009/aiken.lock | 7 - examples/acceptance_tests/010/aiken.lock | 7 - examples/acceptance_tests/011/aiken.lock | 7 - examples/acceptance_tests/012/aiken.lock | 7 - examples/acceptance_tests/013/aiken.lock | 7 - examples/acceptance_tests/014/aiken.lock | 7 - examples/acceptance_tests/015/aiken.lock | 7 - examples/acceptance_tests/016/aiken.lock | 7 - examples/acceptance_tests/017/aiken.lock | 7 - examples/acceptance_tests/018/aiken.lock | 7 - examples/acceptance_tests/019/aiken.lock | 7 - examples/acceptance_tests/020/aiken.lock | 7 - examples/acceptance_tests/021/aiken.lock | 7 - examples/acceptance_tests/022/aiken.lock | 7 - examples/acceptance_tests/023/aiken.lock | 7 - examples/acceptance_tests/024/aiken.lock | 7 - examples/acceptance_tests/025/aiken.lock | 7 - examples/acceptance_tests/026/aiken.lock | 7 - examples/acceptance_tests/027/aiken.lock | 7 - examples/acceptance_tests/028/aiken.lock | 7 - examples/acceptance_tests/029/aiken.lock | 7 - examples/acceptance_tests/030/aiken.lock | 7 - examples/acceptance_tests/031/aiken.lock | 7 - examples/acceptance_tests/032/aiken.lock | 7 - examples/acceptance_tests/033/aiken.lock | 7 - examples/acceptance_tests/034/aiken.lock | 7 - examples/acceptance_tests/035/aiken.lock | 7 - examples/acceptance_tests/036/aiken.lock | 16 -- examples/acceptance_tests/036/plutus.json | 111 ----------- examples/acceptance_tests/037/aiken.lock | 7 - examples/acceptance_tests/038/aiken.lock | 7 - examples/acceptance_tests/039/aiken.lock | 7 - examples/acceptance_tests/040/aiken.lock | 7 - examples/acceptance_tests/041/aiken.lock | 7 - examples/acceptance_tests/042/aiken.lock | 7 - examples/acceptance_tests/043/aiken.lock | 7 - examples/acceptance_tests/044/aiken.lock | 7 - examples/acceptance_tests/045/aiken.lock | 7 - examples/acceptance_tests/046/aiken.lock | 7 - examples/acceptance_tests/047/aiken.lock | 7 - examples/acceptance_tests/047/plutus.json | 48 ----- examples/acceptance_tests/049/aiken.lock | 7 - examples/acceptance_tests/050/aiken.lock | 7 - examples/acceptance_tests/051/aiken.lock | 7 - examples/acceptance_tests/052/aiken.lock | 7 - examples/acceptance_tests/053/aiken.lock | 7 - examples/acceptance_tests/054/aiken.lock | 16 -- examples/acceptance_tests/055/aiken.lock | 15 -- examples/acceptance_tests/056/aiken.lock | 7 - examples/acceptance_tests/057/aiken.lock | 7 - examples/acceptance_tests/058/aiken.lock | 7 - examples/acceptance_tests/059/aiken.lock | 7 - examples/acceptance_tests/060/aiken.lock | 7 - examples/acceptance_tests/061/aiken.lock | 15 -- examples/acceptance_tests/062/aiken.lock | 7 - examples/acceptance_tests/062/plutus.json | 8 - examples/acceptance_tests/063/aiken.lock | 16 -- examples/acceptance_tests/064/aiken.lock | 7 - examples/acceptance_tests/065/aiken.lock | 7 - examples/acceptance_tests/066/aiken.lock | 7 - examples/acceptance_tests/067/aiken.lock | 16 -- examples/acceptance_tests/068/aiken.lock | 16 -- examples/acceptance_tests/068/plutus.json | 12 -- examples/acceptance_tests/069/aiken.lock | 16 -- examples/acceptance_tests/070/aiken.lock | 15 -- examples/acceptance_tests/071/aiken.lock | 16 -- examples/acceptance_tests/071/plutus.json | 178 ----------------- examples/acceptance_tests/072/aiken.lock | 15 -- examples/acceptance_tests/072/plutus.json | 8 - examples/acceptance_tests/073/aiken.lock | 16 -- examples/acceptance_tests/073/plutus.json | 12 -- examples/acceptance_tests/074/aiken.lock | 16 -- examples/acceptance_tests/075/aiken.lock | 7 - examples/acceptance_tests/076/aiken.lock | 7 - examples/acceptance_tests/076/plutus.json | 148 -------------- examples/acceptance_tests/077/aiken.lock | 16 -- examples/acceptance_tests/077/plutus.json | 136 ------------- examples/acceptance_tests/078/aiken.lock | 7 - examples/acceptance_tests/078/plutus.json | 8 - examples/acceptance_tests/079/aiken.lock | 7 - examples/acceptance_tests/079/plutus.json | 51 ----- examples/acceptance_tests/080/aiken.lock | 7 - examples/acceptance_tests/081/aiken.lock | 7 - examples/acceptance_tests/082/aiken.lock | 15 -- examples/acceptance_tests/083/aiken.lock | 15 -- examples/acceptance_tests/084/aiken.lock | 16 -- examples/acceptance_tests/085/aiken.lock | 7 - examples/acceptance_tests/086/aiken.lock | 16 -- examples/acceptance_tests/086/plutus.json | 41 ---- examples/acceptance_tests/087/aiken.lock | 16 -- examples/acceptance_tests/088/aiken.lock | 16 -- examples/acceptance_tests/089/aiken.lock | 16 -- examples/acceptance_tests/089/plutus.json | 85 -------- examples/acceptance_tests/090/aiken.lock | 7 - examples/acceptance_tests/090/plutus.json | 44 ----- examples/acceptance_tests/091/aiken.lock | 7 - examples/acceptance_tests/092/aiken.lock | 7 - examples/acceptance_tests/093/aiken.lock | 7 - examples/acceptance_tests/094/aiken.lock | 7 - examples/acceptance_tests/095/aiken.lock | 7 - examples/acceptance_tests/096/aiken.lock | 16 -- examples/acceptance_tests/096/plutus.json | 43 ---- examples/acceptance_tests/097/aiken.lock | 7 - examples/acceptance_tests/098/aiken.lock | 7 - examples/acceptance_tests/099/aiken.lock | 16 -- examples/acceptance_tests/100/aiken.lock | 7 - examples/acceptance_tests/101/aiken.lock | 28 --- examples/acceptance_tests/102/aiken.lock | 16 -- examples/acceptance_tests/103/aiken.lock | 7 - examples/acceptance_tests/104/aiken.lock | 28 --- examples/acceptance_tests/104/plutus.json | 93 --------- examples/acceptance_tests/105/aiken.lock | 7 - examples/acceptance_tests/106/aiken.lock | 7 - examples/acceptance_tests/107/aiken.lock | 7 - examples/acceptance_tests/108/aiken.lock | 7 - examples/acceptance_tests/109/aiken.lock | 7 - examples/acceptance_tests/110/aiken.lock | 7 - .../script_context/v3/aiken.lock | 16 -- .../script_context/v3/plutus.json | 183 ------------------ 130 files changed, 24 insertions(+), 2279 deletions(-) delete mode 100644 examples/acceptance_tests/001/aiken.lock delete mode 100644 examples/acceptance_tests/002/aiken.lock delete mode 100644 examples/acceptance_tests/003/aiken.lock delete mode 100644 examples/acceptance_tests/004/aiken.lock delete mode 100644 examples/acceptance_tests/005/aiken.lock delete mode 100644 examples/acceptance_tests/006/aiken.lock delete mode 100644 examples/acceptance_tests/006/plutus.json delete mode 100644 examples/acceptance_tests/007/aiken.lock delete mode 100644 examples/acceptance_tests/008/aiken.lock delete mode 100644 examples/acceptance_tests/009/aiken.lock delete mode 100644 examples/acceptance_tests/010/aiken.lock delete mode 100644 examples/acceptance_tests/011/aiken.lock delete mode 100644 examples/acceptance_tests/012/aiken.lock delete mode 100644 examples/acceptance_tests/013/aiken.lock delete mode 100644 examples/acceptance_tests/014/aiken.lock delete mode 100644 examples/acceptance_tests/015/aiken.lock delete mode 100644 examples/acceptance_tests/016/aiken.lock delete mode 100644 examples/acceptance_tests/017/aiken.lock delete mode 100644 examples/acceptance_tests/018/aiken.lock delete mode 100644 examples/acceptance_tests/019/aiken.lock delete mode 100644 examples/acceptance_tests/020/aiken.lock delete mode 100644 examples/acceptance_tests/021/aiken.lock delete mode 100644 examples/acceptance_tests/022/aiken.lock delete mode 100644 examples/acceptance_tests/023/aiken.lock delete mode 100644 examples/acceptance_tests/024/aiken.lock delete mode 100644 examples/acceptance_tests/025/aiken.lock delete mode 100644 examples/acceptance_tests/026/aiken.lock delete mode 100644 examples/acceptance_tests/027/aiken.lock delete mode 100644 examples/acceptance_tests/028/aiken.lock delete mode 100644 examples/acceptance_tests/029/aiken.lock delete mode 100644 examples/acceptance_tests/030/aiken.lock delete mode 100644 examples/acceptance_tests/031/aiken.lock delete mode 100644 examples/acceptance_tests/032/aiken.lock delete mode 100644 examples/acceptance_tests/033/aiken.lock delete mode 100644 examples/acceptance_tests/034/aiken.lock delete mode 100644 examples/acceptance_tests/035/aiken.lock delete mode 100644 examples/acceptance_tests/036/aiken.lock delete mode 100644 examples/acceptance_tests/036/plutus.json delete mode 100644 examples/acceptance_tests/037/aiken.lock delete mode 100644 examples/acceptance_tests/038/aiken.lock delete mode 100644 examples/acceptance_tests/039/aiken.lock delete mode 100644 examples/acceptance_tests/040/aiken.lock delete mode 100644 examples/acceptance_tests/041/aiken.lock delete mode 100644 examples/acceptance_tests/042/aiken.lock delete mode 100644 examples/acceptance_tests/043/aiken.lock delete mode 100644 examples/acceptance_tests/044/aiken.lock delete mode 100644 examples/acceptance_tests/045/aiken.lock delete mode 100644 examples/acceptance_tests/046/aiken.lock delete mode 100644 examples/acceptance_tests/047/aiken.lock delete mode 100644 examples/acceptance_tests/047/plutus.json delete mode 100644 examples/acceptance_tests/049/aiken.lock delete mode 100644 examples/acceptance_tests/050/aiken.lock delete mode 100644 examples/acceptance_tests/051/aiken.lock delete mode 100644 examples/acceptance_tests/052/aiken.lock delete mode 100644 examples/acceptance_tests/053/aiken.lock delete mode 100644 examples/acceptance_tests/054/aiken.lock delete mode 100644 examples/acceptance_tests/055/aiken.lock delete mode 100644 examples/acceptance_tests/056/aiken.lock delete mode 100644 examples/acceptance_tests/057/aiken.lock delete mode 100644 examples/acceptance_tests/058/aiken.lock delete mode 100644 examples/acceptance_tests/059/aiken.lock delete mode 100644 examples/acceptance_tests/060/aiken.lock delete mode 100644 examples/acceptance_tests/061/aiken.lock delete mode 100644 examples/acceptance_tests/062/aiken.lock delete mode 100644 examples/acceptance_tests/062/plutus.json delete mode 100644 examples/acceptance_tests/063/aiken.lock delete mode 100644 examples/acceptance_tests/064/aiken.lock delete mode 100644 examples/acceptance_tests/065/aiken.lock delete mode 100644 examples/acceptance_tests/066/aiken.lock delete mode 100644 examples/acceptance_tests/067/aiken.lock delete mode 100644 examples/acceptance_tests/068/aiken.lock delete mode 100644 examples/acceptance_tests/068/plutus.json delete mode 100644 examples/acceptance_tests/069/aiken.lock delete mode 100644 examples/acceptance_tests/070/aiken.lock delete mode 100644 examples/acceptance_tests/071/aiken.lock delete mode 100644 examples/acceptance_tests/071/plutus.json delete mode 100644 examples/acceptance_tests/072/aiken.lock delete mode 100644 examples/acceptance_tests/072/plutus.json delete mode 100644 examples/acceptance_tests/073/aiken.lock delete mode 100644 examples/acceptance_tests/073/plutus.json delete mode 100644 examples/acceptance_tests/074/aiken.lock delete mode 100644 examples/acceptance_tests/075/aiken.lock delete mode 100644 examples/acceptance_tests/076/aiken.lock delete mode 100644 examples/acceptance_tests/076/plutus.json delete mode 100644 examples/acceptance_tests/077/aiken.lock delete mode 100644 examples/acceptance_tests/077/plutus.json delete mode 100644 examples/acceptance_tests/078/aiken.lock delete mode 100644 examples/acceptance_tests/078/plutus.json delete mode 100644 examples/acceptance_tests/079/aiken.lock delete mode 100644 examples/acceptance_tests/079/plutus.json delete mode 100644 examples/acceptance_tests/080/aiken.lock delete mode 100644 examples/acceptance_tests/081/aiken.lock delete mode 100644 examples/acceptance_tests/082/aiken.lock delete mode 100644 examples/acceptance_tests/083/aiken.lock delete mode 100644 examples/acceptance_tests/084/aiken.lock delete mode 100644 examples/acceptance_tests/085/aiken.lock delete mode 100644 examples/acceptance_tests/086/aiken.lock delete mode 100644 examples/acceptance_tests/086/plutus.json delete mode 100644 examples/acceptance_tests/087/aiken.lock delete mode 100644 examples/acceptance_tests/088/aiken.lock delete mode 100644 examples/acceptance_tests/089/aiken.lock delete mode 100644 examples/acceptance_tests/089/plutus.json delete mode 100644 examples/acceptance_tests/090/aiken.lock delete mode 100644 examples/acceptance_tests/090/plutus.json delete mode 100644 examples/acceptance_tests/091/aiken.lock delete mode 100644 examples/acceptance_tests/092/aiken.lock delete mode 100644 examples/acceptance_tests/093/aiken.lock delete mode 100644 examples/acceptance_tests/094/aiken.lock delete mode 100644 examples/acceptance_tests/095/aiken.lock delete mode 100644 examples/acceptance_tests/096/aiken.lock delete mode 100644 examples/acceptance_tests/096/plutus.json delete mode 100644 examples/acceptance_tests/097/aiken.lock delete mode 100644 examples/acceptance_tests/098/aiken.lock delete mode 100644 examples/acceptance_tests/099/aiken.lock delete mode 100644 examples/acceptance_tests/100/aiken.lock delete mode 100644 examples/acceptance_tests/101/aiken.lock delete mode 100644 examples/acceptance_tests/102/aiken.lock delete mode 100644 examples/acceptance_tests/103/aiken.lock delete mode 100644 examples/acceptance_tests/104/aiken.lock delete mode 100644 examples/acceptance_tests/104/plutus.json delete mode 100644 examples/acceptance_tests/105/aiken.lock delete mode 100644 examples/acceptance_tests/106/aiken.lock delete mode 100644 examples/acceptance_tests/107/aiken.lock delete mode 100644 examples/acceptance_tests/108/aiken.lock delete mode 100644 examples/acceptance_tests/109/aiken.lock delete mode 100644 examples/acceptance_tests/110/aiken.lock delete mode 100644 examples/acceptance_tests/script_context/v3/aiken.lock delete mode 100644 examples/acceptance_tests/script_context/v3/plutus.json diff --git a/crates/aiken-lang/src/gen_uplc.rs b/crates/aiken-lang/src/gen_uplc.rs index b296c4f8..c47f8cfb 100644 --- a/crates/aiken-lang/src/gen_uplc.rs +++ b/crates/aiken-lang/src/gen_uplc.rs @@ -3530,17 +3530,15 @@ impl<'a> CodeGenerator<'a> { .unwrap_or_else(|| panic!("Missing Function Variant Definition")); match function { - HoistableFunction::Function { deps, params, .. } => { - if !params.is_empty() { - for (dep_generic_func, dep_variant) in deps.iter() { - if !(dep_generic_func == &generic_func && dep_variant == &variant) { - validator_hoistable - .insert(0, (dep_generic_func.clone(), dep_variant.clone())); + HoistableFunction::Function { deps, .. } => { + for (dep_generic_func, dep_variant) in deps.iter() { + if !(dep_generic_func == &generic_func && dep_variant == &variant) { + validator_hoistable + .insert(0, (dep_generic_func.clone(), dep_variant.clone())); - sorted_function_vec.retain(|(generic_func, variant)| { - !(generic_func == dep_generic_func && variant == dep_variant) - }); - } + sorted_function_vec.retain(|(generic_func, variant)| { + !(generic_func == dep_generic_func && variant == dep_variant) + }); } } @@ -3790,18 +3788,17 @@ impl<'a> CodeGenerator<'a> { .unwrap_or_else(|| panic!("Missing Function Variant Definition")); match function { - HoistableFunction::Function { deps, params, .. } => { - if !params.is_empty() { - for (dep_generic_func, dep_variant) in deps.iter() { - if !(dep_generic_func == &dep.0 && dep_variant == &dep.1) { - sorted_dep_vec.retain(|(generic_func, variant)| { - !(generic_func == dep_generic_func && variant == dep_variant) - }); + HoistableFunction::Function { deps, .. } => { + for (dep_generic_func, dep_variant) in deps.iter() { + if !(dep_generic_func == &dep.0 && dep_variant == &dep.1) { + sorted_dep_vec.retain(|(generic_func, variant)| { + !(generic_func == dep_generic_func && variant == dep_variant) + }); - deps_vec.insert(0, (dep_generic_func.clone(), dep_variant.clone())); - } + deps_vec.insert(0, (dep_generic_func.clone(), dep_variant.clone())); } } + sorted_dep_vec.push((dep.0.clone(), dep.1.clone())); } HoistableFunction::CyclicFunction { deps, .. } => { @@ -3861,11 +3858,6 @@ impl<'a> CodeGenerator<'a> { deps: dependency_deps, params: dependent_params, } => { - if dependent_params.is_empty() { - // continue for zero arg functions. They are treated like global hoists. - return then; - } - let is_dependent_recursive = dependency_deps .iter() .any(|(key, variant)| &dep_key == key && &dep_variant == variant); @@ -4027,6 +4019,7 @@ impl<'a> CodeGenerator<'a> { let (path, _) = func_variants.get_mut("").unwrap(); *path = path.common_ancestor(tree_path); } else { + // Shortcut path for compiler generated functions let CodeGenFunction::Function { body, params } = code_gen_func else { unreachable!() }; @@ -4610,8 +4603,6 @@ impl<'a> CodeGenerator<'a> { } else { let term = arg_stack.pop().unwrap(); - // How we handle zero arg anon functions has changed - // We now delay zero arg anon functions and force them on a call operation match term.pierce_no_inlines() { Term::Var(_) => Some(term.force()), Term::Delay(inner_term) => Some(inner_term.as_ref().clone()), @@ -4803,6 +4794,10 @@ impl<'a> CodeGenerator<'a> { func_body = func_body.lambda(param.clone()); } + if params.is_empty() { + func_body = func_body.delay(); + } + if !recursive { term = term.lambda(func_name).apply(func_body.lambda(NO_INLINE)); diff --git a/examples/acceptance_tests/.gitignore b/examples/acceptance_tests/.gitignore index d1638636..ff09d386 100644 --- a/examples/acceptance_tests/.gitignore +++ b/examples/acceptance_tests/.gitignore @@ -1 +1,3 @@ -build/ \ No newline at end of file +build/ +aiken.lock +**/plutus.json diff --git a/examples/acceptance_tests/001/aiken.lock b/examples/acceptance_tests/001/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/001/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/002/aiken.lock b/examples/acceptance_tests/002/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/002/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/003/aiken.lock b/examples/acceptance_tests/003/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/003/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/004/aiken.lock b/examples/acceptance_tests/004/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/004/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/005/aiken.lock b/examples/acceptance_tests/005/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/005/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/006/aiken.lock b/examples/acceptance_tests/006/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/006/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/006/plutus.json b/examples/acceptance_tests/006/plutus.json deleted file mode 100644 index 1b381039..00000000 --- a/examples/acceptance_tests/006/plutus.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "preamble": { - "title": "aiken-lang/acceptance_test_006", - "version": "0.0.0", - "plutusVersion": "v2", - "compiler": { - "name": "Aiken", - "version": "v1.0.29-alpha+06ac851" - } - }, - "validators": [] -} \ No newline at end of file diff --git a/examples/acceptance_tests/007/aiken.lock b/examples/acceptance_tests/007/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/007/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/008/aiken.lock b/examples/acceptance_tests/008/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/008/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/009/aiken.lock b/examples/acceptance_tests/009/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/009/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/010/aiken.lock b/examples/acceptance_tests/010/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/010/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/011/aiken.lock b/examples/acceptance_tests/011/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/011/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/012/aiken.lock b/examples/acceptance_tests/012/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/012/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/013/aiken.lock b/examples/acceptance_tests/013/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/013/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/014/aiken.lock b/examples/acceptance_tests/014/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/014/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/015/aiken.lock b/examples/acceptance_tests/015/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/015/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/016/aiken.lock b/examples/acceptance_tests/016/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/016/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/017/aiken.lock b/examples/acceptance_tests/017/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/017/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/018/aiken.lock b/examples/acceptance_tests/018/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/018/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/019/aiken.lock b/examples/acceptance_tests/019/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/019/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/020/aiken.lock b/examples/acceptance_tests/020/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/020/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/021/aiken.lock b/examples/acceptance_tests/021/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/021/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/022/aiken.lock b/examples/acceptance_tests/022/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/022/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/023/aiken.lock b/examples/acceptance_tests/023/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/023/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/024/aiken.lock b/examples/acceptance_tests/024/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/024/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/025/aiken.lock b/examples/acceptance_tests/025/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/025/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/026/aiken.lock b/examples/acceptance_tests/026/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/026/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/027/aiken.lock b/examples/acceptance_tests/027/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/027/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/028/aiken.lock b/examples/acceptance_tests/028/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/028/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/029/aiken.lock b/examples/acceptance_tests/029/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/029/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/030/aiken.lock b/examples/acceptance_tests/030/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/030/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/031/aiken.lock b/examples/acceptance_tests/031/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/031/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/032/aiken.lock b/examples/acceptance_tests/032/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/032/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/033/aiken.lock b/examples/acceptance_tests/033/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/033/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/034/aiken.lock b/examples/acceptance_tests/034/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/034/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/035/aiken.lock b/examples/acceptance_tests/035/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/035/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/036/aiken.lock b/examples/acceptance_tests/036/aiken.lock deleted file mode 100644 index d046d5d4..00000000 --- a/examples/acceptance_tests/036/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724859223, nanos_since_epoch = 234656000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/036/plutus.json b/examples/acceptance_tests/036/plutus.json deleted file mode 100644 index 1a4eac3c..00000000 --- a/examples/acceptance_tests/036/plutus.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "preamble": { - "title": "aiken-lang/acceptance_test_036", - "version": "0.0.0", - "plutusVersion": "v2", - "compiler": { - "name": "Aiken", - "version": "v1.0.31-alpha+745f14c" - } - }, - "validators": [ - { - "title": "spend.bar.mint", - "redeemer": { - "title": "_redeemer", - "schema": { - "$ref": "#/definitions/Void" - } - }, - "parameters": [ - { - "title": "output_reference", - "schema": { - "$ref": "#/definitions/cardano~1transaction~1OutputReference" - } - } - ], - "compiledCode": "58c90100003232323232323222533300332323232325332330093001300a375400426464a666016600660186ea8c8c8cc004004dd6180118079baa00922533301100114c0103d87a80001323253330103375e600a60246ea800803c4cdd2a40006602800497ae0133004004001301500230130012301100114a229414ccc028c008c02cdd50020a99980698061baa00414985858dd7180718059baa002370e90000b1806180680118058009805801180480098029baa00114984d9595cd2ab9d5573caae7d5d02ba157441", - "hash": "2edaecec5a072cd65b12395410ce6da7cafaffdf70506cbcb40b4df8" - }, - { - "title": "spend.bar.else", - "parameters": [ - { - "title": "output_reference", - "schema": { - "$ref": "#/definitions/cardano~1transaction~1OutputReference" - } - } - ], - "compiledCode": "58c90100003232323232323222533300332323232325332330093001300a375400426464a666016600660186ea8c8c8cc004004dd6180118079baa00922533301100114c0103d87a80001323253330103375e600a60246ea800803c4cdd2a40006602800497ae0133004004001301500230130012301100114a229414ccc028c008c02cdd50020a99980698061baa00414985858dd7180718059baa002370e90000b1806180680118058009805801180480098029baa00114984d9595cd2ab9d5573caae7d5d02ba157441", - "hash": "2edaecec5a072cd65b12395410ce6da7cafaffdf70506cbcb40b4df8" - }, - { - "title": "spend.foo.spend", - "datum": { - "title": "_datum", - "schema": { - "$ref": "#/definitions/Data" - } - }, - "redeemer": { - "title": "_redeemer", - "schema": { - "$ref": "#/definitions/Data" - } - }, - "compiledCode": "5901230100003232323232323225333002323232323253330073370e900118041baa001132323232330010013758602060226022601a6ea8020894ccc03c0045280992999806999806a99980819299980719b8748008c03cdd50008a5eb7bdb1804dd5980998081baa001323300100137566026602860206ea8c04c00c894ccc048004530103d87a800013232323253330133372291105000000000000002153330133371e91010500000000000000213374a90001980b9ba60014bd700a6103d87a8000133006006003375660280066eb8c048008c058008c0500045288a504a0944528899801801800980900098071807801180680098049baa00116300b300c002300a001300a00230080013004375400229309b2b2b9a5573aaae7955cfaba05742ae881", - "hash": "cf024265a1ff4ab129cef178c64b8c4cab25d62129242e01e29bb3d1" - }, - { - "title": "spend.foo.else", - "compiledCode": "5901230100003232323232323225333002323232323253330073370e900118041baa001132323232330010013758602060226022601a6ea8020894ccc03c0045280992999806999806a99980819299980719b8748008c03cdd50008a5eb7bdb1804dd5980998081baa001323300100137566026602860206ea8c04c00c894ccc048004530103d87a800013232323253330133372291105000000000000002153330133371e91010500000000000000213374a90001980b9ba60014bd700a6103d87a8000133006006003375660280066eb8c048008c058008c0500045288a504a0944528899801801800980900098071807801180680098049baa00116300b300c002300a001300a00230080013004375400229309b2b2b9a5573aaae7955cfaba05742ae881", - "hash": "cf024265a1ff4ab129cef178c64b8c4cab25d62129242e01e29bb3d1" - } - ], - "definitions": { - "ByteArray": { - "dataType": "bytes" - }, - "Data": { - "title": "Data", - "description": "Any Plutus data." - }, - "Int": { - "dataType": "integer" - }, - "Void": { - "title": "Unit", - "description": "The nullary constructor.", - "anyOf": [ - { - "dataType": "constructor", - "index": 0, - "fields": [] - } - ] - }, - "cardano/transaction/OutputReference": { - "title": "OutputReference", - "description": "An `OutputReference` is a unique reference to an output on-chain. The `output_index`\n corresponds to the position in the output list of the transaction (identified by its id)\n that produced that output", - "anyOf": [ - { - "title": "OutputReference", - "dataType": "constructor", - "index": 0, - "fields": [ - { - "title": "transaction_id", - "$ref": "#/definitions/ByteArray" - }, - { - "title": "output_index", - "$ref": "#/definitions/Int" - } - ] - } - ] - } - } -} \ No newline at end of file diff --git a/examples/acceptance_tests/037/aiken.lock b/examples/acceptance_tests/037/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/037/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/038/aiken.lock b/examples/acceptance_tests/038/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/038/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/039/aiken.lock b/examples/acceptance_tests/039/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/039/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/040/aiken.lock b/examples/acceptance_tests/040/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/040/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/041/aiken.lock b/examples/acceptance_tests/041/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/041/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/042/aiken.lock b/examples/acceptance_tests/042/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/042/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/043/aiken.lock b/examples/acceptance_tests/043/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/043/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/044/aiken.lock b/examples/acceptance_tests/044/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/044/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/045/aiken.lock b/examples/acceptance_tests/045/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/045/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/046/aiken.lock b/examples/acceptance_tests/046/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/046/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/047/aiken.lock b/examples/acceptance_tests/047/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/047/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/047/plutus.json b/examples/acceptance_tests/047/plutus.json deleted file mode 100644 index cb6746d0..00000000 --- a/examples/acceptance_tests/047/plutus.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "preamble": { - "title": "aiken-lang/acceptance_test_047", - "version": "0.0.0", - "plutusVersion": "v2", - "compiler": { - "name": "Aiken", - "version": "v1.0.31-alpha+745f14c" - } - }, - "validators": [ - { - "title": "foo.foo.spend", - "datum": { - "title": "_datum", - "schema": { - "$ref": "#/definitions/Void" - } - }, - "redeemer": { - "title": "_redeemer", - "schema": { - "$ref": "#/definitions/Void" - } - }, - "compiledCode": "587601000032323232323225333002323232323253330073370e900118041baa0011323232324a2a66601466e1d2000300b375400a2a66601a60186ea80145261616300d300e002300c001300937540022c6014601600460120026012004600e00260086ea8004526136565734aae7555cf2ab9f5742ae89", - "hash": "c613c8326fea00dff179b7108f248b60c155881bbce544d84fe573e1" - }, - { - "title": "foo.foo.else", - "compiledCode": "587601000032323232323225333002323232323253330073370e900118041baa0011323232324a2a66601466e1d2000300b375400a2a66601a60186ea80145261616300d300e002300c001300937540022c6014601600460120026012004600e00260086ea8004526136565734aae7555cf2ab9f5742ae89", - "hash": "c613c8326fea00dff179b7108f248b60c155881bbce544d84fe573e1" - } - ], - "definitions": { - "Void": { - "title": "Unit", - "description": "The nullary constructor.", - "anyOf": [ - { - "dataType": "constructor", - "index": 0, - "fields": [] - } - ] - } - } -} \ No newline at end of file diff --git a/examples/acceptance_tests/049/aiken.lock b/examples/acceptance_tests/049/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/049/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/050/aiken.lock b/examples/acceptance_tests/050/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/050/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/051/aiken.lock b/examples/acceptance_tests/051/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/051/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/052/aiken.lock b/examples/acceptance_tests/052/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/052/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/053/aiken.lock b/examples/acceptance_tests/053/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/053/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/054/aiken.lock b/examples/acceptance_tests/054/aiken.lock deleted file mode 100644 index 2badbce5..00000000 --- a/examples/acceptance_tests/054/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724858661, nanos_since_epoch = 121355000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/055/aiken.lock b/examples/acceptance_tests/055/aiken.lock deleted file mode 100644 index 62f2265a..00000000 --- a/examples/acceptance_tests/055/aiken.lock +++ /dev/null @@ -1,15 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "1.9.0" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "1.9.0" -requirements = [] -source = "github" - -[etags] diff --git a/examples/acceptance_tests/056/aiken.lock b/examples/acceptance_tests/056/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/056/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/057/aiken.lock b/examples/acceptance_tests/057/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/057/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/058/aiken.lock b/examples/acceptance_tests/058/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/058/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/059/aiken.lock b/examples/acceptance_tests/059/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/059/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/060/aiken.lock b/examples/acceptance_tests/060/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/060/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/061/aiken.lock b/examples/acceptance_tests/061/aiken.lock deleted file mode 100644 index 62f2265a..00000000 --- a/examples/acceptance_tests/061/aiken.lock +++ /dev/null @@ -1,15 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "1.9.0" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "1.9.0" -requirements = [] -source = "github" - -[etags] diff --git a/examples/acceptance_tests/062/aiken.lock b/examples/acceptance_tests/062/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/062/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/062/plutus.json b/examples/acceptance_tests/062/plutus.json deleted file mode 100644 index 978a9c15..00000000 --- a/examples/acceptance_tests/062/plutus.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "preamble": { - "title": "aiken-lang/acceptance_test_062", - "version": "0.0.0", - "plutusVersion": "v2" - }, - "validators": [] -} \ No newline at end of file diff --git a/examples/acceptance_tests/063/aiken.lock b/examples/acceptance_tests/063/aiken.lock deleted file mode 100644 index 0a73fd9d..00000000 --- a/examples/acceptance_tests/063/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724858662, nanos_since_epoch = 117929000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/064/aiken.lock b/examples/acceptance_tests/064/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/064/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/065/aiken.lock b/examples/acceptance_tests/065/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/065/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/066/aiken.lock b/examples/acceptance_tests/066/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/066/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/067/aiken.lock b/examples/acceptance_tests/067/aiken.lock deleted file mode 100644 index ec376d9a..00000000 --- a/examples/acceptance_tests/067/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724858672, nanos_since_epoch = 430447000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/068/aiken.lock b/examples/acceptance_tests/068/aiken.lock deleted file mode 100644 index dc5cb44f..00000000 --- a/examples/acceptance_tests/068/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724858671, nanos_since_epoch = 371187000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/068/plutus.json b/examples/acceptance_tests/068/plutus.json deleted file mode 100644 index 0c8d332e..00000000 --- a/examples/acceptance_tests/068/plutus.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "preamble": { - "title": "aiken-lang/acceptance_test_068", - "version": "0.0.0", - "plutusVersion": "v2", - "compiler": { - "name": "Aiken", - "version": "v1.0.26-alpha+a44ed4c" - } - }, - "validators": [] -} \ No newline at end of file diff --git a/examples/acceptance_tests/069/aiken.lock b/examples/acceptance_tests/069/aiken.lock deleted file mode 100644 index 74c41048..00000000 --- a/examples/acceptance_tests/069/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724858672, nanos_since_epoch = 430461000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/070/aiken.lock b/examples/acceptance_tests/070/aiken.lock deleted file mode 100644 index 62f2265a..00000000 --- a/examples/acceptance_tests/070/aiken.lock +++ /dev/null @@ -1,15 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "1.9.0" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "1.9.0" -requirements = [] -source = "github" - -[etags] diff --git a/examples/acceptance_tests/071/aiken.lock b/examples/acceptance_tests/071/aiken.lock deleted file mode 100644 index 88aeb0cd..00000000 --- a/examples/acceptance_tests/071/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724859220, nanos_since_epoch = 62858000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/071/plutus.json b/examples/acceptance_tests/071/plutus.json deleted file mode 100644 index 68dcebe1..00000000 --- a/examples/acceptance_tests/071/plutus.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "preamble": { - "title": "aiken-lang/acceptance_test_071", - "version": "0.0.0", - "plutusVersion": "v2", - "compiler": { - "name": "Aiken", - "version": "v1.0.31-alpha+745f14c" - } - }, - "validators": [ - { - "title": "spend.foo.spend", - "datum": { - "title": "datum", - "schema": { - "$ref": "#/definitions/spend~1PoolDatum" - } - }, - "redeemer": { - "title": "redeemer", - "schema": { - "$ref": "#/definitions/spend~1PoolRedeemer" - } - }, - "compiledCode": "5903a2010000323232323232323225333002323232323253323300830013009375400426464646464a66601a6004601c6ea80204c94ccc044004584c94cccccc05800454ccc048c0540084c8c94ccc044c0180044c94ccc054004584c94cccccc0680045858584c94ccc05cc06800c5401458dd68008b180b80098099baa00315333011300a001132533301500116132533333301a00115333016301900215333013300830143754002264a66602e0022c264a666666038002264a6660320022c264a66666603c0022c2c2c264a666036603c00626660180082a0122c2c6eb400458c06c004c06c00858585858c064004c054dd50008b0b0b0b0b0b180b80098099baa003153330113370e9002000899299980a8008b099299999980d0008a99980b180c8010a9998099804180a1baa001132533301700116132533333301c001132533301900116132533333301e001161616132533301b301e003133300c004150091616375a0022c603600260360042c2c2c2c6032002602a6ea8004585858585858c05c004c04cdd50018b18089baa0021533300f30043010375400a264646464a666026601000229444c8c8c8c94ccc05cc0400144c8c8c94ccc068c03cc06cdd500089919299980e1808980e9baa0011324a26042603c6ea800458cc01406000cc07cc070dd50008b1980200b0009802a44101ff00301c3019375400c2646464a666034601e60366ea80044c8c94ccc070c044c074dd50008992513021301e37540022c6600a030006603e60386ea800458cc010058004c015220101ff00301c3019375400c44660086eb0c020c068dd5001119baf3009301b3754603c603e60366ea800400888cc00cdd6180e180e980e980c9baa00223375e601060346ea800400888c8cc00400400c894ccc06c004530103d87a800013232533301a300500213374a90001980f00125eb804cc010010004c07c008c0740048cdd2a40006603066e95200233018375200297ae0330184c103d87a80004bd7018099baa0013001301337540184602c002602860226ea8014585858585858c04c004c03cdd50040b1112999807980218081baa00313253330130010021325333333018001003003003003132325333016001005132533333301b0010060060060061325333018301b00315008007375c002603000260300066eb8004c054004c044dd50018009b8748000c03cc040008c038004c028dd50011b874800858c02cc030008c028004c028008c020004c010dd50008a4c26cacae6955ceaab9e5573eae815d0aba257481", - "hash": "10e8faa163e7c7699b978c2df5f2b1fadc9796e866d67b88799def6e" - }, - { - "title": "spend.foo.else", - "compiledCode": "5903a2010000323232323232323225333002323232323253323300830013009375400426464646464a66601a6004601c6ea80204c94ccc044004584c94cccccc05800454ccc048c0540084c8c94ccc044c0180044c94ccc054004584c94cccccc0680045858584c94ccc05cc06800c5401458dd68008b180b80098099baa00315333011300a001132533301500116132533333301a00115333016301900215333013300830143754002264a66602e0022c264a666666038002264a6660320022c264a66666603c0022c2c2c264a666036603c00626660180082a0122c2c6eb400458c06c004c06c00858585858c064004c054dd50008b0b0b0b0b0b180b80098099baa003153330113370e9002000899299980a8008b099299999980d0008a99980b180c8010a9998099804180a1baa001132533301700116132533333301c001132533301900116132533333301e001161616132533301b301e003133300c004150091616375a0022c603600260360042c2c2c2c6032002602a6ea8004585858585858c05c004c04cdd50018b18089baa0021533300f30043010375400a264646464a666026601000229444c8c8c8c94ccc05cc0400144c8c8c94ccc068c03cc06cdd500089919299980e1808980e9baa0011324a26042603c6ea800458cc01406000cc07cc070dd50008b1980200b0009802a44101ff00301c3019375400c2646464a666034601e60366ea80044c8c94ccc070c044c074dd50008992513021301e37540022c6600a030006603e60386ea800458cc010058004c015220101ff00301c3019375400c44660086eb0c020c068dd5001119baf3009301b3754603c603e60366ea800400888cc00cdd6180e180e980e980c9baa00223375e601060346ea800400888c8cc00400400c894ccc06c004530103d87a800013232533301a300500213374a90001980f00125eb804cc010010004c07c008c0740048cdd2a40006603066e95200233018375200297ae0330184c103d87a80004bd7018099baa0013001301337540184602c002602860226ea8014585858585858c04c004c03cdd50040b1112999807980218081baa00313253330130010021325333333018001003003003003132325333016001005132533333301b0010060060060061325333018301b00315008007375c002603000260300066eb8004c054004c044dd50018009b8748000c03cc040008c038004c028dd50011b874800858c02cc030008c028004c028008c020004c010dd50008a4c26cacae6955ceaab9e5573eae815d0aba257481", - "hash": "10e8faa163e7c7699b978c2df5f2b1fadc9796e866d67b88799def6e" - } - ], - "definitions": { - "ByteArray": { - "dataType": "bytes" - }, - "Int": { - "dataType": "integer" - }, - "spend/CurrencySymbol": { - "title": "CurrencySymbol", - "anyOf": [ - { - "title": "CurrencySymbol", - "dataType": "constructor", - "index": 0, - "fields": [ - { - "title": "policy_id", - "$ref": "#/definitions/ByteArray" - }, - { - "title": "asset_name", - "$ref": "#/definitions/ByteArray" - } - ] - } - ] - }, - "spend/PoolBorrowRedeemer": { - "title": "PoolBorrowRedeemer", - "anyOf": [ - { - "title": "PoolBorrowRedeemer", - "dataType": "constructor", - "index": 0, - "fields": [ - { - "title": "input_cs", - "$ref": "#/definitions/spend~1CurrencySymbol" - }, - { - "title": "input_amount", - "$ref": "#/definitions/Int" - } - ] - } - ] - }, - "spend/PoolDatum": { - "title": "PoolDatum", - "anyOf": [ - { - "title": "PoolDatum", - "dataType": "constructor", - "index": 0, - "fields": [ - { - "title": "currency_symbol", - "$ref": "#/definitions/spend~1CurrencySymbol" - }, - { - "title": "balance", - "$ref": "#/definitions/Int" - }, - { - "title": "lent_out", - "$ref": "#/definitions/Int" - } - ] - } - ] - }, - "spend/PoolDepositRedeemer": { - "title": "PoolDepositRedeemer", - "anyOf": [ - { - "title": "PoolDepositRedeemer", - "dataType": "constructor", - "index": 0, - "fields": [ - { - "title": "input_cs", - "$ref": "#/definitions/spend~1CurrencySymbol" - }, - { - "title": "input_amount", - "$ref": "#/definitions/Int" - } - ] - } - ] - }, - "spend/PoolRedeemer": { - "title": "PoolRedeemer", - "anyOf": [ - { - "title": "PoolRedeemer", - "dataType": "constructor", - "index": 0, - "fields": [ - { - "title": "action", - "$ref": "#/definitions/spend~1PoolRedeemerType" - } - ] - } - ] - }, - "spend/PoolRedeemerType": { - "title": "PoolRedeemerType", - "anyOf": [ - { - "title": "PoolWithdraw", - "dataType": "constructor", - "index": 0, - "fields": [ - { - "$ref": "#/definitions/Int" - } - ] - }, - { - "title": "PoolDeposit", - "dataType": "constructor", - "index": 1, - "fields": [ - { - "$ref": "#/definitions/spend~1PoolDepositRedeemer" - } - ] - }, - { - "title": "PoolBorrow", - "dataType": "constructor", - "index": 2, - "fields": [ - { - "$ref": "#/definitions/spend~1PoolBorrowRedeemer" - } - ] - } - ] - } - } -} \ No newline at end of file diff --git a/examples/acceptance_tests/072/aiken.lock b/examples/acceptance_tests/072/aiken.lock deleted file mode 100644 index 62f2265a..00000000 --- a/examples/acceptance_tests/072/aiken.lock +++ /dev/null @@ -1,15 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "1.9.0" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "1.9.0" -requirements = [] -source = "github" - -[etags] diff --git a/examples/acceptance_tests/072/plutus.json b/examples/acceptance_tests/072/plutus.json deleted file mode 100644 index 80dc1cde..00000000 --- a/examples/acceptance_tests/072/plutus.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "preamble": { - "title": "aiken-lang/acceptance_test_072", - "version": "0.0.0", - "plutusVersion": "v2" - }, - "validators": [] -} \ No newline at end of file diff --git a/examples/acceptance_tests/073/aiken.lock b/examples/acceptance_tests/073/aiken.lock deleted file mode 100644 index 0a71dc1a..00000000 --- a/examples/acceptance_tests/073/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724858665, nanos_since_epoch = 156668000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/073/plutus.json b/examples/acceptance_tests/073/plutus.json deleted file mode 100644 index 7123958b..00000000 --- a/examples/acceptance_tests/073/plutus.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "preamble": { - "title": "aiken-lang/acceptance_test_073", - "version": "0.0.0", - "plutusVersion": "v2", - "compiler": { - "name": "Aiken", - "version": "v1.0.29-alpha+06ac851" - } - }, - "validators": [] -} \ No newline at end of file diff --git a/examples/acceptance_tests/074/aiken.lock b/examples/acceptance_tests/074/aiken.lock deleted file mode 100644 index 69d3f12f..00000000 --- a/examples/acceptance_tests/074/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724858665, nanos_since_epoch = 250481000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/075/aiken.lock b/examples/acceptance_tests/075/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/075/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/076/aiken.lock b/examples/acceptance_tests/076/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/076/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/076/plutus.json b/examples/acceptance_tests/076/plutus.json deleted file mode 100644 index cdf24bac..00000000 --- a/examples/acceptance_tests/076/plutus.json +++ /dev/null @@ -1,148 +0,0 @@ -{ - "preamble": { - "title": "aiken-lang/acceptance_test_076", - "version": "0.0.0", - "plutusVersion": "v2" - }, - "validators": [ - { - "title": "tests.recursive_generic_types", - "datum": { - "title": "datum", - "schema": { - "$ref": "#/definitions/tests~1Foo" - } - }, - "redeemer": { - "title": "redeemer", - "schema": { - "$ref": "#/definitions/tests~1LinkedList$Int" - } - }, - "compiledCode": "5902840100003232323232323232323232323232323222232324a26601c64a66601c66e1d20000011323253330153017002133011300800149854cc0492401334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e20657870656374656400163015001300c0051533300e3370e9001000899191919299980b980c801099191980a9980700091980b1806800a4c931bac3017002375c602a0022a660289201334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e20657870656374656400163232337606032004603200260320026eb0c05c004c05c008dd6980a80098060028a9980824812b436f6e73747220696e64657820646964206e6f74206d6174636820616e7920747970652076617269616e740016300c0040043300d300400200230010012232533300a3370e90000008991919192999809980a80109980799803803800a4c2a66020921334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e206578706563746564001630130013013002301100130080021533300a3370e90010008a99980798040010a4c2a6601892011d4578706563746564206e6f206669656c647320666f7220436f6e7374720016153300c4912b436f6e73747220696e64657820646964206e6f74206d6174636820616e7920747970652076617269616e74001630080013001001222533300d00214984cc024c004c038008ccc00c00cc03c008004cc0040052000222233330073370e00200601a4666600a00a66e000112002300f0010020022300737540024600a6ea80055cd2b9b5738aae7555cf2ab9f5742ae881", - "hash": "aa6c9ffe85565798974269ea30a9b76744bb8608356c758d75486560" - } - ], - "definitions": { - "Bool": { - "title": "Bool", - "anyOf": [ - { - "title": "False", - "dataType": "constructor", - "index": 0, - "fields": [] - }, - { - "title": "True", - "dataType": "constructor", - "index": 1, - "fields": [] - } - ] - }, - "ByteArray": { - "dataType": "bytes" - }, - "Int": { - "dataType": "integer" - }, - "List$tests/LinkedList$Int": { - "dataType": "list", - "items": { - "$ref": "#/definitions/tests~1LinkedList$Int" - } - }, - "Tuple$ByteArray_List$tests/LinkedList$Int": { - "title": "Tuple", - "dataType": "list", - "items": [ - { - "$ref": "#/definitions/ByteArray" - }, - { - "$ref": "#/definitions/List$tests~1LinkedList$Int" - } - ] - }, - "tests/Foo": { - "title": "Foo", - "anyOf": [ - { - "title": "Foo", - "dataType": "constructor", - "index": 0, - "fields": [ - { - "title": "foo", - "$ref": "#/definitions/tests~1LinkedList$Bool" - } - ] - }, - { - "title": "Bar", - "dataType": "constructor", - "index": 1, - "fields": [ - { - "title": "bar", - "$ref": "#/definitions/Int" - }, - { - "title": "baz", - "$ref": "#/definitions/Tuple$ByteArray_List$tests~1LinkedList$Int" - } - ] - } - ] - }, - "tests/LinkedList$Bool": { - "title": "LinkedList", - "anyOf": [ - { - "title": "Cons", - "dataType": "constructor", - "index": 0, - "fields": [ - { - "$ref": "#/definitions/Bool" - }, - { - "$ref": "#/definitions/tests~1LinkedList$Bool" - } - ] - }, - { - "title": "Nil", - "dataType": "constructor", - "index": 1, - "fields": [] - } - ] - }, - "tests/LinkedList$Int": { - "title": "LinkedList", - "anyOf": [ - { - "title": "Cons", - "dataType": "constructor", - "index": 0, - "fields": [ - { - "$ref": "#/definitions/Int" - }, - { - "$ref": "#/definitions/tests~1LinkedList$Int" - } - ] - }, - { - "title": "Nil", - "dataType": "constructor", - "index": 1, - "fields": [] - } - ] - } - } -} \ No newline at end of file diff --git a/examples/acceptance_tests/077/aiken.lock b/examples/acceptance_tests/077/aiken.lock deleted file mode 100644 index ef62febb..00000000 --- a/examples/acceptance_tests/077/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724859218, nanos_since_epoch = 869507000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/077/plutus.json b/examples/acceptance_tests/077/plutus.json deleted file mode 100644 index 5caa4c89..00000000 --- a/examples/acceptance_tests/077/plutus.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "preamble": { - "title": "aiken-lang/acceptance_test_077", - "version": "0.0.0", - "plutusVersion": "v2", - "compiler": { - "name": "Aiken", - "version": "v1.0.31-alpha+745f14c" - } - }, - "validators": [ - { - "title": "spend.foo.mint", - "redeemer": { - "title": "rdmr", - "schema": { - "$ref": "#/definitions/spend~1Action" - } - }, - "parameters": [ - { - "title": "token_name", - "schema": { - "$ref": "#/definitions/ByteArray" - } - }, - { - "title": "utxo_ref", - "schema": { - "$ref": "#/definitions/cardano~1transaction~1OutputReference" - } - } - ], - "compiledCode": "59018501000032323232323232232225333005323232323253323300b3001300c3754004264646464a66601e600a0022a66602460226ea801c540085854ccc03cc00c00454ccc048c044dd50038a8010b0b18079baa006132323232533301430170021323253330133009301437540162a666026646600200200c44a66603000229404c94ccc058cdd7980d980c1baa301b00201314a226600600600260360022a666026600e002266e3c0080445280b0b1bad3014002375c60240022c602a00264a666020600860226ea800452f5bded8c026eacc054c048dd500099198008009bab3015301630163016301600322533301400114c103d87a80001323232325333015337220140042a66602a66e3c0280084cdd2a4000660326e980052f5c02980103d87a80001330060060033756602c0066eb8c050008c060008c058004dd6180980098079baa007370e90011bae3010300d37540046e1d200016300e300f002300d001300d002300b0013007375400229309b2b1bae0015734aae7555cf2ab9f5740ae855d11", - "hash": "784b2caa5e99b3d37361e3c3d51e7fd39f616025037eee525b73c5da" - }, - { - "title": "spend.foo.else", - "parameters": [ - { - "title": "token_name", - "schema": { - "$ref": "#/definitions/ByteArray" - } - }, - { - "title": "utxo_ref", - "schema": { - "$ref": "#/definitions/cardano~1transaction~1OutputReference" - } - } - ], - "compiledCode": "59018501000032323232323232232225333005323232323253323300b3001300c3754004264646464a66601e600a0022a66602460226ea801c540085854ccc03cc00c00454ccc048c044dd50038a8010b0b18079baa006132323232533301430170021323253330133009301437540162a666026646600200200c44a66603000229404c94ccc058cdd7980d980c1baa301b00201314a226600600600260360022a666026600e002266e3c0080445280b0b1bad3014002375c60240022c602a00264a666020600860226ea800452f5bded8c026eacc054c048dd500099198008009bab3015301630163016301600322533301400114c103d87a80001323232325333015337220140042a66602a66e3c0280084cdd2a4000660326e980052f5c02980103d87a80001330060060033756602c0066eb8c050008c060008c058004dd6180980098079baa007370e90011bae3010300d37540046e1d200016300e300f002300d001300d002300b0013007375400229309b2b1bae0015734aae7555cf2ab9f5740ae855d11", - "hash": "784b2caa5e99b3d37361e3c3d51e7fd39f616025037eee525b73c5da" - }, - { - "title": "spend2.foo.spend", - "datum": { - "title": "_datum", - "schema": { - "$ref": "#/definitions/Void" - } - }, - "redeemer": { - "title": "_redeemer", - "schema": { - "$ref": "#/definitions/Void" - } - }, - "compiledCode": "58c70100003232323232323225333002323232323253330073370e900118041baa001132323232533300b3370e900018061baa32330010013758602260246024601c6ea8024894ccc0400045300103d87a800013232533300f4a2266e952000330130024bd70099802002000980a00118090008a5116533300a3370e900018059baa0051533300d300c375400a2930b0b18071807801180680098049baa00116300b300c002300a001300a00230080013004375400229309b2b2b9a5573aaae7955cfaba05742ae881", - "hash": "c4700bfdb383c890d2a4c4505d3fc6d4b51e1998c3f33dd83e12ba44" - }, - { - "title": "spend2.foo.else", - "compiledCode": "58c70100003232323232323225333002323232323253330073370e900118041baa001132323232533300b3370e900018061baa32330010013758602260246024601c6ea8024894ccc0400045300103d87a800013232533300f4a2266e952000330130024bd70099802002000980a00118090008a5116533300a3370e900018059baa0051533300d300c375400a2930b0b18071807801180680098049baa00116300b300c002300a001300a00230080013004375400229309b2b2b9a5573aaae7955cfaba05742ae881", - "hash": "c4700bfdb383c890d2a4c4505d3fc6d4b51e1998c3f33dd83e12ba44" - } - ], - "definitions": { - "ByteArray": { - "dataType": "bytes" - }, - "Int": { - "dataType": "integer" - }, - "Void": { - "title": "Unit", - "description": "The nullary constructor.", - "anyOf": [ - { - "dataType": "constructor", - "index": 0, - "fields": [] - } - ] - }, - "cardano/transaction/OutputReference": { - "title": "OutputReference", - "description": "An `OutputReference` is a unique reference to an output on-chain. The `output_index`\n corresponds to the position in the output list of the transaction (identified by its id)\n that produced that output", - "anyOf": [ - { - "title": "OutputReference", - "dataType": "constructor", - "index": 0, - "fields": [ - { - "title": "transaction_id", - "$ref": "#/definitions/ByteArray" - }, - { - "title": "output_index", - "$ref": "#/definitions/Int" - } - ] - } - ] - }, - "spend/Action": { - "title": "Action", - "anyOf": [ - { - "title": "Mint", - "dataType": "constructor", - "index": 0, - "fields": [] - }, - { - "title": "Burn", - "dataType": "constructor", - "index": 1, - "fields": [] - } - ] - } - } -} \ No newline at end of file diff --git a/examples/acceptance_tests/078/aiken.lock b/examples/acceptance_tests/078/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/078/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/078/plutus.json b/examples/acceptance_tests/078/plutus.json deleted file mode 100644 index c659be26..00000000 --- a/examples/acceptance_tests/078/plutus.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "preamble": { - "title": "aiken-lang/acceptance_test_078", - "version": "0.0.0", - "plutusVersion": "v2" - }, - "validators": [] -} \ No newline at end of file diff --git a/examples/acceptance_tests/079/aiken.lock b/examples/acceptance_tests/079/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/079/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/079/plutus.json b/examples/acceptance_tests/079/plutus.json deleted file mode 100644 index a2808a3a..00000000 --- a/examples/acceptance_tests/079/plutus.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "preamble": { - "title": "aiken-lang/acceptance_test_079", - "version": "0.0.0", - "plutusVersion": "v2", - "compiler": { - "name": "Aiken", - "version": "v1.0.31-alpha+745f14c" - } - }, - "validators": [ - { - "title": "foo.foo.spend", - "datum": { - "title": "datum", - "schema": { - "$ref": "#/definitions/Int" - } - }, - "redeemer": { - "title": "redeemer", - "schema": { - "$ref": "#/definitions/Int" - } - }, - "compiledCode": "589a01000032323232322533300232323232323253330083370e9001000899191919299980619b8748000c034dd5001099b87337006eb4c03cc038dd5001000a40a82c6eb4018c034c038008c030004c028dd50010a99980419b87480000044c8cdc39bad00448150dd7180598051baa00216300837540026012601400460100026010004600c00260086ea8004526136565734aae7555cf2ba15745", - "hash": "86f0253dd8dd836d6588f5794eb8f08edd4476df28b607553126846e" - }, - { - "title": "foo.foo.mint", - "redeemer": { - "title": "redeemer", - "schema": { - "$ref": "#/definitions/Int" - } - }, - "compiledCode": "589a01000032323232322533300232323232323253330083370e9001000899191919299980619b8748000c034dd5001099b87337006eb4c03cc038dd5001000a40a82c6eb4018c034c038008c030004c028dd50010a99980419b87480000044c8cdc39bad00448150dd7180598051baa00216300837540026012601400460100026010004600c00260086ea8004526136565734aae7555cf2ba15745", - "hash": "86f0253dd8dd836d6588f5794eb8f08edd4476df28b607553126846e" - }, - { - "title": "foo.foo.else", - "compiledCode": "589a01000032323232322533300232323232323253330083370e9001000899191919299980619b8748000c034dd5001099b87337006eb4c03cc038dd5001000a40a82c6eb4018c034c038008c030004c028dd50010a99980419b87480000044c8cdc39bad00448150dd7180598051baa00216300837540026012601400460100026010004600c00260086ea8004526136565734aae7555cf2ba15745", - "hash": "86f0253dd8dd836d6588f5794eb8f08edd4476df28b607553126846e" - } - ], - "definitions": { - "Int": { - "dataType": "integer" - } - } -} \ No newline at end of file diff --git a/examples/acceptance_tests/080/aiken.lock b/examples/acceptance_tests/080/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/080/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/081/aiken.lock b/examples/acceptance_tests/081/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/081/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/082/aiken.lock b/examples/acceptance_tests/082/aiken.lock deleted file mode 100644 index 62f2265a..00000000 --- a/examples/acceptance_tests/082/aiken.lock +++ /dev/null @@ -1,15 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "1.9.0" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "1.9.0" -requirements = [] -source = "github" - -[etags] diff --git a/examples/acceptance_tests/083/aiken.lock b/examples/acceptance_tests/083/aiken.lock deleted file mode 100644 index 62f2265a..00000000 --- a/examples/acceptance_tests/083/aiken.lock +++ /dev/null @@ -1,15 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "1.9.0" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "1.9.0" -requirements = [] -source = "github" - -[etags] diff --git a/examples/acceptance_tests/084/aiken.lock b/examples/acceptance_tests/084/aiken.lock deleted file mode 100644 index 25f5ead4..00000000 --- a/examples/acceptance_tests/084/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724858655, nanos_since_epoch = 599974000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/085/aiken.lock b/examples/acceptance_tests/085/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/085/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/086/aiken.lock b/examples/acceptance_tests/086/aiken.lock deleted file mode 100644 index 79b55eec..00000000 --- a/examples/acceptance_tests/086/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724859229, nanos_since_epoch = 805054000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/086/plutus.json b/examples/acceptance_tests/086/plutus.json deleted file mode 100644 index 93c92cf2..00000000 --- a/examples/acceptance_tests/086/plutus.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "preamble": { - "title": "aiken-lang/acceptance_test_086", - "version": "0.0.0", - "plutusVersion": "v2", - "compiler": { - "name": "Aiken", - "version": "v1.0.31-alpha+745f14c" - } - }, - "validators": [ - { - "title": "other.validate.spend", - "datum": { - "title": "raw_datum", - "schema": { - "$ref": "#/definitions/Data" - } - }, - "redeemer": { - "title": "_redeemer", - "schema": { - "$ref": "#/definitions/Data" - } - }, - "compiledCode": "5902fd010000323232323232322533300232323232325332330083001300937540042646464a664660186002601a6ea80084c8c94ccc038c00cc03cdd500109929998090008b099299999980b0008a999809980a8010991929998091803800899299980b0008b099299999980d0008a99980b980c8010a99980a1804980a9baa001132533301800116132533333301c00115333019301b00215333016300b30173754002264a6660340022c264a66666603c002264a6660380022c264a6666660400022a66603a603e004266601a00626464a6660386022002264a6660400022c264a6666660480022a666042604600426464a666040602a002264a6660480022c264a6666660500022a66604a604e004266602a0022a0082c2c2c2c2c2c604a00260446ea800c54ccc080c0640044c94ccc090004584c94cccccc0a00045858584c8c94ccc09c004584c94cccccc0ac0045858584c8c94ccc0a8004584c94cccccc0b80045858584c94ccc0b0c0b800c5402c58dd68008b181580098158019bad0011630280013028003375a0022c604a00260446ea800c58c080dd50010a8020b0b0b0b0b1810800980f1baa0031533301c30150011533301f301e37540062a0042c2c60386ea800854028585858585858c074004c07400858585858c06c004c060dd50008b0b0b0b0b0b180c800980b1baa0011616161616163017001301437540062a66602460160022a66602a60286ea800c540085858c048dd50010a999808180298089baa30143012375400829445280b0b0b0b0b180980098081baa002162223253330113006001132533301500100313253333330190010040040040041325333017301900315006005375c002602c00260266ea801054ccc044c0280044c94ccc05400400c4c94cccccc0640040100100100104c94ccc05cc06400c54018014dd7000980b00098099baa004002301137540066020601c6ea8008dc3a40002c601c601e004601a00260146ea8008dc3a40042c6014601600460120026012004600e00260086ea8004526136565734aae7555cf2ab9f5742ae895d21", - "hash": "a63866b5537d618101fccdf892f6bb58f0f1092bc483bfedca3a813e" - }, - { - "title": "other.validate.else", - "compiledCode": "5902fd010000323232323232322533300232323232325332330083001300937540042646464a664660186002601a6ea80084c8c94ccc038c00cc03cdd500109929998090008b099299999980b0008a999809980a8010991929998091803800899299980b0008b099299999980d0008a99980b980c8010a99980a1804980a9baa001132533301800116132533333301c00115333019301b00215333016300b30173754002264a6660340022c264a66666603c002264a6660380022c264a6666660400022a66603a603e004266601a00626464a6660386022002264a6660400022c264a6666660480022a666042604600426464a666040602a002264a6660480022c264a6666660500022a66604a604e004266602a0022a0082c2c2c2c2c2c604a00260446ea800c54ccc080c0640044c94ccc090004584c94cccccc0a00045858584c8c94ccc09c004584c94cccccc0ac0045858584c8c94ccc0a8004584c94cccccc0b80045858584c94ccc0b0c0b800c5402c58dd68008b181580098158019bad0011630280013028003375a0022c604a00260446ea800c58c080dd50010a8020b0b0b0b0b1810800980f1baa0031533301c30150011533301f301e37540062a0042c2c60386ea800854028585858585858c074004c07400858585858c06c004c060dd50008b0b0b0b0b0b180c800980b1baa0011616161616163017001301437540062a66602460160022a66602a60286ea800c540085858c048dd50010a999808180298089baa30143012375400829445280b0b0b0b0b180980098081baa002162223253330113006001132533301500100313253333330190010040040040041325333017301900315006005375c002602c00260266ea801054ccc044c0280044c94ccc05400400c4c94cccccc0640040100100100104c94ccc05cc06400c54018014dd7000980b00098099baa004002301137540066020601c6ea8008dc3a40002c601c601e004601a00260146ea8008dc3a40042c6014601600460120026012004600e00260086ea8004526136565734aae7555cf2ab9f5742ae895d21", - "hash": "a63866b5537d618101fccdf892f6bb58f0f1092bc483bfedca3a813e" - } - ], - "definitions": { - "Data": { - "title": "Data", - "description": "Any Plutus data." - } - } -} \ No newline at end of file diff --git a/examples/acceptance_tests/087/aiken.lock b/examples/acceptance_tests/087/aiken.lock deleted file mode 100644 index dec3383e..00000000 --- a/examples/acceptance_tests/087/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724858665, nanos_since_epoch = 159348000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/088/aiken.lock b/examples/acceptance_tests/088/aiken.lock deleted file mode 100644 index e2d894d5..00000000 --- a/examples/acceptance_tests/088/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724858669, nanos_since_epoch = 286231000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/089/aiken.lock b/examples/acceptance_tests/089/aiken.lock deleted file mode 100644 index 0f416334..00000000 --- a/examples/acceptance_tests/089/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724859226, nanos_since_epoch = 911810000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/089/plutus.json b/examples/acceptance_tests/089/plutus.json deleted file mode 100644 index 0dadcda6..00000000 --- a/examples/acceptance_tests/089/plutus.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "preamble": { - "title": "aiken-lang/acceptance_test_089", - "version": "0.0.0", - "plutusVersion": "v2", - "compiler": { - "name": "Aiken", - "version": "v1.0.31-alpha+745f14c" - } - }, - "validators": [ - { - "title": "test2.simple_oneshot.mint", - "redeemer": { - "title": "_r", - "schema": { - "$ref": "#/definitions/Void" - } - }, - "parameters": [ - { - "title": "utxo_ref", - "schema": { - "$ref": "#/definitions/cardano~1transaction~1OutputReference" - } - } - ], - "compiledCode": "58f00100003232323232323222533300332323232325332330093001300a375400426464646464a66601c600c601e6ea8cc00400c8cdd7980198089baa00100e1533300e3006300f375466002006466ebcc00cc044dd50008070a5114a02c44646600200200644a666028002298103d87a8000132325333013300500213374a90001980b80125eb804cc010010004c060008c0580048c048004dd6180818069baa007533300a3002300b37540082a66601a60186ea80105261616375c601c60166ea8008dc3a40002c6018601a004601600260160046012002600a6ea8004526136565734aae7555cf2ab9f5740ae855d101", - "hash": "6f67a4f89e77e01da00ed12f89b15baa823791e83757d5ac97843e91" - }, - { - "title": "test2.simple_oneshot.else", - "parameters": [ - { - "title": "utxo_ref", - "schema": { - "$ref": "#/definitions/cardano~1transaction~1OutputReference" - } - } - ], - "compiledCode": "58f00100003232323232323222533300332323232325332330093001300a375400426464646464a66601c600c601e6ea8cc00400c8cdd7980198089baa00100e1533300e3006300f375466002006466ebcc00cc044dd50008070a5114a02c44646600200200644a666028002298103d87a8000132325333013300500213374a90001980b80125eb804cc010010004c060008c0580048c048004dd6180818069baa007533300a3002300b37540082a66601a60186ea80105261616375c601c60166ea8008dc3a40002c6018601a004601600260160046012002600a6ea8004526136565734aae7555cf2ab9f5740ae855d101", - "hash": "6f67a4f89e77e01da00ed12f89b15baa823791e83757d5ac97843e91" - } - ], - "definitions": { - "ByteArray": { - "dataType": "bytes" - }, - "Int": { - "dataType": "integer" - }, - "Void": { - "title": "Unit", - "description": "The nullary constructor.", - "anyOf": [ - { - "dataType": "constructor", - "index": 0, - "fields": [] - } - ] - }, - "cardano/transaction/OutputReference": { - "title": "OutputReference", - "description": "An `OutputReference` is a unique reference to an output on-chain. The `output_index`\n corresponds to the position in the output list of the transaction (identified by its id)\n that produced that output", - "anyOf": [ - { - "title": "OutputReference", - "dataType": "constructor", - "index": 0, - "fields": [ - { - "title": "transaction_id", - "$ref": "#/definitions/ByteArray" - }, - { - "title": "output_index", - "$ref": "#/definitions/Int" - } - ] - } - ] - } - } -} \ No newline at end of file diff --git a/examples/acceptance_tests/090/aiken.lock b/examples/acceptance_tests/090/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/090/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/090/plutus.json b/examples/acceptance_tests/090/plutus.json deleted file mode 100644 index 0bb4779d..00000000 --- a/examples/acceptance_tests/090/plutus.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "preamble": { - "title": "aiken-lang/acceptance_test_090", - "version": "0.0.0", - "plutusVersion": "v2", - "compiler": { - "name": "Aiken", - "version": "v1.0.31-alpha+745f14c" - } - }, - "validators": [ - { - "title": "foo.foo.spend", - "datum": { - "title": "datum", - "schema": { - "$ref": "#/definitions/Int" - } - }, - "redeemer": { - "title": "_redeemer", - "schema": { - "$ref": "#/definitions/Data" - } - }, - "compiledCode": "5884010000323232323225333002323232323253330073370e900118041baa001132323375e6018601a004980129d8799fc25822018c641ac1624dfb73d7e9e4852882cc4b1df75eb615fe302d3df21196ecf93dfb88ff00300b001300937540022c6012601400460100026010004600c00260086ea8004526136565734aae7555cf2ba15745", - "hash": "dfa7cee7ce4b00790987cebda791bad5ffd34e12c58adc567094edad" - }, - { - "title": "foo.foo.else", - "compiledCode": "5884010000323232323225333002323232323253330073370e900118041baa001132323375e6018601a004980129d8799fc25822018c641ac1624dfb73d7e9e4852882cc4b1df75eb615fe302d3df21196ecf93dfb88ff00300b001300937540022c6012601400460100026010004600c00260086ea8004526136565734aae7555cf2ba15745", - "hash": "dfa7cee7ce4b00790987cebda791bad5ffd34e12c58adc567094edad" - } - ], - "definitions": { - "Data": { - "title": "Data", - "description": "Any Plutus data." - }, - "Int": { - "dataType": "integer" - } - } -} \ No newline at end of file diff --git a/examples/acceptance_tests/091/aiken.lock b/examples/acceptance_tests/091/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/091/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/092/aiken.lock b/examples/acceptance_tests/092/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/092/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/093/aiken.lock b/examples/acceptance_tests/093/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/093/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/094/aiken.lock b/examples/acceptance_tests/094/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/094/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/095/aiken.lock b/examples/acceptance_tests/095/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/095/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/096/aiken.lock b/examples/acceptance_tests/096/aiken.lock deleted file mode 100644 index f2f0f9bb..00000000 --- a/examples/acceptance_tests/096/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "v2" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "v2" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@v2" = [{ secs_since_epoch = 1724858659, nanos_since_epoch = 853227000 }, "cdbbce58b61deb385e7ea787a2e0fc2dc8fe94db9999e0e6275bc9c70e5796be"] diff --git a/examples/acceptance_tests/096/plutus.json b/examples/acceptance_tests/096/plutus.json deleted file mode 100644 index 2bdb09ea..00000000 --- a/examples/acceptance_tests/096/plutus.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "preamble": { - "title": "aiken-lang/acceptance_test_096", - "description": "Aiken contracts for project 'aiken-lang/096'", - "version": "0.0.0", - "plutusVersion": "v2", - "compiler": { - "name": "Aiken", - "version": "v1.0.31-alpha+745f14c" - }, - "license": "Apache-2.0" - }, - "validators": [ - { - "title": "foo.is_fourty_two.spend", - "datum": { - "title": "dat", - "schema": { - "$ref": "#/definitions/Data" - } - }, - "redeemer": { - "title": "rdm", - "schema": { - "$ref": "#/definitions/Data" - } - }, - "compiledCode": "586d01000032323232323225333002323232323253330073370e900118041baa0011323253330093375e66e9520003300c0044bd70180698070010a5114a0601800260126ea800458c028c02c008c024004c024008c01c004c010dd50008a4c26cacae6955ceaab9e5740ae855d101", - "hash": "aa09f972cd22cf3bcbadb40dbe865d16dd4a50ff84022ef76a885d63" - }, - { - "title": "foo.is_fourty_two.else", - "compiledCode": "586d01000032323232323225333002323232323253330073370e900118041baa0011323253330093375e66e9520003300c0044bd70180698070010a5114a0601800260126ea800458c028c02c008c024004c024008c01c004c010dd50008a4c26cacae6955ceaab9e5740ae855d101", - "hash": "aa09f972cd22cf3bcbadb40dbe865d16dd4a50ff84022ef76a885d63" - } - ], - "definitions": { - "Data": { - "title": "Data", - "description": "Any Plutus data." - } - } -} \ No newline at end of file diff --git a/examples/acceptance_tests/097/aiken.lock b/examples/acceptance_tests/097/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/097/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/098/aiken.lock b/examples/acceptance_tests/098/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/098/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/099/aiken.lock b/examples/acceptance_tests/099/aiken.lock deleted file mode 100644 index cbb17a18..00000000 --- a/examples/acceptance_tests/099/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724858661, nanos_since_epoch = 946663000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/100/aiken.lock b/examples/acceptance_tests/100/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/100/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/101/aiken.lock b/examples/acceptance_tests/101/aiken.lock deleted file mode 100644 index 747d216b..00000000 --- a/examples/acceptance_tests/101/aiken.lock +++ /dev/null @@ -1,28 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[requirements]] -name = "aiken-lang/fuzz" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[[packages]] -name = "aiken-lang/fuzz" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/fuzz@main" = [{ secs_since_epoch = 1724858664, nanos_since_epoch = 894607000 }, "24d601fa19a2002318495bbb8562b9677563ca1b5c03126d6b093a65df076bef"] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724858664, nanos_since_epoch = 575290000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/102/aiken.lock b/examples/acceptance_tests/102/aiken.lock deleted file mode 100644 index b085e281..00000000 --- a/examples/acceptance_tests/102/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724858655, nanos_since_epoch = 458245000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/103/aiken.lock b/examples/acceptance_tests/103/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/103/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/104/aiken.lock b/examples/acceptance_tests/104/aiken.lock deleted file mode 100644 index 1e0e47b8..00000000 --- a/examples/acceptance_tests/104/aiken.lock +++ /dev/null @@ -1,28 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[requirements]] -name = "aiken-lang/fuzz" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[[packages]] -name = "aiken-lang/fuzz" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/fuzz@main" = [{ secs_since_epoch = 1724858655, nanos_since_epoch = 980801000 }, "24d601fa19a2002318495bbb8562b9677563ca1b5c03126d6b093a65df076bef"] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724858655, nanos_since_epoch = 458211000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/104/plutus.json b/examples/acceptance_tests/104/plutus.json deleted file mode 100644 index d031bb6c..00000000 --- a/examples/acceptance_tests/104/plutus.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "preamble": { - "title": "aiken-lang/104", - "description": "Aiken contracts for project 'aiken-lang/104'", - "version": "0.0.0", - "plutusVersion": "v2", - "compiler": { - "name": "Aiken", - "version": "v1.0.31-alpha+745f14c" - }, - "license": "Apache-2.0" - }, - "validators": [ - { - "title": "tests.foo_3.mint", - "redeemer": { - "title": "_redeemer", - "schema": { - "$ref": "#/definitions/Data" - } - }, - "parameters": [ - { - "title": "th_arg", - "schema": { - "$ref": "#/definitions/tests~1Foo" - } - } - ], - "compiledCode": "58670100003232323232225333003323232323253330083370e900018049baa0011323370e6eb4c030c02cdd5004240046eb8c02cc028dd500089931bad300b300a375400e6014601600460120026012004600e002600a6ea8004526136565734aae7555cf2ba15745", - "hash": "8d14659c82f8f0a1281c561b563283c30c43546d4215c9acafa78edf" - }, - { - "title": "tests.foo_3.else", - "parameters": [ - { - "title": "th_arg", - "schema": { - "$ref": "#/definitions/tests~1Foo" - } - } - ], - "compiledCode": "58670100003232323232225333003323232323253330083370e900018049baa0011323370e6eb4c030c02cdd5004240046eb8c02cc028dd500089931bad300b300a375400e6014601600460120026012004600e002600a6ea8004526136565734aae7555cf2ba15745", - "hash": "8d14659c82f8f0a1281c561b563283c30c43546d4215c9acafa78edf" - } - ], - "definitions": { - "Bool": { - "title": "Bool", - "anyOf": [ - { - "title": "False", - "dataType": "constructor", - "index": 0, - "fields": [] - }, - { - "title": "True", - "dataType": "constructor", - "index": 1, - "fields": [] - } - ] - }, - "Data": { - "title": "Data", - "description": "Any Plutus data." - }, - "Int": { - "dataType": "integer" - }, - "tests/Foo": { - "title": "Foo", - "anyOf": [ - { - "title": "Foo", - "dataType": "constructor", - "index": 0, - "fields": [ - { - "title": "a0", - "$ref": "#/definitions/Int" - }, - { - "title": "a1", - "$ref": "#/definitions/Bool" - } - ] - } - ] - } - } -} \ No newline at end of file diff --git a/examples/acceptance_tests/105/aiken.lock b/examples/acceptance_tests/105/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/105/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/106/aiken.lock b/examples/acceptance_tests/106/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/106/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/107/aiken.lock b/examples/acceptance_tests/107/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/107/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/108/aiken.lock b/examples/acceptance_tests/108/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/108/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/109/aiken.lock b/examples/acceptance_tests/109/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/109/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/110/aiken.lock b/examples/acceptance_tests/110/aiken.lock deleted file mode 100644 index 6e350cda..00000000 --- a/examples/acceptance_tests/110/aiken.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -requirements = [] -packages = [] - -[etags] diff --git a/examples/acceptance_tests/script_context/v3/aiken.lock b/examples/acceptance_tests/script_context/v3/aiken.lock deleted file mode 100644 index 1772b3cd..00000000 --- a/examples/acceptance_tests/script_context/v3/aiken.lock +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Aiken -# You typically do not need to edit this file - -[[requirements]] -name = "aiken-lang/stdlib" -version = "main" -source = "github" - -[[packages]] -name = "aiken-lang/stdlib" -version = "main" -requirements = [] -source = "github" - -[etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1724859324, nanos_since_epoch = 288688000 }, "2d9c3cdf2746778c8bbe6d49721186b66a33e0ce9cf295ac4cb2976b887a971c"] diff --git a/examples/acceptance_tests/script_context/v3/plutus.json b/examples/acceptance_tests/script_context/v3/plutus.json deleted file mode 100644 index f3d0131b..00000000 --- a/examples/acceptance_tests/script_context/v3/plutus.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "preamble": { - "title": "script_context/v3", - "description": "End-to-end testing of standard lib script context, for Plutus v3", - "version": "0.0.0", - "plutusVersion": "v3", - "compiler": { - "name": "Aiken", - "version": "v1.0.31-alpha+745f14c" - }, - "license": "Apache-2.0" - }, - "validators": [ - { - "title": "certificates.purposes.publish", - "redeemer": { - "title": "_redeemer", - "schema": { - "$ref": "#/definitions/Void" - } - }, - "compiledCode": "59199e0101003232323232323232323232253330053232323232533300a3370e900318061baa00113232323232323253330113005301337540022a66602266e1d2080dac409375a602e60286ea80044c94ccc048c018c050dd50008a99980919b8748070dd6980c180a9baa0011323253330143375e9812dd8799fd8799fd87a9f581c22222222222222222222222222222222222222222222222222222222ffd87a80ffff00330010054800054ccc050cdd7a612dd8799fd8799fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87a80ffff00330010054800854ccc050cdd7a612dd8799fd87a9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87a80ffff00330010054801054ccc050cdd7a6149d8799fd905009f581c1111111111111111111111111111111111111111111111111111111158209999999999999999999999999999999999999999999999999999999999999999ffff00330010054801854ccc050cdd7a612ad8799fd905019f581c11111111111111111111111111111111111111111111111111111111190539ffff00330010054802054ccc050cdd7a612dd8799fd8799fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87a80ffff00330010054802854ccc050cdd7a612dd8799fd87a9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87a80ffff00330010054803054ccc050cdd7a6154d8799fd87b9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87a9fd8799fd8799f581c00000000000000000000000000000000000000000000000000000000ffffffffff00330010054803854ccc050cdd7a6154d8799fd87b9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87a9fd8799fd87a9f581c00000000000000000000000000000000000000000000000000000000ffffffffff00330010054804054ccc050cdd7a6131d8799fd87b9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87a9fd87a80ffffff00330010054804854ccc050cdd7a6131d8799fd87b9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87a9fd87b80ffffff00330010054805054ccc050cdd7a614fd8799fd87b9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87b9f581c11111111111111111111111111111111111111111111111111111111d87b80ffffff00330010054805854ccc050cdd7a6151d8799fd87c9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd8799f581c11111111111111111111111111111111111111111111111111111111ff1a002dc6c0ffff00330010054806054ccc050cdd7a6136d8799fd87c9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87a9fd87b80ff1a002dc6c0ffff00330010054806854ccc050cdd7a6154d8799fd87c9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87b9f581c11111111111111111111111111111111111111111111111111111111d87b80ff1a002dc6c0ffff00330010054807054ccc050cdd7a614dd8799fd905029fd8799f581c00000000000000000000000000000000000000000000000000000000ffd8799f581c22222222222222222222222222222222222222222222222222222222ffffff00330010054807854ccc050cdd7a612bd8799fd905039fd8799f581c00000000000000000000000000000000000000000000000000000000ffffff00330010054808054ccc050cdd7a612fd8799fd87d9fd8799f581c00000000000000000000000000000000000000000000000000000000ff1a002dc6c0ffff00330010054808854ccc050cdd7a612fd8799fd87f9fd8799f581c00000000000000000000000000000000000000000000000000000000ff1a002dc6c0ffff00330010054809054ccc050cdd7a612ad8799fd87e9fd8799f581c00000000000000000000000000000000000000000000000000000000ffffff0033001005480984c94ccc054c024c05cdd5000899299980b19b8748010c060dd500089919299980c19b8748008c068dd5180f0010a99980c1806180d1baa00114a202e02e603a603c00260326ea8004054c06cc060dd500080a19800802a40502a6602a9201a56578706563740a202020202020536f6d65280a202020202020202055706461746544656c6567617465526570726573656e746174697665207b0a2020202020202020202064656c65676174655f726570726573656e7461746976653a20566572696669636174696f6e4b6579286f6e6c793073292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c2031392900161533015491c66578706563740a202020202020536f6d65280a2020202020202020556e726567697374657244656c6567617465526570726573656e746174697665207b0a2020202020202020202064656c65676174655f726570726573656e7461746976653a20566572696669636174696f6e4b6579286f6e6c793073292c0a20202020202020202020726566756e643a20335f3030305f3030302c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c2031382900161533015491c56578706563740a202020202020536f6d65280a2020202020202020526567697374657244656c6567617465526570726573656e746174697665207b0a2020202020202020202064656c65676174655f726570726573656e7461746976653a20566572696669636174696f6e4b6579286f6e6c793073292c0a202020202020202020206465706f7369743a20335f3030305f3030302c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c2031372900161533015491b26578706563740a202020202020536f6d65280a202020202020202052657469726546726f6d436f6e737469747574696f6e616c436f6d6d6974746565207b0a20202020202020202020636f6e737469747574696f6e616c5f636f6d6d69747465655f6d656d6265723a20566572696669636174696f6e4b6579286f6e6c793073292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c2031362900161533015491e06578706563740a202020202020536f6d65280a2020202020202020417574686f72697a65436f6e737469747574696f6e616c436f6d6d697474656550726f7879207b0a20202020202020202020636f6e737469747574696f6e616c5f636f6d6d69747465655f6d656d6265723a20566572696669636174696f6e4b6579286f6e6c793073292c0a2020202020202020202070726f78793a20566572696669636174696f6e4b6579286f6e6c793273292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c2031352900161533015491ff6578706563740a202020202020536f6d65280a20202020202020205265676973746572416e6444656c656761746543726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a2020202020202020202064656c65676174653a2044656c6567617465426f7468207b0a2020202020202020202020207374616b655f706f6f6c3a206f6e6c7931732c0a20202020202020202020202064656c65676174655f726570726573656e7461746976653a20416c776179734e6f436f6e666964656e63652c0a202020202020202020207d2c0a20202020202020202020646541706f7369743a20335f3030305f3030302c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c2031342900161533015491ed6578706563740a202020202020536f6d65280a20202020202020205265676973746572416e6444656c656761746543726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a2020202020202020202064656c65676174653a2044656c6567617465566f746528416c776179734e6f436f6e666964656e6365292c0a202020202020202020206465706f7369743a20335f3030305f3030302c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c2031332900161533015491ec6578706563740a202020202020536f6d65280a20202020202020205265676973746572416e6444656c656761746543726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a2020202020202020202064656c65676174653a2044656c6567617465426c6f636b50726f64756374696f6e286f6e6c793173292c0a202020202020202020206465706f7369743a20335f3030305f3030302c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c2031322900161533015491ff6578706563740a202020202020536f6d65280a202020202020202044656c656761746543726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a2020202020202020202064656c65676174653a2044656c6567617465426f7468207b0a2020202020202020202020207374616b655f706f6f6c3a206f6e6c7931732c0a20202020202020202020202064656c65676174655f726570726573656e7461746976653a20416c776179734e6f436f6e666964656e63652c0a202020202020202020207d2c0a20202020202020207d2c0a20202020202029203d3d206c186973742e6174286365727469666963617465732c2031312900161533015491c46578706563740a202020202020536f6d65280a202020202020202044656c656761746543726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a2020202020202020202064656c65676174653a2044656c6567617465566f746528416c776179734e6f436f6e666964656e6365292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c2031302900161533015491be6578706563740a202020202020536f6d65280a202020202020202044656c656761746543726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a2020202020202020202064656c65676174653a2044656c6567617465566f746528416c776179734162737461696e292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c20392900161533015491cb6578706563740a202020202020536f6d65280a202020202020202044656c656761746543726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a2020202020202020202064656c65676174653a2044656c6567617465566f7465285265676973746572656428536372697074286f6e6c7930732929292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c20382900161533015491d46578706563740a202020202020536f6d65280a202020202020202044656c656761746543726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a2020202020202020202064656c65676174653a2044656c6567617465566f7465285265676973746572656428566572696669636174696f6e4b6579286f6e6c7930732929292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c20372900161533015491a86578706563740a202020202020536f6d65280a2020202020202020556e726567697374657243726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a20202020202020202020726566756e643a204e657665722c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c20362900161533015491a76578706563740a202020202020536f6d65280a2020202020202020526567697374657243726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a202020202020202020206465706f7369743a204e657665722c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c203529001615330154917e6578706563740a202020202020536f6d65285265746972655374616b65506f6f6c207b207374616b655f706f6f6c3a206f6e6c7931732c2061745f65706f63683a2031333337207d29203d3d206c6973742e6174280a20202020202020206365727469666963617465732c0a2020202020202020342c0a20202020202029001615330154917d6578706563740a202020202020536f6d652852656769737465725374616b65506f6f6c207b207374616b655f706f6f6c3a206f6e6c7931732c207672663a206f6e6c793973207d29203d3d206c6973742e6174280a20202020202020206365727469666963617465732c0a2020202020202020332c0a2020202020202900161533015491a86578706563740a202020202020536f6d65280a2020202020202020556e726567697374657243726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a20202020202020202020726566756e643a204e657665722c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c20322900161533015491a76578706563740a202020202020536f6d65280a2020202020202020526567697374657243726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a202020202020202020206465706f7369743a204e657665722c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c20312900161533015491896578706563740a202020202020536f6d6528526567697374657243726564656e7469616c207b2063726564656e7469616c3a20536372697074286f6e6c793273292c206465706f7369743a204e65766572207d29203d3d206c6973742e6174280a20202020202020206365727469666963617465732c0a2020202020202020302c0a2020202020202900163001001222533301900214c103d87a8000132325333017300b00313374a90001980e00125eb804ccc014014004cdc0001a4002603a0066036004020020602e60306030603060306030603060306030603060306030603060306030603060286ea802c038038c058c05cc05cc05cc05cc05cc05cc05cc05cc05cc05cc05cc05cc05cc05cc04cdd50051bac3015301630163016301630163012375401264a66601e66e1d20043011375400226464a66602266ebd300122d8799f581c11111111111111111111111111111111111111111111111111111111ff0030173018002153330113370e900118099baa001149854cc04924011e65787065637420536372697074282e2e29203d2063726564656e7469616c00161533012491416578706563742044656c6567617465426c6f636b50726f64756374696f6e207b207374616b655f706f6f6c3a206f6e6c793173207d203d3d2064656c656761746500163016001301237540022a66020921406578706563742044656c656761746543726564656e7469616c207b2063726564656e7469616c2c2064656c6567617465207d203d206365727469666963617465001630143015004533300d3001300f375400a2a66602260206ea80145261616370e90001bad3011001300d37540022c601e6020004601c002601c004601800260106ea8004526153300649011856616c696461746f722072657475726e65642066616c73650013656153300449013d65787065637420536f6d652831305f3030305f30303029203d207472616e73616374696f6e2e63757272656e745f74726561737572795f616d6f756e74001615330034912f65787065637420536f6d6528313429203d207472616e73616374696f6e2e74726561737572795f646f6e6174696f6e001615330024918e65787065637420536f6d652844656c656761746543726564656e7469616c207b0a20202020202063726564656e7469616c3a20536372697074282e2e292c0a20202020202064656c65676174653a2044656c6567617465426c6f636b50726f64756374696f6e282e2e292c0a202020207d29203d206c6973742e6174286365727469666963617465732c2032302900165734ae7155ceaab9e5573eae815d0aba21", - "hash": "1880cc40ac12861906f257d98bf6da2eac5a71ca5e983651f2eeab2d" - }, - { - "title": "certificates.purposes.else", - "compiledCode": "59199e0101003232323232323232323232253330053232323232533300a3370e900318061baa00113232323232323253330113005301337540022a66602266e1d2080dac409375a602e60286ea80044c94ccc048c018c050dd50008a99980919b8748070dd6980c180a9baa0011323253330143375e9812dd8799fd8799fd87a9f581c22222222222222222222222222222222222222222222222222222222ffd87a80ffff00330010054800054ccc050cdd7a612dd8799fd8799fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87a80ffff00330010054800854ccc050cdd7a612dd8799fd87a9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87a80ffff00330010054801054ccc050cdd7a6149d8799fd905009f581c1111111111111111111111111111111111111111111111111111111158209999999999999999999999999999999999999999999999999999999999999999ffff00330010054801854ccc050cdd7a612ad8799fd905019f581c11111111111111111111111111111111111111111111111111111111190539ffff00330010054802054ccc050cdd7a612dd8799fd8799fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87a80ffff00330010054802854ccc050cdd7a612dd8799fd87a9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87a80ffff00330010054803054ccc050cdd7a6154d8799fd87b9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87a9fd8799fd8799f581c00000000000000000000000000000000000000000000000000000000ffffffffff00330010054803854ccc050cdd7a6154d8799fd87b9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87a9fd8799fd87a9f581c00000000000000000000000000000000000000000000000000000000ffffffffff00330010054804054ccc050cdd7a6131d8799fd87b9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87a9fd87a80ffffff00330010054804854ccc050cdd7a6131d8799fd87b9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87a9fd87b80ffffff00330010054805054ccc050cdd7a614fd8799fd87b9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87b9f581c11111111111111111111111111111111111111111111111111111111d87b80ffffff00330010054805854ccc050cdd7a6151d8799fd87c9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd8799f581c11111111111111111111111111111111111111111111111111111111ff1a002dc6c0ffff00330010054806054ccc050cdd7a6136d8799fd87c9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87a9fd87b80ff1a002dc6c0ffff00330010054806854ccc050cdd7a6154d8799fd87c9fd8799f581c00000000000000000000000000000000000000000000000000000000ffd87b9f581c11111111111111111111111111111111111111111111111111111111d87b80ff1a002dc6c0ffff00330010054807054ccc050cdd7a614dd8799fd905029fd8799f581c00000000000000000000000000000000000000000000000000000000ffd8799f581c22222222222222222222222222222222222222222222222222222222ffffff00330010054807854ccc050cdd7a612bd8799fd905039fd8799f581c00000000000000000000000000000000000000000000000000000000ffffff00330010054808054ccc050cdd7a612fd8799fd87d9fd8799f581c00000000000000000000000000000000000000000000000000000000ff1a002dc6c0ffff00330010054808854ccc050cdd7a612fd8799fd87f9fd8799f581c00000000000000000000000000000000000000000000000000000000ff1a002dc6c0ffff00330010054809054ccc050cdd7a612ad8799fd87e9fd8799f581c00000000000000000000000000000000000000000000000000000000ffffff0033001005480984c94ccc054c024c05cdd5000899299980b19b8748010c060dd500089919299980c19b8748008c068dd5180f0010a99980c1806180d1baa00114a202e02e603a603c00260326ea8004054c06cc060dd500080a19800802a40502a6602a9201a56578706563740a202020202020536f6d65280a202020202020202055706461746544656c6567617465526570726573656e746174697665207b0a2020202020202020202064656c65676174655f726570726573656e7461746976653a20566572696669636174696f6e4b6579286f6e6c793073292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c2031392900161533015491c66578706563740a202020202020536f6d65280a2020202020202020556e726567697374657244656c6567617465526570726573656e746174697665207b0a2020202020202020202064656c65676174655f726570726573656e7461746976653a20566572696669636174696f6e4b6579286f6e6c793073292c0a20202020202020202020726566756e643a20335f3030305f3030302c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c2031382900161533015491c56578706563740a202020202020536f6d65280a2020202020202020526567697374657244656c6567617465526570726573656e746174697665207b0a2020202020202020202064656c65676174655f726570726573656e7461746976653a20566572696669636174696f6e4b6579286f6e6c793073292c0a202020202020202020206465706f7369743a20335f3030305f3030302c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c2031372900161533015491b26578706563740a202020202020536f6d65280a202020202020202052657469726546726f6d436f6e737469747574696f6e616c436f6d6d6974746565207b0a20202020202020202020636f6e737469747574696f6e616c5f636f6d6d69747465655f6d656d6265723a20566572696669636174696f6e4b6579286f6e6c793073292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c2031362900161533015491e06578706563740a202020202020536f6d65280a2020202020202020417574686f72697a65436f6e737469747574696f6e616c436f6d6d697474656550726f7879207b0a20202020202020202020636f6e737469747574696f6e616c5f636f6d6d69747465655f6d656d6265723a20566572696669636174696f6e4b6579286f6e6c793073292c0a2020202020202020202070726f78793a20566572696669636174696f6e4b6579286f6e6c793273292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c2031352900161533015491ff6578706563740a202020202020536f6d65280a20202020202020205265676973746572416e6444656c656761746543726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a2020202020202020202064656c65676174653a2044656c6567617465426f7468207b0a2020202020202020202020207374616b655f706f6f6c3a206f6e6c7931732c0a20202020202020202020202064656c65676174655f726570726573656e7461746976653a20416c776179734e6f436f6e666964656e63652c0a202020202020202020207d2c0a20202020202020202020646541706f7369743a20335f3030305f3030302c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c2031342900161533015491ed6578706563740a202020202020536f6d65280a20202020202020205265676973746572416e6444656c656761746543726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a2020202020202020202064656c65676174653a2044656c6567617465566f746528416c776179734e6f436f6e666964656e6365292c0a202020202020202020206465706f7369743a20335f3030305f3030302c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c2031332900161533015491ec6578706563740a202020202020536f6d65280a20202020202020205265676973746572416e6444656c656761746543726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a2020202020202020202064656c65676174653a2044656c6567617465426c6f636b50726f64756374696f6e286f6e6c793173292c0a202020202020202020206465706f7369743a20335f3030305f3030302c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c2031322900161533015491ff6578706563740a202020202020536f6d65280a202020202020202044656c656761746543726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a2020202020202020202064656c65676174653a2044656c6567617465426f7468207b0a2020202020202020202020207374616b655f706f6f6c3a206f6e6c7931732c0a20202020202020202020202064656c65676174655f726570726573656e7461746976653a20416c776179734e6f436f6e666964656e63652c0a202020202020202020207d2c0a20202020202020207d2c0a20202020202029203d3d206c186973742e6174286365727469666963617465732c2031312900161533015491c46578706563740a202020202020536f6d65280a202020202020202044656c656761746543726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a2020202020202020202064656c65676174653a2044656c6567617465566f746528416c776179734e6f436f6e666964656e6365292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c2031302900161533015491be6578706563740a202020202020536f6d65280a202020202020202044656c656761746543726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a2020202020202020202064656c65676174653a2044656c6567617465566f746528416c776179734162737461696e292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c20392900161533015491cb6578706563740a202020202020536f6d65280a202020202020202044656c656761746543726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a2020202020202020202064656c65676174653a2044656c6567617465566f7465285265676973746572656428536372697074286f6e6c7930732929292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c20382900161533015491d46578706563740a202020202020536f6d65280a202020202020202044656c656761746543726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a2020202020202020202064656c65676174653a2044656c6567617465566f7465285265676973746572656428566572696669636174696f6e4b6579286f6e6c7930732929292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c20372900161533015491a86578706563740a202020202020536f6d65280a2020202020202020556e726567697374657243726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a20202020202020202020726566756e643a204e657665722c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c20362900161533015491a76578706563740a202020202020536f6d65280a2020202020202020526567697374657243726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a202020202020202020206465706f7369743a204e657665722c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c203529001615330154917e6578706563740a202020202020536f6d65285265746972655374616b65506f6f6c207b207374616b655f706f6f6c3a206f6e6c7931732c2061745f65706f63683a2031333337207d29203d3d206c6973742e6174280a20202020202020206365727469666963617465732c0a2020202020202020342c0a20202020202029001615330154917d6578706563740a202020202020536f6d652852656769737465725374616b65506f6f6c207b207374616b655f706f6f6c3a206f6e6c7931732c207672663a206f6e6c793973207d29203d3d206c6973742e6174280a20202020202020206365727469666963617465732c0a2020202020202020332c0a2020202020202900161533015491a86578706563740a202020202020536f6d65280a2020202020202020556e726567697374657243726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a20202020202020202020726566756e643a204e657665722c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c20322900161533015491a76578706563740a202020202020536f6d65280a2020202020202020526567697374657243726564656e7469616c207b0a2020202020202020202063726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a202020202020202020206465706f7369743a204e657665722c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286365727469666963617465732c20312900161533015491896578706563740a202020202020536f6d6528526567697374657243726564656e7469616c207b2063726564656e7469616c3a20536372697074286f6e6c793273292c206465706f7369743a204e65766572207d29203d3d206c6973742e6174280a20202020202020206365727469666963617465732c0a2020202020202020302c0a2020202020202900163001001222533301900214c103d87a8000132325333017300b00313374a90001980e00125eb804ccc014014004cdc0001a4002603a0066036004020020602e60306030603060306030603060306030603060306030603060306030603060286ea802c038038c058c05cc05cc05cc05cc05cc05cc05cc05cc05cc05cc05cc05cc05cc05cc04cdd50051bac3015301630163016301630163012375401264a66601e66e1d20043011375400226464a66602266ebd300122d8799f581c11111111111111111111111111111111111111111111111111111111ff0030173018002153330113370e900118099baa001149854cc04924011e65787065637420536372697074282e2e29203d2063726564656e7469616c00161533012491416578706563742044656c6567617465426c6f636b50726f64756374696f6e207b207374616b655f706f6f6c3a206f6e6c793173207d203d3d2064656c656761746500163016001301237540022a66020921406578706563742044656c656761746543726564656e7469616c207b2063726564656e7469616c2c2064656c6567617465207d203d206365727469666963617465001630143015004533300d3001300f375400a2a66602260206ea80145261616370e90001bad3011001300d37540022c601e6020004601c002601c004601800260106ea8004526153300649011856616c696461746f722072657475726e65642066616c73650013656153300449013d65787065637420536f6d652831305f3030305f30303029203d207472616e73616374696f6e2e63757272656e745f74726561737572795f616d6f756e74001615330034912f65787065637420536f6d6528313429203d207472616e73616374696f6e2e74726561737572795f646f6e6174696f6e001615330024918e65787065637420536f6d652844656c656761746543726564656e7469616c207b0a20202020202063726564656e7469616c3a20536372697074282e2e292c0a20202020202064656c65676174653a2044656c6567617465426c6f636b50726f64756374696f6e282e2e292c0a202020207d29203d206c6973742e6174286365727469666963617465732c2032302900165734ae7155ceaab9e5573eae815d0aba21", - "hash": "1880cc40ac12861906f257d98bf6da2eac5a71ca5e983651f2eeab2d" - }, - { - "title": "mint.test_1.mint", - "redeemer": { - "title": "_rdmr", - "schema": { - "$ref": "#/definitions/Data" - } - }, - "compiledCode": "590f91010100323232323232323232323225333004323232323253323300a3001300c375400426464646464646464649454ccc048cdd79ba63301733760981225820923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec004c0103d87980004bd6f7b630180c180c980c980c980c980c980c980c980c980c980c980a9baa00d149854cc04d240137657870656374205b5061697228766f69645f686173682c20766f6964295d203d3d20646963742e746f5f706169727328646174756d7329001653330113375e6e9ccc058c014cc059300127d8799f5820000000000000000000000000000000000000000000000000000000000000000000ff0033016300533016300448811c000000000000000000000000000000000000000000000000000000000033016374c6006904044bd1980b260103d8798000330164c103d87a80004bd7025eb812f5c0602e603060286ea80305261533012491ff6578706563740a202020205b0a202020202020496e707574207b0a20202020202020206f75747075745f7265666572656e63653a204f75747075745265666572656e6365207b0a202020202020202020207472616e73616374696f6e5f69643a206e756c6c33322c0a202020202020202020206f75747075745f696e6465783a20302c0a20202020202020207d2c0a20202020202020206f75747075743a204f7574707574207b0a20202020202020202020616464726573733a20616464726573732e66726f6d5f766572696669636174696f6e5f6b6579286e756c6c3238292c0a2020202020202020202076616c75653a206173736574732e66726f6d5f746c6f76656c61636528315f3030305f303030292c0a20202020202020202020646174756d3a204e6f446174756d2c0a202020202020202020207265666572656e63655f7363726970743a204e6f6e652c0a20202020202020207d2c0a2020202020207d2c0a202020205d203d3d20696e70757473001653330103375e6e9ccc054dd39980a9ba9005330154c1064561696b656e00330154c1012d004bd701980a9ba733015375200a6602a981084763617264616e6f00330154c10101004bd701980a9ba733015375200c6602a981054474756e6100330154c1091b00005af3107a4000004bd7025eb80dd399198008009bab301730183018301830183014375401844a66602c002297ae0132333222323300100100322533301c00110031323301e374e6603c6ea4018cc078c06c004cc078c0700052f5c0660060066040004603c0026eb8c054004dd5980b00099801801980d001180c0008a4c2a660229201a86578706563740a202020205b0a202020202020286f746865725f706f6c6963795f69642c202261696b656e222c202d3134292c0a202020202020286f746865725f706f6c6963795f69642c202263617264616e6f222c2031292c0a202020202020286f75725f706f6c6963795f69642c202274756e61222c20313030303030303030303030303030292c0a202020205d203d3d206173736574732e666c617474656e286d696e7429001633232323232323232253330183370e600c00290030a99980c19baf300c3301d300c3301d300b48811c00000000000000000000000000000000000000000000000000000000003301d374c6014904044bd1980ea60126d87a9f5820923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ecff003301d4c103d87a80004bd7025eb80cc0100052000153330183375e60186603a60186603a6600660169111c000000000000000000000000000000000000000000000000000000000048811c00000000000000000000000000000000000000000000000000000000003301d374c666600466660046014904044bd00724410474756e610048202034a1f8af0b403522010561696b656e0048150cc075300103d87980003301d4c103d87a80004bd7025eb80cc0100052002153330183375e60186603a60186603a6600660186603a66e9520023301d4c011e581c00000000000000000000000000000000000000000000000000000000004bd701980ea60103d87a80004bd702451c00000000000000000000000000000000000000000000000000000000003301d374c66660046014904044bd006a450763617264616e6f0048008cc075300103d87980003301d4c122d8799f581c68ad54b3a8124d9fe5caaaf2011a85d72096e696a2fb3d7f86c41717ff004bd7025eb80cc0100052004149854cc0652401ff6578706563740a20202020536f6d65280a2020202020204f7574707574207b0a2020202020202020616464726573733a20616464726573732e66726f6d5f736372697074286e756c6c3238290a202020202020202020207c3e20616464726573732e776974685f64656c65676174696f6e5f6b6579286e756c6c3238292c0a202020202020202076616c75653a206173736574732e66726f6d5f6c6f76656c61636528315f3030305f303030290a202020202020202020207c3e206173736574732e616464286f746865725f706f6c6963795f69642c202263617264616e6f222c2031292c0a2020202020202020646174756d3a204e6f446174756d2c0a2096202020202020207265666572656e63655f7363726970743a20536f6d65280a2020202020202020202023223638616435346233613831323464396665356361616166323031316138356437323039366536393661326662336437663836633431373137222c0a2020202020202020292c0a2020202020207d2c0a2020202029203d3d206c6973742e6174286f7574707574732c20322900161533019491ff6578706563740a20202020536f6d65280a2020202020204f7574707574207b0a2020202020202020616464726573733a20616464726573732e66726f6d5f766572696669636174696f6e5f6b6579286e756c6c3238290a202020202020202020207c3e20616464726573732e776974685f64656c65676174696f6e5f6b6579286e756c6c3238292c0a202020202020202076616c75653a206173736574732e66726f6d5f6c6f76656c61636528315f3030305f303030290a202020202020202020207c3e206173736574732e616464286f75725f706f6c6963795f69642c202274756e61222c20313030303030303030303030303030290a202020202020208d2020207c3e206173736574732e616464286f746865725f706f6c6963795f69642c202261696b656e222c203432292c0a2020202020202020646174756d3a204e6f446174756d2c0a20202020202020207265666572656e63655f7363726970743a204e6f6e652c0a2020202020207d2c0a2020202029203d3d206c6973742e6174286f7574707574732c20312900161533019491f26578706563740a20202020536f6d65280a2020202020204f7574707574207b0a2020202020202020616464726573733a20616464726573732e66726f6d5f766572696669636174696f6e5f6b6579286e756c6c3238292c0a202020202020202076616c75653a206173736574732e66726f6d5f6c6f76656c61636528315f3030305f303030292c0a2020202020202020646174756d3a20446174756d4861736828766f69645f68617368292c0a20202020202020207265666572656e63655f7363726970743a204e6f6e652c0a2020202020207d2c0a2020202029203d3d206c6973742e6174286f7574707574732c2030290016153301949120657870656374206c6973742e6c656e677468286f75747075747329203d3d203300162222533301a301100110041323233001001006225333021001133022337606ea4018dd3001a5eb7bdb1804c8c8c8c94ccc084cdc800500109981319bb037520146e9801c01454ccc084cdc78050010992999811180c98121baa001133027337606ea402cc0a0c094dd5000802080219299981129998130008a5114a0298103d87a80001301633027374c00297ae03233001001002225333027001133028337606ea402cdd400525eb7bdb1804c8c8c8c94ccc09ccdc800780109981619bb0375201e6ea003801454ccc09ccdc78078010992999814180f98151baa00113302d337606ea4040c0b8c0acdd50008020802192999814180f8008a6103d87a80001301c3302d375000297ae03370000201c26605866ec0dd48011ba800133006006003375a60520066eb8c09c008c0ac008c0a40044cc098cdd81ba9002374c0026600c00c0066eacc08c00cdd7181080118128011811800991900118058009980f99bb037520046ea00052f5bded8c044601666038603a60346ea8008cc070c02ccc070c02ccc070c02ccc070dd4800a5eb812f5c097ae04bd701800800911299980d0010a60103d87a8000132325333018300f0031300c3301d0024bd70099980280280099b8000348004c07800cc070008c004004894ccc05c00452000133700900119801001180d000980080091299980a8008a4c264a66602c00229309919299980a19b90375c602c60340086eb8c0580084cc014014cc06400800454cc055241326b65797320696e206173736f63696174697665206c697374206172656e277420696e20617363656e64696e67206f726465720016301a002301800130180013758602a602c602c60246ea802894ccc03cc01800452f5bded8c0264646600200297adef6c60225333016001133017337609801014000374c00697adef6c6013232323253330163372091010000213301b337609801014000374c00e00a2a66602c66e3d2210000213301b337609801014000374c00e00626603666ec0dd48011ba600133006006003375660300066eb8c058008c068008c060004c8cc0040052f5bded8c044a66602a00226602c66ec13001014000375000697adef6c6013232323253330153372091010000213301a337609801014000375000e00a2a66602a66e3d2210000213301a337609801014000375000e00626603466ec0dd48011ba800133006006003375a602e0066eb8c054008c064008c05c0048c008cc04cc008cc04cdd4800a5eb80cc04d30103d87a80004bd701ba548000c94ccc0400040284c8c94ccc04800403054ccc048c0540044c8c94ccc040c01cc048dd5001099299999980c8010a999808980418099baa002153330153014375400420020200200200200200206eb8c058c04cdd500100718090019808001006180a00118090009bab3011301230123012301230123012301230123012300e375400c6eb8c040c034dd50011b874800058c038c03c008c034004c034008c02c004c01cdd50008a4c2a6600a9211856616c696461746f722072657475726e65642066616c736500136561533003490139657870656374205b50616972284d696e74286f746865725f706f6c6963795f6964292c2064617461292c205f5d203d2072656465656d657273001615330024911265787065637420566f6964203d206461746100165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "cae8c1517af745ea844b9420abed70cb8d46c094d8b32cc432c72add" - }, - { - "title": "mint.test_1.else", - "compiledCode": "590f91010100323232323232323232323225333004323232323253323300a3001300c375400426464646464646464649454ccc048cdd79ba63301733760981225820923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec004c0103d87980004bd6f7b630180c180c980c980c980c980c980c980c980c980c980c980a9baa00d149854cc04d240137657870656374205b5061697228766f69645f686173682c20766f6964295d203d3d20646963742e746f5f706169727328646174756d7329001653330113375e6e9ccc058c014cc059300127d8799f5820000000000000000000000000000000000000000000000000000000000000000000ff0033016300533016300448811c000000000000000000000000000000000000000000000000000000000033016374c6006904044bd1980b260103d8798000330164c103d87a80004bd7025eb812f5c0602e603060286ea80305261533012491ff6578706563740a202020205b0a202020202020496e707574207b0a20202020202020206f75747075745f7265666572656e63653a204f75747075745265666572656e6365207b0a202020202020202020207472616e73616374696f6e5f69643a206e756c6c33322c0a202020202020202020206f75747075745f696e6465783a20302c0a20202020202020207d2c0a20202020202020206f75747075743a204f7574707574207b0a20202020202020202020616464726573733a20616464726573732e66726f6d5f766572696669636174696f6e5f6b6579286e756c6c3238292c0a2020202020202020202076616c75653a206173736574732e66726f6d5f746c6f76656c61636528315f3030305f303030292c0a20202020202020202020646174756d3a204e6f446174756d2c0a202020202020202020207265666572656e63655f7363726970743a204e6f6e652c0a20202020202020207d2c0a2020202020207d2c0a202020205d203d3d20696e70757473001653330103375e6e9ccc054dd39980a9ba9005330154c1064561696b656e00330154c1012d004bd701980a9ba733015375200a6602a981084763617264616e6f00330154c10101004bd701980a9ba733015375200c6602a981054474756e6100330154c1091b00005af3107a4000004bd7025eb80dd399198008009bab301730183018301830183014375401844a66602c002297ae0132333222323300100100322533301c00110031323301e374e6603c6ea4018cc078c06c004cc078c0700052f5c0660060066040004603c0026eb8c054004dd5980b00099801801980d001180c0008a4c2a660229201a86578706563740a202020205b0a202020202020286f746865725f706f6c6963795f69642c202261696b656e222c202d3134292c0a202020202020286f746865725f706f6c6963795f69642c202263617264616e6f222c2031292c0a202020202020286f75725f706f6c6963795f69642c202274756e61222c20313030303030303030303030303030292c0a202020205d203d3d206173736574732e666c617474656e286d696e7429001633232323232323232253330183370e600c00290030a99980c19baf300c3301d300c3301d300b48811c00000000000000000000000000000000000000000000000000000000003301d374c6014904044bd1980ea60126d87a9f5820923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ecff003301d4c103d87a80004bd7025eb80cc0100052000153330183375e60186603a60186603a6600660169111c000000000000000000000000000000000000000000000000000000000048811c00000000000000000000000000000000000000000000000000000000003301d374c666600466660046014904044bd00724410474756e610048202034a1f8af0b403522010561696b656e0048150cc075300103d87980003301d4c103d87a80004bd7025eb80cc0100052002153330183375e60186603a60186603a6600660186603a66e9520023301d4c011e581c00000000000000000000000000000000000000000000000000000000004bd701980ea60103d87a80004bd702451c00000000000000000000000000000000000000000000000000000000003301d374c66660046014904044bd006a450763617264616e6f0048008cc075300103d87980003301d4c122d8799f581c68ad54b3a8124d9fe5caaaf2011a85d72096e696a2fb3d7f86c41717ff004bd7025eb80cc0100052004149854cc0652401ff6578706563740a20202020536f6d65280a2020202020204f7574707574207b0a2020202020202020616464726573733a20616464726573732e66726f6d5f736372697074286e756c6c3238290a202020202020202020207c3e20616464726573732e776974685f64656c65676174696f6e5f6b6579286e756c6c3238292c0a202020202020202076616c75653a206173736574732e66726f6d5f6c6f76656c61636528315f3030305f303030290a202020202020202020207c3e206173736574732e616464286f746865725f706f6c6963795f69642c202263617264616e6f222c2031292c0a2020202020202020646174756d3a204e6f446174756d2c0a2096202020202020207265666572656e63655f7363726970743a20536f6d65280a2020202020202020202023223638616435346233613831323464396665356361616166323031316138356437323039366536393661326662336437663836633431373137222c0a2020202020202020292c0a2020202020207d2c0a2020202029203d3d206c6973742e6174286f7574707574732c20322900161533019491ff6578706563740a20202020536f6d65280a2020202020204f7574707574207b0a2020202020202020616464726573733a20616464726573732e66726f6d5f766572696669636174696f6e5f6b6579286e756c6c3238290a202020202020202020207c3e20616464726573732e776974685f64656c65676174696f6e5f6b6579286e756c6c3238292c0a202020202020202076616c75653a206173736574732e66726f6d5f6c6f76656c61636528315f3030305f303030290a202020202020202020207c3e206173736574732e616464286f75725f706f6c6963795f69642c202274756e61222c20313030303030303030303030303030290a202020202020208d2020207c3e206173736574732e616464286f746865725f706f6c6963795f69642c202261696b656e222c203432292c0a2020202020202020646174756d3a204e6f446174756d2c0a20202020202020207265666572656e63655f7363726970743a204e6f6e652c0a2020202020207d2c0a2020202029203d3d206c6973742e6174286f7574707574732c20312900161533019491f26578706563740a20202020536f6d65280a2020202020204f7574707574207b0a2020202020202020616464726573733a20616464726573732e66726f6d5f766572696669636174696f6e5f6b6579286e756c6c3238292c0a202020202020202076616c75653a206173736574732e66726f6d5f6c6f76656c61636528315f3030305f303030292c0a2020202020202020646174756d3a20446174756d4861736828766f69645f68617368292c0a20202020202020207265666572656e63655f7363726970743a204e6f6e652c0a2020202020207d2c0a2020202029203d3d206c6973742e6174286f7574707574732c2030290016153301949120657870656374206c6973742e6c656e677468286f75747075747329203d3d203300162222533301a301100110041323233001001006225333021001133022337606ea4018dd3001a5eb7bdb1804c8c8c8c94ccc084cdc800500109981319bb037520146e9801c01454ccc084cdc78050010992999811180c98121baa001133027337606ea402cc0a0c094dd5000802080219299981129998130008a5114a0298103d87a80001301633027374c00297ae03233001001002225333027001133028337606ea402cdd400525eb7bdb1804c8c8c8c94ccc09ccdc800780109981619bb0375201e6ea003801454ccc09ccdc78078010992999814180f98151baa00113302d337606ea4040c0b8c0acdd50008020802192999814180f8008a6103d87a80001301c3302d375000297ae03370000201c26605866ec0dd48011ba800133006006003375a60520066eb8c09c008c0ac008c0a40044cc098cdd81ba9002374c0026600c00c0066eacc08c00cdd7181080118128011811800991900118058009980f99bb037520046ea00052f5bded8c044601666038603a60346ea8008cc070c02ccc070c02ccc070c02ccc070dd4800a5eb812f5c097ae04bd701800800911299980d0010a60103d87a8000132325333018300f0031300c3301d0024bd70099980280280099b8000348004c07800cc070008c004004894ccc05c00452000133700900119801001180d000980080091299980a8008a4c264a66602c00229309919299980a19b90375c602c60340086eb8c0580084cc014014cc06400800454cc055241326b65797320696e206173736f63696174697665206c697374206172656e277420696e20617363656e64696e67206f726465720016301a002301800130180013758602a602c602c60246ea802894ccc03cc01800452f5bded8c0264646600200297adef6c60225333016001133017337609801014000374c00697adef6c6013232323253330163372091010000213301b337609801014000374c00e00a2a66602c66e3d2210000213301b337609801014000374c00e00626603666ec0dd48011ba600133006006003375660300066eb8c058008c068008c060004c8cc0040052f5bded8c044a66602a00226602c66ec13001014000375000697adef6c6013232323253330153372091010000213301a337609801014000375000e00a2a66602a66e3d2210000213301a337609801014000375000e00626603466ec0dd48011ba800133006006003375a602e0066eb8c054008c064008c05c0048c008cc04cc008cc04cdd4800a5eb80cc04d30103d87a80004bd701ba548000c94ccc0400040284c8c94ccc04800403054ccc048c0540044c8c94ccc040c01cc048dd5001099299999980c8010a999808980418099baa002153330153014375400420020200200200200200206eb8c058c04cdd500100718090019808001006180a00118090009bab3011301230123012301230123012301230123012300e375400c6eb8c040c034dd50011b874800058c038c03c008c034004c034008c02c004c01cdd50008a4c2a6600a9211856616c696461746f722072657475726e65642066616c736500136561533003490139657870656374205b50616972284d696e74286f746865725f706f6c6963795f6964292c2064617461292c205f5d203d2072656465656d657273001615330024911265787065637420566f6964203d206461746100165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "cae8c1517af745ea844b9420abed70cb8d46c094d8b32cc432c72add" - }, - { - "title": "mint.test_2.mint", - "redeemer": { - "title": "_tmp2", - "schema": { - "$ref": "#/definitions/Void" - } - }, - "compiledCode": "58a70101003232323232323225333002323232323253330073370e900018049baa0011323253300a49010e736c6668696f65723777387972750014a2a66601066e1d2000300a37540062a66601860166ea800c5261616375c601860146ea800458c02cc030008c028004c028008c020004c014dd50008a4c2a660069211856616c696461746f722072657475726e65642066616c736500136565734ae7155ceaab9e5573eae855d101", - "hash": "0c7fdf894714b91be17feb6d255619d0c45c14075faf7f9ccce61d78" - }, - { - "title": "mint.test_2.else", - "compiledCode": "58a70101003232323232323225333002323232323253330073370e900018049baa0011323253300a49010e736c6668696f65723777387972750014a2a66601066e1d2000300a37540062a66601860166ea800c5261616375c601860146ea800458c02cc030008c028004c028008c020004c014dd50008a4c2a660069211856616c696461746f722072657475726e65642066616c736500136565734ae7155ceaab9e5573eae855d101", - "hash": "0c7fdf894714b91be17feb6d255619d0c45c14075faf7f9ccce61d78" - }, - { - "title": "proposing_all.guardrails.propose", - "redeemer": { - "title": "_redeemer", - "schema": { - "$ref": "#/definitions/Void" - } - }, - "compiledCode": "590cb00101003232323232323232323232323232253330073232323232533300c3370e900518071baa00113232323232323232323232323232323232323232323232324a264a666048602a604c6ea80044c94ccc094c04cdd6980718141baa001153330253375e601a60506ea800530122d8799f581c00000000000000000000000000000000000000000000000000000000ff00153330253375e601860506ea8005300103d87f8000149854cc0992412e6578706563742070726f6365647572652e676f7665726e616e63655f616374696f6e203d3d204e696365506f6c6c001615330264913a6578706563742070726f6365647572652e72657475726e5f61646472657373203d3d20566572696669636174696f6e4b6579286e756c6c3238290016024302a302737540020446601a02490081980419806008a401c4a66604666ebd30012dd87e9fd87a80d8799fd8799f581c00000000000000000000000000000000000000000000000000000000ffffff00001149854cc0912401996578706563740a202020202020202020204e6577436f6e737469747574696f6e207b0a202020202020202020202020616e636573746f723a204e6f6e652c0a202020202020202020202020636f6e737469747574696f6e3a20436f6e737469747574696f6e207b2067756172647261696c733a20536f6d65286e756c6c323829207d2c0a202020202020202020207d203d3d20616374696f6e0016330073300b0104803094ccc088cdd7a6010ed87e9fd87a80d8799fd87a80ffff00001149854cc08d2401916578706563740a202020202020202020204e6577436f6e737469747574696f6e207b0a202020202020202020202020616e636573746f723a204e6f6e652c0a202020202020202020202020636f6e737469747574696f6e3a20436f6e737469747574696f6e207b2067756172647261696c733a204e6f6e65207d2c0a202020202020202020207d203d3d20616374696f6e0016330063300a00f480288c94ccc088c04cc090dd50008a99981119baf3374a900419813a6103d87a8000330274c1249fd8799f581c00000000000000000000000000000000000000000000000000000000ffff00330274c126a1d8799f581c00000000000000000000000000000000000000000000000000000000ff1901f4003302730283025375400297ae0002149854cc08d241e96578706563740a20202020202020202020436f6e737469747574696f6e616c436f6d6d6974746565207b0a202020202020202020202020616e636573746f723a204e6f6e652c0a202020202020202020202020657669637465645f6d656d626572733a205b566572696669636174696f6e4b6579286e756c6c3238295d2c0a20202020202020202020202061646465645f6d656d626572733a205b5061697228566572696669636174696f6e4b6579286e756c6c3238292c20353030295d2c0a20202020202020202020202071756f72756d2c0a202020202020202020207d203d3d20616374696f6e001615330234912865787065637420536f6d652871756f72756d29203d20726174696f6e616c2e6e657728312c203229001653330214a0298103d87a8000153330214a02601a6604c601a6604c6ea120013302637509001a5eb812f5c02601a6604c601a6604c981010100330264c10102004bd7025eb80cc014cc0240392008253330203375e98107d87c9fd87a80ff00001149854cc085240130657870656374204e6f436f6e666964656e6365207b20616e636573746f723a204e6f6e65207d203d3d20616374696f6e0016330043300800d4801894ccc07ccdc3a400860426ea800454ccc07cc040c084dd51812981318111baa0011498068068cc00ccc01c03120042533301e3375e98012fd87b9fa1d8799f581c11111111111111111111111111111111111111111111111111111111ff1a000f4240d87a80ff00001149854cc07d2401ff6578706563740a2020202020202020202054726561737572795769746864726177616c207b0a20202020202020202020202062656e656669636961726965733a205b0a202020202020202020202020202050616972280a20202020202020202020202020202020566572696669636174696f6e4b6579280a20202020202020202020202020202020202023223131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131222c0a20202020202020202020202020202020292c0a20202020202020202020202020202020315f3030305f3030302c0a202020202020202020204920202020292c0a2020202020202020202020205d2c0a20202020202020202020202067756172647261696c733a204e6f6e652c0a202020202020202020207d203d3d20616374696f6e0016330023300600b4800894ccc074cdd7a60135d87a9fd8799fd8799f5820000000000000000000000000000000000000000000000000000000000000000000ffffd8799f0b00ffff00001149854cc07924019d6578706563740a2020202020202020202048617264466f726b207b0a202020202020202020202020616e636573746f723a20536f6d6528476f7665726e616e6365416374696f6e4964286e756c6c33322c203029292c0a2020202020202020202020206e65775f76657273696f6e3a2050726f746f636f6c56657273696f6e2831312c2030292c0a202020202020202020207d203d3d20616374696f6e0016330013300500a4800094ccc070cdd7a6010dd87a9fd87a80d8799f0a00ffff00001149854cc07524015b6578706563740a2020202020202020202048617264466f726b207b20616e636573746f723a204e6f6e652c206e65775f76657273696f6e3a2050726f746f636f6c56657273696f6e2831302c203029207d203d3d20616374696f6e001622533301c300d301e3754004264a66603a60166eb4c018c080dd50008a99980e99baf300530203754002980122d87a9f581c00000000000000000000000000000000000000000000000000000000ff00130023004302037540022a6603c921316578706563742070726f6365647572652e72657475726e5f61646472657373203d3d20536372697074286e756c6c323829001601c3022301f375400403446040604260420024603e60400024603c0026002002444a6660380042980103d87a800013232533301a300b003130063301f0024bd70099980280280099b8000348004c08000cc078008dd2a400064a666030002020264a666032603800426464a66602e66e1d200a3019375400426464a66603266e1d2006375a603e004264646464a66603a60166eb4c08c01054ccc074cdd780126122d87a9f581c00000000000000000000000000000000000000000000000000000000ff001533301d3370e9002180f9baa001153333330250071533301d300e301f375400e2a66604260406ea801c52601a01a01a01a01a01a153301e4901346578706563742054726561737572795769746864726177616c207b202e2e207d203d20676f7665726e616e63655f616374696f6e0016153301e491276578706563742072657475726e5f61646472657373203d3d20536372697074286e756c6c3238290016153301e4911b657870656374206465706f736974203d3d20325f3030305f30303000163022302300230210013021001301c375400202a603c603e00260346ea800804cc064008c05c004044c068004dd5980c980d180d180d180d180d180d180d180d180d180b1baa00b370e9040497a009bac3017301830183018301830183018301830183018301830183018301830143754012a666020600260246ea801854ccc050c04cdd50030a4c2c2c6e1d200030143015002375a6026002601e6ea800458c044c048008c040004c040008c038004c028dd50008a4c2a660109211856616c696461746f722072657475726e65642066616c73650013656153300649013f6578706563742054726561737572795769746864726177616c207b2067756172647261696c733a20536f6d65282e2e292c202e2e207d203d20616374696f6e001615330054918d657870656374205b0a20202020506169722850726f706f7365280a202020202020332c0a20202020202050726f706f73616c50726f636564757265207b206465706f7369742c2072657475726e5f616464726573732c20676f7665726e616e63655f616374696f6e207d2c0a20202020292c0a2020202064617461292c0a20205d203d2072656465656d657273001615330044911265787065637420566f6964203d2064617461001615330034912265787065637420536f6d652870726f63656475726529203d2070726f63656475726500161533002491256578706563742070726f6365647572652e6465706f736974203d3d20325f3030305f30303000165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "83a4d8791f26b72e8f7d370eaff68f9306b1423712dd464412d1cfab" - }, - { - "title": "proposing_all.guardrails.else", - "compiledCode": "590cb00101003232323232323232323232323232253330073232323232533300c3370e900518071baa00113232323232323232323232323232323232323232323232324a264a666048602a604c6ea80044c94ccc094c04cdd6980718141baa001153330253375e601a60506ea800530122d8799f581c00000000000000000000000000000000000000000000000000000000ff00153330253375e601860506ea8005300103d87f8000149854cc0992412e6578706563742070726f6365647572652e676f7665726e616e63655f616374696f6e203d3d204e696365506f6c6c001615330264913a6578706563742070726f6365647572652e72657475726e5f61646472657373203d3d20566572696669636174696f6e4b6579286e756c6c3238290016024302a302737540020446601a02490081980419806008a401c4a66604666ebd30012dd87e9fd87a80d8799fd8799f581c00000000000000000000000000000000000000000000000000000000ffffff00001149854cc0912401996578706563740a202020202020202020204e6577436f6e737469747574696f6e207b0a202020202020202020202020616e636573746f723a204e6f6e652c0a202020202020202020202020636f6e737469747574696f6e3a20436f6e737469747574696f6e207b2067756172647261696c733a20536f6d65286e756c6c323829207d2c0a202020202020202020207d203d3d20616374696f6e0016330073300b0104803094ccc088cdd7a6010ed87e9fd87a80d8799fd87a80ffff00001149854cc08d2401916578706563740a202020202020202020204e6577436f6e737469747574696f6e207b0a202020202020202020202020616e636573746f723a204e6f6e652c0a202020202020202020202020636f6e737469747574696f6e3a20436f6e737469747574696f6e207b2067756172647261696c733a204e6f6e65207d2c0a202020202020202020207d203d3d20616374696f6e0016330063300a00f480288c94ccc088c04cc090dd50008a99981119baf3374a900419813a6103d87a8000330274c1249fd8799f581c00000000000000000000000000000000000000000000000000000000ffff00330274c126a1d8799f581c00000000000000000000000000000000000000000000000000000000ff1901f4003302730283025375400297ae0002149854cc08d241e96578706563740a20202020202020202020436f6e737469747574696f6e616c436f6d6d6974746565207b0a202020202020202020202020616e636573746f723a204e6f6e652c0a202020202020202020202020657669637465645f6d656d626572733a205b566572696669636174696f6e4b6579286e756c6c3238295d2c0a20202020202020202020202061646465645f6d656d626572733a205b5061697228566572696669636174696f6e4b6579286e756c6c3238292c20353030295d2c0a20202020202020202020202071756f72756d2c0a202020202020202020207d203d3d20616374696f6e001615330234912865787065637420536f6d652871756f72756d29203d20726174696f6e616c2e6e657728312c203229001653330214a0298103d87a8000153330214a02601a6604c601a6604c6ea120013302637509001a5eb812f5c02601a6604c601a6604c981010100330264c10102004bd7025eb80cc014cc0240392008253330203375e98107d87c9fd87a80ff00001149854cc085240130657870656374204e6f436f6e666964656e6365207b20616e636573746f723a204e6f6e65207d203d3d20616374696f6e0016330043300800d4801894ccc07ccdc3a400860426ea800454ccc07cc040c084dd51812981318111baa0011498068068cc00ccc01c03120042533301e3375e98012fd87b9fa1d8799f581c11111111111111111111111111111111111111111111111111111111ff1a000f4240d87a80ff00001149854cc07d2401ff6578706563740a2020202020202020202054726561737572795769746864726177616c207b0a20202020202020202020202062656e656669636961726965733a205b0a202020202020202020202020202050616972280a20202020202020202020202020202020566572696669636174696f6e4b6579280a20202020202020202020202020202020202023223131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131222c0a20202020202020202020202020202020292c0a20202020202020202020202020202020315f3030305f3030302c0a202020202020202020204920202020292c0a2020202020202020202020205d2c0a20202020202020202020202067756172647261696c733a204e6f6e652c0a202020202020202020207d203d3d20616374696f6e0016330023300600b4800894ccc074cdd7a60135d87a9fd8799fd8799f5820000000000000000000000000000000000000000000000000000000000000000000ffffd8799f0b00ffff00001149854cc07924019d6578706563740a2020202020202020202048617264466f726b207b0a202020202020202020202020616e636573746f723a20536f6d6528476f7665726e616e6365416374696f6e4964286e756c6c33322c203029292c0a2020202020202020202020206e65775f76657273696f6e3a2050726f746f636f6c56657273696f6e2831312c2030292c0a202020202020202020207d203d3d20616374696f6e0016330013300500a4800094ccc070cdd7a6010dd87a9fd87a80d8799f0a00ffff00001149854cc07524015b6578706563740a2020202020202020202048617264466f726b207b20616e636573746f723a204e6f6e652c206e65775f76657273696f6e3a2050726f746f636f6c56657273696f6e2831302c203029207d203d3d20616374696f6e001622533301c300d301e3754004264a66603a60166eb4c018c080dd50008a99980e99baf300530203754002980122d87a9f581c00000000000000000000000000000000000000000000000000000000ff00130023004302037540022a6603c921316578706563742070726f6365647572652e72657475726e5f61646472657373203d3d20536372697074286e756c6c323829001601c3022301f375400403446040604260420024603e60400024603c0026002002444a6660380042980103d87a800013232533301a300b003130063301f0024bd70099980280280099b8000348004c08000cc078008dd2a400064a666030002020264a666032603800426464a66602e66e1d200a3019375400426464a66603266e1d2006375a603e004264646464a66603a60166eb4c08c01054ccc074cdd780126122d87a9f581c00000000000000000000000000000000000000000000000000000000ff001533301d3370e9002180f9baa001153333330250071533301d300e301f375400e2a66604260406ea801c52601a01a01a01a01a01a153301e4901346578706563742054726561737572795769746864726177616c207b202e2e207d203d20676f7665726e616e63655f616374696f6e0016153301e491276578706563742072657475726e5f61646472657373203d3d20536372697074286e756c6c3238290016153301e4911b657870656374206465706f736974203d3d20325f3030305f30303000163022302300230210013021001301c375400202a603c603e00260346ea800804cc064008c05c004044c068004dd5980c980d180d180d180d180d180d180d180d180d180b1baa00b370e9040497a009bac3017301830183018301830183018301830183018301830183018301830143754012a666020600260246ea801854ccc050c04cdd50030a4c2c2c6e1d200030143015002375a6026002601e6ea800458c044c048008c040004c040008c038004c028dd50008a4c2a660109211856616c696461746f722072657475726e65642066616c73650013656153300649013f6578706563742054726561737572795769746864726177616c207b2067756172647261696c733a20536f6d65282e2e292c202e2e207d203d20616374696f6e001615330054918d657870656374205b0a20202020506169722850726f706f7365280a202020202020332c0a20202020202050726f706f73616c50726f636564757265207b206465706f7369742c2072657475726e5f616464726573732c20676f7665726e616e63655f616374696f6e207d2c0a20202020292c0a2020202064617461292c0a20205d203d2072656465656d657273001615330044911265787065637420566f6964203d2064617461001615330034912265787065637420536f6d652870726f63656475726529203d2070726f63656475726500161533002491256578706563742070726f6365647572652e6465706f736974203d3d20325f3030305f30303000165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "83a4d8791f26b72e8f7d370eaff68f9306b1423712dd464412d1cfab" - }, - { - "title": "proposing_pparams.guardrails.propose", - "redeemer": { - "title": "_redeemer", - "schema": { - "$ref": "#/definitions/Void" - } - }, - "compiledCode": "5917c601010032323232323232323232323232323232322533300a3232323232533300f3370e900518089baa001132323232325333014300330163754002264646464a66603066e1d2002301a3754603c0082a666030600e60346ea80044c8c8c94ccc06ccdd7999801002a4000002980106d8799f182cff001533301b3375e66600400a9001000a6109d8799f1a00025ef5ff001533301b3375e66600400a9002000a6109d8799f1a00016000ff001533301b3375e66600400a9003000a6107d8799f194000ff001533301b3375e66600400a9004000a6107d8799f19044cff001533301b3375e66600400a9005000a6109d8799f1a001e8480ff001533301b3375e66600400a9006000a6109d8799f1a1dcd6500ff001533301b3375e66600400a9007000a6105d8799f12ff001533301b3375e66600400a9008000a6107d8799f1901f4ff00132323232533301f3375e666004012900900098039981219801a400c900a25eb8054ccc07ccdd7999801004a4028002600e66048660069003241a01e97ae01533301f3375e666004012900b00098039981219801a4004900525eb8054ccc07ccdd7999803004a404000a980107d8799f190154ff001533301f3375e66600c0129011002a6107d8799f1910d6ff001533301f3375e66600401290121000a60103d87a80001533301f3375e66600401290131299999981400080f80f89929998128008100991929998138008110992999814181580109806198149803001998149803000a5eb8008cc0a4004c0a4008c09c004dd600080f80f98039981218039981219801a4104129068079981219801a414416904044bd25eb812f5c0264a66604066ebcccc00c02920280014c116d8799fd8799f1a00d59f801b00000002540be400ffff00153330203375e6660060149015000a6116d8799fd8799f1a03b20b801b00000004a817c800ffff00153330203375e66600e014901600326107d8799f191388ff00153330203375e66600e014901700326106d8799f1896ff00153330203375e66600e014901800326105d8799f03ff00153330203375e66600601490191299999981480080f00f099299981300080f8991929998140008108991929998150008118991929998160008128991929998170008138992999817981900109809998181806804998181809998181806803998181806802a5eb80cc0c0c03400ccc0c0c04ccc0c0c034004cc0c130103d8798000330304c103d8798000330304c103d8798000330304c103d87980004bd7025eb800a0c0c0004c0c0008c0b8004c0b8008c0b0004c0b0008c0a8004c0a8008c0a0004dd600080f00f26141d8799fd8799fd8799f18331864ffd8799fd8799f0d1819ffd8799f18351864ffffd8799f181b1832ffd8799fd8799f0b14ffd87980d87980d87980d87980ffffff00153330203375e666006014901a1299999981480080e80e899299981300080f09919299981400081009919299981500081109919299981600081209919299981700081309919299981800081409919299981900081509919299981a00081609919299981b00081709919299981c000818099299981c981e0010980e9981d180b8099981d180e9981d180b8089981d180b807a5eb80cc0e8c05c034cc0e8c05c02ccc0e8c074cc0e930103d87980003303a30170093303a30170073303a30170053303a30170034bd701981d180b800a5eb800c4c0e8004c0e8008c0e0004c0e0008c0d8004c0d8008c0d0004c0d0008c0c8004c0c8008c0c0004c0c0008c0b8004c0b8008c0b0004c0b0008c0a8004c0a8008c0a0004dd600080e80ea615bd8799fd8799fd8799f18431864ffd8799fd8799f18431864ffd8799f0305ffffd8799f0304ffd8799f0305ffd8799fd87980d8799f18431864ffd8799f18431864ffd8799f18431864ffd8799f0304ffffd8799f18431864ffffff00153330203375e66600e014901b00326105d8799f07ff00153330203375e66600e014901c00326106d8799f1892ff00153330203375e66600e014901d00326105d8799f06ff00153330203375e66600e014901e0032610dd8799f1b000000174876e800ff00153330203375e66600e014901f00326109d8799f1a1dcd6500ff00153330203375e66600e014902000326105d8799f14ff00153330203375e6660060149021001180419812998022403c900125eb805288a99810a4817d6578706563740a20202020202028206e65775f706172616d6574657273207c3e207265666572656e63655f736372697074735f746965725f6665655f696e697469616c5f666163746f722029203d3d20536f6d65280a20202020202020206578706563745f726174696f6e616c2831352c2031292c0a2020202020202900161533021491546578706563740a20202020202028206e65775f706172616d6574657273207c3e2064656c65676174655f726570726573656e7461746976655f6d61785f69646c655f74696d652029203d3d20536f6d652832302900161533021491576578706563740a20202020202028206e65775f706172616d6574657273207c3e2064656c65676174655f726570726573656e7461746976655f6465706f7369742029203d3d20536f6d65283530305f3030305f3030302900161533021491576578706563740a20202020202028206e65775f706172616d6574657273207c3e20676f7665726e616e63655f70726f706f73616c5f6465706f7369742029203d3d20536f6d65283130305f3030305f3030305f3030302900161533021491446578706563742028206e65775f706172616d6574657273207c3e20676f7665726e616e63655f70726f706f73616c5f6c69666574696d652029203d3d20536f6d6528362900161533021491546578706563740a20202020202028206e65775f706172616d6574657273207c3e206d61785f636f6e737469747574696f6e616c5f636f6d6d69747465655f6d616e646174652029203d3d20536f6d65283134362900161533021491496578706563742028206e65775f706172616d6574657273207c3e206d696e5f636f6e737469747574696f6e616c5f636f6d6d69747465655f73697a652029203d3d20536f6d6528372900161533021491786578706563740a20202020202028206e65775f706172616d6574657273207c3e2064656c65676174655f726570726573656e7461746976655f766f74696e675f7468726573686f6c64732029203d3d20536f6d65280a2020202020202020647265705f7468726573686f6c647328292c0a2020202020202900161533021491736578706563740a20202020202028206e65775f706172616d6574657273207c3e207374616b655f706f6f6c5f6f70657261746f725f766f74696e675f7468726573686f6c64732029203d3d20536f6d65280a202020202020202073706f5f7468726573686f6c647328292c0a20202020202029001615330214913d6578706563742028206e65775f706172616d6574657273207c3e206d61785f636f6c6c61746572616c5f696e707574732029203d3d20536f6d65283329001615330214913f6578706563742028206e65775f706172616d6574657273207c3e20636f6c6c61746572616c5f70657263656e746167652029203d3d20536f6d65283135302900161533021491396578706563742028206e65775f706172616d6574657273207c3e206d61785f76616c75655f73697a652029203d3d20536f6d65283530303029001615330214918c6578706563740a20202020202028206e65775f706172616d6574657273207c3e206d61785f626c6f636b5f657865637574696f6e5f756e6974732029203d3d20536f6d65280a2020202020202020457865637574696f6e556e697473207b206d656d6f72793a2036323030303030302c206370753a203230303030303030303030207d2c0a2020202020202900161533021491926578706563740a20202020202028206e65775f706172616d6574657273207c3e206d61785f7472616e73616374696f6e5f657865637574696f6e5f756e6974732029203d3d20536f6d65280a2020202020202020457865637574696f6e556e697473207b206d656d6f72793a2031343030303030302c206370753a203130303030303030303030207d2c0a2020202020202900162533333302800101e01e132533302500101f132533333302a001020020020132325333028001022132533333302d001023023023132533302a302d0031300e3302b3750008660566ea00052f5c00486eb400408cc0a8004c0a800cdd680081018138009bac00101e01e15330204901d56578706563740a20202020202028206e65775f706172616d6574657273207c3e207363726970745f657865637574696f6e5f7072696365732029203d3d20536f6d65280a2020202020202020536372697074457865637574696f6e507269636573207b0a202020202020202020206d656d6f72793a206578706563745f726174696f6e616c283537372c20315f303030292c0a202020202020202020206370753a206578706563745f726174696f6e616c283732312c20315f3030305f303030292c0a20202020202020207d2c0a2020202020202900161533020491306578706563742028206e65775f706172616d6574657273207c3e20636f73745f6d6f64656c732029203d3d204e6f6e6500161533020491476578706563742028206e65775f706172616d6574657273207c3e206d696e5f7574786f5f6465706f7369745f636f656666696369656e742029203d3d20536f6d65283433313029001615330204913d6578706563742028206e65775f706172616d6574657273207c3e206d696e5f7374616b655f706f6f6c5f636f73742029203d3d20536f6d65283334302900161533020491546578706563740a20202020202028206e65775f706172616d6574657273207c3e2074726561737572795f657870616e73696f6e2029203d3d20536f6d65286578706563745f726174696f6e616c28312c2035292900161533020491696578706563740a20202020202028206e65775f706172616d6574657273207c3e206d6f6e65746172795f657870616e73696f6e2029203d3d20536f6d65280a20202020202020206578706563745f726174696f6e616c28332c20315f303030292c0a20202020202029001615330204916f6578706563740a20202020202028206e65775f706172616d6574657273207c3e207374616b655f706f6f6c5f706c656467655f696e666c75656e63652029203d3d20536f6d65280a20202020202020206578706563745f726174696f6e616c28332c203130292c0a20202020202029001625333333027001019019132533302400101a132533333302900101b01b01b13232533302700101d132533333302c00101e01e01e1325333029302c00313253330263015302837540022605860526ea800407ccc02801000407cdd680080f181480098148019bad00101b30260013758002032032444646600200200844a66604c002298103d87a8000132323253330253370e00e6eb4c09c00c4c034cc0a8c0180052f5c026600a00a004604e004605400460500024464a66603e601c60426ea80044c094c088dd500080c1980180100091299980e98060008a60103d87a80001533301d33710002900009802998111802998111ba8337029000001198111ba8337029000000a5eb812f5c02600a66044600a660446ea0008cc088dd4000a5eb812f5c02a660389201476578706563742028206e65775f706172616d6574657273207c3e20646573697265645f6e756d6265725f6f665f7374616b655f706f6f6c732029203d3d20536f6d6528353030290016153301c491466578706563742028206e65775f706172616d6574657273207c3e207374616b655f706f6f6c5f7265746972656d656e745f686f72697a6f6e2029203d3d20536f6d65283138290016153301c491446578706563742028206e65775f706172616d6574657273207c3e207374616b655f706f6f6c5f6465706f7369742029203d3d20536f6d65283530305f3030305f303030290016153301c491486578706563742028206e65775f706172616d6574657273207c3e207374616b655f63726564656e7469616c5f6465706f7369742029203d3d20536f6d6528325f3030305f303030290016153301c491416578706563742028206e65775f706172616d6574657273207c3e206d61785f626c6f636b5f6865616465725f73697a652029203d3d20536f6d6528315f313030290016153301c491416578706563742028206e65775f706172616d6574657273207c3e206d61785f7472616e73616374696f6e5f73697a652029203d3d20536f6d652831365f333834290016153301c491406578706563742028206e65775f706172616d6574657273207c3e206d61785f626c6f636b5f626f64795f73697a652029203d3d20536f6d652839305f313132290016153301c4913e6578706563742028206e65775f706172616d6574657273207c3e206d696e5f6665655f636f6e7374616e742029203d3d20536f6d65283135355f333831290016153301c4913c6578706563742028206e65775f706172616d6574657273207c3e206d696e5f6665655f636f656666696369656e742029203d3d20536f6d65283434290016253333330230010160160161375a00202c444646600200200844a666044002298103d87a8000132323253330213370e00e6eb4c08c00c4c024cc098dd41803000a5eb804cc014014008c08c008c098008c090004dd2a4000020020603a603c0046eacc070004c070004c05cdd5000806180c980d180d180b1baa3019301a004533301230013014375400a2a66602c602a6ea80145261616370e90001bad3016001301237540022c6028602a004602600260260046022002601a6ea8004526153300b49011856616c696461746f722072657475726e65642066616c7365001365615330094901b96578706563742050726f706f73616c50726f636564757265207b0a202020202020676f7665726e616e63655f616374696f6e3a2050726f746f636f6c506172616d6574657273207b0a2020202020202020616e636573746f723a204e6f6e652c0a202020202020202067756172647261696c733a20536f6d65282e2e292c0a20202020202020206e65775f706172616d65746572732c0a2020202020207d2c0a2020202020202e2e0a202020207d203d2070726f706f73616c001615330084913565787065637420536f6d65287229203d20726174696f6e616c2e6e6577286e756d657261746f722c2064656e6f6d696e61746f72290016153300749132657870656374205b6e756d657261746f722c2064656e6f6d696e61746f725d3a204c6973743c496e743e203d20706172616d001615330064911965787065637420706172616d3a20496e74203d20706172616d00161533005491ff657870656374205b0a202020206d6f74696f6e5f6f665f6e6f5f636f6e666964656e63652c0a20202020636f6e737469747574696f6e616c5f636f6d6d69747465652c0a20202020636f6e737469747574696f6e616c5f636f6d6d69747465655f756e6465725f6e6f5f636f6e666964656e63652c0a20202020636f6e737469747574696f6e2c0a20202020686172645f666f726b2c0a2020202070726f746f636f6c5f706172616d65746572735f6e6574776f726b5f67726f75702c0a2020202070726f746f636f6c5f706172616d65746572735f65636f6e6f6d69635f67726f75702c0a2020202070726f746f636f6c5f706172616d65746572735f746a6563686e6963616c5f67726f75702c0a2020202070726f746f636f6c5f706172616d65746572735f676f7665726e616e63655f67726f75702c0a2020202074726561737572795f7769746864726177616c2c0a20205d3a204c6973743c446174613e203d20706172616d00161533004491c4657870656374205b0a202020206d6f74696f6e5f6f665f6e6f5f636f6e666964656e63652c0a20202020636f6e737469747574696f6e616c5f636f6d6d69747465652c0a20202020636f6e737469747574696f6e616c5f636f6d6d69747465655f756e6465725f6e6f5f636f6e666964656e63652c0a20202020686172645f666f726b2c0a2020202070726f746f636f6c5f706172616d65746572735f73656375726974795f67726f75702c0a20205d3a204c6973743c446174613e203d20706172616d0016153300349127657870656374205b6d656d6f72792c206370755d3a204c6973743c496e743e203d20706172616d0016153300249128657870656374205b6d656d6f72792c206370755d3a204c6973743c446174613e203d20706172616d00165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "4eab67aa6092b5cde6e7f7729be21287d539e5c0a32d68c84702e588" - }, - { - "title": "proposing_pparams.guardrails.else", - "compiledCode": "5917c601010032323232323232323232323232323232322533300a3232323232533300f3370e900518089baa001132323232325333014300330163754002264646464a66603066e1d2002301a3754603c0082a666030600e60346ea80044c8c8c94ccc06ccdd7999801002a4000002980106d8799f182cff001533301b3375e66600400a9001000a6109d8799f1a00025ef5ff001533301b3375e66600400a9002000a6109d8799f1a00016000ff001533301b3375e66600400a9003000a6107d8799f194000ff001533301b3375e66600400a9004000a6107d8799f19044cff001533301b3375e66600400a9005000a6109d8799f1a001e8480ff001533301b3375e66600400a9006000a6109d8799f1a1dcd6500ff001533301b3375e66600400a9007000a6105d8799f12ff001533301b3375e66600400a9008000a6107d8799f1901f4ff00132323232533301f3375e666004012900900098039981219801a400c900a25eb8054ccc07ccdd7999801004a4028002600e66048660069003241a01e97ae01533301f3375e666004012900b00098039981219801a4004900525eb8054ccc07ccdd7999803004a404000a980107d8799f190154ff001533301f3375e66600c0129011002a6107d8799f1910d6ff001533301f3375e66600401290121000a60103d87a80001533301f3375e66600401290131299999981400080f80f89929998128008100991929998138008110992999814181580109806198149803001998149803000a5eb8008cc0a4004c0a4008c09c004dd600080f80f98039981218039981219801a4104129068079981219801a414416904044bd25eb812f5c0264a66604066ebcccc00c02920280014c116d8799fd8799f1a00d59f801b00000002540be400ffff00153330203375e6660060149015000a6116d8799fd8799f1a03b20b801b00000004a817c800ffff00153330203375e66600e014901600326107d8799f191388ff00153330203375e66600e014901700326106d8799f1896ff00153330203375e66600e014901800326105d8799f03ff00153330203375e66600601490191299999981480080f00f099299981300080f8991929998140008108991929998150008118991929998160008128991929998170008138992999817981900109809998181806804998181809998181806803998181806802a5eb80cc0c0c03400ccc0c0c04ccc0c0c034004cc0c130103d8798000330304c103d8798000330304c103d8798000330304c103d87980004bd7025eb800a0c0c0004c0c0008c0b8004c0b8008c0b0004c0b0008c0a8004c0a8008c0a0004dd600080f00f26141d8799fd8799fd8799f18331864ffd8799fd8799f0d1819ffd8799f18351864ffffd8799f181b1832ffd8799fd8799f0b14ffd87980d87980d87980d87980ffffff00153330203375e666006014901a1299999981480080e80e899299981300080f09919299981400081009919299981500081109919299981600081209919299981700081309919299981800081409919299981900081509919299981a00081609919299981b00081709919299981c000818099299981c981e0010980e9981d180b8099981d180e9981d180b8089981d180b807a5eb80cc0e8c05c034cc0e8c05c02ccc0e8c074cc0e930103d87980003303a30170093303a30170073303a30170053303a30170034bd701981d180b800a5eb800c4c0e8004c0e8008c0e0004c0e0008c0d8004c0d8008c0d0004c0d0008c0c8004c0c8008c0c0004c0c0008c0b8004c0b8008c0b0004c0b0008c0a8004c0a8008c0a0004dd600080e80ea615bd8799fd8799fd8799f18431864ffd8799fd8799f18431864ffd8799f0305ffffd8799f0304ffd8799f0305ffd8799fd87980d8799f18431864ffd8799f18431864ffd8799f18431864ffd8799f0304ffffd8799f18431864ffffff00153330203375e66600e014901b00326105d8799f07ff00153330203375e66600e014901c00326106d8799f1892ff00153330203375e66600e014901d00326105d8799f06ff00153330203375e66600e014901e0032610dd8799f1b000000174876e800ff00153330203375e66600e014901f00326109d8799f1a1dcd6500ff00153330203375e66600e014902000326105d8799f14ff00153330203375e6660060149021001180419812998022403c900125eb805288a99810a4817d6578706563740a20202020202028206e65775f706172616d6574657273207c3e207265666572656e63655f736372697074735f746965725f6665655f696e697469616c5f666163746f722029203d3d20536f6d65280a20202020202020206578706563745f726174696f6e616c2831352c2031292c0a2020202020202900161533021491546578706563740a20202020202028206e65775f706172616d6574657273207c3e2064656c65676174655f726570726573656e7461746976655f6d61785f69646c655f74696d652029203d3d20536f6d652832302900161533021491576578706563740a20202020202028206e65775f706172616d6574657273207c3e2064656c65676174655f726570726573656e7461746976655f6465706f7369742029203d3d20536f6d65283530305f3030305f3030302900161533021491576578706563740a20202020202028206e65775f706172616d6574657273207c3e20676f7665726e616e63655f70726f706f73616c5f6465706f7369742029203d3d20536f6d65283130305f3030305f3030305f3030302900161533021491446578706563742028206e65775f706172616d6574657273207c3e20676f7665726e616e63655f70726f706f73616c5f6c69666574696d652029203d3d20536f6d6528362900161533021491546578706563740a20202020202028206e65775f706172616d6574657273207c3e206d61785f636f6e737469747574696f6e616c5f636f6d6d69747465655f6d616e646174652029203d3d20536f6d65283134362900161533021491496578706563742028206e65775f706172616d6574657273207c3e206d696e5f636f6e737469747574696f6e616c5f636f6d6d69747465655f73697a652029203d3d20536f6d6528372900161533021491786578706563740a20202020202028206e65775f706172616d6574657273207c3e2064656c65676174655f726570726573656e7461746976655f766f74696e675f7468726573686f6c64732029203d3d20536f6d65280a2020202020202020647265705f7468726573686f6c647328292c0a2020202020202900161533021491736578706563740a20202020202028206e65775f706172616d6574657273207c3e207374616b655f706f6f6c5f6f70657261746f725f766f74696e675f7468726573686f6c64732029203d3d20536f6d65280a202020202020202073706f5f7468726573686f6c647328292c0a20202020202029001615330214913d6578706563742028206e65775f706172616d6574657273207c3e206d61785f636f6c6c61746572616c5f696e707574732029203d3d20536f6d65283329001615330214913f6578706563742028206e65775f706172616d6574657273207c3e20636f6c6c61746572616c5f70657263656e746167652029203d3d20536f6d65283135302900161533021491396578706563742028206e65775f706172616d6574657273207c3e206d61785f76616c75655f73697a652029203d3d20536f6d65283530303029001615330214918c6578706563740a20202020202028206e65775f706172616d6574657273207c3e206d61785f626c6f636b5f657865637574696f6e5f756e6974732029203d3d20536f6d65280a2020202020202020457865637574696f6e556e697473207b206d656d6f72793a2036323030303030302c206370753a203230303030303030303030207d2c0a2020202020202900161533021491926578706563740a20202020202028206e65775f706172616d6574657273207c3e206d61785f7472616e73616374696f6e5f657865637574696f6e5f756e6974732029203d3d20536f6d65280a2020202020202020457865637574696f6e556e697473207b206d656d6f72793a2031343030303030302c206370753a203130303030303030303030207d2c0a2020202020202900162533333302800101e01e132533302500101f132533333302a001020020020132325333028001022132533333302d001023023023132533302a302d0031300e3302b3750008660566ea00052f5c00486eb400408cc0a8004c0a800cdd680081018138009bac00101e01e15330204901d56578706563740a20202020202028206e65775f706172616d6574657273207c3e207363726970745f657865637574696f6e5f7072696365732029203d3d20536f6d65280a2020202020202020536372697074457865637574696f6e507269636573207b0a202020202020202020206d656d6f72793a206578706563745f726174696f6e616c283537372c20315f303030292c0a202020202020202020206370753a206578706563745f726174696f6e616c283732312c20315f3030305f303030292c0a20202020202020207d2c0a2020202020202900161533020491306578706563742028206e65775f706172616d6574657273207c3e20636f73745f6d6f64656c732029203d3d204e6f6e6500161533020491476578706563742028206e65775f706172616d6574657273207c3e206d696e5f7574786f5f6465706f7369745f636f656666696369656e742029203d3d20536f6d65283433313029001615330204913d6578706563742028206e65775f706172616d6574657273207c3e206d696e5f7374616b655f706f6f6c5f636f73742029203d3d20536f6d65283334302900161533020491546578706563740a20202020202028206e65775f706172616d6574657273207c3e2074726561737572795f657870616e73696f6e2029203d3d20536f6d65286578706563745f726174696f6e616c28312c2035292900161533020491696578706563740a20202020202028206e65775f706172616d6574657273207c3e206d6f6e65746172795f657870616e73696f6e2029203d3d20536f6d65280a20202020202020206578706563745f726174696f6e616c28332c20315f303030292c0a20202020202029001615330204916f6578706563740a20202020202028206e65775f706172616d6574657273207c3e207374616b655f706f6f6c5f706c656467655f696e666c75656e63652029203d3d20536f6d65280a20202020202020206578706563745f726174696f6e616c28332c203130292c0a20202020202029001625333333027001019019132533302400101a132533333302900101b01b01b13232533302700101d132533333302c00101e01e01e1325333029302c00313253330263015302837540022605860526ea800407ccc02801000407cdd680080f181480098148019bad00101b30260013758002032032444646600200200844a66604c002298103d87a8000132323253330253370e00e6eb4c09c00c4c034cc0a8c0180052f5c026600a00a004604e004605400460500024464a66603e601c60426ea80044c094c088dd500080c1980180100091299980e98060008a60103d87a80001533301d33710002900009802998111802998111ba8337029000001198111ba8337029000000a5eb812f5c02600a66044600a660446ea0008cc088dd4000a5eb812f5c02a660389201476578706563742028206e65775f706172616d6574657273207c3e20646573697265645f6e756d6265725f6f665f7374616b655f706f6f6c732029203d3d20536f6d6528353030290016153301c491466578706563742028206e65775f706172616d6574657273207c3e207374616b655f706f6f6c5f7265746972656d656e745f686f72697a6f6e2029203d3d20536f6d65283138290016153301c491446578706563742028206e65775f706172616d6574657273207c3e207374616b655f706f6f6c5f6465706f7369742029203d3d20536f6d65283530305f3030305f303030290016153301c491486578706563742028206e65775f706172616d6574657273207c3e207374616b655f63726564656e7469616c5f6465706f7369742029203d3d20536f6d6528325f3030305f303030290016153301c491416578706563742028206e65775f706172616d6574657273207c3e206d61785f626c6f636b5f6865616465725f73697a652029203d3d20536f6d6528315f313030290016153301c491416578706563742028206e65775f706172616d6574657273207c3e206d61785f7472616e73616374696f6e5f73697a652029203d3d20536f6d652831365f333834290016153301c491406578706563742028206e65775f706172616d6574657273207c3e206d61785f626c6f636b5f626f64795f73697a652029203d3d20536f6d652839305f313132290016153301c4913e6578706563742028206e65775f706172616d6574657273207c3e206d696e5f6665655f636f6e7374616e742029203d3d20536f6d65283135355f333831290016153301c4913c6578706563742028206e65775f706172616d6574657273207c3e206d696e5f6665655f636f656666696369656e742029203d3d20536f6d65283434290016253333330230010160160161375a00202c444646600200200844a666044002298103d87a8000132323253330213370e00e6eb4c08c00c4c024cc098dd41803000a5eb804cc014014008c08c008c098008c090004dd2a4000020020603a603c0046eacc070004c070004c05cdd5000806180c980d180d180b1baa3019301a004533301230013014375400a2a66602c602a6ea80145261616370e90001bad3016001301237540022c6028602a004602600260260046022002601a6ea8004526153300b49011856616c696461746f722072657475726e65642066616c7365001365615330094901b96578706563742050726f706f73616c50726f636564757265207b0a202020202020676f7665726e616e63655f616374696f6e3a2050726f746f636f6c506172616d6574657273207b0a2020202020202020616e636573746f723a204e6f6e652c0a202020202020202067756172647261696c733a20536f6d65282e2e292c0a20202020202020206e65775f706172616d65746572732c0a2020202020207d2c0a2020202020202e2e0a202020207d203d2070726f706f73616c001615330084913565787065637420536f6d65287229203d20726174696f6e616c2e6e6577286e756d657261746f722c2064656e6f6d696e61746f72290016153300749132657870656374205b6e756d657261746f722c2064656e6f6d696e61746f725d3a204c6973743c496e743e203d20706172616d001615330064911965787065637420706172616d3a20496e74203d20706172616d00161533005491ff657870656374205b0a202020206d6f74696f6e5f6f665f6e6f5f636f6e666964656e63652c0a20202020636f6e737469747574696f6e616c5f636f6d6d69747465652c0a20202020636f6e737469747574696f6e616c5f636f6d6d69747465655f756e6465725f6e6f5f636f6e666964656e63652c0a20202020636f6e737469747574696f6e2c0a20202020686172645f666f726b2c0a2020202070726f746f636f6c5f706172616d65746572735f6e6574776f726b5f67726f75702c0a2020202070726f746f636f6c5f706172616d65746572735f65636f6e6f6d69635f67726f75702c0a2020202070726f746f636f6c5f706172616d65746572735f746a6563686e6963616c5f67726f75702c0a2020202070726f746f636f6c5f706172616d65746572735f676f7665726e616e63655f67726f75702c0a2020202074726561737572795f7769746864726177616c2c0a20205d3a204c6973743c446174613e203d20706172616d00161533004491c4657870656374205b0a202020206d6f74696f6e5f6f665f6e6f5f636f6e666964656e63652c0a20202020636f6e737469747574696f6e616c5f636f6d6d69747465652c0a20202020636f6e737469747574696f6e616c5f636f6d6d69747465655f756e6465725f6e6f5f636f6e666964656e63652c0a20202020686172645f666f726b2c0a2020202070726f746f636f6c5f706172616d65746572735f73656375726974795f67726f75702c0a20205d3a204c6973743c446174613e203d20706172616d0016153300349127657870656374205b6d656d6f72792c206370755d3a204c6973743c496e743e203d20706172616d0016153300249128657870656374205b6d656d6f72792c206370755d3a204c6973743c446174613e203d20706172616d00165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "4eab67aa6092b5cde6e7f7729be21287d539e5c0a32d68c84702e588" - }, - { - "title": "simple_spend.simple_spend.spend", - "datum": { - "title": "_datum", - "schema": { - "$ref": "#/definitions/Void" - } - }, - "redeemer": { - "title": "_redeemer", - "schema": { - "$ref": "#/definitions/Void" - } - }, - "compiledCode": "59090a0101003232323232323232323225333004323232323253323300a3001300c37540042646464646464a6660286eb0c058c05cc05cc04cdd50058a99980a1bac30163017301337540162a6660286eb0c058c05cc05cc05cc05cc05cc05cc05cc05cc04cdd50058a99980819b8748150dd6980b180b980b980b98099baa00b13253330113375e980101a0003017301830183018301830183018301830183018301830143754018294454cc04924012e657870656374205b5d203d3d20646963742e746f5f7061697273287472616e73616374696f6e2e646174756d7329001653330103375e98012fa1d87a9fd8799f5820000000000000000000000000000000000000000000000000000000000000000000ffffd87980003016301730173017301730173017301730173017301337540162930a99808a49ff6578706563740a202020205b0a20202020202050616972280a20202020202020205370656e64280a202020202020202020204f75747075745265666572656e6365207b0a2020202020202020202020207472616e73616374696f6e5f69643a20232230303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030222c0a2020202020202020202020206f75747075745f696e6465783a20302c0a202020202020202020207d2c0a2020202020202020292c0a2020202020202020766f696428292c0a202020202020292c0a202020205d203d3d207265640665656d657273001615330114911c657870656374203432203d3d207472616e73616374696f6e2e6665650016153301149129657870656374205b5d203d207472616e73616374696f6e2e65787472615f7369676e61746f726965730016153301149128657870656374205b5d203d207472616e73616374696f6e2e7265666572656e63655f696e70757473001615330114911f657870656374205b5d203d207472616e73616374696f6e2e6f757470757473001632533301400100e1325333015301800213232323253330153370e90001bad301b301c0021323232323232533301b3370e9002180e9baa30210021533301b3012301d37540022a66603666e3c01d221200000000000000000000000000000000000000000000000000000000000000000001533301b3375e6e9800cdd3299980da5014bd6f7b6300991919800800a5eb7bdb180894ccc0880044cc08ccdd82601014000374c00697adef6c60132323232533302233720910100002133027337609801014000374c00e00a2a66604466e3d22100002133027337609801014000374c00e00626604e66ec0dd48011ba600133006006003375660480066eb8c088008c098008c090004c8cc0040052f5bded8c044a66604200226604466ec130010140004c01051a3b9aca00004bd6f7b630099191919299981099b90489000021330263376098010140004c01051a3b9aca0000005153330213371e9101000021330263376098010140004c01051a3b9aca0000003133026337606ea4008dd4000998030030019bad3023003375c6042004604a004604600226464a66603a6028603e6ea8c08c00854ccc074c050c07cdd50008a4c03803860446046002603c6ea801454cc07124013f657870656374207265736f6c7665645f696e7075745f76616c7565203d3d206173736574732e66726f6d5f6c6f76656c6163652831303030303030303030290016153301c491606578706563740a202020207472616e73616374696f6e5f6964203d3d202322303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030302200160190193020302100130200023756603c002603c004603800260306ea800c04cdd7180d000980b1baa3019002301830190013014375400201e602c0026eb0c054c048dd5005299980719baf4c0127d8799f5820000000000000000000000000000000000000000000000000000000000000000000ff003014004149854cc03d24019c6578706563740a202020204f75747075745265666572656e6365207b0a2020202020207472616e73616374696f6e5f69643a20232230303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030222c0a2020202020206f75747075745f696e6465783a20302c0a202020207d203d3d20696e666f0016533300d3371e910120c6fbd346681a8f8337f6b3e51e6ec973f1509367eabc3a44c849af58a1d8471b00375c60266028602860286028602860286028602860286028602860206ea8020526153300e491546578706563740a2020202023226336666264333436363831613866383333376636623365353165366563393733663135303933363765616263336134346338343961663538613164383437316222203d3d2069640016533300c3370e900018071baa00515333010300f375400a2930b0b1808980900098069baa002370e90010b1807180780118068009806801180580098039baa001149854cc0152411856616c696461746f722072657475726e65642066616c7365001365615330034901ff657870656374205b0a20202020496e707574207b0a2020202020206f75747075745f7265666572656e63653a204f75747075745265666572656e6365207b207472616e73616374696f6e5f69642c206f75747075745f696e6465783a2030207d2c0a2020202020206f75747075743a204f7574707574207b0a2020202020202020616464726573732c0a202020202020202076616c75653a207265736f6c7665645f696e7075745f76616c75652c0a2020202020202020646174756d3a20496e6c696e65446174756d285f292c0a20202020202020207265666572656e63655f7363726970743a204e6f6e652c0a2020202020207d2c0a202020207d2c0a200b205d203d20696e7075747300161533002491566578706563742041646472657373207b207061796d656e745f63726564656e7469616c3a20536372697074285f292c207374616b655f63726564656e7469616c3a204e6f6e65207d203d0a202020206164647265737300165734ae7155ceaab9e5573eae815d0aba21", - "hash": "a1061d09b0b83996b07d2f5496ee57c308160bc39115b26058831583" - }, - { - "title": "simple_spend.simple_spend.else", - "compiledCode": "59090a0101003232323232323232323225333004323232323253323300a3001300c37540042646464646464a6660286eb0c058c05cc05cc04cdd50058a99980a1bac30163017301337540162a6660286eb0c058c05cc05cc05cc05cc05cc05cc05cc05cc04cdd50058a99980819b8748150dd6980b180b980b980b98099baa00b13253330113375e980101a0003017301830183018301830183018301830183018301830143754018294454cc04924012e657870656374205b5d203d3d20646963742e746f5f7061697273287472616e73616374696f6e2e646174756d7329001653330103375e98012fa1d87a9fd8799f5820000000000000000000000000000000000000000000000000000000000000000000ffffd87980003016301730173017301730173017301730173017301337540162930a99808a49ff6578706563740a202020205b0a20202020202050616972280a20202020202020205370656e64280a202020202020202020204f75747075745265666572656e6365207b0a2020202020202020202020207472616e73616374696f6e5f69643a20232230303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030222c0a2020202020202020202020206f75747075745f696e6465783a20302c0a202020202020202020207d2c0a2020202020202020292c0a2020202020202020766f696428292c0a202020202020292c0a202020205d203d3d207265640665656d657273001615330114911c657870656374203432203d3d207472616e73616374696f6e2e6665650016153301149129657870656374205b5d203d207472616e73616374696f6e2e65787472615f7369676e61746f726965730016153301149128657870656374205b5d203d207472616e73616374696f6e2e7265666572656e63655f696e70757473001615330114911f657870656374205b5d203d207472616e73616374696f6e2e6f757470757473001632533301400100e1325333015301800213232323253330153370e90001bad301b301c0021323232323232533301b3370e9002180e9baa30210021533301b3012301d37540022a66603666e3c01d221200000000000000000000000000000000000000000000000000000000000000000001533301b3375e6e9800cdd3299980da5014bd6f7b6300991919800800a5eb7bdb180894ccc0880044cc08ccdd82601014000374c00697adef6c60132323232533302233720910100002133027337609801014000374c00e00a2a66604466e3d22100002133027337609801014000374c00e00626604e66ec0dd48011ba600133006006003375660480066eb8c088008c098008c090004c8cc0040052f5bded8c044a66604200226604466ec130010140004c01051a3b9aca00004bd6f7b630099191919299981099b90489000021330263376098010140004c01051a3b9aca0000005153330213371e9101000021330263376098010140004c01051a3b9aca0000003133026337606ea4008dd4000998030030019bad3023003375c6042004604a004604600226464a66603a6028603e6ea8c08c00854ccc074c050c07cdd50008a4c03803860446046002603c6ea801454cc07124013f657870656374207265736f6c7665645f696e7075745f76616c7565203d3d206173736574732e66726f6d5f6c6f76656c6163652831303030303030303030290016153301c491606578706563740a202020207472616e73616374696f6e5f6964203d3d202322303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030302200160190193020302100130200023756603c002603c004603800260306ea800c04cdd7180d000980b1baa3019002301830190013014375400201e602c0026eb0c054c048dd5005299980719baf4c0127d8799f5820000000000000000000000000000000000000000000000000000000000000000000ff003014004149854cc03d24019c6578706563740a202020204f75747075745265666572656e6365207b0a2020202020207472616e73616374696f6e5f69643a20232230303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030222c0a2020202020206f75747075745f696e6465783a20302c0a202020207d203d3d20696e666f0016533300d3371e910120c6fbd346681a8f8337f6b3e51e6ec973f1509367eabc3a44c849af58a1d8471b00375c60266028602860286028602860286028602860286028602860206ea8020526153300e491546578706563740a2020202023226336666264333436363831613866383333376636623365353165366563393733663135303933363765616263336134346338343961663538613164383437316222203d3d2069640016533300c3370e900018071baa00515333010300f375400a2930b0b1808980900098069baa002370e90010b1807180780118068009806801180580098039baa001149854cc0152411856616c696461746f722072657475726e65642066616c7365001365615330034901ff657870656374205b0a20202020496e707574207b0a2020202020206f75747075745f7265666572656e63653a204f75747075745265666572656e6365207b207472616e73616374696f6e5f69642c206f75747075745f696e6465783a2030207d2c0a2020202020206f75747075743a204f7574707574207b0a2020202020202020616464726573732c0a202020202020202076616c75653a207265736f6c7665645f696e7075745f76616c75652c0a2020202020202020646174756d3a20496e6c696e65446174756d285f292c0a20202020202020207265666572656e63655f7363726970743a204e6f6e652c0a2020202020207d2c0a202020207d2c0a200b205d203d20696e7075747300161533002491566578706563742041646472657373207b207061796d656e745f63726564656e7469616c3a20536372697074285f292c207374616b655f63726564656e7469616c3a204e6f6e65207d203d0a202020206164647265737300165734ae7155ceaab9e5573eae815d0aba21", - "hash": "a1061d09b0b83996b07d2f5496ee57c308160bc39115b26058831583" - }, - { - "title": "voting.purposes.vote", - "redeemer": { - "title": "redeemer", - "schema": { - "$ref": "#/definitions/Data" - } - }, - "compiledCode": "590c50010100323232323232323232323232253330053232323232533300a3370e900418061baa0011323232323232323253330123006301437540022646464a66602a6012602e6ea800854cc8cc058c004c060dd5180e180c9baa0031533301a002013132533301b301e0031323232533301a3005375a604060420042a666034600a60386ea800c54ccc068cdc7800a45209999999999999999999999999999999999999999999999999999999999999999001533301a3375e98158d8799f9fd8799fd8799f581c00000000000000000000000000000000000000000000000000000000ffffa1d8799f582099999999999999999999999999999999999999999999999999999999999999991898ffd87980ffff003300a00c480084c94ccc06cc03cc074dd50008991919299980f180498101baa0021533301e300930203754604860426ea800854ccc08800407054ccc078cdd7a61abd8799f9fd87a9fd8799f581c00000000000000000000000000000000000000000000000000000000ffffa3d8799f5820777777777777777777777777777777777777777777777777777777777777777702ffd87b80d8799f5820888888888888888888888888888888888888888888888888888888888888888801ffd87b80d8799f5820999999999999999999999999999999999999999999999999999999999999999900ffd87b80ffff003300e010480184c94ccc07cc04cc084dd50008991919299981119b8748010c090dd500109929998138010110a99981199b8f0014891c000000000000000000000000000000000000000000000000000000000014a22a660489211865787065637420706f6f6c5f6964203d3d206f6e6c7930730016375c6050604a6ea8008084dd5981200118110009919bb03026001302630270013758604a60446ea8004078cc0380412008153301f491ff6578706563740a202020202020536f6d65280a202020202020202050616972280a2020202020202020202044656c6567617465526570726573656e74617469766528566572696669636174696f6e4b6579286f6e6c79307329292c0a202020202020202020205b0a20202020202020202020202050616972280a2020202020202020202020202020476f7665726e616e6365416374696f6e4964207b207472616e73616374696f6e3a206f6e6c7937732c2070726f706f73616c5f70726f6365647572653a2032207d2c0a20202020202020202020202020204162737461696e2c0a202020202020202020202020292c0a2020202020202020202020205061ff6972280a2020202020202020202020202020476f7665726e616e6365416374696f6e4964207b207472616e73616374696f6e3a206f6e6c7938732c2070726f706f73616c5f70726f6365647572653a2031207d2c0a20202020202020202020202020204162737461696e2c0a202020202020202020202020292c0a20202020202020202020202050616972280a2020202020202020202020202020476f7665726e616e6365416374696f6e4964207b207472616e73616374696f6e3a206f6e6c7939732c2070726f706f73616c5f70726f6365647572653a2030207d2c0a20202020202020202020202020204162737461696e2c0a20202020202020202020392020292c0a202020202020202020205d2c0a2020202020202020292c0a20202020202029203d3d206c6973742e617428766f7465732c203329001601c01c37566040004603c0026466ec0c088004c088c08c004dd61810980f1baa0010193300a00c4801054cc06d2401ff6578706563740a202020202020536f6d65280a202020202020202050616972280a20202020202020202020436f6e737469747574696f6e616c436f6d6d69747465654d656d62657228566572696669636174696f6e4b6579286f6e6c79307329292c0a202020202020202020205b0a20202020202020202020202050616972280a2020202020202020202020202020476f7665726e616e6365416374696f6e4964207b0a202020202020202020202020202020207472616e73616374696f6e3a206f6e6c7939732c0a2020202020202020202020202020202070726f706f73616c5f70726f6365647572653a203135322c0a2020202020202020202020202059207d2c0a20202020202020202020202020204e6f2c0a202020202020202020202020292c0a202020202020202020205d2c0a2020202020202020292c0a20202020202029203d3d206c6973742e617428766f7465732c2031290016153301b4911c657870656374207472616e73616374696f6e203d3d206f6e6c7939730016017017375c603e00260366ea8c068008c068004050c070008dc3a40040240246eacc05c008c054004c8cdd8180c800980c980d0009bac30183015375400201e6600200690001800800911299980b0010a60103d87a8000132325333014300800313374a90001980c9ba73301930160023301930170024bd7025eb804ccc014014004c02400cc06800cc060008dd5980a180a980a980a980a980a980a980a980a980a980a980a980a98089baa008323232323232533301332533333301c00c15333014300830163754018264a666032002004264a66666603c002006006006264a666036603c0062a66602e66e1d2054001153301837326600a01e9110014a20080086eb400400cc06c004c05cdd5006000800800800800899299999980e0060a99980a1804180b1baa00c15333018301737540182a6602a6e64cc009300103d879800048810014a20020020020020020022940526153301449010f6578706563742069735f76616c69640016300100122253332333301d00313232323232323300c0020013371491010128000025333019337100069007099b80483c80400c54ccc064cdc4001a410004266e00cdc0241002800690068b299980e000899b8a4881035b5d2900005133714911035b5f2000333300800133714911025d290000522333009009002300600122333009009002001375860340046eb4c060004c8cdd81ba83018001374e60320026ea800c4c94ccc0680044cdc52441027b7d00003133714911037b5f200032323300100100322533301d00110031533301d3020001132333009009301c001337149101023a2000333009009301d001004301f001132333009009301c001337149101023a2000333009009301d0013006330030033021002301f0013371491102207d000033756006264a666034002266e29221025b5d00003133714911035b5f2000333300600133714911015d000032233300700700230040012233300700700200137580066e292201022c2000133005375a0040022646466e2922010268270000132333001001300b371a00466e292201012700003222533301833710004900008008991919199803003180800299b8b33700004a66603666e2000920141481805206e3371666e000054ccc06ccdc4000a4028290300a40dc00866e18009202033706002901019b8e004002375c0044444646600200200a44a666034002200a2a666034603a002266006603800200a266008603800266004004603a00244646600200200644a666026600e002266e29220101300000315333013337100029000099b8a489012d003300200233702900000089980299b8400148050cdc599b803370a002900a240c00066002002444a66602066e2400920001001133300300333708004900a19b8b3370066e14009201448180004dc3a40006e0120013010300d37540022c601e6020004601c002601c004601800260106ea800452615330064911856616c696461746f722072657475726e65642066616c7365001365615330044901ab65787065637420536f6d65280a2020202020205061697228436f6e737469747574696f6e616c436f6d6d69747465654d656d62657228536372697074282e2e29292c0a2020202020205b5061697228476f7665726e616e6365416374696f6e4964207b207472616e73616374696f6e2c2070726f706f73616c5f70726f6365647572653a2031207d2c20596573295d292c0a2020202029203d206c6973742e617428766f7465732c203029001615330034915865787065637420536f6d6528506169722844656c6567617465526570726573656e74617469766528536372697074282e2e29292c205b5f2c202e2e5d2929203d0a2020202020206c6973742e617428766f7465732c203229001615330024914265787065637420536f6d652850616972285374616b65506f6f6c28706f6f6c5f6964292c205b5f2c202e2e5d2929203d206c6973742e617428766f7465732c20342900165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "298b027639e9340c10c241a8193ab099a46840548c61930c32398a7c" - }, - { - "title": "voting.purposes.else", - "compiledCode": "590c50010100323232323232323232323232253330053232323232533300a3370e900418061baa0011323232323232323253330123006301437540022646464a66602a6012602e6ea800854cc8cc058c004c060dd5180e180c9baa0031533301a002013132533301b301e0031323232533301a3005375a604060420042a666034600a60386ea800c54ccc068cdc7800a45209999999999999999999999999999999999999999999999999999999999999999001533301a3375e98158d8799f9fd8799fd8799f581c00000000000000000000000000000000000000000000000000000000ffffa1d8799f582099999999999999999999999999999999999999999999999999999999999999991898ffd87980ffff003300a00c480084c94ccc06cc03cc074dd50008991919299980f180498101baa0021533301e300930203754604860426ea800854ccc08800407054ccc078cdd7a61abd8799f9fd87a9fd8799f581c00000000000000000000000000000000000000000000000000000000ffffa3d8799f5820777777777777777777777777777777777777777777777777777777777777777702ffd87b80d8799f5820888888888888888888888888888888888888888888888888888888888888888801ffd87b80d8799f5820999999999999999999999999999999999999999999999999999999999999999900ffd87b80ffff003300e010480184c94ccc07cc04cc084dd50008991919299981119b8748010c090dd500109929998138010110a99981199b8f0014891c000000000000000000000000000000000000000000000000000000000014a22a660489211865787065637420706f6f6c5f6964203d3d206f6e6c7930730016375c6050604a6ea8008084dd5981200118110009919bb03026001302630270013758604a60446ea8004078cc0380412008153301f491ff6578706563740a202020202020536f6d65280a202020202020202050616972280a2020202020202020202044656c6567617465526570726573656e74617469766528566572696669636174696f6e4b6579286f6e6c79307329292c0a202020202020202020205b0a20202020202020202020202050616972280a2020202020202020202020202020476f7665726e616e6365416374696f6e4964207b207472616e73616374696f6e3a206f6e6c7937732c2070726f706f73616c5f70726f6365647572653a2032207d2c0a20202020202020202020202020204162737461696e2c0a202020202020202020202020292c0a2020202020202020202020205061ff6972280a2020202020202020202020202020476f7665726e616e6365416374696f6e4964207b207472616e73616374696f6e3a206f6e6c7938732c2070726f706f73616c5f70726f6365647572653a2031207d2c0a20202020202020202020202020204162737461696e2c0a202020202020202020202020292c0a20202020202020202020202050616972280a2020202020202020202020202020476f7665726e616e6365416374696f6e4964207b207472616e73616374696f6e3a206f6e6c7939732c2070726f706f73616c5f70726f6365647572653a2030207d2c0a20202020202020202020202020204162737461696e2c0a20202020202020202020392020292c0a202020202020202020205d2c0a2020202020202020292c0a20202020202029203d3d206c6973742e617428766f7465732c203329001601c01c37566040004603c0026466ec0c088004c088c08c004dd61810980f1baa0010193300a00c4801054cc06d2401ff6578706563740a202020202020536f6d65280a202020202020202050616972280a20202020202020202020436f6e737469747574696f6e616c436f6d6d69747465654d656d62657228566572696669636174696f6e4b6579286f6e6c79307329292c0a202020202020202020205b0a20202020202020202020202050616972280a2020202020202020202020202020476f7665726e616e6365416374696f6e4964207b0a202020202020202020202020202020207472616e73616374696f6e3a206f6e6c7939732c0a2020202020202020202020202020202070726f706f73616c5f70726f6365647572653a203135322c0a2020202020202020202020202059207d2c0a20202020202020202020202020204e6f2c0a202020202020202020202020292c0a202020202020202020205d2c0a2020202020202020292c0a20202020202029203d3d206c6973742e617428766f7465732c2031290016153301b4911c657870656374207472616e73616374696f6e203d3d206f6e6c7939730016017017375c603e00260366ea8c068008c068004050c070008dc3a40040240246eacc05c008c054004c8cdd8180c800980c980d0009bac30183015375400201e6600200690001800800911299980b0010a60103d87a8000132325333014300800313374a90001980c9ba73301930160023301930170024bd7025eb804ccc014014004c02400cc06800cc060008dd5980a180a980a980a980a980a980a980a980a980a980a980a980a98089baa008323232323232533301332533333301c00c15333014300830163754018264a666032002004264a66666603c002006006006264a666036603c0062a66602e66e1d2054001153301837326600a01e9110014a20080086eb400400cc06c004c05cdd5006000800800800800899299999980e0060a99980a1804180b1baa00c15333018301737540182a6602a6e64cc009300103d879800048810014a20020020020020020022940526153301449010f6578706563742069735f76616c69640016300100122253332333301d00313232323232323300c0020013371491010128000025333019337100069007099b80483c80400c54ccc064cdc4001a410004266e00cdc0241002800690068b299980e000899b8a4881035b5d2900005133714911035b5f2000333300800133714911025d290000522333009009002300600122333009009002001375860340046eb4c060004c8cdd81ba83018001374e60320026ea800c4c94ccc0680044cdc52441027b7d00003133714911037b5f200032323300100100322533301d00110031533301d3020001132333009009301c001337149101023a2000333009009301d001004301f001132333009009301c001337149101023a2000333009009301d0013006330030033021002301f0013371491102207d000033756006264a666034002266e29221025b5d00003133714911035b5f2000333300600133714911015d000032233300700700230040012233300700700200137580066e292201022c2000133005375a0040022646466e2922010268270000132333001001300b371a00466e292201012700003222533301833710004900008008991919199803003180800299b8b33700004a66603666e2000920141481805206e3371666e000054ccc06ccdc4000a4028290300a40dc00866e18009202033706002901019b8e004002375c0044444646600200200a44a666034002200a2a666034603a002266006603800200a266008603800266004004603a00244646600200200644a666026600e002266e29220101300000315333013337100029000099b8a489012d003300200233702900000089980299b8400148050cdc599b803370a002900a240c00066002002444a66602066e2400920001001133300300333708004900a19b8b3370066e14009201448180004dc3a40006e0120013010300d37540022c601e6020004601c002601c004601800260106ea800452615330064911856616c696461746f722072657475726e65642066616c7365001365615330044901ab65787065637420536f6d65280a2020202020205061697228436f6e737469747574696f6e616c436f6d6d69747465654d656d62657228536372697074282e2e29292c0a2020202020205b5061697228476f7665726e616e6365416374696f6e4964207b207472616e73616374696f6e2c2070726f706f73616c5f70726f6365647572653a2031207d2c20596573295d292c0a2020202029203d206c6973742e617428766f7465732c203029001615330034915865787065637420536f6d6528506169722844656c6567617465526570726573656e74617469766528536372697074282e2e29292c205b5f2c202e2e5d2929203d0a2020202020206c6973742e617428766f7465732c203229001615330024914265787065637420536f6d652850616972285374616b65506f6f6c28706f6f6c5f6964292c205b5f2c202e2e5d2929203d206c6973742e617428766f7465732c20342900165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "298b027639e9340c10c241a8193ab099a46840548c61930c32398a7c" - }, - { - "title": "withdraw.thing.spend", - "datum": { - "title": "_datum", - "schema": { - "$ref": "#/definitions/Void" - } - }, - "redeemer": { - "title": "_rdmr", - "schema": { - "$ref": "#/definitions/Void" - } - }, - "compiledCode": "5906690101003232323232323232253330023232323232325323330093370e9001001099191919251533300c3004300e375400e2a666020601e6ea801c5261616301130120023010001300c37540062a66601266e1d200400213232533300b3370e900118069baa00213253323300d3375e60026602498010ad8799fd87980d87a80ff00330123001330123374a9001198092601091b000001739c890420004bd7019809199806a504c103d87a80004c0103d87980004bd7025eb80c04cc050c050c050c050c050c050c050c040dd50050991919299980819baf4c0154d8799fd8799fd8799f581c00000000000000000000000000000000000000000000000000000000ffd8799fd8799fd87a9f581c11111111111111111111111111111111111111111111111111111111ffffffffff00330010034800054ccc040cdd7a613ad8799fd8799fd8799f581c00000000000000000000000000000000000000000000000000000000ffd8799fd87a9f1a00261ec3181b03ffffffff00330010034800854ccc040cdd7a613ad8799fd8799fd87a9f581c11111111111111111111111111111111111111111111111111111111ffd8799fd87a9f1a00261ec3181b03ffffffff00330010034801054ccc040cdd79ba6330153376066e95200233015375200a97ae04c1010000330154bded8c0122d8799f581c00000000000000000000000000000000000000000000000000000000ff0001010e004bd6f7b630180b180b980b980b980b980b980b98099baa00d14a22a6602292016c6578706563740a2020202020205b5061697228536372697074286d795f7363726970745f68617368292c2030292c205061697228566572696669636174696f6e4b6579286f6e6c793073292c203134295d203d3d207472616e73616374696f6e2e7769746864726177616c7300161533011491b96578706563740a202020202020536f6d65280a202020202020202041646472657373207b0a202020202020202020207061796d656e745f63726564656e7469616c3a20536372697074286f6e6c793173292c0a202020202020202020207374616b655f63726564656e7469616c3a20536f6d6528506f696e74657228323439383234332c2032372c203329292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286164647265737365732c20322900161533011491c26578706563740a202020202020536f6d65280a202020202020202041646472657373207b0a202020202020202020207061796d656e745f63726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a202020202020202020207374616b655f63726564656e7469616c3a20536f6d6528506f696e74657228323439383234332c2032372c203329292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286164647265737365732c20312900161533011491c16578706563740a202020202020536f6d65280a202020202020202041646472657373207b0a202020202020202020207061796d656e745f63726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a202020202020202020207374616b655f63726564656e7469616c3a20536f6d6528496e6c696e6528536372697074286f6e6c7931732929292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286164647265737365732c20302900163001001222533301500214c103d87a8000132325333013300b00313007330180024bd70099980280280099b8000348004c06400cc05c008c8cc004004dd6180a180a980a98089baa00b22533301300114bd7009980a180a98091baa3015001330020023016001374a90000a99806a4814c65787065637420696e74657276616c2e656e746972656c795f6265666f7265283135393630353930393230303029203d3d207472616e73616374696f6e2e76616c69646974795f72616e67650016375c6022601c6ea800854cc03124012a65787065637420536372697074286d795f7363726970745f6861736829203d2063726564656e7469616c0016533300a3002300c375400a2a66601c601a6ea80145261616300f300c37540062c6e1d2000300937540026018601a004601600260160046012002600a6ea800452615330034911856616c696461746f722072657475726e65642066616c736500136565734ae7155ceaab9e5573eae815d0aba201", - "hash": "04137c5312a5b62c6bd9282e5c41e82d0f8b3da15fee6628552fe189" - }, - { - "title": "withdraw.thing.withdraw", - "redeemer": { - "title": "_rdmr", - "schema": { - "$ref": "#/definitions/Void" - } - }, - "compiledCode": "5906690101003232323232323232253330023232323232325323330093370e9001001099191919251533300c3004300e375400e2a666020601e6ea801c5261616301130120023010001300c37540062a66601266e1d200400213232533300b3370e900118069baa00213253323300d3375e60026602498010ad8799fd87980d87a80ff00330123001330123374a9001198092601091b000001739c890420004bd7019809199806a504c103d87a80004c0103d87980004bd7025eb80c04cc050c050c050c050c050c050c050c040dd50050991919299980819baf4c0154d8799fd8799fd8799f581c00000000000000000000000000000000000000000000000000000000ffd8799fd8799fd87a9f581c11111111111111111111111111111111111111111111111111111111ffffffffff00330010034800054ccc040cdd7a613ad8799fd8799fd8799f581c00000000000000000000000000000000000000000000000000000000ffd8799fd87a9f1a00261ec3181b03ffffffff00330010034800854ccc040cdd7a613ad8799fd8799fd87a9f581c11111111111111111111111111111111111111111111111111111111ffd8799fd87a9f1a00261ec3181b03ffffffff00330010034801054ccc040cdd79ba6330153376066e95200233015375200a97ae04c1010000330154bded8c0122d8799f581c00000000000000000000000000000000000000000000000000000000ff0001010e004bd6f7b630180b180b980b980b980b980b980b98099baa00d14a22a6602292016c6578706563740a2020202020205b5061697228536372697074286d795f7363726970745f68617368292c2030292c205061697228566572696669636174696f6e4b6579286f6e6c793073292c203134295d203d3d207472616e73616374696f6e2e7769746864726177616c7300161533011491b96578706563740a202020202020536f6d65280a202020202020202041646472657373207b0a202020202020202020207061796d656e745f63726564656e7469616c3a20536372697074286f6e6c793173292c0a202020202020202020207374616b655f63726564656e7469616c3a20536f6d6528506f696e74657228323439383234332c2032372c203329292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286164647265737365732c20322900161533011491c26578706563740a202020202020536f6d65280a202020202020202041646472657373207b0a202020202020202020207061796d656e745f63726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a202020202020202020207374616b655f63726564656e7469616c3a20536f6d6528506f696e74657228323439383234332c2032372c203329292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286164647265737365732c20312900161533011491c16578706563740a202020202020536f6d65280a202020202020202041646472657373207b0a202020202020202020207061796d656e745f63726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a202020202020202020207374616b655f63726564656e7469616c3a20536f6d6528496e6c696e6528536372697074286f6e6c7931732929292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286164647265737365732c20302900163001001222533301500214c103d87a8000132325333013300b00313007330180024bd70099980280280099b8000348004c06400cc05c008c8cc004004dd6180a180a980a98089baa00b22533301300114bd7009980a180a98091baa3015001330020023016001374a90000a99806a4814c65787065637420696e74657276616c2e656e746972656c795f6265666f7265283135393630353930393230303029203d3d207472616e73616374696f6e2e76616c69646974795f72616e67650016375c6022601c6ea800854cc03124012a65787065637420536372697074286d795f7363726970745f6861736829203d2063726564656e7469616c0016533300a3002300c375400a2a66601c601a6ea80145261616300f300c37540062c6e1d2000300937540026018601a004601600260160046012002600a6ea800452615330034911856616c696461746f722072657475726e65642066616c736500136565734ae7155ceaab9e5573eae815d0aba201", - "hash": "04137c5312a5b62c6bd9282e5c41e82d0f8b3da15fee6628552fe189" - }, - { - "title": "withdraw.thing.else", - "compiledCode": "5906690101003232323232323232253330023232323232325323330093370e9001001099191919251533300c3004300e375400e2a666020601e6ea801c5261616301130120023010001300c37540062a66601266e1d200400213232533300b3370e900118069baa00213253323300d3375e60026602498010ad8799fd87980d87a80ff00330123001330123374a9001198092601091b000001739c890420004bd7019809199806a504c103d87a80004c0103d87980004bd7025eb80c04cc050c050c050c050c050c050c050c040dd50050991919299980819baf4c0154d8799fd8799fd8799f581c00000000000000000000000000000000000000000000000000000000ffd8799fd8799fd87a9f581c11111111111111111111111111111111111111111111111111111111ffffffffff00330010034800054ccc040cdd7a613ad8799fd8799fd8799f581c00000000000000000000000000000000000000000000000000000000ffd8799fd87a9f1a00261ec3181b03ffffffff00330010034800854ccc040cdd7a613ad8799fd8799fd87a9f581c11111111111111111111111111111111111111111111111111111111ffd8799fd87a9f1a00261ec3181b03ffffffff00330010034801054ccc040cdd79ba6330153376066e95200233015375200a97ae04c1010000330154bded8c0122d8799f581c00000000000000000000000000000000000000000000000000000000ff0001010e004bd6f7b630180b180b980b980b980b980b980b98099baa00d14a22a6602292016c6578706563740a2020202020205b5061697228536372697074286d795f7363726970745f68617368292c2030292c205061697228566572696669636174696f6e4b6579286f6e6c793073292c203134295d203d3d207472616e73616374696f6e2e7769746864726177616c7300161533011491b96578706563740a202020202020536f6d65280a202020202020202041646472657373207b0a202020202020202020207061796d656e745f63726564656e7469616c3a20536372697074286f6e6c793173292c0a202020202020202020207374616b655f63726564656e7469616c3a20536f6d6528506f696e74657228323439383234332c2032372c203329292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286164647265737365732c20322900161533011491c26578706563740a202020202020536f6d65280a202020202020202041646472657373207b0a202020202020202020207061796d656e745f63726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a202020202020202020207374616b655f63726564656e7469616c3a20536f6d6528506f696e74657228323439383234332c2032372c203329292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286164647265737365732c20312900161533011491c16578706563740a202020202020536f6d65280a202020202020202041646472657373207b0a202020202020202020207061796d656e745f63726564656e7469616c3a20566572696669636174696f6e4b6579286f6e6c793073292c0a202020202020202020207374616b655f63726564656e7469616c3a20536f6d6528496e6c696e6528536372697074286f6e6c7931732929292c0a20202020202020207d2c0a20202020202029203d3d206c6973742e6174286164647265737365732c20302900163001001222533301500214c103d87a8000132325333013300b00313007330180024bd70099980280280099b8000348004c06400cc05c008c8cc004004dd6180a180a980a98089baa00b22533301300114bd7009980a180a98091baa3015001330020023016001374a90000a99806a4814c65787065637420696e74657276616c2e656e746972656c795f6265666f7265283135393630353930393230303029203d3d207472616e73616374696f6e2e76616c69646974795f72616e67650016375c6022601c6ea800854cc03124012a65787065637420536372697074286d795f7363726970745f6861736829203d2063726564656e7469616c0016533300a3002300c375400a2a66601c601a6ea80145261616300f300c37540062c6e1d2000300937540026018601a004601600260160046012002600a6ea800452615330034911856616c696461746f722072657475726e65642066616c736500136565734ae7155ceaab9e5573eae815d0aba201", - "hash": "04137c5312a5b62c6bd9282e5c41e82d0f8b3da15fee6628552fe189" - } - ], - "definitions": { - "Data": { - "title": "Data", - "description": "Any Plutus data." - }, - "Void": { - "title": "Unit", - "description": "The nullary constructor.", - "anyOf": [ - { - "dataType": "constructor", - "index": 0, - "fields": [] - } - ] - } - } -} \ No newline at end of file From 4a8bec4caa4b4f351e15b3cf941b25783b0bfe05 Mon Sep 17 00:00:00 2001 From: microproofs Date: Tue, 20 Aug 2024 12:52:23 -0400 Subject: [PATCH 10/13] Fixing gen uplc tests --- crates/aiken-project/src/tests/gen_uplc.rs | 327 +++++++++++++-------- 1 file changed, 198 insertions(+), 129 deletions(-) diff --git a/crates/aiken-project/src/tests/gen_uplc.rs b/crates/aiken-project/src/tests/gen_uplc.rs index a8b5ef29..659e9247 100644 --- a/crates/aiken-project/src/tests/gen_uplc.rs +++ b/crates/aiken-project/src/tests/gen_uplc.rs @@ -2184,23 +2184,101 @@ fn acceptance_test_23_to_list() { } "#; + let do_insert = Term::var("elems") + .delayed_choose_list( + Term::mk_cons() + .apply( + Term::mk_pair_data() + .apply(Term::b_data().apply(Term::var("k"))) + .apply(Term::i_data().apply(Term::var("v"))), + ) + .apply(Term::empty_map()), + Term::head_list() + .apply(Term::var("elems")) + .as_var("elem_0", |elem_0| { + Term::tail_list() + .apply(Term::var("elems")) + .as_var("rest", |rest| { + Term::un_b_data() + .apply(Term::fst_pair().apply(Term::Var(elem_0.clone()))) + .as_var("k2", |k2| { + Term::un_i_data() + .apply(Term::snd_pair().apply(Term::Var(elem_0.clone()))) + .as_var("v2", |v2| { + Term::equals_bytestring() + .apply(Term::var("k")) + .apply(Term::Var(k2.clone())) + .delayed_if_then_else( + Term::mk_cons() + .apply( + Term::mk_pair_data() + .apply( + Term::b_data() + .apply(Term::var("k")), + ) + .apply( + Term::i_data() + .apply(Term::var("v")), + ), + ) + .apply(Term::Var(rest.clone())), + Term::mk_cons() + .apply( + Term::mk_pair_data() + .apply( + Term::b_data() + .apply(Term::Var(k2)), + ) + .apply( + Term::i_data() + .apply(Term::Var(v2)), + ), + ) + .apply( + Term::var("do_insert") + .apply(Term::var("do_insert")) + .apply(Term::Var(rest)), + ), + ) + }) + }) + }) + }), + ) + .lambda("elems") + .lambda("do_insert"); + + let insert = do_insert + .as_var("do_insert", |do_insert| { + Term::Var(do_insert.clone()) + .apply(Term::Var(do_insert)) + .apply(Term::var("m")) + }) + .lambda("v") + .lambda("k") + .lambda("m"); + assert_uplc( src, Term::equals_data() - .apply(Term::map_data().apply(Term::map_values(vec![ - Constant::ProtoPair( - Type::Data, - Type::Data, - Constant::Data(Data::bytestring("foo".as_bytes().to_vec())).into(), - Constant::Data(Data::integer(42.into())).into(), + .apply( + Term::map_data().apply( + insert + .as_var("insert", |insert| { + Term::Var(insert.clone()) + .apply( + Term::Var(insert) + .apply(Term::empty_map()) + .apply(Term::byte_string("foo".as_bytes().to_vec())) + .apply(Term::integer(42.into())), + ) + .apply(Term::byte_string("bar".as_bytes().to_vec())) + .apply(Term::integer(14.into())) + .delay() + }) + .force(), ), - Constant::ProtoPair( - Type::Data, - Type::Data, - Constant::Data(Data::bytestring("bar".as_bytes().to_vec())).into(), - Constant::Data(Data::integer(14.into())).into(), - ), - ]))) + ) .apply(Term::map_data().apply(Term::map_values(vec![ Constant::ProtoPair( Type::Data, @@ -3090,76 +3168,30 @@ fn acceptance_test_29_union_pair() { "#; - assert_uplc( - src, - Term::equals_data() - .apply( - Term::map_data().apply( - Term::var("union") - .lambda("union") - .apply( - Term::var("do_union") - .apply(Term::var("left")) - .apply(Term::var("right")) - .lambda("right") - .lambda("left"), - ) - .lambda("do_union") - .apply(Term::var("do_union").apply(Term::var("do_union"))) - .lambda("do_union") - .apply( - Term::var("left") - .delayed_choose_list( - Term::var("right"), - Term::var("do_union") - .apply(Term::var("do_union")) - .apply(Term::var("rest")) - .apply( - Term::var("do_insert") - .apply(Term::var("right")) - .apply(Term::var("k")) - .apply(Term::var("v")), - ) - .lambda("v") - .apply( - Term::un_i_data() - .apply(Term::snd_pair().apply(Term::var("pair"))), - ) - .lambda("k") - .apply( - Term::un_b_data() - .apply(Term::fst_pair().apply(Term::var("pair"))), - ) - .lambda("rest") - .apply(Term::tail_list().apply(Term::var("left"))) - .lambda("pair") - .apply(Term::head_list().apply(Term::var("left"))), - ) - .lambda("right") - .lambda("left") - .lambda("do_union"), - ) - .lambda("do_insert") - .apply( - Term::var("do_insert") - .apply(Term::var("do_insert")) - .apply(Term::var("elems")) - .lambda("do_insert") - .apply( - Term::var("elems") - .delayed_choose_list( - Term::mk_cons() - .apply( - Term::mk_pair_data() - .apply(Term::b_data().apply(Term::var("k"))) - .apply( - Term::i_data().apply(Term::var("v")), - ), - ) - .apply(Term::empty_map()), + let do_insert = Term::var("elems") + .delayed_choose_list( + Term::mk_cons() + .apply( + Term::mk_pair_data() + .apply(Term::b_data().apply(Term::var("k"))) + .apply(Term::i_data().apply(Term::var("v"))), + ) + .apply(Term::empty_map()), + Term::head_list() + .apply(Term::var("elems")) + .as_var("elem_0", |elem_0| { + Term::tail_list() + .apply(Term::var("elems")) + .as_var("rest", |rest| { + Term::un_b_data() + .apply(Term::fst_pair().apply(Term::Var(elem_0.clone()))) + .as_var("k2", |k2| { + Term::un_i_data() + .apply(Term::snd_pair().apply(Term::Var(elem_0.clone()))) + .as_var("v2", |v2| { Term::equals_bytestring() .apply(Term::var("k")) - .apply(Term::var("k2")) + .apply(Term::Var(k2.clone())) .delayed_if_then_else( Term::mk_cons() .apply( @@ -3173,72 +3205,109 @@ fn acceptance_test_29_union_pair() { .apply(Term::var("v")), ), ) - .apply(Term::var("rest")), + .apply(Term::Var(rest.clone())), Term::mk_cons() .apply( Term::mk_pair_data() .apply( Term::b_data() - .apply(Term::var("k2")), + .apply(Term::Var(k2)), ) .apply( Term::i_data() - .apply(Term::var("v2")), + .apply(Term::Var(v2)), ), ) .apply( Term::var("do_insert") .apply(Term::var("do_insert")) - .apply(Term::var("rest")), + .apply(Term::Var(rest)), ), ) - .lambda("v2") - .apply(Term::un_i_data().apply( - Term::snd_pair().apply(Term::var("pair")), - )) - .lambda("k2") - .apply(Term::un_b_data().apply( - Term::fst_pair().apply(Term::var("pair")), - )) - .lambda("rest") - .apply(Term::tail_list().apply(Term::var("elems"))) - .lambda("pair") - .apply(Term::head_list().apply(Term::var("elems"))), - ) - .lambda("elems") - .lambda("do_insert"), + }) + }) + }) + }), + ) + .lambda("elems") + .lambda("do_insert"); + + let do_insert_recurse = do_insert + .as_var("do_insert", |do_insert| { + Term::Var(do_insert.clone()) + .apply(Term::Var(do_insert)) + .apply(Term::var("elems")) + }) + .lambda("v") + .lambda("k") + .lambda("elems"); + + let insert = Term::var("do_insert") + .apply(Term::var("m")) + .apply(Term::var("k")) + .apply(Term::var("v")) + .lambda("v") + .lambda("k") + .lambda("m"); + + let fixture = Term::var("insert") + .apply( + Term::var("insert") + .apply(Term::var("new").force()) + .apply(Term::byte_string("foo".as_bytes().to_vec())) + .apply(Term::integer(42.into())), + ) + .apply(Term::byte_string("bar".as_bytes().to_vec())) + .apply(Term::integer(14.into())) + .delay(); + + let do_union = Term::var("left") + .delayed_choose_list( + Term::var("right"), + Term::head_list() + .apply(Term::var("left")) + .as_var("elem_0", |elem_0| { + Term::var("do_union") + .apply(Term::var("do_union")) + .apply(Term::tail_list().apply(Term::var("left"))) + .apply( + Term::var("do_insert") + .apply(Term::var("right")) + .apply( + Term::un_b_data() + .apply(Term::fst_pair().apply(Term::Var(elem_0.clone()))), ) - .lambda("v") - .lambda("k") - .lambda("elems"), + .apply( + Term::un_i_data() + .apply(Term::snd_pair().apply(Term::Var(elem_0))), + ), ) - .apply(Term::map_values(vec![ - Constant::ProtoPair( - Type::Data, - Type::Data, - Constant::Data(Data::bytestring("foo".as_bytes().to_vec())).into(), - Constant::Data(Data::integer(42.into())).into(), - ), - Constant::ProtoPair( - Type::Data, - Type::Data, - Constant::Data(Data::bytestring("bar".as_bytes().to_vec())).into(), - Constant::Data(Data::integer(14.into())).into(), - ), - ])) - .apply(Term::empty_map()), - ), + }), + ) + .lambda("right") + .lambda("left") + .lambda("do_union"); + + assert_uplc( + src, + Term::equals_data() + .apply( + Term::map_data().apply(do_union.as_var("do_union", |do_union| { + Term::Var(do_union.clone()) + .apply(Term::Var(do_union)) + .apply(Term::var("fixture").force()) + .apply(Term::var("new").force()) + })), ) - .apply(Term::data(Data::map(vec![ - ( - Data::bytestring("foo".as_bytes().to_vec()), - Data::integer(42.into()), - ), - ( - Data::bytestring("bar".as_bytes().to_vec()), - Data::integer(14.into()), - ), - ]))), + .apply(Term::map_data().apply(Term::var("fixture").force())) + .lambda("fixture") + .apply(fixture) + .lambda("insert") + .apply(insert) + .lambda("new") + .apply(Term::empty_map().delay()) + .lambda("do_insert") + .apply(do_insert_recurse), false, ); } From ef8969133102c2c1aa30983e44cbdca8b46d282a Mon Sep 17 00:00:00 2001 From: KtorZ Date: Thu, 29 Aug 2024 16:56:16 +0200 Subject: [PATCH 11/13] Ensure code-gen's Program version/semantic matches Plutus version --- crates/aiken-lang/src/gen_uplc.rs | 38 +++++++------------ crates/aiken-lang/src/plutus_version.rs | 2 +- ..._project__export__tests__basic_export.snap | 4 +- ...oject__export__tests__recursive_types.snap | 4 +- crates/aiken-project/src/tests/gen_uplc.rs | 4 +- 5 files changed, 20 insertions(+), 32 deletions(-) diff --git a/crates/aiken-lang/src/gen_uplc.rs b/crates/aiken-lang/src/gen_uplc.rs index c47f8cfb..a52153be 100644 --- a/crates/aiken-lang/src/gen_uplc.rs +++ b/crates/aiken-lang/src/gen_uplc.rs @@ -163,17 +163,19 @@ impl<'a> CodeGenerator<'a> { self.finalize(term) } - fn finalize(&mut self, mut term: Term) -> Program { - term = self.special_functions.apply_used_functions(term); - + fn new_program(&self, term: Term) -> Program { let version = match self.plutus_version { PlutusVersion::V1 | PlutusVersion::V2 => (1, 0, 0), PlutusVersion::V3 => (1, 1, 0), }; - let mut program = Program { version, term }; + Program { version, term } + } - program = aiken_optimize_and_intern(program); + fn finalize(&mut self, mut term: Term) -> Program { + term = self.special_functions.apply_used_functions(term); + + let program = aiken_optimize_and_intern(self.new_program(term)); // This is very important to call here. // If this isn't done, re-using the same instance @@ -4245,10 +4247,8 @@ impl<'a> CodeGenerator<'a> { .constr_fields_exposer() .constr_index_exposer(); - let mut program: Program = Program { - version: (1, 0, 0), - term: self.special_functions.apply_used_functions(term), - }; + let mut program = + self.new_program(self.special_functions.apply_used_functions(term)); let mut interner = CodeGenInterner::new(); @@ -4358,10 +4358,7 @@ impl<'a> CodeGenerator<'a> { .apply(Term::integer(constr_index.into())) .apply(term); - let mut program: Program = Program { - version: (1, 0, 0), - term, - }; + let mut program = self.new_program(term); let mut interner = CodeGenInterner::new(); @@ -4914,10 +4911,7 @@ impl<'a> CodeGenerator<'a> { }; if extract_constant(term.pierce_no_inlines()).is_some() { - let mut program: Program = Program { - version: (1, 0, 0), - term, - }; + let mut program = self.new_program(term); let mut interner = CodeGenInterner::new(); @@ -4942,10 +4936,7 @@ impl<'a> CodeGenerator<'a> { if extract_constant(term.pierce_no_inlines()).is_some() { term = builder::convert_type_to_data(term, &tipo); - let mut program: Program = Program { - version: (1, 0, 0), - term, - }; + let mut program = self.new_program(term); let mut interner = CodeGenInterner::new(); @@ -5391,10 +5382,7 @@ impl<'a> CodeGenerator<'a> { let maybe_const = extract_constant(item.pierce_no_inlines()); maybe_const.is_some() }) { - let mut program: Program = Program { - version: (1, 0, 0), - term, - }; + let mut program = self.new_program(term); let mut interner = CodeGenInterner::new(); diff --git a/crates/aiken-lang/src/plutus_version.rs b/crates/aiken-lang/src/plutus_version.rs index 66a1d306..69c35701 100644 --- a/crates/aiken-lang/src/plutus_version.rs +++ b/crates/aiken-lang/src/plutus_version.rs @@ -5,8 +5,8 @@ use serde::{Deserialize, Serialize}; #[serde(rename_all = "camelCase")] pub enum PlutusVersion { V1, - #[default] V2, + #[default] V3, } diff --git a/crates/aiken-project/src/snapshots/aiken_project__export__tests__basic_export.snap b/crates/aiken-project/src/snapshots/aiken_project__export__tests__basic_export.snap index e28412b8..03ce0b29 100644 --- a/crates/aiken-project/src/snapshots/aiken_project__export__tests__basic_export.snap +++ b/crates/aiken-project/src/snapshots/aiken_project__export__tests__basic_export.snap @@ -18,8 +18,8 @@ description: "Code:\n\npub fn add(a: Int, b: Int) -> Int {\n a + b\n}\n" } } ], - "compiledCode": "500100002322337000046eb4004dd68009", - "hash": "bcd6700b4dba798a7d19c5769ef3deb21423f8809594a6942860dd1f", + "compiledCode": "500101002322337000046eb4004dd68009", + "hash": "b8374597a772cef80d891b7f6a03588e10cc19b780251228ba4ce9c6", "definitions": { "Int": { "dataType": "integer" diff --git a/crates/aiken-project/src/snapshots/aiken_project__export__tests__recursive_types.snap b/crates/aiken-project/src/snapshots/aiken_project__export__tests__recursive_types.snap index 16e9cdff..1ad945d3 100644 --- a/crates/aiken-project/src/snapshots/aiken_project__export__tests__recursive_types.snap +++ b/crates/aiken-project/src/snapshots/aiken_project__export__tests__recursive_types.snap @@ -18,8 +18,8 @@ description: "Code:\n\npub type Foo {\n Empty\n Bar(a, Foo)\n}\n\npub fn } } ], - "compiledCode": "5901d501000032323232323222323232323253330083002300937540062a666010600460126ea801052000001001132323232533300b3004300c375400c2646464a66601c600e601e6ea80284c8cdc019b80003375a60260026600c0046026602800260206ea8028010c044c048008dd6980800098069baa006001132533300b3005300c375400c2a666016600860186ea801c4c8cdc01bad3010001330034c103d879800030103011001300d375400e00200226466e00dd698078009980118079808000a60103d8798000300c375400a600200244464646464a66601e601260206ea800854ccc03cc024c040dd50018a4000002002264a66601e601060206ea80084c8c8c94ccc048c02cc04cdd500309919b80337000066eb4c05c004ccc02c02c008c05cc060004c050dd5003002180a980b0011bad301400130113754004002264a66601e601260206ea800854ccc03cc020c040dd500189919b80375a6028002666010010980103d8798000301430150013011375400600200226466e00dd698098009998038039809980a000a60103d8798000301037540026022004602060220026601c0046601c00297ae0370e90011b8748000c024008c020c024004cc018008cc0180052f5c0ae6955ceaab9e5740ae855d101", - "hash": "dca86b6e092019b67ef310ba8360682d7bf8284cc728c6b525fb0b0d", + "compiledCode": "5901d501010032323232323222323232323253330083002300937540062a666010600460126ea801052000001001132323232533300b3004300c375400c2646464a66601c600e601e6ea80284c8cdc019b80003375a60260026600c0046026602800260206ea8028010c044c048008dd6980800098069baa006001132533300b3005300c375400c2a666016600860186ea801c4c8cdc01bad3010001330034c103d879800030103011001300d375400e00200226466e00dd698078009980118079808000a60103d8798000300c375400a600200244464646464a66601e601260206ea800854ccc03cc024c040dd50018a4000002002264a66601e601060206ea80084c8c8c94ccc048c02cc04cdd500309919b80337000066eb4c05c004ccc02c02c008c05cc060004c050dd5003002180a980b0011bad301400130113754004002264a66601e601260206ea800854ccc03cc020c040dd500189919b80375a6028002666010010980103d8798000301430150013011375400600200226466e00dd698098009998038039809980a000a60103d8798000301037540026022004602060220026601c0046601c00297ae0370e90011b8748000c024008c020c024004cc018008cc0180052f5c0ae6955ceaab9e5740ae855d101", + "hash": "46254b889c878fb25e55ad7e9eb3d331770a55defec65749c9504581", "definitions": { "Int": { "dataType": "integer" diff --git a/crates/aiken-project/src/tests/gen_uplc.rs b/crates/aiken-project/src/tests/gen_uplc.rs index 659e9247..cc8dae7c 100644 --- a/crates/aiken-project/src/tests/gen_uplc.rs +++ b/crates/aiken-project/src/tests/gen_uplc.rs @@ -57,7 +57,7 @@ fn assert_uplc(source_code: &str, expected: Term, should_fail: bool) { let debruijn_program: Program = program.try_into().unwrap(); let expected = Program { - version: (1, 0, 0), + version: (1, 1, 0), term: expected, }; @@ -97,7 +97,7 @@ fn assert_uplc(source_code: &str, expected: Term, should_fail: bool) { let debruijn_program: Program = program.try_into().unwrap(); let expected = Program { - version: (1, 0, 0), + version: (1, 1, 0), term: expected, }; From a06383d3335058e52853ecffad111b30bc53d8d0 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Thu, 29 Aug 2024 16:57:20 +0200 Subject: [PATCH 12/13] Use const instead of zero-arg functions in few code-gen tests. --- crates/aiken-lang/src/tipo.rs | 12 ++- crates/aiken-project/src/test_framework.rs | 7 +- crates/aiken-project/src/tests/gen_uplc.rs | 88 ++++++++++++---------- 3 files changed, 58 insertions(+), 49 deletions(-) diff --git a/crates/aiken-lang/src/tipo.rs b/crates/aiken-lang/src/tipo.rs index 3ea349e1..fc3e2e0c 100644 --- a/crates/aiken-lang/src/tipo.rs +++ b/crates/aiken-lang/src/tipo.rs @@ -1101,13 +1101,11 @@ impl TypeVar { Self::Link { tipo } => tipo.get_inner_types(), Self::Unbound { .. } => vec![], var => { - vec![ - Type::Var { - tipo: RefCell::new(var.clone()).into(), - alias: None, - } - .into(), - ] + vec![Type::Var { + tipo: RefCell::new(var.clone()).into(), + alias: None, + } + .into()] } } } diff --git a/crates/aiken-project/src/test_framework.rs b/crates/aiken-project/src/test_framework.rs index c3ca0303..6c86e651 100644 --- a/crates/aiken-project/src/test_framework.rs +++ b/crates/aiken-project/src/test_framework.rs @@ -242,14 +242,13 @@ mod test { } "#}); - assert!( - prop.run::<()>( + assert!(prop + .run::<()>( 42, PropertyTest::DEFAULT_MAX_SUCCESS, &PlutusVersion::default() ) - .is_success() - ); + .is_success()); } #[test] diff --git a/crates/aiken-project/src/tests/gen_uplc.rs b/crates/aiken-project/src/tests/gen_uplc.rs index cc8dae7c..352e398d 100644 --- a/crates/aiken-project/src/tests/gen_uplc.rs +++ b/crates/aiken-project/src/tests/gen_uplc.rs @@ -3099,9 +3099,7 @@ fn acceptance_test_29_union_pair() { inner: Pairs, } - pub fn new() -> AssocList { - AssocList { inner: [] } - } + const empty_list: AssocList = AssocList { inner: [] } pub fn from_list(xs: Pairs) -> AssocList { AssocList { inner: do_from_list(xs) } @@ -3156,14 +3154,14 @@ fn acceptance_test_29_union_pair() { } } - fn fixture_1() { - new() + const fixture_1 = { + empty_list |> insert("foo", 42) |> insert("bar", 14) } test union_1() { - union(fixture_1(), new()) == fixture_1() + union(fixture_1, empty_list) == fixture_1 } "#; @@ -3250,16 +3248,39 @@ fn acceptance_test_29_union_pair() { .lambda("k") .lambda("m"); - let fixture = Term::var("insert") - .apply( - Term::var("insert") - .apply(Term::var("new").force()) - .apply(Term::byte_string("foo".as_bytes().to_vec())) - .apply(Term::integer(42.into())), + let empty_list = Term::empty_map(); + + let fixture = Term::data(Data::map(vec![ + ( + Data::bytestring(vec![0x66, 0x6f, 0x6f]), + Data::integer(42.into()), + ), + ( + Data::bytestring(vec![0x62, 0x61, 0x72]), + Data::integer(14.into()), + ), + ])); + + let fixture_unwrapped = Term::Constant( + Constant::ProtoList( + Type::Pair(Type::Data.into(), Type::Data.into()), + vec![ + Constant::ProtoPair( + Type::Data, + Type::Data, + Constant::Data(Data::bytestring(vec![0x66, 0x6f, 0x6f])).into(), + Constant::Data(Data::integer(42.into())).into(), + ), + Constant::ProtoPair( + Type::Data, + Type::Data, + Constant::Data(Data::bytestring(vec![0x62, 0x61, 0x72])).into(), + Constant::Data(Data::integer(14.into())).into(), + ), + ], ) - .apply(Term::byte_string("bar".as_bytes().to_vec())) - .apply(Term::integer(14.into())) - .delay(); + .into(), + ); let do_union = Term::var("left") .delayed_choose_list( @@ -3295,17 +3316,13 @@ fn acceptance_test_29_union_pair() { Term::map_data().apply(do_union.as_var("do_union", |do_union| { Term::Var(do_union.clone()) .apply(Term::Var(do_union)) - .apply(Term::var("fixture").force()) - .apply(Term::var("new").force()) + .apply(fixture_unwrapped) + .apply(empty_list) })), ) - .apply(Term::map_data().apply(Term::var("fixture").force())) - .lambda("fixture") .apply(fixture) .lambda("insert") .apply(insert) - .lambda("new") - .apply(Term::empty_map().delay()) .lambda("do_insert") .apply(do_insert_recurse), false, @@ -3319,9 +3336,7 @@ fn acceptance_test_29_union_tuple() { inner: List<(key, value)>, } - pub fn new() -> AssocList { - AssocList { inner: [] } - } + const empty_list = AssocList { inner: [] } pub fn from_list(xs: List<(key, value)>) -> AssocList { AssocList { inner: do_from_list(xs) } @@ -3376,14 +3391,14 @@ fn acceptance_test_29_union_tuple() { } } - fn fixture_1() { - new() + const fixture_1 = { + empty_list |> insert("foo", 42) |> insert("bar", 14) } test union_1() { - union(fixture_1(), new()) == fixture_1() + union(fixture_1, empty_list) == fixture_1 } "#; @@ -5511,6 +5526,14 @@ fn list_clause_with_assign() { #[test] fn opaque_value_in_test() { let src = r#" + const dat: Dat = { + let v = Value { inner: Dict { inner: [Pair("", [Pair(#"aa", 4)] |> Dict)] } } + Dat { + c: 0, + a: v + } + } + pub opaque type Value { inner: Dict> } @@ -5524,18 +5547,7 @@ fn opaque_value_in_test() { a: Value } - pub fn dat_new() -> Dat { - let v = Value { inner: Dict { inner: [Pair("", [Pair(#"aa", 4)] |> Dict)] } } - Dat { - c: 0, - a: v - } - } - - test spend() { - let dat = dat_new() - let val = dat.a expect [Pair(_, amount)] = val.inner.inner From e3e889f875bc6004533bb3a5a3b7aab28efb9622 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Fri, 30 Aug 2024 15:45:00 +0200 Subject: [PATCH 13/13] Update benchmarks. --- benchmarks/README.md | 53 ++++++++++++------- benchmarks/aiken.lock | 5 +- .../lib/benchmarks/clausify/benchmark.ak | 4 +- .../lib/benchmarks/knights/benchmark.ak | 17 +++--- .../lib/benchmarks/knights/chess_set.ak | 2 +- .../lib/benchmarks/knights/heuristic.ak | 9 ++-- benchmarks/lib/benchmarks/knights/queue.ak | 6 +-- benchmarks/lib/benchmarks/knights/sort.ak | 2 +- examples/gift_card/aiken.lock | 2 +- examples/gift_card/plutus.json | 28 +++++----- examples/hello_world/aiken.lock | 2 +- examples/hello_world/plutus.json | 12 ++--- 12 files changed, 78 insertions(+), 64 deletions(-) diff --git a/benchmarks/README.md b/benchmarks/README.md index 25cbf09a..484eabf5 100644 --- a/benchmarks/README.md +++ b/benchmarks/README.md @@ -41,6 +41,23 @@ queens5x5/fc 1867 179227518621 1023295666 -->