Caml1999T037b\C#TmcР&Lambda&Lambda-lambda/tmc.mlRR@@ 3@@@@@@#intA;@@@A@@@@@&_none_@@A@A@$charB;@@A@@@@@@A@&stringQ;@@ A@@@@@ @@@%bytesC;@@A@@@@@@@@%floatD;@@A@@@@@@@@$boolE;@@%falsec@@@$trued@@#@@@A@@@@@$@A@$unitF;@@"()e@@.@@@A@@@@@/@A@ #exnG;@@@A@@@@@3@@@#effH;@@O@A@A@@@@@@<@@@,continuationI;@@Q@@P@B@A@nY@@@@@@K@@@%arrayJ;@@R@A@A@@@@@@U@@@ $listK;@@S@A"[]f@@b@"::g@@@T@@o@ @@A@Y@@@@@r@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@A@@@@@@@@%int32N;@@A@@@@@@@@%int64O;@@A@@@@@@@@&lazy_tP;@@X@AJA@Y@@@@@@@@5extension_constructorR;@@A@@@@@@@@*floatarrayS;@@A@@@@@@@@&iarrayT;@@Y@A[A@Y@@@@@@@@*atomic_locU;@@Z@AdA@@@@@@@@@.Assert_failure`#@@@@@J@@@@@@@@[@@AϠ=ocaml.warn_on_literal_patternӐ@@0Division_by_zero]#@@@A٠  @+End_of_file\#$@@@Aᠰ@'FailureY#,@'@@A꠰@0Invalid_argumentX#5@0@@A󠰠$#@-Match_failureV#>@@=@9@;@@a@@A54@)Not_foundZ#O@@@A =<@-Out_of_memoryW#W@@@AED@.Stack_overflow^#_@@@AML@.Sys_blocked_io_#g@@@A$U'T'@)Sys_error[#o@j@@A-^0]0@:Undefined_recursive_modulea#x@@w@s@u@@h@@A>oAnA@:Continuation_already_takenb#@@@AFwIvI@&Stdlib@@@@A3wvvwwwww@v@@R~@@@3|{{|||||@z@@A+4tmc_call_informationgAU U4@@;@@#loch@@/scoped_location@@@ V9;V9P@@CA(expliciti@@`@@@ WQSWQb@@DA@@A@@@@@UXcd@@@@BA@#V9>@@@Ш@г!"V9@V9O@@(3@@6;@@@A@@@@@@@@@@@@/@@ @*@#&&!WQ[@ @@Ш@г)$boolWQ]WQa@@1@@4@@ @0@@A@,@@,+@3@Y@@A+3subterm_informationBYejYe}@@;@@)tmc_calls@@eg@@@ j@@@ lZZ@@GA@@A@@@@@Yee[@@@AFA@# Z@ @@Ш@г$listZZ@г4tmc_call_informationZZ@@&3        @9;@@@A@@@@@"@@@@@@@@0 @@3@@ m @*@@A@&@@&%@3@ @@A+3ambiguous_argumentsC%\&\@@;@@(explicit@@@@@ y2]3]@)ocaml.doc When [explicit = true], we have an ambiguity between arguments containing calls that have been explicitly marked [@tailcall]. Otherwise we have an ambiguity between un-annotated calls. B^Ca@@@@@@@UIA)arguments@@Ǡu@@@ |@@@ ~SbTb@@fJA@@A@@@@@W\Xc@@@@jHA@#22-_]@@@Ш@г5$boolh]i]@@=3eddeeeee@ZL;@@@A@@@@@@@@@@@@E@@ z@A>F=<@<<@@@<@<@#88.b@-@@Ш@г;$listbb@г@3subterm_informationbb@@H+@@@M, @@P@@ /@G@@A@C@@CB@3@/@@A+%errorDee@@;@@?Ambiguous_constructor_arguments@@@ @@ff @@LA@@A@@@@@e@@@AKA@#ff @ @г3ambiguous_argumentsf @@3@`,;@@@A@@@@@@@@@@@@@@@@A@@@@3@@@%ErrorEh",h"1@#@(Location!t@@@ K@@@ @@Ah""h"G@@MA@г(Locationh"5h"=@h">h"?@@@#3@9d^@@ @@г%error h"B@@%  @@@@"@"@"!@ A++destinationFkJWkJb@А&offset@ 3@#PJ;@@ @A@A@G@B@@@.kJJ/o@@@@ANA&offsetF;@@@A@@@@@6p7p@@@@IOA@@:kJO;kJV@@BA@; @A#var@@%Ident!t@@@MlgiNlgv@@`PA&offset@@7G@WmwyXmw@@jQA#loc@@)Debuginfo/Scoped_location!t@@@injn@@|RA@@A@Y@@@@@A@@@>@#//&slgl@%@@Ш@г2%Ident~lgnlgs@7lgtlgu@@@Ac@@D@@f@<@#885mw@4@@Ш@А&offset>pmwmw@@C@@u@A@#==2n@1@@Ш@г@)Debuginfonn@Fnn@@Jnn@ @@V @@Y@@ @O@@A@@+pp@@;@@&Offset&lambda@@@"@@p@ U In the OCaml value model, interior pointers are not allowed. To represent the "placeholder to mutate" in DPS code, we thus use a pair of the block containing the placeholder, and the offset of the placeholder within the block. In the common case, this offset is an arbitrary lambda expression, typically a constant integer or a variable. We define ['a destination] as parametrized over the offset type to represent formal destination parameters (where the offset is an Ident.t), and maybe in the future statically-known offsets (where the offset is an integer). q{ ' )@@@@@@@SA@@A@@@@@@@A@#p@@гp@@$ǰ@@@@ @@@@@@@A@@@@3@@@@ఠ+offset_code} + /} + :@TA@@@@@@;G@8M@@@@G@9@@:G@73@[@@@࣠@%paramAĠ&Offset%} + <&} + B@;f@@@5@gA@@A@Ab`@Rఠ!t3} + C4} + D@FUA@@r@@@=354455555@&=>} + +?} + I@@@@@@A} + ;B} + E@@9 @@@@ఐ!tL} + H@@@@@=3JIIJJJJJ@"@@@A@LG@C@A@@@@@ఠ.add_dst_params` K Oa K ]@sVA@@@Y*!t@@@N@@@MG@E@@B@@@qG@n@&Lambda*value_kind@@@sG@o@@pJ@w@@@|G@cG@i@@@kG@d@@eG@F@@GG@D3@@@@@@࣠@ Aঠ#var K ` K cA3px@@6s@@@3fe@@A@Ac@`3]\@@B@AR@O@An@kఠ@WA@|@@@V3@%h K K@  @@@@&offset K e K kAఠ@XA@i@@@[@@@ K _ K l@гv+destination K w K @г{%Ident K o K t@ K u K v@@@@@@H8 @@@@@@J=@@ K ^ K @@@A@@@@¶msA K  K @!YA@@3        @QYV@X@WC@@B@A@@@@  @@ภ"::@   @  @;@@U@B@AA@A@@@ఐr#var2@  3@  @@@30//00000@$0@'@(@@@@ภ'Pgenval@@  A@  @;'Pgenval@@@@@@@CA@A1lambda/lambda.mli @@@@@ @@G@t@@Q@  R@  @@G@u @ภ=[@  \@  @<@ఐ&offseti@  j@  @U@@I@9@@ภ'Pintvalv@  w@  @;'Pintval6@@@BCA@A364?@@@@@  @@G@M@@@  @  @@G@R@ఐ¶ms@  @Y@@\@@@@@@@mI@{c@@H@@@@@lh@A@:G@@A@@@@ఠ,add_dst_args B  B  @ZA@@@@@@@@@G@@,=&lambda@@@J@@@@G@: G@@@@G@@@G@@@G@3@:~w@x@y@@@࣠@Aঠ#varB  B  A9ఠ @[A@@@@3@MB  C  #@@@@&offsetB  B  AJఠ @\A@N@@@@@@ B   B  @г[+destinationB  B  @г`&offset B  !B  @@h@@@1@@@p@@@6 @@,B  -B  @@@x:@@@@$argsA8B  9B  @K]A@@y376677777@JRO@Q@P<9@;@:@@@@  @@ภ*HC  IC  @)ภ$LvarQC  RC  @;$Lvar@@@@%Ident!t@@@:@A@@V@A%& &$%& &3@@@ @ఐ}#varnC  oC  @1@@@@@I@I@3srrsssss@=I@@@A@@@@+ @@I@@ภfC  C  @eఐ+offset_codeC  C  @@@@@@@@@@@@#@@ఐ&offsetC  C  @g@@@@@J@J@7@@  @@J@:@ఐ$argsC  @A@@D@@-@@&@@@I@K@@s@@,@@@P@A@G@@A@@@@ఠ-assign_to_dstE % )E % 6@^A@@@.@@@+G@@@@G@@&@@@G@+@@@G@@@G@@@G@3@!RK@L@M@@@࣠@Aঠ#var E % 8 E % ;AYఠ@!_A@@@@3@BE % %G  @@@@&offset E % =!E % CAjఠ@8`A@FG@,I@@#loc1E % E2E % HAzఠ@IaA@@@@(@@@=E % 7>E % I@@`I@-@@@@#lamAKE % JLE % M@^bA@@a3JIIJJJJJ@>FC@E@D0-@/@. @@@@@@  @@ภ%Lprim^F P R_F P W@;%Lprim @)primitive@@@K$listK@@@M@@@L/scoped_location@@@N@CH@V@A2-'@'B3-'@'v@@@@ภ2Psetfield_computedF P XF P j@;2Psetfield_computed&@@@@4immediate_or_pointer@@@G  @ @@R@ภ"[] fA;&@@@@AA@A@@@ iA@$G@5@@@6I@=@@rA@+@@@ I@4@@TyA@à`@@@I@@@aG  @@w@@@I@ @ఐ7#locpG  qG  @@@@@@BI@A@@`@@@@@@@dA@G@Jk@A@h@hg@&ConstrGI  I  @WA@БA+!tHoo@@;@@#tag@@{@@@Kpp@@dA$flag(@@(Asttypes,mutable_flag@@@qq@@eA%shape)@@+block_shape@@@rr.@@fA&before*@@J&lambda@@@@@@s/3s/G@@gA%after+@@\&lambda@@@@@@tHLtH_@@hA#loc,@@/Scoped_location!t@@@u`du`@@ iA@@A@@@@@ov@@@@ cA@#bb] p@\@@Ш@гe#int p p@@m3        @@9@:@;};@@@A@@@@@@@@@@ @@v@@L @r@#nne q@d@@Ш@гq(Asttypes (q )q@v ,q -q@@@@@@@"@{@#wwq 6r@p@@Ш@гz{ >r" ?r-@@0@@@@3@@#{{p Gs/9@o@@Ш@г~$list Ps/B Qs/F@г Xs/; Ys/A@@J@@@K @@@@N@@#y btHQ@x@@Ш@г$list ktHZ ltH^@г stHS ttHY@@e@@@f @@@@i@@# }u`g@@@Ш@г)Debuginfo u`j u`s@ u`t u`@@ u` u`@ @@ @@@@@@@A@@@@3        @@@@ఠ%apply- x x@ jA@@@@@@I@@@@@I@@@@I@@@I@@@I@3        @-'@@@࣠@&constr/A x x@ kA@@%3        @2 x {)K@@@@@  @@!t0A x x@ lA@@/3        @!<@@@@@@@@@ఠ*block_args1 y y@ mA@@$listKLI@I@@@@L@3        @ ,Q@#@$@@@డ$List&append y y@  y y@@@&!a@@@@@1 @@@6@@@@@@@@(list.mlinn@@,Stdlib__ListO@% @@@t@@@N@o@@@q@ @@@pR@@@n@@m@@lL@@ఐ&constr ^y _y@w@@[@&before ey fy@3@@@@@C3@@@@A@3@@A@A@3@@B@A@3@@D@A@3 @@E@Ay@v@A@ @@T7@@@}O@O@t@@c@@@P>@@@|B@@@{@@z@@ภo y y@nఐ!t y y@@@@ఐؠ&constr y y@@@@%after y y@> @@ I@@@@M@M@@@" @@@@@M@@@@@@A@ y@@ภ%Lprim z z@jภ*Pmakeblock z z@;*PmakeblockL@#intA@@@(Asttypes,mutable_flag@@@Y+block_shape@@@@CBo~@A~(*~(Z@@@^e@ఐ.&constr z z@@@O3        @ @@@@@#tag z z @ @@5@@@K@K@@ఐL&constr z  z@1@@m@$flag z z@ @@I@@@K@K@,@ఐg&constr 3z 4z @L@@9@%shape :z! ;z&@ΰ @@[@@@K@K@G@@t Ez'@@@@@K@N@ఐ]*block_args S{)4 T{)>@V@@@@@K@K@a@ఐ&constr h{)@ i{)F@@@n@#loc o{)G p{)J@ @@@@@K@z@@@@@@@~@@@v@A@I@@A@@@@ఠ/tmc_placeholdery }MS }Mb@ nA@@@@@I@3        @@@@@@డ .dummy_constant&Lambda  @   @@@@@@e4E4Ef4E4_@@G@ @@!@A@ }MO @@@!@ఠ0with_placeholderz  @ oA@@@@@@I@@@Ġ@@@@@@ &lambda@@@@@I@@@@lI@@@I@@@I@3        @Uc\@]@^@@@࣠@&constr|A  @ pA@@23        @?  @@@@@  @@$body}A@  @@@98@@@@@@7@@@@@3        @+S@"@#@@@@ .qAKб@гN+destination ) *@гS&offset 2 3@@[@@@@@@c@@@$ @@г_` B C@@f@@@/@@@@@2@@ L M@@@{6@@@@@ఠ2k_with_placeholder~ Z ( [ :@ mrA@@@@@L@3 ^ ] ] ^ ^ ^ ^ ^@LbZ@]@I@@@ఐɠ%apply o=C p=H@۰@@@@@@@@@@@@@@@@@@@@@@M@@ $flag =W =[@ภ'Mutable =^ =e@;'Mutable(Asttypes,mutable_flag@@@o@@@AB@@A4parsing/asttypes.mligWugW~@@@ S@@@@@@@ M@ O@E@@@M@@S@@@ @@@M@@V@@@'@@@&M@#@`@@@,M@*@@ఐ렐&constr =K =Q@ư@@~@ =I =g@@6@@@M@/@@ఐh/tmc_placeholder =h =w@ @@0@@@M@1M@0@@ @@@A@  $ @@@ఠ/placeholder_pos { {@ sA@@#intA@@@=L@23        @@@@@@డ $List&length &{ '{@  *{ +{@@@4!a@@@@)@@@@@@kk @@C@@@@x@@@AL@7@@@6<@@@5@@49@@ఐh&constr [{ \{@C@@H@&before b{ c{@ @@9&@@@>M@CM@@W@@H @@^X@A@ o{ @@@ఠ3placeholder_pos_lam z {@ tA@@@@@GL@D3 ~ } } ~ ~ ~ ~ ~@nx@y@z@@@ภ&Lconst  @;&Lconst;@ 3structured_constant@@@<@AB@V@AO'&K&MP'&K&l@@@  @ภ*Const_base  @;*Const_base@@@@(constant@@@ @A@@D@Ahrvir@@@ "@ภ)Const_int  @;)Const_int!(constant@@@k@#intA@@@a@A@@G@A%X&X@@@-A@ఐΠ/placeholder_pos  @U@@@@@UL@WL@V_@@  @@=@@@OL@Tg@@  @@^@@@IL@No@@g@@)@@@Hs@A@  @@@ఠ)block_var @uA@@%Ident!t@@@bL@X3        @@@@@@డ ,create_local%Ident !@ $%)@@@&stringQ@@@(@@@@@@0typing/ident.mlib##b#@@@+E@@@@@@@\6@@@[@@Z1@@%blockI+J0@@L*M1@@(@@@cM@eM@dE@@6 @@NF@A@W @@ภ$Llet^59_5=@;$Llet @ (let_kind@@@? @@@@!t@@@A@@@B@@@C@EE@V@A 4*&& 5*&&@@@ @ภ&Strict5?5E@;&Strict(@@@%@@@@C@@A G!k!{ H!k!@@@ @@  @@3@@@nK@v3@@@@@@ภ'Pgenval5G5N@ c@@@ @@@oK@z@ఐ)block_var5P5Y@@@M@@@pK@|K@{$@ఐk2k_with_placeholder5[5m@@@ @@@qK@~K@}6@ఐҠ$bodyoyo}@v@@@ @@@@@@@@@@@O@@ະ =#var@ఐ)block_var@d@@ @@@L@l@ N&offset  @ภ&Offset@ ఐ3placeholder_pos_lam@ @@ _@@@L@L@@@ @@Q@@@L@@ u#loc34@ఐK&constr>?@&@@y@#locEF@װ @@ @@@L@@@@No~O@@}|@@@@@@L@@@ @@ @@@r@L@@@c@@ @@@m@g@@V@ph@@@i@@R@jj@@@tkA@I@r@A@o@on@@@vw @@(block_idT@@@@@@@@@@@@&lambda@@@@@&lambda@@@@@@@@@3@@@@@@,delay_impure)(@vA(&@@@@%@@@@@$@@@#@@@@@!@@@@@@@@@BбBг@#int@@H@@@/@@б@гH!t !@@P@@@=@@б@б@гP!t&'@@X@@@M@@гXY+1@@_@@@X@@@@@[@@гab6<@@h@@@f@@@@@i% @@@3@@m6 @@D@@p @@A@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ఠ)bind_list,?G-?P@?wA@@(block_id#intA@@@J@*arg_offset#intA@@@J@@V @@@J@@@@J@@@jO@A@@@J@ @@@J@ŐA@J@ J@ @@J@@@ J@@@J@@@J@@࣠DDAH~?R?Z@xA@@L3}||}}}}}@[?C@@@@@?Q @JJAN?\?f@yA@@R3@ c@@@@@@?[@@'lambdasA?g?n@zA@@X3@g@@@@@@@@!kA?o?p@{A@@Y3@l@@@@@@@@@ఠ.can_be_delayeds}s@|A@@@ @@@O@@@@O@@@O@3@#/~@&@'@@@@Ġ$Lvaroyo}@ @o~o@@ @@@3@2sy@@@@@@ @@,@Ġ&Lconstoo@v@oo@@x@@@@@@ @@=@@#@@>@@@ภ$trueoo@;@@@@M@@@AB@@A@@@@@G'@@ !@@R-@@@ภ%false(/@;@@@@B@@A@@@2@@W7@@A%param/^f6@@@7@@eO@)>@A@;@@@ఠ(bindingsAB@T}A@@K@M@@@@@@@@@O@?@@@MO@+3WVVWWWWW@@@@@@@ఠ$argsgh@z~A@@@@@NO@,@@1 @@@1@ @@/@డ$List%split@ @@@@!a@@!b@@@:@@@9@_@@@7@F@@@8@@6@@5@z=*=*{=*=Y@@y@@0+@@@(@s@V@@C@@@B@~}@@@>@ed@@@@@@=@@<3@s@@@@డb$List$mapi@ @@@@@@@;@!a@L!b@J@@:@@9@ @@@8@@@7@@6@@5@CCCu@@X@*%@@@@"@@@f@ M@@@R@c@ՠ@%@@@R@@R@@@R@@@@R@@"R@@@R@a@@e@@d@)@@@b=(@@@`@@_@@^t@@࣠@!iAQR@dA@@g@@@|@@@@#lamAbc@u@A@@Q3a``aaaaa@ {@@@{@@@@@@  @@ఐ.can_be_delayedyz@@@@ @@@@@@@@3~~@+r@"@#@@@@ఐ2#lam@ @@@@@@W@@@V@@@ภ$None!%@;[@@W@@@@AA@A}@@@@@`@@@-@@ఐ[#lam'*@6@@9@@ +@@@@@@B@@ఠ!vCUCV@AA@@@@@V@3@V@@@డ,create_local%IdentCYC^@ C_Ck@@Ȱ@@@@@@@@@@@@@డ&Printf'sprintfl l@  l l@@@&Stdlib&format!a@$unitF@@@&stringQ@@@@@@@@@*printf.mli@@.Stdlib__PrintfC@,'@@@$@@ @@@F"@@@W@W@iW@W@-@@EW@@@W@]1@@@_.@@@`@@@^@@\~@@ภ8CamlinternalFormatBasics3&Format5elflA;&Format8CamlinternalFormatBasics'format6!a@Ϡ!b@Р!c@Ѡ!d@Ҡ!e@Ӡ!f@@@@@'#fmt$ @@@&stringQ@@@@B@@A@A@@@X@ @ภD*No_paddingF;*No_paddingF!a@@@@!@@@@ABAAee@@@j@@!@VQY@UW@X@@@@X@@ภ6h,No_precisionj5;,No_precisionb!a@@@@/@@@@BAAAlLNlLq@@@;o@@E@r"t@@@X@@ภVT$_argY@Y@@@@(X@+X@*@ภjhϠภrxpw@p@@@@BX@K@ภm}l@}@Y@/W@TX@,@@@CX@P@ภĠ\[@@@@@DX@W!@ภӠ-End_of_format;-End_of_formatv!f@!b@!c@!e@@@@A@@@@AYAA}..~./!@@@y@@@@@@hX@X@X@X@&X@@W@W@W@'W@A  @@@GX@ai@@@ Y@@@@)X@?u@@@'@@@X@%@@@̠&Y@٠1$%&'@@@X@@@@ؠ2Y@;()*+@@@X@@-block%d_arg%d@@@@@X@dX@c@@@@oKQ>@@@gX@@@ఐ(block_idll@@@^@@డ#!+ll@@_@@@~@d@@@}h@@@|@@{@@z'%addintBA @@@@*stdlib.mli0++0+,@@&Stdlibn@@@@{@@@}@@@@|@@@{@@z@@y@@ఐF*arg_offsetll@.@@@@ఐ!ill@}@@@@@@Y@Y@@@ll@@Y@@@l~l@@W@n@@@@ @A@CQ@@@ภ$Some@;T^@RA@AA@A@@R@ఐB!v@A@B@C@@3@L@@@@ఐà#lam"#@@@@@&'@@R@@@(@@U@@@ภ$Lvar56@ఐn!v?@@,@@@@@U@U@2@@ @@5U@5@@MN@@U@:@R,=S@@z@U@@|@WX@@@q@@@v@OJ@@u@@tS@S@@@ @@@U@@@siT@@@r@@q@@ఐؠ'lambdasyz@@@, @@%@@@=@ @@P@@@OP@Q@/@@@@@M@)@@P@L8@A@ @@@ఠ$body  @BA@@8J@3@Kkd@e@fF?@@@A@@@ఐ!k  @ذ@@V@@ఐY$args  #@@@]@@@@X@A@ @@డS$List*fold_right'-'1@ '2'<@@@@!a@@#acc@@@a@@`@ @@@_@  @@^@@]@@\@  @@ ^@$@@@@@@@@N@@N@@@N@@@@N@@N@@@@@@+@@@@  @@@@@@3@x{@|@}@@@@࣠@'bindingA-'B.'I@@CA@@63,++,,,,,@@@@@@@$bodyA<'J='N@ODA@@.3;::;;;;;@%H@@@@@@@@ఐ$'bindingNRbORi@@@V3LKKLLLLL@B@@@@@Ġ$None^o{_o@@@@@f3\[[\\\\\@@@@@g@@@ఐ0$bodyiojo@@@Z @Ġ$Somevw@s@ఠ!v@EA@@6@@ఠ#lam@FA@@B@@@@@@@@K@@@'@@L@@L@@@ภ$Llet@ Eภ&Strict@ %@@@ N@@@S@3@e8@2@3-@'@(@@@ภ'Pgenval@@@@8@@@S@@ఐM!v@@@@ఐL#lam@%@@*@ఐ$body@@@5@@G@@7@@@AR\@@@'=@@@@@@@@O@&O@$@@ఐ(bindings@\@@@@@O@,O@(@@ఐw$body@@@u@@G@@@V@@ v@@@ @$@@ B@A@J@4@A@@࣠(block_idA,-@?GA@@@@@@3/../////@@@ @@@@8 @@&constrABC@UHA@@@@@S3EDDEEEEE@&@@@?@!@"@@@@@@$bodyAZ[@mIA@@@@@@hn@@@g@@f3cbbccccc@/%@@@R@)@*@@@@@@ఐO)bind_list{ |@G@@LH@@@C?@@@@8@@@@@@@@/ @@@@@@}A@~@@|@@{@@z@@y3@6L@B@@@eA@@@d@@c@K@L@@@vఐ(block_id@h@@@@@O@O@@|@)*@@@@@O@O@/@@ఐ&constr+1@p@@-@@@@C@&before28@@@$@@@@@@O@O@U@@x@@@@ @@@1@@@A@@@b@@࣠@'vbeforeA @G@ JA@@J@@@@@@3@{@@@@  @@@ఠ*arg_offset%KS&K]@8KA@@}@@@O@3)(()))))@*ˠj@@@@@@@(@)@@@డ@KzAK{@@@@@@@@@@@@@@@@@@"@@డ$List&length`K`aKd@ dKeeKk@@ :@@@ :@@@P@@@@ c@@@@@H@@ఐC&constrKlKr@@@@@@@\@&beforeKsKy@)@@ e+@@@Q@Q@k@@: @@ X@@@@Q@s@@AK|K}@@@@@P@P@@@R @@@A@KO @@ఐ )bind_list@@@  @@@  @@@@ |@@@@@@@@ s @@@@@@A@@@@@@@@@3@@@@@@ ఐĠ(block_id@@@ @@@Q@Q@@ ఐݠ*arg_offset@!@@ @@@Q@Q@+@@ఐ٠&constr@@@m@@@#@ ?@%after$%@@@ ٠d@@@@@@Q@$Q@!Q@@t@@@@ Ѡ @@@q@@@A@@@^@@࣠@&vafterAMN@`LA@@ @@@:@@@93SRRSSSSS@w@@@@  @@ఐ $bodyde@ǰ@@@ @@@A@@@@@@?3jiijjjjj@+ @@@8@@@7@)@*@@@@@@@jQ@h@@@@oQ@m@ @@@tQ@r@.&before@ఐ'vbefore@u@@ܠ@@@S@@@RQ@T@@A%after@ఐt&vafter@O@@@@@`@@@_Q@a[@[@@@Q@}@@ఐ&constr@q@@0@@@~Q@|Q@gt@@@@@@HQ@|@@@@$@@@Q@G@@@@ 2@@@0@@@/8@@@O@-@@.O@O@@@H"@@@U#@@@ <%@@@ I@@@@@@# @@@M@@@M@M@@@:@@@ <@@ @@@@@@@@@@@@@@@@@ @@@@@@@@@I@I@@ X@б г  @@@@  @б@г  @ @@@  }@б@б@г | {@@@@  x@г  w@@@@  t@@ @@  s@гM  r@Q@@@  o@@ @@  n@@"@@  l@ -@@  k@ A@@  @@@@ @@@@@ @@@ @@@@@ @@@@@@@@@I@ @A@@@@ @A@@@ @  #@ &@ @@3@  @@n@3@@@@!tI;@@#tag@@@@@װO  O  @@NA$flag@@ ,mutable_flag@@@ڰP  P  @@OA%shape@@+block_shape@@@ݰQ  Q  @@PA&before@@R&lambda@@@@@@R  R  @@QA%after@@d&lambda@@@@@@S  $S  7@@RA#loc@@/Scoped_location!t@@@T 8 <T 8 ^@@SA@@A@@@@@N  U _ b@Ӑ The type [Constr.t] represents a reified constructor with a single hole, which can be either directly applied to a [lambda] term, or be used to create a fresh [lambda destination] with a placeholder. J  M  @@@@@@@@@&MAA@%apply@{@@@ @-&lambda@@@ 2&lambda@@@ @@ @@ @.Y  /Y  @ X [apply constr e] plugs the expression [e] in the hole of the constructor [const]. <W d f=X  @@@@@@@OTA@0with_placeholder@@@@ @@=$@@@ @@@ a&lambda@@@ @@ f&lambda@@@ @@ @@ @b]dfc]d@0 s [with_placeholder constr body] binds a placeholder for the constructor [constr] within the scope of [body]. p[  q\"c@@@@@@@UA@,delay_impure(block_idT@@@ @@@@ @@@@@ &lambda@@@ @@ &lambda@@@ @@ @@ @@ @mm@g  We may want to delay the application of a constructor to a later time. This may move the constructor application below some effectful expressions (for example if we move into a context of the form [foo; bar_with_tmc_inside]), and we want to preserve the evaluation order of the other arguments of the constructor. So we bind them before proceeding, unless they are obviously side-effect free. [delay_impure ~block_id constr body] binds all inpure arguments of the constructor [constr] within the scope of [body], which is passed a pure constructor. [block_id] is a counter that is used as a suffix in the generated variable names, for readability purposes. _lW@@@@@@@VA@@БA+N  N  @@@# O  @ @@Ш@г#intO  O  @@3@$;@@@A@@@@@@@@A@@!@@@@#P  @@@Ш@г(AsttypesP  P  @#P  P  @@@+@@.@@ @(@#$$Q  @@@Ш@г'(Q  Q  @@..@@1@@1@,@#((R  @@@Ш@г+$listR  R  @г01 R  R  @@7H@@@<I @@?@@L@5@#11&S  )@%@@Ш@г4$list S  2!S  6@г9:(S  +)S  1@@@c@@@Ed @@H@@g@>@#::12T 8 ?@0@@Ш@г=)Debuginfo?T 8 B@T 8 K@ECT 8 LDT 8 [@@IHT 8 \IT 8 ]@ @@S @@V@@@N@@A@J"HG@GG@@@G@G@@3TSSTTTTT@H@AVU@GGaY  bY  @б@гH!tkY  lY  @@P3hgghhhhh@]@A@@б@гOPwY  xY  @@V @@гRSY  Q@@XR@@` S@@gT@@i@VU@PXUT@TT@@@T@T@"bRR]dj]dz@б@гS!t]d}]d~@@[3@5@A@@б@б@гZ+destination]d]d@г_&offset]d]d@@g@@@l @@гde]d]d@@k!@@w" @@гhi]dg@@n)h@@*]dj@@,/k@@@ml@lk@kk@@@k@k@9yiimm@бjгh#intmm@@p3@L@A@@б@гo!tmm@@w @@б@б@гt!tmm@@|@@гyz m m@@"@@# @@г}~m|@@*}@@+m@@-#@@.m@@@@񐠠@@@@@@<@3#""#####@=@A3%$$%%%%%@@@,I  -n@@@@B@C@@@6I  @ @@8I  @@#DpsJD6=E6@@WA@БA+#dpsKUV@А!a@ 3ZYYZZZZZ@P@A@PN@)'@@@@5;@@ @A@A&@@ @@@ @ G@B@@@~@@@@XA@@@@H@;*@A@A$tailL@@@ #dstj@@@ @@@ CL@ @@ @@ Y@@@@@$@@@!@@Aбг$bool@@ M@@бг+destination@г &offset@@(a@@@-b @@А!a(fH@@7hJ@@AjL@@N@@NM@3@l@@A+!tL@А!a@ 3@_;@@ @A@A@G@B@@@!$@  We want to optimize nested constructors, for example: {[ (x () :: y () :: tmc call) ]} which would naively generate (in a DPS context parametrized over a location dst.i): {[ let dstx = x () :: Placeholder in dst.i <- dstx; let dsty = y () :: Placeholder in dstx.1 <- dsty; tmc dsty.1 call ]} when we would rather hope for {[ let vx = x () in let dsty = y () :: Placeholder in dst.i <- vx :: dsty; tmc dsty.1 call ]} The idea is that the unoptimized version first creates a destination site [dstx], which is then used by the following code. If we keep track of the current destination: {[ (* Destination is [dst.i] *) let dstx = x () :: Placeholder in dst.i (* Destination *) <- dstx; (* Destination is [dstx.1] *) let dsty = y () :: Placeholder in dstx.1 (* Destination *) <- dsty; (* Destination is [dsty.1] *) tmc dsty.1 call ]} Instead of binding the whole newly-created destination, we can simply let-bind the non-placeholder arguments (in order to preserve execution order), and keep track of a list of blocks to be created along with the current destination. Instead of seeing a DPS fragment as writing to a destination, we see it as a term with shape [dst.i <- C .] where [C .] is a linear context consisting only of constructor applications. {[ (* Destination is [dst.i <- C .] *) let vx = x () in (* Destination is [dst.i <- C (vx :: .)] *) let vy = y () in (* Destination is [dst.i <- C (vx :: vy :: .)] *) (* Making a call: reify the destination *) let dsty = vy :: Placeholder in dst.i <- vx :: dsty; tmc dsty.1 call ]} The [delayed] argument represents the context [C] as a list of reified constructors, to allow both to build the final holey block ([vy :: Placeholder]) at the recursive call site, and the delayed constructor applications ([vx :: dsty]). In practice, it is not desirable to perform this simplification when there are multiple TMC calls (e.g. in different branches of an [if] block), because it would cause duplication of the nested constructor applications. The [delayed_use_count] field keeps track of this information, it counts the number of syntactic use sites of the delayed constructors, if any, in the generated code. %')C)G@@@@@@@@@ YA@@@@@;$@A$code@@'delayed!t@@@ @@@ Ǡ>M@ @@@ @@ ΰ@@0ZA1delayed_use_count@@@@@ Ұ)* @@<[A@@A@Y@@@@@DA@@3@#--3@@@Ш@б0г.$list>?@г3&ConstrIJ@:MN@@@Bp@@@Gq @@г=#dpsXY@А!aE~_`@@@L @@\c @@`@@ @J@#FFAj@@@@Ш@гI#intst@@Q@@T@@ @P@@A@DL@@@@@@@@3~~@@@@ఠ,write_to_dstѠ)I)O)I)[@\A@@@@@@!-@@@!,M@ @, @@@!hQ@!=@@@!LM@!@@@@!6M@!@@@!5M@! @@! M@!@@!M@ @@!M@ 3@@@@࣠@#dstA)I)\)I)_@]A@@:3@G)I)K))@@@@@  @@'delayedA)I)`)I)g@^A@@A3@!Q@@@@@@@@!tA)I)h)I)i@ _A@@@3@U@@@@@@@@ఐ0-assign_to_dst )l)p )l)}@@@@Y@@@!@@@!@K@@@!N@@@!@@!@@!3        @%1g@(@)@@@@ఐ]#dst ()l)~ ))l)@B@@@@%@@@d@@@!+g@@@!*@@!)@@డ$List)fold_left D)) E))@  H)) I))@@@@#acc@@!a@! @@[@@Z@ @ @@@Y@@X@@W@@V@,33-3r@@+]@#@@@@M@!tQ@!;@@@!?@@!>@@͠@@@!< @@!:@@!9@@!8]@@࣠@!tA )) ))@ `A@@3        @o@@@@@@&constrA )) ))@ aA@@3        @1@@@@@@@@డ%apply&Constr )) ))@  )) ))@@@@@@ @ @@@  @@@ @@ @@ @@@@@@@!\@@@@![@@@!Z@@!Y@@!X3        @8D(@;@<@@@@ఐK&constr )) ))@ @@5@@ఐg!t )) ))@Q@@@@C@@M@!gU@!f!@ )) ))@@@@Q@@!N@@!MR@!qR@!or@@ఐ!t!))!))@@@R@@ఐ4'delayed!))=@>@@p@@?@@@@@@@Y@JAA@M@!zH@A@E@ED@Z@ఠ&lambdaؠ!&))!'))@!9bA@@@!:&lambda@@@!M@!|h!E&lambda@@@!@@@!M@!}@@!~M@!{3!<!;!;!<!<!<!<!<@@@@@@࣠@!vA@!O))!P))@@!@@@!3!O!N!N!O!O!O!O!O@3!X))!Y *`*c@@@@  @!mcA-г01!e))!f))@@7@@@!@@!l))!m))@@@>@@@@ຠ3px@@ s@@@3XW@@A@AS@P@A_@\$code!))!))@࣠'delayedA!)*!)* @!dA@@@@@!@@@!3!!!!!!!!@FSK@N@@@@@@!)*@$tailA@!)*!)*@@@@@!3!!!!!!!!@%@@@!@@@!@$@%@@@@!)* @#dstA!)*!)*@!eA@@10@@@!@@@!!@@!)* @@ఐH,write_to_dst!**#!**/@@@@*@@@!@@@!@?<@@@!@@@!@%@@@!(@@@!@@!@@!@@!3!!!!!!!!@K<dc@@@!@@@!@;@<@@@@ఐJ#dst" **0" **3@@@]@@@!@@@!R@!R@!"@@ఐ'delayed"!**4""**;@v@@~@@@!@@@!R@!R@!:@@ఐ!v"9**<":**=@@@v@@@!R@!R@!N@@l @@ @@@!R@!T@"J))"K*>*C@@HFE@@@!@@@!B@@@!@@@!@@!N@" @塠1delayed_use_count"d*E*I"e*E*Z@A"j*E*]"k*E*^@@J@@@"3N@"43"l"k"k"l"l"l"l"l@@@@@@"s))@г@!t"}))"~))@гEF"))"))@@L@@@Q @@@@R@1A@`M@"=8@A X"` Create a new destination-passing-style term which is simply setting the destination with the given [v], hence "returning" it. "!*d*f"$**@@@@@@@D@DC@[@@"&*+"&*+@@ؠ"Z@@@"G@@@"F3""""""""@p@@@@@$unitޠ@"fA@@@"E@@@"Dг!t"&*+ "&*+@г $unit"&*+"&*+ @@(@@@"?&@@@0@@@"A+ @@87A@@65@@@"I@@@"H4@ຠt$code"'++"'++@࣠'delayedA@"'++,"'++-@@@@@"k@@@"jR@@#'++# @$tailA@# '++4# '++5@@@@@"za@@#'++.@#dstA@#'++;#'++<@@@@@"@@@"t@@#%'++6 @@ภ"()#-(+@+F#.(+@+H@;""@@@N@@@@A@@A#@@"@ @@@@@"@#:'++#;)+I+N@@865@@@"`@@@"_2"@@@"^@@@"]@@"\M@"@֡1delayed_use_count#U*+P+T#V*+P+e@@#[*+P+h#\*+P+i@@;@@@"M@"@@@#c&*+#d++k+n@гг$@(@@@"J@@ @@@"L@A@@ՠ@@@"@@@"M@"@A@#&**!@@"@֠@ఠ#map#-+p+v#-+p+y@#gA@@@@!a@#M@"!b@"M@"@@"M@"@M@"@@@"M@"M@"@@@"M@"@@"M@"@@"M@"3########@ @@ @@@࣠@!fA@#-+p+{#-+p+|@@@3-@@"@  @#hA8б@А8=#-+p+#-+p+@@А7<!#-+p+#-+p+@@@GA@@"& @@#-+p+z#-+p+@@@M*@@@@!dA@#-+p+#-+p+@@ED@@@"3########@;5-@0@)@@@  @$iAO гR!t$-+p+$-+p+@А!aZ$-+p+$-+p+@@@a`@@@" @@$-+p+$-+p+@@@i @@@@ຠ$code$#.++$$.++@࣠'delayedA$1.++$2.++@$DjA@@+*@@@#@@@#3$7$6$6$7$7$7$7$7@ESK@N@B@@@@$@.++@$tailA$K.++$L.++@$^kA@@@@@#%3$M$L$L$M$M$M$M$M@)KJ@@@#@@@#@(@)@@@@$].++@#dstA$h.++$i.++@${lA@@ؠ@@@#3@@@#23$n$m$m$n$n$n$n$n@"0@@@#$@+@,@@@@$z.++@@ఐ!f$/++$/++@@@@@@#B3$$$$$$$$@*@@@#1@@@#0@)@*@@@@ఐ!d$/++$/++@f@@2 M@#K@@@#NU@#H"@$code$/++$/++@>@@@@@#M@@@#L@@@#J@@#I6@ఐ'delayed$/++$/++@x@@Ǡ@@@#g@@@#fT@#qT@#oN@Pఐ$tail$/++$/++@o@@]@@@#nT@#tT@#sd@^ఐ#dst$/++$/++@n@@kj@@#m@@#lT@#wT@#u~@@g@@aT@#i@@@@i@% .++%/++@@  @@@# @@@# zP@#@@@# @@# O@#@1delayed_use_count%&0++%'0+,@ఐB!d%10+,%20+,@@@@@@#O@#3%5%4%4%5%5%5%5%5@@@@1delayed_use_count%?0+, %@0+,@ǰ@@ @@@#O@# @@@%H-+p+%I1,,@г!t%S-+p+%T-+p+@А!b%Z-+p+%[-+p+@@@  @@@@!@xA@M@#@A@%a-+p+r@@@@ఠ$pair%n3,!,'%o3,!,+@%mA@@@!a@$M@#@@@#M@#@!b@$M@#@@@#M@#Ǡ@"M@#۠@M@#@@#@@@#M@#@@#M@#@@#M@#3%%%%%%%%@@@@@@࣠@"daA@%3,!,-%3,!,/@@;:@@@#3%%%%%%%%@N%3,!,#%8- -@@@@ @%nAHгK!t%3,!,5%3,!,6@АMR%3,!,2%3,!,4@@@YX@@@# @@%3,!,,%3,!,7@@@a"@@@@"dbA@%3,!,9%3,!,;@@\[@@@#3%%%%%%%%@3A9@<@-@@@  @%oAf гi!t%3,!,A%3,!,B@Аkp%3,!,>%3,!,@@@@wv@@@# @@&3,!,8&3,!,C@@@@@@@ຠ$code&4,V,Z&4,V,^@࣠'delayedA&!4,V,g&"4,V,n@&4pA@@@@@$@@@#3&'&&&&&'&'&'&'&'@DRJ@M@A@@@@&04,V,f@$tailA&;4,V,p&<4,V,t@&NqA@@@@@$3&=&<&<&=&=&=&=&=@);:@@@#@@@#@(@)@@@@&M4,V,o@#dstA&X4,V,v&Y4,V,y@&krA@@Ƞ@@@$ @@@$3&^&]&]&^&^&^&^&^@"0@@@$@+@,@@@@&j4,V,u@@@ఐ͠"da&{5,},&|5,},@@@ M@$-@@@$0T@$*3&&&&&&&&@#5@@@$@@@$@4@5@@@$code&5,},&5,},@!@@@@@$/@@@$.@@@$,@@$+@ఐ'delayed&5,},&5,},@k@@@@@$I@@@$HS@$SS@$Q6@3ఐ$tail&5,},&5,},@b@@@@@@$PS@$VS@$UL@Aఐ#dst&5,},&5,},@V@@NM@@$O@@$NS@$YS@$Wf@@q@@kS@$Ki@@ఐ"db&5,},&5,},@ϰ@@vM@$`@@@$cT@$]@$code' 5,},' 5,},@@@@@@$b@@@$a@@@$_@@$^@ఐ'delayed'#5,},'$5,},@@@ @@@$|@@@${S@$S@$@ఐ$tail';5,},'<5,},@ذ@@@@@$S@$S@$@ఐ#dst'Q5,},'R5,},@̰@@Ġ@@$@@$S@$S@$@@g@@aS@$~@@'e5,},'f5,},@@@@ @@$@'n4,V,a'o5,},@@lji@@@#@@@#f@䠠@@@#@@@#@@#O@$Y@ 1delayed_use_count'6,,'6,,@డ&'7,,'7,,@@@@T@@@$@@@@$@@@$@@$@@$3''''''''@y@@@@ఐ"da'7,,'7,,@ɰ@@B<@@@$P@$@1delayed_use_count'7,,'7,,@G@@@@@$P@$P@$$@@ఐ"db'7,,'7,,@@@eN@@@$P@$9@1delayed_use_count'7,,'7,- @j@@?@@@$P@$P@$G@@; @@@@@$P@$M@@@'3,!,T8@гa!t'3,!,P'3,!,Q@В@А!ai۰(3,!,G( 3,!,I@@@А!bn(3,!,L(3,!,N@@@x @@@}(3,!,F@@#@@@?ZA@M@$a@A@^@^]@v@ఠ#run($:--(%:--@(7sA@@@ _!a@%,M@$@@@%M@$  M@%@@@% M@$@@$M@$3(<(;(;(<(<(<(<(<@@@@@@࣠@!dA@(O:--(P:--@@#"@@@%3(P(O(O(P(P(P(P(P@6(Y:--(Z<-F-g@@@@ @(ntA0г3!t(g:--"(h:--#@А5:(m:--(n:--!@@@A@@@@$ @@(u:--(v:--$@@@I"@@@@࣠$tailA(;-0-9(;-0-=@(uA@@ @@@%3((((((((@8F>@A@2@@@@(;-0-8 @#dstA(;-0-?(;-0-B@(vA@@  @@@%$@@@%#3((((((((@) @@@%@$@%@@@@(;-0->@@ఐn!d(<-F-J(<-F-K@.@@J@@@%/R@%)3((((((((@0 2 1@@@%"@@@%!@/@0@@@$code(<-F-L(<-F-P@_@@  ̠ @@@%.@@@%- Ƞ@@@%+@@%*@ ېภ"[](<-F-e@ @@@  @@@%H@@@%GQ@%U2@ mఐ|$tail(<-F-R)<-F-V@Y@@ z@@@%OQ@%XQ@%WH@ {ఐ|#dst)<-F-X)<-F-[@R@@  @@%N@@%MQ@%[Q@%Yb@@l@@Q@%Je@));-0-4@г#dps)3:--*)4:---@А!a)::--');:--)@@@ @@@@@A@M@%z@A@@@@ఠ+reify_delay)L>-i-o)M>-i-z@)_wA@@@ )d&lambda@@@%@@@%M@%| )p&lambda@@@%@@@%M@%}@@%~M@%{3)g)f)f)g)g)g)g)g@,NG@H@I@@@࣠@#dpsA@)z>-i-|){>-i-@@&%@@@%@@@%3)~)})})~)~)~)~)~@<)>-i-k)I..@@@@@)xA6г9#dps)>-i-)>-i-@г>?)>-i-)>-i-@@E@@@%@@@M@@@%$ @@)>-i-{)>-i-@@@U(@@@@ຠ=$code)?--)?--@࣠'delayedA)?--)?--@)yA@@  @@@%@@@%3))))))))@M^V@Y@G@@@@)?--@$tailA)?--)?--@)zA@@ V@@@%3))))))))@) ޠ @@@%@@@%@(@)@@@@)?--@#dstA)?--)?--@*{A@@ k j@@@%@@@%3********@"0 }@@@%@+@,@@@@* ?--@@ఐV'delayed*@--*@--@3@@  @@@%@@@%3********@/  @@@%@@@%@.@/@@@ĠL*5A--*6A--@!@@@@ . -@@@%@@@%3*:*9*9*:*:*:*:*:@@@@ @ 6 5@@@%@@@%@@@ఐ٠#dps*PA--*QA--@@@@@@%@@@%@ Ґఐ$tail*dA--*eA--@^@@ @@@& T@& T@& 1@ ఐ#dst*zA--*{A--@X@@  @@& @@& T@&T@&K@@;@@%@@@%O@Ġ"::*B-.*B-.@%yఠ!x*B-.*B-.@*|A@@ @@@%@ఠ"xs*B-.*B-. @*}A@@* @@@%@@@%@@@ @@  @@@%@@@%@@  @@@%@@@%@@@డ"L0with_placeholder&Constr*C. .*C. .@ *C. .*C. ..@@@ 5@@@ @@@@@ @@@ *@@@ @@ *@@@ @@ @@ @!@@@ N@@@&'@@@@@&&@@@&%@@@&$@@&#@@@&"@@&!@@& 3+ + + + + + + + @un@o@pha@b@c@@@@ఐ}!x+C. ./+C. .0@@@ x@@@&9V@&;V@&:@@Q @@@@ߠ@@@&8@@@&7D@@@&6@@&5C@@@&4@@&3+@@࣠@'new_dstA+HC. .8+IC. .?@+[~A@@@@@&R@@@&Q3+N+M+M+N+N+N+N+N@D@@@@  @@ภ)Lsequence+\D.C.M+]D.C.V@;)Lsequence% @%@@@k%@@@l@BO@V@A&!9))&"9))@@@&@ఐ 砐,write_to_dst+wE.Y.e+xE.Y.q@ 6@@@&ɠ's@@@&g@@@&f@ ޠ @@@&e@@@&d@%@@@&c%@@@&b@@&a@@&`@@&_3++++++++@UIH@@@&P@@@&O@S@T@@@@ఐ#dst+E.Y.r+E.Y.u@@@&'@@@&|@@@&{V@&V@&}"@@ఐ"xs+E.Y.v+E.Y.x@@@  @@@&z@@@&yV@&V@&:@@ภ$Lvar+E.Y.z+E.Y.~@%ఐ'new_dst+E.Y.+E.Y.@O@@'5@@@&V@&@@@&V@&]@#var+E.Y.+E.Y.@'E@@%@@@&V@&V@&k@@,E.Y.y,E.Y.@@&:@@@&xV@&s@@@@&B@@@&\@&V@&w{@ఐ#dps,F..,F..@J@@Ơ@@@&@@@&@ ఐQ$tail,-F..,.F..@'@@ @@@&V@&V@&@ ఐ'new_dst,CF..,DF..@@@  @@&@@&V@&V@&@@;@@&@@@&]@&V@&@@,\F..@@&@@@&[@,aC. .4@@@@@@&H@@@&G@@@&F@@&ET@&T@&@@@@ @@@A,t@--@@@@@&9@,y?--,zG..@@ w u t@@@%@@@% q#@@@%@@@%@@%N@' @ 1delayed_use_count,H..,H..@A,H..,H..@@ y@@@'/N@'03,,,,,,,,@@@@@@,>-i-@гD!t,>-i-,>-i-@гIJ,>-i-,>-i-@@P@@@U @@@@V@1A@iM@'98@A@5@54@P@ఠ.ensures_affine,K..,K..@,A@@@,&lambda@@@'D@@@'CM@';,&lambda@@@'I@@@'KM@'<@@'=M@':3,,,,,,,,@|@@@@@࣠@!dA@,K..,K..@@&%@@@'F@@@'E3,,,,,,,,@<-K..-O/?/X@@@@@-A6г9!t-K..-K..@г>?-K..-K..@@E@@@'>@@@M@@@'@$ @@-$K..-%K..@@@U(@@@@డ+"<=-3L/ /$-4L/ /&@@!a@@$boolE@@@3@@2@@1*%lessequalBA@@@@)))Z@@U@@@@.@@@'^N@'R@@@@'Q@@'P@@'O3-U-T-T-U-U-U-U-U@]nf@i@W@@@@ఐw!d-iL/ /-jL/ /@@@ @@@']O@'`@@@'_O@'\@1delayed_use_count-{L/ /-|L/ /#@ @@,$@@A-L/ /'-L/ /(@@7O@'a/@@!@@@@@'bO@'Z5@ఐ!d-M/./4-M/./5@<@@@@@'M@@@'LN@'eN@'cJ@ఐb+reify_delay-O/?/E-O/?/P@ǰ@@@]\@@@'l@@@'kXW@@@'j@@@'i@@'hg@@ఐ#run-O/?/R-O/?/U@a@@@@@@'wO@'O@'@@@' @@@'@@'@@ఐ!d-O/?/V-O/?/W@@@Ġ @@@'P@'P@'@@-O/?/Q@@&@@@'@@O@@fN@'O@'t@.L/ / @г)!t. K./. K./@г./.K...K./@@5@@@: @@@@;@A@NM@'@A+- r Ensures that the resulting term does not duplicate delayed constructors by reifying them now if needed. .(P/Y/[.)R//@@@@@@@)@)(@D@ఠ$make.6T//.7T//@.IA@@@@@@'M@'@@@'M@'} M@'@@@'M@'@@'M@'3.M.L.L.M.M.M.M.M@l@@@@@࣠@#dpsA@.`T//.aT//@@"!@@@'3.a.`.`.a.a.a.a.a@5.jT//.kU/0 @@@@ @.A/г2#dps.xT//.yT//@А!a:.T//.T//@@@A@@@@' @@.T//.T//@@@I#@@@@ఐH+reify_delay.U//.U/0@@@@CB@@@'@@@'>=@@@'@@@'@@'3........@BPH@K@<@@@@ఐW#dps.U/0J@ K@@vu@@@'@@'P@гr!t.T//.T//@А!az#.T//.T//@@@& @@@@'@HdA@M@'k@A@h@hg@@ఠ1delay_constructor.W0 0.W0 0#@.A@@@:@@@(M@(@@@@(@@@(M@( /k@@@(O@(!@@@(%M@(@@(M@(@@(M@'3........@@@@@@࣠@&constrA/W0 0$/W0 0*@/$A@@03////////@=/W0 0/^1N1S@@@@@  @@!dA/%W0 0+/&W0 0,@/8A@@;3/$/#/#/$/$/$/$/$@!G@@@@@@@@@ఠ!d/8X0/07/9X0/08@/KA@@a`@@@(@@@(P@( 3/@/?/?/@/@/@/@/@@)Z@ @!@@@ఐ.ensures_affine/QX0/0;/RX0/0I@@@@@@@(@@@(@@@(@@@( @@( @@ఐL!d/nX0/0J/oX0/0K@)@@,@@!@@4-@A@/sX0/03@@ຠ$code/}Y0Q0W/~Y0Q0[@࣠'delayedA/Y0Q0d/Y0Q0k@/A@@@@@(7@@@(63////////@Rd]@^@_@@@@/Y0Q0c@$tail A/Y0Q0m/Y0Q0q@/A@@@@@(E3////////@)@@@(5@@@(4@(@)@@@@/Y0Q0l@#dst A/Y0Q0s/Y0Q0v@/A@@21@@@(S@@@(R3////////@"0D@@@(D@+@,@@@@/Y0Q0r@@@ఠ(block_id /Z0z0/Z0z0@/A@@"@@@(aS@(V3////////@/XW@@@(Q@@@(P@.@/@@@డ.$List&length0Z0z00Z0z0@ 0Z0z00Z0z0@@"ڰ@@@"ڠ@@@(dS@([@@@(Z#@@@(Y@@(X-@@ఐ'delayed0 Z0z00!Z0z0@t@@"@@@(bT@(eT@(cB@@, @@FC@A@0-Z0z0 @@డ',delay_impure&Constr0=[000>[00@ 0A[000B[00@@@@@ @@@@ @@@@@ 0`@@@ @@ \@@@ @@ @@ @@ @!@@@@@({@@@@(z@@@@@(y@@@(x@@(wt@@@(v@@(u@@(t@@(s30p0o0o0p0p0p0p0p@@@@@@ఐ(block_id0[000[00@ @@ @@@(U@(U@(@@ఐ&constr0[000[00@m@@$@@]@@@@@@@(K@@@(@@(@@@(@@(2@@࣠@&constr A0[000[00@0A@@ @@@(300000000@G@@@@ @@ఐ!d0\000\00@4@@Z@@@(V@(@@@(V@(300000000@d,.@@@(@&@'@@@$code0\000\00@p@@ݠ@@@(@@@(٠@@@(@@(@ภ+ܰ0\010\01@+۠ఐR&constr1\01 1\01@,@@@@@(U@(U@(U@(8@ఐ'delayed1\011\01@l@@0@@@(U@(U@(K@@1$\01 1%\01@@@@@(U@(T@ఐ$tail16\0017\00@i@@@@@(U@(U@(j@ఐ#dst1L\001M\00@c@@@@(@@(U@(U@(@@8@@ @@@(U@(U@(@1e[00A@@@@@@(@@@(@@(S@(S@(@@6N@@u@GO@@v@1uY0Q0^1v\01@@sqp@@@(-@@@(,m@@@(+@@(*O@)@ 1delayed_use_count1]11%1]116@ఐ_!d1]1191]11:@@@'@@@),O@)/@@@).O@)+311111111@@@@1delayed_use_count1]11;1]11L@2@@@@@))O@)- @@@1X0/0O@@@B@@p@A@M@)4@A@@@@j7A@A@3|@@@8 @ ] @ [@@ y@@@@@@311111111@@@11_1T1W@311111111@x@@@#dps M;!a@)7@A^A$tail1@@@)8#dst..@@@)9@@@);N@)<@@)=@@)>Y@@@@@1GI2G@/͐ A term parameterized over a destination. The [tail] argument is passed by the caller to indicate whether the term will be placed in tail-position -- this allows to generate correct @tailcall annotations. 2 2Sh@@@@@@@@@2 AA@!tN;!a@)]@AA@G@B@@@2jl2ju@@@@20AA@$make@N25&lambda@@@)`@@@)b"2?&lambda@@@)c@@@)e@@)f@2<wy2=w@@2OA@#run@72T&lambda@@@)g@@@)iw2^&lambda@@@)j@@@)l@@)m@2[2\@@2nA@1delay_constructor@)!t@@@)n@^2{&lambda@@@)o@@@)qh2&lambda@@@)r@@@)t@@)u@@)v@22@@2A@&lambda@2&lambda@@@)w2&lambda@@@)x@@@)z@@){@22@@2A@#map@@!a@)O@)|!b@)O@)}@@)~@@@@)@@@)@@)@@)@22B@@2A@$pair@!a@)O@)@@@)@ɠ!b@)O@)@@@)Ԡ@@@@)@@@)@@)@@)@2CE2Ck@@3A@$unit2@@@)@@@)@3ln3l@@3A@@БA+113GQ3GT@А25333333333@;;@@)6@A@AF@@)V@@@)W@)5G@B@@@*'@@@A3)GN3*GP@@/@M@@AбGгE$bool34G\35G`@@M!@@бJгH+destination3?Go3@Gz@гM&offset3HGh3IGn@@U5@@@Z6 @@А!aU:3PG~Q@@d<3RGdS@@n>3TGWU@@W1!3)UT@TT@@@T@T@@33[3Z3Z3[3[3[3[3[@@Acb@A+UU3ijtL@АUX33i3h3h3i3i3i3i3i@_;@@)\@A@A@G@B@@@\@@@Y@A3yjq3zjs@@0?@g@@A@_@@33v3u3u3v3v3v3v3v@ @A`_@__3w}3w@б@г`#dps3w3w@гef3w3w@@l333333333@)@A@@@s @@гj!t3we@гno3w3w@@u@@@zo@@p@@@rq@@sqq33@б@гr!t33@гwx33@@~333333333@2@A@@@ @@г|#dps3w@г33@@@@@@@@@@@@33@б@г&Constr33@33@@@333333333@1@A @@б@г!t44@г4 4 @@@@@ @@г!t4@г44@@&@@@'@@(@@)1@@@@@+4)4*@б@г42 43@@34/4.4.4/4/4/4/4/@=@A@@г!t4=@г4D4E@@@@@@@@@@@@4P"4Q%@б@б@А34S4R4R4S4S4S4S4S@%@A4[)4\+@@А4`/4a1@@ @@б@г!t4k94l:@А!a4r64s8@@@ @@г!t4{A@А!b(4>4@@@@+@@,@@-4(@@@@@0ȠƠư4CI4CM@б@гǠ!t4CS4CT@А344444444@F@A4CP4CR@@@ @@б@г͠!t4C[4C\@А4CX4CZ@@@@@гѠ!t4Cj@В@А!a&4Ca4Cc@@@А!b.4Cf4Ch@@@1 @@@24C`@@4!@@ 53@@ @@@7栰4lr4lv@г堐!t4l~@г預$unit4ly4l}@@344444444@P(&@A@@@@@@@@@344444444@@A344444444@@@46C4@@H@E@I@A@C@D@B@@@56A2@/@24ܐ . The type ['a Dps.t] (destination-passing-style) represents a version of ['a] that is parametrized over a [lambda destination]. A [lambda Dps.t] is a code fragment in destination-passing-style, a [(lambda * lambda) Dps.t] represents two subterms parametrized over the same destination. 555@@@@@@@566C@D@'&ChoiceoO5$~70775%~707=@57A@БA+!tP537G7Q547G7R@А!a@*L35857575858585858@@hfA@42A@&$@ @@@@@`^@@3 KJ@JJ@@@J@J@G/;@@*K@A@A@G@B@@@5f7G7I5g77@34 ? An ['a Choice.t] represents code that may be written in destination-passing style if its usage context allows it. More precisely: - If the surrounding context is already in destination-passing style, it has a destination available, we should produce the code in [dps] -- a function parametrized over the destination. - If the surrounding context is in direct style (no destination is available), we should produce the fallback code from [direct]. (Note: [direct] is also a function (on [unit]) to ensure that any effects performed during code production will only happen once we do know that we want to produce the direct-style code.) - [tmc_calls] tracks the function calls in the subterms that are in tail-modulo-cons position and get rewritten into tailcalls in the [dps] version. - [benefits_from_dps] is true when the [dps] calls strictly more TMC functions than the [direct] version. See the {!choice_makeblock} case. - [explicit_tailcall_request] is true when the user used a [@tailcall] annotation on the optimizable callsite. When one of several calls could be optimized, we expect that exactly one of them will be annotated by the user, or fail because the situation is ambiguous. 5t775u=6=;@@@@@@@@@5A@@5x7G7N5y7G7P@@2>@;B@A#dps@@F!tOQ@*t@@@*v57W7[57W7j@@5A&direct@@@5C@@@*z`Q@*{@@*|57k7o57k7@@5A)tmc_calls@@5 4"@@@*@@@*577577@@5A1benefits_from_dps@@5s@@@*577577@@5A9explicit_tailcall_request@@5@@@*577577@@5A@@A@_@@@@@da@@S@#MMC57W7^@B@@Ш@гP#Dps57W7d57W7g@W57W7h57W7i@@А!a]57W7a57W7c@@@f @@i@@*w@`@#\\S57k7u@R@@Ш@б@г_$unit57k7x57k7|@@g@@А!ag°67k767k7@@pŰ @@s@@*}@k@#gg]6 77@\@@Ш@гj$list677677@гo4tmc_call_information677677@@w@@@| @@@@*@v@#rrm6%77@l@@Ш@гu$bool6.776/77@@}@@@@*@|@#xxs6777@r@@Ш@г{$bool6@776A77@@@@@@*@@@A@࠰46@@@@@@@@36L6K6K6L6L6L6L6L@@@@ఠ&lambda6]===C6^===I@6pA@@@6q&lambda@@@*Q@*B6|&lambda@@@*@@@*Q@*@@*Q@*36s6r6r6s6s6s6s6s@;K@@@࣠@!vA@6===K6===L@@ @@@*366666666@26===?6==@@@@  @6A,г/06===O6===U@@6@@@*@@6===J6===V@@@=@@@@Р3+3@@*.@@@3 @@A@A@3@@B@A@3@@C@A@3 @@D@A@@A*@'#dps6=f=j6=f=m@డ&lambda#Dps6=f=p6=f=s@ 6=f=t6=f=z@@@6F@@@*fǠ6F@@@*e@@@*d@@*c@E@B@@@@@@*@@@*@@@*@@*366666666@dqi@l@^@@@@ఐx!v6=f={6=f=|@ @@/@@@*S@*S@*@@= @@@@@*@@@*S@*!@_&direct7=~=7=~=@࣠@2 AĠ7!=~=7"=~=@@@@@@@@*:@@@@ఐ!v70=~=71=~=@C@@@@@*T@*K@79=~=7:=~=@@@@@@*@@@*@@*R@*X@)tmc_calls7K==7L==@ภi7R==7S==@/ @@@@@@*@@@*R@*q@1benefits_from_dps7d==7e==@ภ&D7k==7l==@&D@@@@@@+R@+ @9explicit_tailcall_request7y==7z==@ภ&Y7==7==@&Y@@@@@@+R@+@@@7===d@г!t7===`7===a@г$%7===Y7===_@@+@@@0 @@@@1@A@?Q@+@A@@@+@ఠ#map!7==7=>@7A@@@@@@+Q@+6@@+mQ@+4@@+CQ@+@@@@+Q@+$#Q@++@@@+-Q@+%@@+&Q@+ @@+!Q@+377777777@\|u@v@w@@@࣠@!f"A7=>7=>@7A@@/@@@@!s#A7=>7=>@8A@@-377777777@!@@@@@@@@@РR#dps8> >8> >@డ#map#Dps8> >8> >@ 8> >8> >@@@@tn@@*k@Hy@@@*jLw@@@*i@@*h@@*g@f@c@@@@qm@@+7@Wv@@@+5[v@@@+3@@+2@@+13808/8/8080808080@COr@F@G@@@@ఐd!f8B> >8C> >@O@@@@ఐe!s8Q> >8R> > @@@@#dps8X> >!8Y> >$@ @@@@@+BT@+IT@+F.@@T @@@@@+/T@+A5@&direct8p>&>*8q>&>0@࣠@4Z$AĠQ8}>&>88~>&>:@P@@@@@@@+ZN@@@@ఐ!f8>&>>8>&>?@@@\@@ఐ!s8>&>A8>&>B@j@@m@&direct8>&>C8>&>I@ @@@@@@+bQ@+Q@+Q@+a@@+`~@@ภ8>&>J8>&>L@@@@,@@@+hW@+l@@8>&>@8>&>M@@@@9@@ @8>&>38>&>N@@@:@@@+SS@+L@@+RS@+o@")tmc_calls8>P>T8>P>]@ఐ!s8>P>`8>P>a@@@ @)tmc_calls8>P>b8>P>k@; @@ML@@@+{@@@+zS@+}@E1benefits_from_dps8>m>q8>m>@ఐ!s9>m>9>m>@Ұ@@D@1benefits_from_dps9>m>9>m>@^ @@`@@@+S@+@d9explicit_tailcall_request9>>9>>@ఐ;!s9'>>9(>>@@@d@9explicit_tailcall_request9.>>9/>>@} @@t@@@+S@+@@@97=> 98>>@@m@YA@Q@+i@A79 - Apply function [f] to the transformed term. 9I>>9J>?@@@@@@@9L==@@@{@ఠ&direct%9Y??9Z??@9lA@@@7!a@+Q@+@@@+Q@+@@+Q@+39i9h9h9i9i9i9i9i@@@@@@࣠@!c'A@9|??9}?? @@@@@+39}9|9|9}9}9}9}9}@.9??9?0??@@@@ @9A(г+!t9??&9??'@А-29??#9??%@@@98@@@+ @@9??9??(@@@A"@@@@ఐ8!c9?0?49?0?5@6@9@*@@ SQ@+@@@+T@+399999999@;I @@@&direct9?0?69?0?<@@@@3@@@+@@+@@ภ9?0?=L@@M@@B@@@+S@+@@)S@А!a(Q@+&9??+9??-@@ @@)@D_A@Q@+f@A@c@cb@{@ఠ#dps(9?A?G9?A?J@:A@@@Ҡ: &lambda@@@+@@@+Q@+$tail'@@@+Q@+#dst,+@@+@@+Q@+:2@@@+Q@+@@+Q@+@@+Q@+@@+Q@+3:':&:&:':':':':'@@@@@@࣠@!c*A@::?A?L:;?A?M@@>=@@@+@@@+3:>:=:=:>:>:>:>:>@T:G?A?C:H?g?@@@@@:\ANгQ!t:U?A?W:V?A?X@гVW:]?A?P:^?A?V@@]@@@+@@@e@@@+$ @@:i?A?K:j?A?Y@@@m(@@@bb+Af:t?A?[:u?A?_@:A@@j3:s:r:r:s:s:s:s:s@6G?@B@0@@@@:|?A?Z@ff,Aj:?A?a:?A?d@:A@@n3::::::::@~@@@@@@:?A?`@@డV#run#Dps:?g?k:?g?n@ :?g?o:?g?r@@@Р:_@@@*[@@@*ZԠ@@@*Y@@@*X@@*W@\@Y@@@@@@+@@@+@@@+@@@+@@+3::::::::@?J@B@C@@@@ఐ!c:?g?s:?g?t@^@@0;@@@+U@,U@,U@,@@@,U@,!@#dps:?g?u:?g?x@D@@@@@+U@,U@,0@ ఐ$tail;?g?z;?g?~@x@@=@ ఐ#dst;?g?@F@@I@@u@@U@+L@A@Q@,@A@@@렰@ఠ$pair-;"??;#??@;5A@@@@!a@-Q@,@@@,$@!b@-%Q@,@@@,%@@,#Q@,@Q@,2@Q@,3@@,4@@@,6Q@,@@,Q@,3;R;Q;Q;R;R;R;R;R@,ib@c@d@@@࣠@7B2A@ఠ"c1/;j??;k??@;}A@@>=@@@,,3;m;l;l;m;m;m;m;m@U;v??;w@@@@@@@ఠ"c20;??;??@;A@@GF@@@,-@@;??;??@В@гb!t;??;??@Аdi+;??;??@@@po@@@,2 @@@гj!t;??;??@Аlq@;??;??@@@xw@@@,G @@@@@ @@,N#@@;??;??@@@R@@@@Р #dps;??;??@డ$pair#Dps;??;??@ ;??;??@@@ @@@*q@ @@@*p@ *@ @@*o@@@*n@@*m@@*l@ @ @@@)Q@,Q@,Q@,Q@,I@@@,L@6Q@,Q@,Q@,Q@,J@@@,KA@@@@,H@@@,G@@,F@@,E3<<<<<<<<@@@@@@@@@ఐȠ"c1<2??<3??@@@:Q@,^@@@,_S@,\@#dps @_@h> @_@y@Y@@E@@@,S@,S@,@@ఐ"c2>@_@}> @_@@@@y@@@,S@,@1benefits_from_dps>,@_@>-@_@@|@@b@@@,S@,S@,@@; @@@@@,S@,@9explicit_tailcall_request>B@@>C@@@డ<>L@@>M@@@@@@@@@-@@@@- @@@- @@- @@- ;@@ఐ"c1>h@@>i@@@F@@ :@@@-S@-P@9explicit_tailcall_request>u@@>v@@@İ@@@@@-S@- S@-^@@ఐ "c2>@@>@@@h@@P@@@-$S@-"s@9explicit_tailcall_request>@@>@@@@@@@@-S@-&S@-#@@; @@@@@-S@-@@@>??3@гc!t>??>??@В@А!ak>??>??@@@А!bp>??>??@@@z @@@>??@@#@@@ UA@Q@-/\@A@Y@YX@x@ఠ$unit3>@A>@A@>A@@5 @@@-9Q@-3@@@-5Q@-03>>>>>>>>@@@@@@РF#dps>A A>A A@డ $unit#Dps?A A?A A@ ?A A?A A@@4 @@@*s@@@*r@ @  @@ 4@@@-7Q@-8/@i&direct?AA#?AA)@࣠@;4AĠ?+AA1?,AA3@@@@@ @@@-JH@@@@ภ ?8AA7?9AA9@ @@@ @@@-NU@??AA,?@AA:@@@ @@@-CeQ@-<@@-BQ@-Qa@)tmc_calls?PA<A@?QA<AI@ภn?WA<AL?XA<AN@7@@@  @@@-]@@@-\Q@-cz@1benefits_from_dps?iAPAT?jAPAe@ภ.I?pAPAh?qAPAm@.I@@@ @@@-jQ@-n@ơ9explicit_tailcall_request?~AoAs?AoA@ภ.^?AoA?AoA@.^@@@ @@@-tQ@-x@@@?@A ?AA@@@A@?@@@@@&Syntax=Q?B]Bf?B]Bl@?A@Б@ఠ$let+5?BvB~?BvB@?A@@@ @-@@@-R@-z@@  @-@@-R@- @@@-R@-@@-R@-{@@-|R@-y3????????@@@@@@࣠@!a7A?BvB?BvB@?A@@(3????????@5?BvBz?BvB@@@@@  @@!f8A?BvB?BvB@@A@@13????????@!?@@@@@@@@ఐR#map@BvB@BvB@@@@@LB@@-@ ^Q@@@- bK@@@-@@-@@-3@ @ @ @ @ @ @ @ @ ,S@#@$@@@@ఐ3!f@BvB@BvB@ @@`@@ఐT!a@+BvBI@8J@@w@@.K@@f@ULA@}R@-S@A@P@PO@f@ఠ$and+9@=BB@>BB@@PA@@@@-@@@-R@-@@-@@@-R@-@@ @@-@@@-R@-@@-R@-@@-R@-3@^@]@]@^@^@^@^@^@@@@@@࣠@"a1;A@qBB@rBB@@A@@03@p@o@o@p@p@p@p@p@=@yBB@zBB@@@@@  @@"a2ABBABB@A-A@@@@ !a@.@BNA@@@@@.@@@@@ @@@.@@@.@ @('&@@@. @@@.@@@`$let+B[C2CBB\C2CF@@ @@@.s@@@.tS@.o:98@@@.v@@@.wS@.p@@.qS@.n@U@V@@@//*)@CMAWVU@@@.@@@.T@.6г6$listCPCXCqCQCXCu@г;!tCYCXCoCZCXCp@АiB?C_CXClC`CXCn@@@IH@@@.F @@@R@@@.K @@ClCXCgCmCXCv@@@@@@.@@@.W@@  @@ఐr!cCCCCCC@p@s@H@@qpo@@@.@@@.3CCCCCCCC@o @@@ĠCCCCCC@;S@@@@@@@.@@@.3CCCCCCCC@@@@ @@@@.@@@. @@@$let+CCCCCC@@ @@@.U@.V@.@@@.V@.@@ CLR@.@@@.U@.U@.@@. +V@.@@@.V@.@@.@@.V@.ఐ$unitCCCCCC@@@ <,@@@.U@.H@9CCC@@HĠ ȰCCCCCC@ @@@@7T@@@ภCCC@;@@@4[@AL@@Ӡ54@@@.@@@.e@ĠzDCCDCC@>ఠ!cFDCCDCC@D-A@@@@@.@ఠ"csGD)CCD*CC@D<A@@C@@@.@@@.@@@ @@"! @@@.@@@.@ @*)(@@@.@@@.@@@R$let+DMCCDNCC@@ @nR@.㠠@Cʠt@@@/$U@.@@.V@.@@@.V@.@@@@@/(U@/"U@.@@. ˠ V@.@@@.V@.@@.@@.V@.ఐh!cDCCDCC@g@h@i@@ X/R@.@@@.U@.3DDDDDDDD@{ le@f@g@@@FDCD@$and+DCCDCC@@ oX@@@-@ hS@@@- _@f@]@@-@@@-@@-@@-@s@t@ 1@@@.V@.@ gU@/%U@/ U@.@@@.V@. @H@@@.@@@.V@.@@.@@.V@.ఐ$listDCCDCC@@@@@@@/@@@.@@@.@@@.@@.f@@ఐՠ"csDCCDCC@o@@@@@/ @@@/ V@/V@/ @@/@@ ӠO@@@/V@/@ECC@@ K@ఠ!vI E"CC@E4A@@5@/@@ఠ"vsJE.CCE/CC@EAA@@l@/@@A@@@@@/@@@ภ@!E?CDE@CD@@ ఐ'!vEICDEJCD@'@(@)@@(3EHEGEGEHEHEHEHEH@2&@ @!@@@ఐ+"vsEYCD@ @@)@@@@@A@@^3EXEWEWEXEXEXEXEX@@@@@@AE_CC@гd!tEiCXCEjCXC@г$listErCXC|EsCXC@А!aհEyCXCyEzCXC{@@@@@@/WS@.ް @@@ @@@/VS@.@@+@@@A@@@@@/b@@@/a@@@/`@@@/_@@/^R@/Y@@@ECXCZ @@@A+/tmc_call_searchLREE EEE E"@А!a@/e3EEEEEEEE@;@@/c@A@A@G@B@@@EE E EEbE@C The [find_*] machinery is used to locate a single subterm to optimize among a list of subterms. If there are several possible choices, we require that exactly one of them be annotated with [@tailcall], or we report an ambiguity. ED D EDE@@@@@@@@@EA&zipperMR;@@/d@A@A@G@B@@@EEEEEE@@@@EA@@EE EEE E@@B@;1@A+No_tmc_callNEg>S@/f@@@/h@@EE%E)EE%EA@@FA,NonambiguousO-OS@/j@@@/l@@FEBEFFEBEa@@FA)AmbiguousP(explicitQ@@E@@@/nFEbEwFEbE@@F&A(subtermsR@@EsS@/q@@@/s@@@/uF'EbEF(EbE@@F:A@@F+EbEfl@@F=A@@A@_@@@@@qn@@`@#MMF4E%E+F5E%E6@C@гO$listF>E%E=M@А!aVFDE%E:FEE%E<@@@]U@@@@W@#SSFKEBEHFLEBET@I@гU&zipperFUEBE[S@А!a\F[EBEXF\EBEZ@@@c[@@@@]@#YYFbEbEhFcEbEq@8@#[[VFiEbE@U@@Ш@г^$boolFrEbEFsEbE@@f@@i@@/o@e@#aaTF{EbE@S@@Ш@гd$listFEbEFEbE@гi!tFEbEFEbE@А!aq߰FEbEFEbE@@@x @@@}@@@@/v@t@@@p@@A@ܠDfFn@@@@@@+נװFEEFEE@А!a@/yFEEFEE@@Cz@;@A*rev_beforeS@@F;S@/z@@@/|FEEFEE@@FA&choiceT@@"S@/@@@/FEEFEE@@FA%afterU@@FY1S@/@@@/FEEFEE@@FA@@A@_@@@@@@@@ @#00(FEE@'@@Ш@г3$listFEEFEE@А!a;HFEEFEE@@@BK @@E@@/}N@>@#::2GEE@1@@Ш@г=!tGEEGEE@А!aEaGEEGEE@@@Ld @@O@@/g@H@#DD<GEE@;@@Ш@гG$listG(EEE@А!aNyG.EEG/EE@@@U|M@@X@@/@Q@@A@Z@@uY@3G/G.G.G/G/G/G/G/@@@@ఠ:find_nonambiguous_tmc_callVG@EEGAEF@GSA@@@F1!a@1Y@2@@@2S@2_@@@2^S@/S@1@@@1S@/@@/S@/3G^G]G]G^G^G^G^G^@F@@@࣠@'choicesXAGqEFGrEF @GA@@-3GpGoGoGpGpGpGpGp@:GyEEGzL6LA@@@@@  @@@ఠ-has_tmc_callsYGF#F+GF#F8@GA@@@@/@@@/U@/Z@@@/U@/@@/U@/3GGGGGGGG@(4W@+@,@@@࣠@!c[AGF#F9GF#F:@GA@@3GGGGGGGG@,GF#F'GF#FN@@@@@  @@డFB"<>GF#FIGF#FK@@!a@@2@@@*@@)@@()%notequalBA2@@@@2~QQ2~Q@@2R@@@@98@@@/@@@/V@/@ L@@@/@@/@@/3GGGGGGGG@:F[@=@>@@@@ఐO!cGF#F=GF#F>@@@j@)tmc_callsGF#F?GF#FH@N @@%@@ภHF#FLV@?@W@@1V@/%@@Z@@u&@d[A@U@/b@A@_@@ఠ+is_explicit\HFRFZHFRFe@H-A@@@yk@/@@@/U@/l@@@/U@/@@/U@/3H)H(H(H)H)H)H)H)@@@@@@࣠@!s^AH<FRFfH=FRFg@HOA@@3H;H:H:H;H;H;H;H;@+HDFRFVHEFRF@@@@@  @@ఐ!sHQFRFjHRFRFk@2@@@@33HPHOHOHPHPHPHPHP@"@@@9explicit_tailcall_requestH[FRFl@ @@2@"A@@U@/ @A@@@ఠ,nonambiguous_HjFFHkFF@H}A@@3only_explicit_calls8@@@0yU@/@GW'S@0 @@@17@@@16U@/0X@/@@@15U@/@@/U@/@@/U@/3HHHHHHHH@e~w@x@y@@@࣠''aA+HFFHFF@HA@@/3HHHHHHHH@>HFFHHI@@@@@HFF @@'choicesbAHFFHFF@HA@@:3HHHHHHHH@!G@@@@@@@@Aఠ%splitcHGGHGG@HA@@@H6tS@0X@0@@@0X@/@HAZY@@@0@@@0X@/VU@@@0@@0@@03HHHHHHHH@/;k@2@3@@@࣠@*rev_beforedAHGGHGG@IA@@+3HHHHHHHH@7@2@+wv@@@0@@0Y@/@@/Y@/@=@>@@@@@@Ġ 'IGGIGG@@@@@@H@@@0#@@@0"3IIIIIIII@%1R@(@)@@@@@ ภ7I&GGI'GG@7@@@8R@@@09@I-GG@@a@@@05@ĠI:H HI;H H@Dఠ!ceICH HIDH H@IVA@@Ġ@@@0+3IFIEIEIFIFIFIFIF@/@@@ఠ$restfISH HITH H@IfA@@Hנ@@@0-@@@0,@@@ @@M@@@01@@@00@@@డG"&&IsH#H@ItH#HB@@:@@@K@@@@@JD@@@I@@H@@G(%sequandBA3Ԡ@@@@33@@3]@@@@@@@0A@@@@0@@@@0?@@0>@@0=3IIIIIIII@aZ@[@\RK@L@M@@@@ఐ'-has_tmc_callsIH#H0IH#H=@@@@S@0S@0S@0R@@@0Q$@@@0P@@0O"@@ఐ!cIH#H>IH#H?@+@@%@@@0Y]@0[]@0Z7@@' @@a@@@0M@0\]@0X?@@డHk " $IH#H\IH#H^@ !@@@ !@@@0b@ @@@0a @@@0`@@0_@@0^Z@@డH#notJH#HDJH#HG@@@@@F@@@E@@D(%boolnotAA4]@@@4[LL4\Lt@@4Z\@@@@@@@0r@@@0q@@0p@@ఐ3only_explicit_callsJ*H#HHJ+H#H[@r@@@@+@@ g@@@0n@0{^@0x@@ఐ'+is_explicitJAH#H_JBH#Hj@@@@@@@0@@@0~@@0}@@ఐ!cJWH#HkJXH#Hl@@@@@@0^@0^@0@@" @@ @@@0m@0^@0@@JkH#HCJlH#Hm@@@@@0L@0]@0l@@ @@7@@@0\@0K@ະ3ː@@/@@@3@@A@A@3@@B@A@@A@*rev_beforeJHsHJHsHAఐ @u@@&choiceJHsHJHsH@ఐ_!cJHsHJHsH@@@۠\@0@@@0[@0@)%afterJHsHJHsH@డIB$List#mapJHsHJHsH@ JHsHJHsH@@@@!a@U!b@S@@4@@ܠ@@@3@@@@2@@1@@0@@@@@@W@% @@@@8[@0@@@0[@09@@0@ @@@0B@@@0@@0@@0`@@ఐ&directKHsHKHsH@۰@@@#T@@0\@0q@@ఐŠ$restKHsHKHsH@y@@G7@@@0\@0\@0@@b @@Kq\@0@@@0\@0@@@K,HsHK-HsH@@@@@0@ఐu%splitK<HHK=HH@D@@@t@k@@@0@@0@@0@@ภF1KOHHKPHH@F0ఐ&directK[HHK\HH@/@@@@@@0@@0@@ఐ+!cKnHHKoHH@а@@@@@0]@0]@0@@ @@@ఐ*rev_beforeKHHKHH@f@@@@KHHKHH@@X@0@@ఐA$restKHHKHH@@@@@\@@n[@0\@0@KH#H- @@p@@A:rgKGG @б@г$listKGGKGG@г+!tKGGKGG@Аb2nKGGKGG@@@X@0s @@@X@0v@@г&zipperKGGKGG@А!aGKGGKGG@@@GF@@@1Y@0 @@@ @@1Y@0#@@@IA@@@ XW@@@1#@@1"@@1!X@1@@@KGGU@@ఐ,%splitKHIKHI@@@@K_)@@@1*@Ke~}@@@1)@@@1(zy@@@1'@@1&@@1%3LLLLLLLL@@@@@ภ#*LHILHI@C@@@KI@@@18X@1=@@ఐu'choicesL&HI @?@@@@6@@@A@@D@A@U@1C@A@@@ఠ1tmc_call_subtermshL7II L8II1@LJA@@BAU@1I@@@1WU@1D3L>L=L=L>L>L>L>L>@@@@@@డJ$List&filterLSI4I:LTI4I>@ LWI4I?LXI4IE@@@@!a@$boolE@@@@@@Bo@@@3@@@@@@@@B>^-)-)B?^-)-X@@B=o@&!@@@@<@@@1L@@1K@D@@@1JIH@@@1H@@1G@@1F3LLLLLLLL@G@@@@࣠@!ciALI4IKLI4IL@LA@@\Z@@@@ఐ!-has_tmc_callsLI4IPLI4I]@z@@@TS@1S@1d@@@1c@@@1b@@1a3LLLLLLLL@v(z@@ @@@@ఐ/!cLI4I^LI4I_@ @@@@!@@h@@@1mX@1j@LI4IFLI4I`@@@t@@@1Z@@1YV@1qV@1o@@ఐv'choicesLI4IaLI4Ih@H@@]@@@@@A@LII@@ఐ1tmc_call_subtermsLIpIzLIpI@@@@@@@@1u3LLLLLLLL@@@@Ġ$M IIM II@D@@@@̠@@@1z3MMMMMMMM@@@@@Ѡ@@@1{@@@ภ+No_tmc_callM IIM II@;5<@@/@6A@@C@A/@@,డK$List#mapM- IIM. II@ M1 IIM2 II@@k@@@@S@2fS@27S@1S@1S@1V@1@@1@o@@@1n@@@1@@1@@1B@@ఐ&directMY IIMZ II@-@@@'@@1W@1S@@ఐ'choicesMj IIMk II@ΰ@@%`@@Mn IIMo II@@@@@1V@1W@1k@@a @@l@Ġ"::M IIM IIAHdఠ$_onej M II@MA @@XS@1kX@13MMMMMMMM@@@@Ġ"[]M IIAEU@@A@M@@@1@@@M II@@fe@@@1@@ji@@@1@@@ภ,NonambiguousM IIM II@;@AA@C@A@@ఐU,nonambiguousM IIM II@|@@RN@@@1@M0IH@@@1@@@1ED@@@1@@1@@13MMMMMMMM@OI@J@K@@@hภ<M IJM IJ@<@@@o@@@1W@1@@ఐ'choicesM IJM IJ"@V@@ @@M IIM IJ#@@-S@1@@@1V@1W@1-@@R @@.@ఠ0several_subtermskN  J$J*N J$J:@N A@@Ԡ@@@1@@ؠ@@@1@@@@ఠ1explicit_subtermslN#J>JJN$J>J[@N6A@@W@1@@@1W@13N)N(N(N)N)N)N)N)@4' @!@"@@@డL$List&filterN>J>J^N?J>Jb@ NBJ>JcNCJ>Ji@@@@@@@@@1@@1@&@@@1*@@@1@@1@@1)@@ఐG+is_explicitNaJ>JjNbJ>Ju@ϰ@@@@@@1@@@1@@1?@@ఐj0several_subtermsNwJ>JvNxJ>J@I@@U@@@1X@1X@1T@@E @@ZU@A@NJ>JF @@ఐk1explicit_subtermsNJJNJJ@j@k@l@@Ui@@@13NNNNNNNN@iy@@@Ġ%NJJNJJ@F\@@@@g{@@@13NNNNNNNN@@@@@l@@@1@@@ภ)AmbiguousNJJNJJ@;@\ @@@/@AB@C@A@;ABA@O@B@@@N@@@NAຠ3@@2@@@3@@AA@A@(explicitNJJNJJ@ภ=NJJNJJ@=@@@@@@2%X@2)<@(subtermsNJK NJK@ఐ栐0several_subtermsNJKNJK&@Ű@@ޠ@@@26X@28T@;@NJJNK(K5@@JS@2@@@2X@2A_@@U @@`@ĠOK6KBOK6KHAIఠ$_onem OK6KF@O,A @@S@2:S@1Z@23OOOOOOOO@@@@ĠO)K6KGAF@@A@N@@@2 @@@O0K6K@@@@@@2@@ @@@2@@@ภ,NonambiguousO?KLKXO@KLKd@ఐ᠐,nonambiguousOKKLKfOLKLKr@@@@@@2R@Nՠ@@@2Q@@@2PѠ@@@2O@@2N@@2M3O\O[O[O\O\O\O\O\@MG@H@I@@@ภ>YOlKLKOmKLK@>X@@@@@@2`Y@2d@@ఐ'choicesO~KLKOKLK@@@9 @@OKLKeOKLK@@ 9S@2G@@@2KX@2gY@2]-@@P @@5.@ఠ9several_explicit_subtermsnOKKOKK@OA@@`t@@@2  @@dx@@@2 @@@ภ)AmbiguousOKKOKK@ຠ3 @@2q @@@3  @@AA @ A @ (explicitOKKOKK@ภ>OKKOKK@>@@@ @@@2X@23OOOOOOOO@792@3@4@@@(subtermsOKLOKL @ఐE9several_explicit_subtermsOKL OKL&@@@ ɠ@@@2X@2@&@OKKOL(L5@@5S@2i@@@2mX@2&@@H @@'@@@AOJJ{@@M@r|@@@@@AOIpIt~@@@@@@S@@h@@@@J@@`@A@S@3@A@@@@A@/@\@@@!@8@@x@$@"r@@ @ 7 @ q 7A@ I cB@@@@@3PPPPPPPP@@@P~707@P LBLE@"3PPPPPPPP@@@@MO  The TMC transformation requires information flows in two opposite directions: the information of which callsites can be rewritten in destination-passing-style flows from the leaves of the code to the root, and the information on whether we remain in tail-position flows from the root to the leaves -- and also the knowledge of which version of the function we currently want to generate, the direct version or a destination-passing-style version. To clarify this double flow of information, we split the TMC transform in two steps: 1. A function [choice t] that takes a term and processes it from leaves to root; it produces a "code choice", a piece of data of type [lambda Choice.t], that contains information on how to transform the input term [t] *parameterized* over the (still missing) contextual information. 2. Code-production operators that have contextual information to transform a "code choice" into the final code. The code-production choices for a single term have type [lambda Choice.t]; using a parametrized type ['a Choice.t] is useful to represent simultaneous choices over several subterms; for example [(lambda * lambda) Choice.t] makes a choice for a pair of terms, for example the [then] and [else] cases of a conditional. With this parameter, ['a Choice.t] has an applicative structure, which is useful to write the actual code transformation in the {!choice} function. P0a1Y1YP1}7-7/@@@@@@@P3~7070@@Р&Syntax&ChoicePDLGLLPELGLR@ PHLGLSPILGLY@@@3PHPGPGPHPHPHPHPH@0@$A@@@+@k@?r@@@@.@@@x@@S c@  J@  A@  B@ 5V@@N=ML@LL@@@L@L@IU@@@@A3PvPuPuPvPvPvPvPv@/B@@P~LGLG6@@7@3P{PzPzP{P{P{P{P{@3@@A+'contextpSP!L[L`P!L[Lg@@;@@+specialized@@MO#Map!t+specializedqS@@@6@@@6P"LlLnP"LlL@@PA@@A@@@@@P!L[L[P#LL@@@APA@# P"LlLy@ @@Ш@г%IdentP"LlLP"LlL@'P"LlLP"LlL@@+P"LlLP"LlL@ @г.+specializedP"LlL{P"LlL@@63PPPPPPPP@WM;@@@A@@@@@0@@@-8;@@@A@@@@@P$LLP(LL@@@@PA@@ @@@J @@M@@6@>@@A@:@+DDP$LLP$LL@@;@@%arity@@P@@@?P%LLP%LL@@QA&dps_id@@M!t@@@? P&LLP&LL@@QA+direct_kind@@Q-function_kind@@@? Q 'LLQ 'LL@@QA@@A@@@@@7@@@4@#((#Q%LL@"@@Ш@г+#intQ%LLQ%LL@@3N@@6@@?Q@2@#..'Q%&LL@&@@Ш@г1%IdentQ0&LLQ1&LL@8Q4&LLQ5&LL@@@@g@@C@@? j@=@#993Q>'LL@2@@Ш@г<=QF'LLQG'LL@@Cx@@F@@? {@A@@A@t@@s@3QGQFQFQGQGQGQGQG@@@@ఠ%lletsQX*LLQY*LL@QkA@@@B@@@?yT@?7@L@@@?zT@?<@:@C@@@?{X@?e@K@@@?|X@?f@@?gX@?Q@@@?`T@?A@K@@@?}T@?FT@?G@@?HT@?B@@?CT@?=@@?>T@?8@@?9T@?63QQQQQQQQ@ @@@࣠@"lkAQ*LLQ*LL@QA@@G3QQQQQQQQ@TQ*LLQ-MXMi@@@@@  @@"vkAQ*LLQ*LL@QA@@R3QQQQQQQQ@!^@@@@@@@@(bindingsAQ*LLQ*LM@QA@@Z3QQQQQQQQ@f@@@@@@@@$bodyAQ*LMQ*LM @QA@@O3QQQQQQQQ@n@@@@@@@@డPo$List*fold_rightQ+M MQ+M M@ Q+M MQ+M M@@;@@@@@oX@?O@@?S@@?R@;@@@?P@  @@?N@@?M@@?L3RRRRRRRR@+7|@.@/@@@@࣠@MA@ఠ#varR+M M$R+M M'@R0A@@3RRRRRRRR@@@@@ఠ#defR*+M M)R++M M,@R=A@@ @@R/+M M#R0+M M-@@@@@@?i@@ @@$bodyARA+M M.RB+M M2@RTA@@H3R@R?R?R@R@R@R@R@@@/@)@*#@@@@@@  @@ภ$LletRR,M6M:RS,M6M>@Cఐ"lkR\,M6M@R],M6MB@@@3RZRYRYRZRZRZRZRZ@'e@@@@@ఐ"vkRj,M6MDRk,M6MF@@@@ఐX#varRu,M6MHRv,M6MK@/@@@ఐV#defR,M6MMR,M6MP@9@@$@ఐM$bodyR,M6MRR,M6MV@,@@/@@=R,M6MW@@L@@@?x4@R+M MR-MXM[@@@%@@@?b@@?aY@?Y@?}@@ఐ㠐(bindingsR-MXM\R-MXMd@˰@@9@@ఐߠ$bodyR-MXMe @ @@)@@ @@@ A@]T@?@A@@@'@ఠ.find_candidateR/MkMoR/MkM}@RA@@@M@@@?T@?ANN)lfunction@@@?T@?@@@?T@?@@?T@?3RRRRRRRR@M@@@@@@Ġ)LfunctionR0MMR0MM@;)LfunctionL@@@@>@AD@V@AM)&&M)&&@@@Nj@ఠ$lfunS0MMS0MM@SA@@,@@@?3SSSSSSSS@*HS/MkMkS1MM@@@@@@" @@B@@ఐ$lfunS0MMS0MM@@@@@H@@@?@?3S!S S S!S!S!S!S!@) @@@$attrS,0MMS-0MM@3$attrU@@@N2function_attribute@@@@@D3$kind N-function_kind@@@@@@@@MJ++MJ++@@N"@3¶msKݠ@L!t@@@@N@@@@@@@@@@A"@@NK++NK+,@@N#@3&return0N@@@@@B+@@NL,,"NL,,5@@N$@3$body9M@@@@@C4@@N$M,6,:N%M,6,G@@N%@B3#locBK@@@@@E=@@N-O,,N.O,,@@N'@@@N1N,H,LN2N,H,e@@N&@aQ@@M@@@?@?]@-tmc_candidateS0MMS0MM@3-tmc_candidateX@@@8$boolE@@@6@@F#3&inline O 0inline_attribute@@@0@@@@ANT#$NU#$@@O@3*specialiseO4specialise_attribute@@@1@@A@AN_$$N`$$?@@O@3%local"O /local_attribute@@@2@@B@ANj$@$BNk$@$Y@@O$@3$poll-O+.poll_attribute@@@3@@C)@ANu$Z$\Nv$Z$q@@O/@3,is_a_functor85@@@4@@D3@AN$r$tN$r$@@O9@3$stubB?@@@5@@E=@AN$$N$$@@OC@L3.may_fuse_arityLI@@@7@@GG@AN%%N%%@@OM@@AN$$N$$@@OQ@\@@AO@@@?V@?@ภ$SomeS0MMS0MM@=ఐ$lfunS0MMS0MM@ܰ@@!@@@@)@@T1MMT1MM@@4@@@ภ$NoneT 1MM@Ac@@@7@@ABT /MkM@@@@@DT@?3T T T T T T T T @@@@A@@@2@ఠ/declare_bindingT3MMT3MM@T1A@@@@@@@T@?@@F1#Map#key@@@@T@?@Ny@@@?T@?@@?T@? T@?@@?T@?@@?T@?3TBTATATBTBTBTBTB@g@@@@@࣠@#ctxATU3MMTV3MM@ThA@@33TTTSTSTTTTTTTTTT@@T]3MMT^;NO.@@@@@  @@PFA@ఠ#varTn3MMTo3MM@TA@@<3TmTlTlTmTmTmTmTm@&O@@@@@@ఠ#defT}3MMT~3MM@TA@@@@@T3MMT3MM@@@R@I@@?@@ @@ఐР.find_candidateT4MNT4MN@P@@@N@@@?CR@@@?@@@?@@?3TTTTTTTT@6?t@9@:1j@+@,@@@@ఐ8#defT4MNT4MN@ @@w@@"@@Cl@@@?@@@?@Ġ$NoneT5NNT5NN"@B%@@@@C@@@?@@@?3TTTTTTTT@.@@@ @C@@@?@@@?@@@ఐ#ctxT5NN&T5NN)@q@@@Ġ$SomeT6N*N.T6N*N2@>ఠ$lfunT6N*N3T6N*N7@U A@@"@@@?Z@@@@@C)@@@?@@@?b@@C0@@@?@@@?i@@@@ఠ%arityU7N;NAU7N;NF@U,A@@H@@@?Y@?3UUUUUUUU@}/(@)@*@@@డS$List&lengthU27N;NIU37N;NM@ U67N;NNU77N;NT@@H @@@H @@@@?@P@@@?@@?Y@?@@@?H>@@@?@@?/@@ఐd$lfunU]7N;NUU^7N;NY@;@@@@@?@?C@¶msUi7N;NZUj7N;N`@'@@H@4@@@?Z@?Z@?R@@C @@VS@A@Uv7N;N= @@@ఠ&dps_idU8NdNjU8NdNp@UA@@G@@@@Y@?3UUUUUUUU@iwp@q@r@@@డRK,create_local%IdentU8NdNsU8NdNx@ U8NdNyU8NdN@@Gz@@@Gz@@@@G@@@@@@@ @@డT9!^U8NdNU8NdN@@&stringQ@@@T@@@@S @@@R@@Q@@P@@^2^2@^2^X@@@q@@@@@@@@@@@@@@@@@ @@@ @@@ S@@డR$name%IdentU8NdNU8NdN@ U8NdNU8NdN@@@G@@@G@@@@@@GkRRGkRg@@GI@@@@G@@@@@@@@@@@@@ఐ#varV8NdNV8NdN@n@@@@,@@b@@@@@@(\@@%@@$_dpsV(8NdNV)8NdN@@V+8NdNV,8NdN@@n@@@@[@@*[@@)@@V58NdNV68NdN@@H@@@@ @@+[@@@@ @@@A@V@8NdNf @@@ఠ+direct_kindVK9NNVL9NN@V^A@@@@@@/Y@@,3VOVNVNVOVOVOVOVO@@@@@@ఐg$lfunV`9NNVa9NN@>@@@@@@0@@.@$kindVl9NNVm9NN@5@@@A@Vp9NN@@@ఠ$candV{:NNV|:NN@VA@@@@@@5Y@@13VVVVVVVV@2@9@:@;@@@ະ3 @@@?4@@@3@@A@A@3@@B@A@@A@%arityV:NNV:NNAఐ @@@@@@7Y@@8 @&dps_idV:NNV:NNAఐ3 @]@@@@@>Y@@?3@'+direct_kindV:NNV:NNAఐ| @?@@@@@EY@@FF@@@V:NNV:NN@@OI@A@V:NN@@ຐ3D@@@?5F@@@@A8@5+specializedV;NNV;NO@డS#Map#add%IdentV;NOV;NO @ V;NO V;NO@@V;NOV;NO@ @@@@@5@!a@5@!t @@@5@@@5@@5@@5@@5@HTaiHTa@@+Stdlib__MapF@* @@@@@@@^@@@@@PX@@X@@\@  @@@@]$@@@@[@@@Z@@@Y@@@X3W.W-W-W.W.W.W.W.@@@@@@@ఐҠ#varW@;NOWA;NO@@@ @@ఐҠ$candWM;NOWN;NO@@@.X@@@@ఐ #ctxW];NOW^;NO @@@:-@+specializedWd;NO!We;NO,@ @@ՠY@@@@@@:@@} @@cO@@@@w?@@@Ws;NN@@.A@@@/@@@0"@7@@1@@@2V@@@AWy4MM@@4@&A@YT@A6$@A@!@! @7Aఠ&choiceW=O0O8W=O0O>@WA@@@i@@@cT@A@@Q@@@`T@AC$tailE @@@_""W@@@e@@@eT@eT@dT@dT@d T@_@@_T@AD@@A@@A3WWWWWWWW@r@@@@@࣠@#ctxAW=O0O?W=O0OB@WA@@;3WWWWWWWW@O@J@GB@@AEU@AA@@ABU@A7@Q@R(traverse@UT@AF@ST@AIR"@@@]T@AJ@@AKU@AG@@AHU@A8@WW@@XA2traverse_lfunction@mT@aT@AL@(@@@`T@AO-@@@cT@AP@@AQU@AM@@ANU@A9@X ;?X ;Q@@XA,traverse_let@T@a0T@AR@@@@a;T@AU@T@b@X^bX^r@@XA-traverse_list@cT@A@!fV@f9@@@fET@AQ@@@]T@A@@AU@A@@AU@A?@YY@@YA@@@@DC@@!tAY=O0OCY=O0OD@Y&A@@3YYYYYYYY@NZ@Q@R@@@@@@Aఠ&choiceàY&>OGOQY'>OGOW@Y9A@@@T@a4T@SnW@AF@@@WW@A@T@FW@ASz@@@FW@^@@@^W@A@@B@@B@@B3YCYBYBYCYCYCYCYC@2>@5@6@@@࣠@#ctxAYV>OGOXYW>OGO[@Yi A@@.3YUYTYTYUYUYUYUYU@@@;8@52@@AX@A@@AX@A@@AX@A@F@G,choice_apply@JT@A$tailJW@A@T,lambda_apply@@@WYW@AfW@_W@^W@^W@^W@^W@^.W@^UW@]W@XW@XW@XW@XW@WW@A@@AX@A@@AX@A@@AX@A@Y]]Y]]@@YA0choice_makeblock@W@A$tailW@A@@>@@@YW@Wà@>>@@@ZW@WĠ@Y> @@@ZW@W@@WW@A@T@fST@FT@WW@A@Ru@@@XW@A]W@YW@A@@AX@A@@AX@A@@AX@A@@AX@A@@AX@A@YhhYhh@@ZA+choice_prim@T@A$tailW@A@R@@@]W@A@2W@A@R@@@]W@AW@A@@AX@A@@AX@A@@AX@A@@AX@A@@AX@A@Z9wwZ9ww@@Z/ A+choice_list@T@A$tailW@A@\[@^5@@@^AW@APE W@CW@CW@FW@Fz@@@FW@F<@@@FTW@A@@AX@A@@AX@A@@AX@A@ZOZP@@Zb A+choice_pair@-T@A$tail-W@A@@1W@C@5W@C@@CW@AŠ@3W@C@6W@C@@C]@Cw@@@CW@A@@AX@A@@AX@A@@AX@A@ZZ @@Z A-choice_option@aT@A$tailaW@A@&optionLg[@_@@@_W@A&optionLm@@@FW@F=@@@FdW@A@@AX@A@@AX@A@@AX@A@Z]cZ]p@@Z A@@@@ba@AZ>OGO]Z>OGOa@ZA@@3ZZZZZZZZ@kw@n@o@@@@Z>OGO\@@!tAZ>OGObZ>OGOc@ZA@@3ZZZZZZZZ@@@@@@@@@ఐ!tZ?OfOpZ?OfOq@@@@@3ZZZZZZZZ@@@@Ġ$Lvar[@OwO~[@OwO@T@[@OwO[@OwO@@T@@@B+3[[[[[[[[@$@@@@@ @@@@@Ġ'Lmutvar[@OwO[@OwO@;'LmutvarT@T!t@@@;@AA@V@AU&&4&6U&&4&J@@@V @@[)@OwO[*@OwO@@@@@B."@@@@@#@@#@@.@@$@Ġ&Lconst[8@OwO[9@OwO@M@[=@OwO[>@OwO@@M@@@B16@@@ @@ 7@@ 7@@B@@ 8@Ġ)Lfunction[L@OwO[M@OwO@]@[Q@OwO[R@OwO@@x@@@B4J@@@ @@K@@K@@V@@L@Ġ%Lsend[`@OwO[a@OwO@;%LsendU@V)meth_kind@@@vU@@@wU@@@xT U@@@z@@@yT@@@{@ES@V@AV8=*A*CV9=*A*@@@V@@[@OwO[@OwO@@$@@@B<@@@U@@@B=@@ @U@@@B>@@@%U@@@B@@@@B?@@@T-@@@BA@@@E@@k@@k@@@@l@Ġ'Lassign[AOO[AOO@;'LassignU]@UZ!t@@@tU@@@u@BR@V@AVv<*!*#Vw<*!*@@@@W0@@[AOO[AOO@@@@@BE@@@V@@@BF@@@" @@@@@@ @@@Ġ$Lfor[AOO[AOO@;$LforU@U!t@@@oV@@@pV@@@qQ.direction_flag@@@rV)@@@s@EQ@V@AV;))V;)* @@@Wi@@[AOO[AOO@@"@@@BM@@@V;@@@BN@@ @V@@@@BO@@@"@@@BP@@@VJ@@@BQ @@@?@@ @@ @@@@ @Ġ&Lwhile\!AOO\"AOO@;&LwhileU@V\@@@mV`@@@n@BP@V@AV:))V:))@@@W@@\5AOO\6AOO@@Vm@@@BU.@@@Vr@@@BV3@@@ @@4@@4@@\A@OwO}\BAOO@@ 7@@@@ఠ!t\MBOO\NBOO@\`7A@@3T@`T@`T@`T@`T@`]T@`lT@FT@FT@ET@ET@CT@CT@CT@CT@CbT@CdT@C T@C T@B3\r\q\q\r\r\r\r\r@@@@ఐ(traverse\BOO\BOO@@@@@@@B@@B@@ఐ?#ctx\BOO\BOO@ΰ@@i@@ఐР!t\BOO\BOO@@@h+@@"@@,@A@\BOO@@డ'&lambda&Choice\CPP\CPP@ \CPP\CPP@@@\&U@@@3\&Q@@@3@@@3@@3@&h@&i@@@@@@C @@@C@@@B@@B3\\\\\\\\@@@@@@@ఐ!t\CPP\CPP@ @@@@4@@wW@WW@WW@WW@GW@GW@GmW@G^W@GW@GW@D~W@DW@CW@CZW@C,@^@@@Ġ%Lprim] HPP] HPP@Uఠ$prim͠]HPP]HPP@](A@@U@@@B\3]]]]]]]]@4@@@ఠ(primargsΠ]$HPP]%HPP@]7A@@UWa@@@B^@@@B]@ఠ#locϠ]6HPP]7HPP@]IA@@U@@@B_!@@@2]>HPP@@#@@#@@@ఐP+choice_prim]HIPP]IIPP@T@@@ROM@J@C@@;@@C@@C@@C@@C@@C 3]P]O]O]P]P]P]P]P@pHA@B@C:3@4@5)"@#@$@@@@ఐ#ctx]fIPP]gIPP@@@=@kఐ$tail]sIPP]tIPQ@@@C!@@ఐk$prim]IPQ]IPQ@)@@~W@]W@C!1@@ఐl(primargs]IPQ]IPQ@8@@W@C"@@@ఐi#loc]IPQ]IPQ@F@@W@]W@]W@]W@C$T@@b @@mU@Ġ&Lapply]MQQ]MQQ@;&LapplyWc@5@@@=@AC@V@AXu(&m&oXv(&m&@@@Y/ @ఠ%applyР]MQQ]MQQ@]A@@H@@@Bb3]]]]]]]]@@@@@@@@@@@@@ఐg,choice_apply]NQQ]NQQ@k@@@ifd@aZ@@C(@@C'@@C&3]]]]]]]]@!@@@@@@ఐ#ctx]NQQ]NQQ@,@@@zఐ?$tail]NQQ]NQQ@'@@@@ఐB%apply^ NQQ^ NQQ@'@@W@WZW@WBW@W>W@Wఐ&choice_;TRR_<TRR@۰@@@@ @@CO@@CN@@CM3_?_>_>_?_?_?_?_?@@@@@@@ఐ#ctx_QTRR_RTRR@@@(@ఐ$tail_^TRR__TRR@@@.@@ఐ"l2_kTRR_lTRR@@@]@CY,@@6@@4-@_rURS@@"l2_zTRR_{TRR@_9A@@Z:@@@ภ)Lsequence_URS_URS@4(ఐ"l1_URS_URS@J@@3________@N p@@@@@ఐ%"l2_URS_URS@ @@{@@.@@y@A/@@W@Cf3________@_@@@3@@h*@Ġ+Lifthenelse_VSS _VSS+@;+LifthenelseY^@Y@@@hY@@@iY@@@j@CN@V@AZx8)v)xZy8)v)@@@[2@ఠ"l1Ӡ_VSS-_VSS/@_A@@Z@@@Bl3________@@@@ఠ"l2Ԡ_VSS1_VSS3@_A@@Z@@@Bm@ఠ"l3ՠ_VSS5_VSS7@_A@@Z"@@@Bn@@@A_VSS8@@@@@@@@ఠ"l1_WS<SH_WS<SJ@`:A@@]@Cg3________@=6@7@8/(@)@*"@@@@@ఐ/(traverse`WS<SM`WS<SU@3@@@1@.-@@Cj@@Ci@@ఐΠ#ctx`!WS<SV`"WS<SY@]@@$@@ఐc"l1`.WS<SZ`/WS<S\@,@@^@Cq3@@$@@J4@A@`5WS<SD@@$let+`=XS`Sh`>XS`Sl@@@@@Cx]@C}@@W@CyW@C\@Cz@@C{ ]@Cu@@@Ct]@C|@@C~@@C]@Crఐ +choice_pair`bXS`Sx`cXS`S@@@@  @@@C@@C@@C3`f`e`e`f`f`f`f`f@lvo@p@q@@@@ఐ%#ctx`xXS`S`yXS`S@@@O@ఐǠ$tail`XS`S`XS`S@@@U@@@ఐ"l2`XS`S`XS`S@@@.W@C/@@ఐ"l3`XS`S`XS`S@@@7W@C<@@`XS`S`XS`S@@EW@CA@@K@@<B@q`YSS@@@ఠ"l2`XS`Sn`XS`Sp@`;A@@CT@@ఠ"l3`XS`Sr`XS`St@`7@8@91*@+@,$@@@@@ఐ (traversea\TT*a\TT2@ @@@ @  @@C@@C@@ఐH#ctxa\TT3a\TT6@װ@@r&@@ఐV#defa\TT7a\TT:@+@@^@C5@@$@@ 6@A@a\TT @@y$let+a]T>TFa]T>TJ@@ ]@C@@@C]@C@@W@CW@C\@C@@C ! ]@C@@@C]@C@@C@@C]@Cఐ&choicea]T>TRa]T>TX@}@@@ E@@@C@@C@@C3aaaaaaaa@oyr@s@t@@@@ఐ#ctxa]T>TYa]T>T\@/@@@ YఐB$tailb]T>T^b]T>Tb@*@@@@ఐ$bodyb ]T>Tcb]T>Tg@@@f]@C,@@6@@-@]b^TkT@@$bodyb]T>TKb]T>TO@b/>A@@X:@@@ภ'Lmutletb&^TkTsb'^TkTz@ఐ"vkb0^TkT|b1^TkT~@@@]@@@C]@C]@C3b5b4b4b5b5b5b5b5@U'u@@@@@ఐ#varbE^TkTbF^TkT@ɰ@@1@@@C]@C]@C@ఐ䠐#defbW^TkTbX^TkT@q@@ @ఐI$bodybb^TkTbc^TkT@(@@+@@@R@@,@AS@@W@C3bdbcbcbdbdbdbdbd@@@@W@@ .@Ġ$Lletbu_TTbv_TT@Tఠ"lkڠb~_TTb_TT@bA@@T@@@B~3bbbbbbbb@@@@ఠ"vk۠b_TTb_TT@bA@@^@@@B@ఠ#varܠb_TTb_TT@bA@@T2@@@B@ఠ#defݠb_TTb_TT@b A@@\@@@B+@ఠ$bodyޠb_TTb_TT@b!A@@\@@@B9@@@Jb_TT@@ ;@@ ;@@@@@ఠ#ctxb`TTb`TT@b?A@@ T@C3bbbbbbbb@`Y@Z@[RK@L@ME>@?@@81@2@3+$@%@&@@@@ఠ(bindingsb`TTb`TT@b@A@@ T@`hT@D=T@DGT@C@@% @@@%@@@C%@ఐ ,traverse_letc`TTc`TT@ @@@ @ @ @ ۠@ @@C@@C@@C@@C=@@ఐ Ƞ#ctxc`TTc`TT@W@@ J@@ఐ#varc(`TTc)`TT@N@@ T@CX@@ఐ#defc6`TTc7`TT@[@@ T@a@T@Ch@@;@@@q@Z@@C^@Cq@A@cF`TT@@$let+cNaTTcOaTT@@ ]@D@@@D]@D @@W@D\@D@@D ]@D@@@D]@D@@D @@D ]@Cఐ L&choicecraTUcsaTU @ @@@ K  F@ A >@@D@@D@@D 3cvcucucvcvcvcvcv@@@@@@@@@ఐ#ctxcaTU caTU @@@@ ఐ٠$tailcaTUcaTU@@@ g@@ఐ$bodycaTUcaTU@Ȱ@@]@D.@@8@@ m/@]cbUU=@@$bodycaTTcaTU@cAA@@X<@@@ఐh%lletscbUU$cbUU)@߰@@@Ub@@@D(@_=@@@D'@L@Ui@@@D%@^@@@D&@@D$@@@D#@^@@@D"@@D!@@D @@D@@D3cccccccc@j:@1@2@@@@ఐs"lkcbUU*cbUU,@@@U@@@DB^@DD^@DC@@ఐx"vkdbUU-dbUU/@,@@_@@@DA^@DF^@DE+@@ఐ2(bindingsdbUU0dbUU8@@@18@@ఐv$bodyd&bUU9|@A}@@D@@i~@@E@A@@@W@DL3d'd&d&d'd'd'd'd'@@@@@@ Z@Ġ'Lletrecd8cU>UDd9cU>UK@;'Lletrec]@ Π @@@I@@@H^{@@@J@BG@V@A_,''_,''?@@@_@ఠ(bindingsߠdTcU>UMdUcU>UU@dg"A@@  @@@B@@@B3dZdYdYdZdZdZdZdZ@ w@@@ఠ$bodydgcU>UWdhcU>U[@dz#A@@^@@@B@@@7docU>U\@@ 6@@ 6@@@@@ఠ#ctxd~dU`UlddU`Uo@dBA@@ 3T@DN3dd~d~ddddd@ 70@1@2%@@ @@@@ఠ(bindingsddU`UqddU`Uy@dCA@@ .T@`T@DT@DT@DO@@ @@@@@@DR@ఐ ^/traverse_letrecddU`U|ddU`U@ b@@@ `@ ]@ M@ L@@DV@@DU@@DT5@@ఐ p#ctxddU`UddU`U@ @@ B@@ఐ|(bindingsddU`UddU`U@K@@ T@bT@aT@aT@D_V@@/ @@@_@N@@Da^@D^_@A@ddU`Uh@@$let+deUUdeUU@5@ F]@Dg@@@Dh]@Dm@@"W@Di#W@D\@Dj@@Dk V ]@De@@@Dd]@Dl@@Dn@@Do]@Dbఐ 점&choiceeeUUeeUU@ @@@  z @  @@Ds@@Dr@@Dq3eeeeeeee@@@@@@@@@ఐ#ctxe*eUUe+eUU@@@@ ఐ y$taile7eUUe8eUU@ a@@ @@ఐݠ$bodyeDeUUeEeUU@@@]@D}.@@8@@ /@_eKfUU@@$bodyeSeUUeTeUU@efDA@@Z<@@@ภ'Lletrece]fUUe^fUU@%ఐ֠(bindingsegfUUehfUU@J@@3eeededeeeeeeeeee@P p@@@@@ఐ%$bodyeufUUevfUU@ @@{@@.@@{@A/@@W@D3ewevevewewewewew@a@@@3@@ A@Ġ'LswitchegUUegUU@;'Lswitch_7@_@@@Oa-lambda_switch@@@P^#@@@Q@CI@V@A`S.'w'y`T.'w'@@@a @ఠ"l1egUUegUU@e$A@@_@@@B3eeeeeeee@ @@@ఠ"swegUUegUU@e%A@@(@@@B@ఠ#locegUVegUV@e&A@@^S@@@B@@@CegUV@@ @@ @@@@@ఠ*consts_lhseiV V,eiV V6@eEA@@T[@@@D]@D@@@D]@D3eeeeeeee@ LE@F@G>7@8@91*@+@,@@@@ఠ*consts_rhseiV V8eiV VB@f FA@@U`:@@@D]@D@@@D]@D@@/@@@/@@@D%@డd$List%splitfiV VEfiV VI@ f iV VJf!iV VO@@T@@@T@J@-@@D@@@D@TT@@@D@UԠ;@@@D@@D@@DT@@ఐ"swfJiV VPfKiV VR@]@@@@@D@Dh@)sw_constsfViV VSfWiV V\@3)sw_consts@@@^@@@@@`@@@@@@@@@@A3,sw_numconsts[@@@@@@@Aa-Z--a.Z--@@a.@!3,sw_numblocks![@@@@@B@Aa7\.J.Na8\.J.`@@a0@3)sw_blocks+_@[@@@@`@@@@@@@@@@C)@AaO]..aP]..@@b 1@3-sw_failactionC `@@@@@@@@D7@Aa]^..a^^..@@b2@@Aaa[..ab[..1@@b/@dW@@U#@֠@@@D@@@D^@D^@D@@f@@@堠@@@D^@D@A@fiV V(p@@@@ఠ*blocks_lhsfjV`VlfjV`Vv@fGA@@US@@@D]@D@@@D]@D3ffffffff@ @ @ @@@@@@ఠ*blocks_rhsfjV`VxfjV`V@gHA@@Va2@@@D]@D@@@D]@D@@,@@@,@@@D#@డe$List%splitgjV`VgjV`V@ gjV`VgjV`V@@U@@@U@G@-@@D@@@D@UQ@@@D@V̠;@@@D@@D@@DR@@ఐ"swgBjV`VgCjV`V@U@@@@@D@Df@)sw_blocksgNjV`VgOjV`V@Ͱ@@UƠ@~@d@@D@@@D^@D^@D{@@L@@@@s@@D^@D@A@gijV`Vh@@@ఠ"l1gtlVVgulVV@gIA@@ ]@D3gtgsgsgtgtgtgtgt@@@@@@@@ఐ(traverseglVVglVV@@@@@@@D@@D@@ఐE#ctxglVVglVV@ ԰@@o"@@ఐ"l1glVVglVV@@@^@D1@@$@@2@A@glVV@@v$let+gmVVgmVV@@@@ W@FW@EW@D젠@W@D@@D@ .W@FW@EW@D@@D]@D@@@D]@D@@ W@E\@D@@D5 ]@D@@@D]@D@@D@@D]@Dఐ Π+choice_listgmVVgmVW@ Ұ@@@   @  @@E@@E@@E3gggggggg@@@@@@@ఐ#ctxhmVWhmVW@ C@@@ ఐ V$tailhmVWhmVW @ >@@@@ఐ(*consts_rhsh!mVW h"mVW@;@@ W@^SW@E-@@7@@ .@uh)tXrX@$and+h0nWWh1nWW#@@'@@@3@'@@@3@'@'@@3@@@3@@3@@3@( @( @W@E W@E@@@E ]@E @ @@@E ]@E @@@@E@@@E]@E@@E@@E]@EఐP+choice_listhsnWW1htnWW<@T@@@ROM@JB@@E$@@E#@@E"@@ఐ3#ctxhnWW=hnWW@@ °@@]@`ఐ ՠ$tailhnWWBhnWWF@ @@c@@ఐ*blocks_rhshnWWGhnWWQ@%@@W@E.@@3@@l@hmVV@p$and+hoWRWZhoWRW^@~@@@@@EI\@E3\@D@@@D]@E@W@D@@@D]@D!@@ @@D@@@D]@E@@E@@E]@DఐX-choice_optionhoWRWohoWRW|@\@@@ZWU@RG@@E7@@E6@@E5@@ఐ#ctxhoWRW}hoWRW@1@@@hఐD$tailioWRWioWRW@,@@ @@ఐ\"swioWRWioWRW@$@@@@@EE@EB@-sw_failactionioWRWioWRW@@@W@_W@EC)@@B@@*@~@@'@@ఠ*consts_rhsi5mVV@iGJA@@uW@EW@EuW@Ez@ESE@@ఠ*blocks_rhs iGnWW$iHnWW.@iZKA@@@ETR@@A@@@@@EWY@@ఠ-sw_failaction i[oWRW_i\oWRWl@inLA@@@EOf@@A@@@1@ @@EZ@@@EYs@@@@ఠ)sw_consts iwqWWixqWW@iMA@@_@@@@Ex^@Ee@MW@FW@EW@EW@Ef@@Et@@@Es^@E_3iiiiiiii@ga@b@cVO@P@QC<@=@>@@@డh($List'combineiqWWiqWW@ iqWWiqWW@@@_!a@@@@@@|!b@@@@?H@@@@>@@@=@@<@@;@_==_=>$@@_A@,'@@@$T@@@Eh@S@@@Egc@b@]@@Ed@@@Ec@@Eb@@EaV@@ఐ*consts_lhsiqWWiqWW@@@Iy@@@Ev_@Ey_@Ewk@@ఐԠ*consts_rhsj qWWj qWW@s@@x@@e@@y@A@jqWW@@@ఠ)sw_blocks jrWWjrWX@j,NA@@@@@@E^@E@@@E@@@E^@E{3j)j(j(j)j)j)j)j)@@@@@@డh$List'combinej>rWXj?rWX @ jBrWX jCrWX@@@@@%@@@E@ @@@Eՠ@3@@@E@@@E@@E~@@E}.@@ఐ*blocks_lhsjfrWXjgrWX@@@J@@@E_@E_@EC@@ఐ4*blocks_rhsj{rWXj|rWX)@@@3P@@A@@`Q@A@jrWW@@@ఠ"sw jsX-X9jsX-X;@jOA@@@@@E^@E3jjjjjjjj@gz@{@|@@@Р,-@@@E^@E@J)sw_constsjsX-XHjsX-XQAఐ9 @@T@@@@E@1W@EW@E@@E@@@E^@E-@IJ@@@E^@E@F)sw_blocksjsX-XSjsX-X\Aఐ @@@S@R@@@E@T@@E@@@E^@EQ@K-sw_failactionjsX-X^jsX-XkAఐ @Y@_@@ఐF"swjsX-X@jsX-XB@@@q@@@E^@E^@Eq@ksX-X>ksX-Xn@@yt@A@k sX-X5@@ภ'LswitchktXrXzktXrX@ఐ"l1ktXrXktXrX@ @@3kkkkkkkk@@@@@@ఐ"swk(tXrXk)tXrX@ @@@@@E]@E]@E@ఐw#lock:tXrXk;tXrX@L@@c@@@E]@E]@E'@@5@@e{@@@E+@@ @@@!@@@="@@n@A#@@`W@E3kIkHkHkIkIkIkIkI@T@@@'@@@(@@m@)@@h@Ġ-Lstringswitchk\uXXk]uXX@;-Lstringswitche @e@@@Rc@&stringQ@@@U@e@@@V@@T@@@SϠe@@@X@@@Wd@@@Y@DJ@V@Af>1( (f?2("(i@@@f@ఠ"l1kuXXkuXX@k'A@@e@@@B3kkkkkkkk@@@@ఠ%caseskuXXkuXX@k(A@@?@>@@@B@e@@@B@@B@@@B@ఠ$failkuXXkuXX@k)A@@e@@@B@@@B.@ఠ#lockuXXkuXX@k*A@@d]@@@B<@@@ykuXX@@>@@>@@@@@ఠ)cases_lhskwXXkwXX@kPA@@Z@@@F]@F@@@F]@E3kkkkkkkk@kd@e@f]V@W@XC<@=@>2+@,@-@@@@ఠ)cases_rhslwXXlwXX@lQA@@[fE@@@F]@F@@@F]@E @@0@@@0@@@E'@డj$List%splitl'wXXl(wXX@ l+wXXl,wXY@@Z@@@Z@K@-@@F@@@F@ZU@@@F@[ߠ;@@@F@@F@@FV@@ఐ%caseslSwXYlTwXY @\@@Zˠ@t@V@@F@@@F^@F^@Fq@@>@@@@e@@F^@Fz@A@lnwXX@@@ఠ"l1lyyY%Y1lzyY%Y3@lRA@@]@F3lylxlxlylylylyly@@@{@|@}@@@ఐ(traverselyY%Y6lyY%Y>@@@@@@@F @@F@@ఐJ#ctxlyY%Y?lyY%YB@ٰ@@t"@@ఐ"l1lyY%YClyY%YE@@@^@F'1@@$@@2@A@lyY%Y-@@{$let+lzYIYQlzYIYU@@@\@F/@$\@F0@@F1]@F-@@@F.]@F5@@  W@F\@F2@@F3+ ]@F+@@@F*]@F4@@F6@@F7]@F(ఐĠ+choice_listlzYIYblzYIYm@Ȱ@@@@@@FH@@FG@@FF3llllllll@s}v@w@x@@@@ఐ#ctxlzYIYnlzYIYq@9@@@אఐL$tailm zYIYsm zYIYw@4@@@@ఐ)cases_rhsmzYIYxmzYIY@@@W@FR,@@6@@-@em~ZZ0@$and+m%{YYm&{YY@@@@@F?]@FA@@@@F>]@F@@@@@F;@@@F:]@FB@@FC@@FD]@F8ఐĠ-choice_optionmN{YYmO{YY@Ȱ@@@@@@FX@@FW@@FVg@@ఐ#ctxma{YYmb{YY@@@8t@Ԑఐ$tailmn{YYmo{YY@@@>@@ఐ$failm{{YYm|{YY@@@`W@Fb@@3@@@mzYIYV@@+w@ఠ)cases_rhs mzYIY_@mSA@@@Fj@@ఠ$failm{YYm{YY@mTA@@@Fk@@A@@@@@Fo@@@@ఠ%casesm}YYm}YY@mUA@@:@S@@@F^@Fy@@@F@@@F^@Fs3mmmmmmmm@>8@9@:3,@-@.@@@డlX$List'combinem}YYm}YY@ m}YYm}YY@@0@@@0'@@@F|@@@@F{o@5@@@Fx@@@Fw@@Fv@@Fu0@@ఐ)cases_lhsn}YYn}YY@@@UL@@@F_@F_@FE@@ఐ)cases_rhsn}YYn}YZ@N@@R@@A@@bS@A@n}YY@@ภ-Lstringswitchn!~ZZ n"~ZZ@Šఐ"l1n+~ZZn,~ZZ@;@@3n)n(n(n)n)n)n)n)@i|@}@~@@@ఐ%casesn9~ZZn:~ZZ$@ @@۠@@@@F@@@F@@@F]@F]@F@ఐ$failnU~ZZ&nV~ZZ*@@@*@ఐ#locn`~ZZ,na~ZZ/@g@@f@@@F]@F]@F<@@JM@@h@@@F@@UQ@@@AR@@W@F3nmnlnlnmnmnmnmnm@@@@V@@@W@@8@Ġ,LstaticraisenZ1Z7nZ1ZC@;,Lstaticraiseh.@c@@@Zg h@@@\@@@[@BK@V@AiJ3(j(liK3(j(@@@j@ఠ"idnZ1ZEnZ1ZG@n+A@@@@@B3nnnnnnnn@@@@ఠ"lsnZ1ZInZ1ZK@n,A@@'h@@@B@@@B@@@9nZ1ZL@@@@@@@@ఠ"lsnZPZ\nZPZ^@nVA@@T@]T@FT@FT@F3nnnnnnnn@81@2@3*#@$@%@@@ఐ-traverse_listnZPZanZPZn@@@@@@@F@@F@@ఐ#ctxnZPZonZPZr@)@@"@@ఐN"lsnZPZsnZPZu@*@@/@@"@@0@A@nZPZX@@డ9&lambda&Choiceo ZyZoZyZ@ oZyZoZyZ@@[@@@[@@@FlZ@@@F@@@F@@F3oooooooo@Td]@^@_@@@@ภ,Lstaticraiseo-ZyZo.ZyZ@ఐ"ido7ZyZo8ZyZ@h@@@@@F]@F]@F @ఐ"lsoIZyZoJZyZ@(@@+@@oMZyZoNZyZ@@@@@F]@F3@@H@@iW@F6@Y @@@Ġ(LtrywithobZZocZZ@;(Ltrywithi@i@@@ei!t@@@fi@@@g@CM@V@Aj.5((j/5()@@@j@ఠ"l1oZZoZZ@o-A@@i@@@B3oooooooo@@@@ఠ"idoZZoZZ@o.A@@)@@@B@ఠ"l2oZZoZZ@o/A@@i@@@B@@@DoZZ@@m@@m@@@p$let+o[k[so[k[w@@@\@Fࠠ@\@F@@F]@F@@@F]@F@@ W@G)\@F@@F  ]@F@@@F]@F@@F@@F]@Fఐ&choiceo[k[}o[k[@|@@@D@@@F@@F@@F3oooooooo@le@f@g^W@X@YQJ@K@L@@@@ఐ#ctxo[k[o[k[@2@@@\ภ^ڰp[k[p[k[@^@@@W@VW@VW@SW@G]@G(@@ఐ"l1p[k[p[k[@0@@p]@G7@@A@@8@pp[[@$and+p%[[p&[[@@SW@F@@@F]@F@UW@F@@@F]@F@@ @@F@@@F]@F@@F@@F]@Fఐ+&choicepQ[[pR[[@@@@*%@ @@G @@G @@G u@@ఐ#ctxpd[[pe[[@@@;@ʐఐ$tailpq[[pr[[@@@A@@ఐࠐ"l2p~[[p[[@@@]@G@@3@@G@p[k[x@@.z@ఠ"l1 p[k[z@pWA@@@G@@ఠ"l2p[[p[[@pXA@@@G@@A@@@@@G!@@@ภ(Ltrywithp[[p[[@Nఐ("l1p[[p[[@(@)@*@@)3pppppppp@3' @!@"@@@ఐ:"idp[[p[[@@@f@@@G,]@G0]@G/@ఐ>"l2p[[p[[@@@=!@@0@@"@A3@@3pppppppp@@@@Ġ,Lstaticcatchp[[p[[@;,Lstaticcatchj@k'@@@]@f#@@@_@i@j!t@@@b@l@@@c@@a@@@`@@^kJ@@@d@CL@V@Ak4((k4((@@@l@ఠ"l1q#[[q$[[@q60A@@k]@@@B3q%q$q$q%q%q%q%q%@B@@@ఠ#idsq2[[q3[[@qE1A@@@A@@@B@@@?@@@B@l@@@B@@B@@@B@@B%@ఠ"l2qV[[qW[[@qi2A@@k@@@B3@@@rq^[[@@%5@@%5@@@!($let+qf\j\rqg\j\v@@@\@G:@\@G;@@G<]@G8@@@G9]@G@@@ W@G\@G=@@G>ؠ ]@G6@@@G5]@G?@@GA@@GB]@G3ఐn&choiceq\j\|q\j\@4@@@mh@c`@@GS@@GR@@GQ3qqqqqqqq@{@|@}tm@n@oQJ@K@L@@@@ఐ[#ctxq\j\q\j\@@@@ఐ$tailq\j\q\j\@@@!@@ఐ"l1q\j\q\j\@)@@!]@G]0@@:@@1@iq\\@!$and+q\\q\\@ @0W@GG@@@GJ]@GL@:W@GH@@@GI]@GKA@@ @@GF@@@GE]@GM@@GN@@GO]@GCఐܠ&choicer\\r\\@@@@j@@@Gb@@Ga@@G`n@@ఐ #ctxr\\r\\@Q@@{@{ఐd$tailr"\\r#\\@L@@@@ఐ٠"l2r/\\r0\\@@@]@Gl@@3@@@r6\j\w@@0+@ఠ"l1 rC\j\y@rUYA@@_@Gs@@ఠ"l2rO\\rP\\@rbZA@@h@Gt@@A@@@@@Gx@@@ภ,Lstaticcatchra\\rb\\@uఐ("l1rk\\rl\\@(@)@*@@)3rjririrjrjrjrjrj@3' @!@"@@@ఐI#idsr{\\r|\\@۰@@@@@@G@@@@@G@n @@@G@@G@@@G@@G]@G]@G,@ఐT"l2r\\r\\@3@@S7@@F@@'8@AB@@k3rrrrrrrr@ @@@Ġ&Leventr\\r\\@;&Leventlb@l@@@|n/,lambda_event@@@}@BT@V@Amz>**m{>**@@@n4@ఠ#lamr\\r\\@r3A@@m@@@B3rrrrrrrr@@@@ఠ#levr\\r\\@r4A@@$@@@B@@@1r\\@@@@@@@"$let+r\\r\]@5@F]@G@@@G]@G@@W@GW@G\@G@@GV ]@G@@@G]@G@@G@@G]@Gఐ점&choices\] s\]@@@@z@@@G@@G@@G3ssssssss@5UN@O@PG@@A@B@@@@ఐנ#ctxs*\]s+\]@f@@@ఐy$tails7\]s8\]@a@@@@ఐw#lamsD\]sE\]@(@@]@G.@@8@@ /@_sK]"];@@#lamsS\]sT\]@sf[A@@Z<@@@ภ&Levents]]"]*s^]"]0@ఐ#lamsg]"]2sh]"]5@m@@@@n3sfsesesfsfsfsfsf@Q!@@@ఐ#levsu]"]7sv]"]:@X@@@@@G]@G]@G@@#5@@@A6@@D3s|s{s{s|s|s|s|s|@f@@@Ġ'Lifuseds]<]Bs]<]I@;'Lifusedm;@m8!t@@@~m@@@@BU@V@AnT?**nU?**@@@o@ఠ!xs]<]Ks]<]L@s5A@@@@@B@ఠ#lams]<]Ns]<]Q@s6A@@m@@@B@@@1s]<]R@@@@@@@#$let+s]V]^s]V]b@@]@G@@@G]@G@@W@GW@G\@G@@G/ ]@G@@@G]@G@@G@@G]@GఐŠ&choices]V]is]V]o@@@@S@@@G@@G@@G3ssssssss@TM@N@OG@@A@B@@@@ఐ#ctxt]V]pt]V]s@?@@@iఐR$tailt]V]ut]V]y@:@@@@ఐh#lamt]V]zt]V]}@'@@v]@G.@@8@@/@_t$]]@@#lamt,]V]ct-]V]f@t?\A@@Z<@@@ภ'Lifusedt6]]t7]]@ఐ!xt@]]tA]]@K@@@@@G]@G]@G3tEtDtDtEtEtEtEtE@W'w@@@@@ఐ,#lamtU]]tV]]@ @@@@#5@@@A6@@3tUtTtTtUtUtUtUtU@f@@@@@At\?OfOj9@@ @:A@@61@,)@@R@@R@@RW@R @@@tg>OGOID@@@@@@@B@@B@@B3totntntototototo@,@@@࣠@#ctxAt]]t]]@t`A@@3tt~t~ttttt@*@@@@@  At]]t]]@taA@@3tttttttt@9@@@@@@t]]@@%applyAt]]t]]@tbA@@"3tttttttt@*@@@@@@@@ &No_tmc\t]]t]]@#s@@@A@@tcA@@@@ @@t]] @3tttttttt@'?@@@@@ఠ9explicit_tailcall_requestǠt]]t]^@tdA@@c@@@S]@R3tttttttt@)#@@@ఐF%applyt^ ^t^ ^@%@@d@+ap_tailcallt^ ^t^ ^)@3+ap_tailcallj@@@pd2tailcall_attribute@@@@@C3'ap_func o/@@@@@@@AoR,,oR,,@@pn(@3'ap_argsmo<@@@@@@@@A@AoS,,oS,,@@p|)@3&ap_loc"m@@@@@B@AoT,,oT,-@@p*@+3*ap_inlined+!@@@@@D&@AoV-5-9oV-5-W@@p,@3.ap_specialised4!@@@@@E/@AoW--oW--@@p-@@AoU--oU--4@@p+@KC@@=@@@R[@Ġ0Default_tailcallu;^/^9u<^/^I@;0Default_tailcallN@@@@@@@AA@Aoo@@@p@@@  @@W@@@Ru@@Z@@@Rx@@@ภd,uS^/^MuT^/^R@d,@@@@Ġ4Tailcall_expectationu`^S^]ua^S^q@;4Tailcall_expectation%@!@@@@A@AA@Ap"p#=@@@p@Ġdaut^S^ruu^S^v@d`@@@@@@@S@@@@@@@@S@@@@@S@@@ภdsu^S^zu^S^~@dr@@@@Ġ4Tailcall_expectationu^^u^^@3Ġdtu^^u^^@dt@@@@9@@@S@@@@@@@@S@@@@@S@@@డt4%raiseu^^u^^@@#exnG@@@!a@@@&%raiseAA`@@@` ^BB` ^Bg@@` @@@@@@@@S`@S@@S@@ภ&No_tmcu^^u^^@;,t@@@R@@@2A@A*@@)@ @@.@@@S!`@S%@@7@@@@@Au^ ^@@@A@u]]@@ఐZ%applyu^^u^^@9@@x3uuuuuuuu@%3,@-@.@@@'ap_funcv^^v^^@  @@p:@@@S7 @Ġ$Lvarv^^v^^@oఠ!fȠv^^v^^@v-eA@@o@@@S=3vvvvvvvv@'@@@@@@@pY@@@S>@@p\@@@S?@@@@ఠ+specializedʠv3^^v4^_@vFgA@@%@@@Sm_@SF3v7v6v6v7v7v7v7v7@C(!@"@#@@@డs#Map$find%IdentvR_ _vS_ _@ vV_ _ vW_ _#@@v[_ _$v\_ _(@ @@")@@@5@[!a@5@@@5@@5@@5@Y@VU@@@@":@@@SL@lC_@SJ@@@SK@@SI@@SHA@@ఐm!fv_ _)v_ _*@K@@"T@@@S\`@S[S@@ఐ#ctxv_ _+v_ _.@ @@(b@+specializedv_ _/v_ _:@а @@&o@@@Slm@@X@@0n@Ġ)Not_foundv_;_Lv_;_U@;)Not_found@@@@@@a A@A&_none_@@A@@aI@@@@@u@@@S@@@ ఐE$tailv_Y_jv_Y_n@-@@W@డs-prerr_warning(Locationv_t_v_t_@ v_t_v_t_@@@(Location!t@@@ 9@(Warnings!t@@@ 8$unitF@@@ 7@@ 6@@ 5@4parsing/location.mli4++4++?@@N@(#@@@ @@@S@@@@S@@@S@@S@@S@@డs/Scoped_location+to_location)Debuginfow*__w+__@ w.__w/__@@w3__w4__@ @@)Debuginfo/Scoped_location!t@@@ [(Location!t@@@ Z@@ Y@4lambda/debuginfo.mlibb@@S@'@@@@@@T@@@T@@T@@ఐȠ%applywe__wf__@@@,@&ap_locwl__wm__@` @@o@@@T6@@ws__wt__@@@@@S@Td@T@@@ภ(Warningsw__w__@3Tmc_breaks_tailcallw__w_`@@;3Tmc_breaks_tailcall(Warnings!t@@@T@@@W[n@A2utils/warnings.mliySUySj@@@ V@@@@@@@Sc@Ti@@@@wY@@@Tb@Tc@Sr@@w_Y_g#@@ t@డv<%raisew`` w``%@@@@@@@Tb@T@@T@@ภ&No_tmcw``&w``,@@@@@@@Ub@U@@@@@'w``-@@@@@w_ _@@_@A@w^^@@@ఠ$argsw`;`Iw`;`M@whA@@pr%@@@Uu@@@Ut_@U3wwwwwwww@@@@@@@@ఠ$kindxaaxaa@xiA@@'@@@U`@U@@ఠ%arityxaaxaa@x(jA@@'0@@@U`@U +@@ @@@@ @@U 2@@ఐ+specializedx2aax3aa@?@@!@@@U@UG@+direct_kindx>aax?ab@!@@7N@@ఐ+specializedxLabxMab@Y@@!@@@U@Ua@%arityxXabxYab@!ΰ@@@h@@*@@@V@G@@Uo@A@xcaa @@డxr6find_exact_application&Lambdaxsbb.xtbb4@ xwbb5xxbbK@@@%B@@@ %aritym@@@ @q!r@@@ @@@ r@@@ @@@ @@@ @@ @@ @@ @sVB0B0sWBMB@@te@0+@@@%j@@@U%(&@@@U$@%r@@@U#@@@U"$Πr@@@U!@@@U @@@U@@U@@U@@U3xxxxxxxx@@@@@@@@@ఐ̠$kindxbbLxbbP@@@%@@@Ua@U=@ZఐϠ%arityxbbRxbbW@!@@g@@@U;a@U@a@U?-@@ఐ]%applyxbbXxbb]@<@@{<@'ap_argsybb^ybbe@ @@~sA@@@U:@@@U9a@UEa@UBN@@@@~(sL@@@U8@@@U7@@@U6Z@Ġ$Noney%bkbyy&bkb}@f@@@@@sd@@@UQ@@@UP@@@UO3y.y-y-y.y.y.y.y.@r@@@ @Lsp@@@UT@@@US@@@UR @@@డw%raiseyHbkbyIbkb@@@@@@@Ujib@Ui@@Uh@@ภ&No_tmcy[bkby\bkb@@@@@@@Uob@Us0@@@@{1@Ġ$Someynbbyobb@ckఠ$argsywbbyxbb@ykA@@s@@@U^@@@U]@@@ @@s@@@Ua@@@U`@@@U_@ @s@@@Ud@@@Uc@@@Ub@@@ఐ)$argsybbybb@(@)@*@@3yyyyyyyy@3@@@@@Aybb(@@u@F@@@A@y`;`E @@@ఠ(tailcallybbybb@ylA@@@g(@@@U_@U@@@U_@U@@U_@U3yyyyyyyy@@@@@@࣠@$tailAybbybb@ymA@@3yyyyyyyy@)ybbycc@@@@@  @@ఐ$tailyccycc@0@@@@13yyyyyyyy@"@@@ภ4Tailcall_expectationyccycc@ภhyccycc@h@@@@@@U`@U@@@@@@@U@ภ0Default_tailcallzcc4@@5@@`@U'@zcc9@@)@C:A@__@UA@A@>@Р3D"qD@@@3DDD@@@3@@@ 3D @D@@@3D@@3@@A@AD@D3DDD@@@3@@@3@@B@AD@D3DD@@@3@@C@AD@D3D~D}@@@3@@D@AD|@Dy@AD@D&ChoicezFddzGdd@#dpszKddzLdd@@డ\$make#Dpsz[ddz\dd!@ z_dd"z`dd&@@@?zrH=@@@*V@@@*UCzzH;@@@*T@@@*S@@*R@H:@H7@@@?ʠ@@@U@@@UC@@@U@@@U@@U3zzzzzzzz@@@@@@@࣠$tailAzdd-zdd1@znA@@H@@@U3zzzzzzzz@@@@@zdd, @#dstAzdd3zdd6@zoA@@HH@@@U@@@U3zzzzzzzz@2'H@@@U@"@#@@@@zdd2@@ภ&Lapplyzd:dHzd:dN@֡'ap_funczd\dszd\dz@ภ$Lvarzd\d}zd\d@tఐ+specializedzd\dzd\d@@@$j@@@U@U3zzzzzzzz@8JIH@@@U@@@U@I@J@@@&dps_idzd\dzd\d@$m@@t@@@Ua@Ua@U@@- @@u?@@@Ua@U@ 'ap_args{dd{dd@ఐuq,add_dst_args{dd{dd@t%@@@uluk@@@U@@@U@zud@@@U@@@Uv@@@U@@U@@UH@@ఐ#dst{@dd{Add@R@@uu@@@V@@@Vb@Vb@V`@@ఐs$args{Xdd{Ydd@@@zƠu@@@Ua@Vb@V@@@Vb@V b@V |@@N@@k @@@Ub@V@dt@@@V,a@V*@+ap_tailcall{~dd{dd@ఐԠ(tailcall{dd{dd@@@@h@@@V@@@V@@V@@ఐ$tail{dd{de@@@i@@@Vb@V!b@V @@  @@@@@Vb@V@(@@@V3a@V1@(@@@V8a@V6@@ఐ'%apply{d:dQ{d:dV@@@"E@{d:dO{ee@@"H@@@Ua@V;@@ @@v@@@U@{dd'{ee@@A*u@@@U_@VM@@@VL_@VFB@@ @@W@U@@@U_@UK@¡&direct{ee'{ee-@࣠@wAĠXѰ{ee5{ee7@X@@@@Fl@@@Vl}@@@@ภ&Lapply| e;eI| e;eO@WvK@@@V`@V@vU@@@V@@@V`@V@t@@@V`@V@?+ap_tailcall|0e;e]|1e;eh@ఐ(tailcall|;e;ek|<e;es@@@@i@@@V}R@@@V|@@V{@@ఐĠ$tail|Pe;et|Qe;ex@@@"@@@@e@@@Vya@V@C(@@@V`@V@A(@@@V`@V@@ఐҠ%apply|oe;eR|pe;eW@@@"@|se;eP|te;ez@@"@@@Vr`@V@@p@@v@@@Vq@|ee0|e;e{@@@F@@@VeW@V^@@Vd^@V@\)tmc_calls|ee|ee@ภt|ee|ff#Awxຠ3{ {@@@ i{@@@3{{@@A@A{@z@A{ @{ #loc|ee|ee@ఐ%apply|ee|ee@@@#62@&ap_loc|ee|ee@ @@{.@@@V^@V>@!(explicit|ee|ee@ఐ9explicit_tailcall_request|ee|ef@ٰ@@{8@@@V^@VU@@@E|ff"@@G;@@@V^@V^@V^@ภtRAt@SA@|T@@@V^@Vk@@|ee[@@GS@@@V^@Vs@á1benefits_from_dps|f%f1}f%fB@ภk}f%fE}f%fI@k@@@GX@@@V^@V@ԡ9explicit_tailcall_request}e}e}e}eAఐP @ @G_@@@V^@V@@@}"cd}#fKfV@@#@H@@#^@|@@#3@M@@#@ఠ(_nontailɠ}1fWf_}2fWfg@}DfA@@wk@@@SA>@@wn@@@SBA@@@డ{%raise}DfWfk}EfWfp@@@@@@@V T_@V@@V3}I}H}H}I}I}I}I}I@U#@@@@@@ภ&No_tmc}ZfWfq}[fWfw@@@@@@@V_@V@@@@#@@@A}d^^ @@#3}`}_}_}`}`}`}`}`@k@@@| @@#@Ġ&No_tmc}ofxf}pfxf@@@@@|@@@W@@@@ఠ0apply_no_bailout}ff}ff@}pA@@$@@@WD_@W3}}}}}}}}@@@@@ఠ+ap_tailcall}gg}gg@}qA@@@@@W`@W @ఐ %apply}gg}gg@@@$(3}}}}}}}}@@@@+ap_tailcall}gg}gg@Ű @@@@@W  @Ġ4Tailcall_expectation}gg}gg@_Ġl}gg}gh@l@@@@e@@@WE@@@@@@@@WI@@@@@WL@@ఐ P$tail}gh}gh @ 8@@$bW@ภ0Default_tailcall}gh}gh @@@@Q`@ఠ%other}h!h-}h!h2@~rA@@ @@@WO@@ @@@WR@@@ఐ%other~h!h6~h!h;@@@@@p3~~~~~~~~@ 2@@@@@A~ gg@@t@A@~ gg @@ xJ@@@W/_@W-@  xT@@@W5@@@W4_@W1@ v@@@W9_@W7@ >+ap_tailcall~/hGh\~0hGhgAఐ @@@@ I@@@W)_@W*3~8~7~7~8~8~8~8~8@ h@@@ )*@@@W?_@W=@ '*@@@WC_@WA@@ఐ %apply~UhGhQ~VhGhV@ @@$@~YhGhO~ZhGhi@@@P@@@A@~]ff@@РDBq^@W@@@W^@W@C&direct~qhh~rhh@࣠@z[AĠ[R~~hh~hh@[Q@@@@H@@@Wm3~~~~~~~~~~@  @@@@@@  @@ภ&Lapply~hh~hh@ ۠ఐ0apply_no_bailout~hh~hh@@@%@@@Ws`@Wu`@Wt@@ @@x@@@Wr#@~hh~hh@@@I@@@WfW@Wq_@W^@@We^@Wx1@II@@@W@@@W^@W@I@@@W^@W@I @@@W^@W@@డI&lambda&Choice~hmhv~hmh|@ ~hmh}~hmh@@"*@@@"*@@@WJ';")@@@WI@@@WH@@WGl@@ภ&Lapply~hmh~hmh@!Eఐ f%applyhmhhmh@ E@@%@@hmhhmh@@"O@@@WS`@WX@@hmhuhmh@@'g !^@W@@@W^@W^@W}@hmhshh@@%@@@%@@@ ]]@@%@"]]@@%3@ e@@@ A@@%%%@%%@@W@@W@@WW@W @@@.]]@%%%D%C@%B%E@@%%%@%~@%a@%X%S@@B @@B @@B@@B@@B3:99:::::@%@@@࣠@#ctxAKhhLhh@^sA@@%3JIIJJJJJ@%@@@@@%{7A@WhhXhh@@%3TSSTTTTT@&%@@@@@@]hh@@{D A@ఠ#taglhhmhh@tA@@%@@ఠ$flagxhiyhi@uA@@%#@@ఠ%shapehihi @vA@@%/@@hhhi @@@%̠@%Ǡ@%@@W:@@  @@)blockargsAhihi@wA@@%3@K=%@7@82%@,@-'%@!@"@@@@  @@#locAhihi@xA@@%3@"%@@@@@@@@@ఠ'choicesii&ii-@yA@@4&A]@W@@@W]@W3@'%@@@@@డ~`$List#mapii0ii4@ ii5ii8@@5@@@@!B]@W @@W@5@@@W5)@@@W@@W@@W(@@ఐ&ޠ&choiceii:ii@@&@@@&(l&@&&@@W@@W@@W=@@ఐϠ#ctxiiAiiD@@@&kJ@(}ภn"iiK#iiP@n@@@&`@WW@@(ii9)iiQ@@@&&@@W\@@ఐ)blockargs6iiR7ii[@@@&]i@@Z@@oj@A@;ii"@@డK%:find_nonambiguous_tmc_call&ChoiceKi_iiLi_io@ Oi_ipPi_i@@@(9 @@@3@@@3(:9@@@3@@3@9@9 @@@̠(!VW@X@@@X@@@X@@@X@@X3mllmmmmm@@@@@@@ఐ'choicesi_ii_i@ @@&@@@X^@X^@X@@@ @@.#@@@X @Ġ&Choiceiiii@+No_tmc_calliiii@@;:G:@@@3@::@@@3@A@@C@A:@@:ఠ$argsiiii@zA@@:Р!`@X@@@X3@M@@@@@& @@dY@@@X@@h]@@@X @@@డK&lambda&Choiceiiii@ iiii@@$$@@@$$@@@Xs)5$#@@@Xr@@@Xq@@Xp3@y;4@5@6@@@@ภ%Lprimiiii@yภ*Pmakeblockiiii@v.ఐ#tag ii ii@f@@'I"@ఐ$flagiiii@p@@'M-@ఐ%shapeii ii@z@@'P8@@$#ii@@y@@@X_@X?@ఐ|$args1ii2ii@G@@yϠ">@@@X_@X_@XR@ఐ#locDiiEij@t@@'`]@@RHij@@$@@@X|_@Xd@@y@@'ce@Ġ&Choice[jj \jj@)Ambiguous`jjajj@@;;\@ ;a;@@@3@AB@C@A;B@;A;e@@;c@@@3;b@;_;^@@;\)ˠ;Z@@@3@@@3;X@;U@BA@O@B@@@R@@@A;Vঠ(explicitjjjj$A3;)'@@X$ @@@3;z@@AA;m@;jA;@;~ఠ   @{A@;@@@X03@*@@@(subtermsjj&jj.@3;A?@@X&3@@A3;:@@@-A;@;-A;@;ఠ2ambiguous_subtermsjj1jjC@|A@@;* "`@X3@@@X;@@@X:"@@@jjjjE@@^"`@X@@@X=_@X<-@@@o @@mb@@@XB2@@qf@@@XC6@@@@ఠ+term_choicepppp@A@@*4|@@@X`@X@@@X_@X3@{YV@X@WB;@<@=@@@1$let+pppp@#@@*Qz# @@@X_@X_@X`@X@@@X`@X@@ ,_@X@@X*f2@@@X`@X@@X@@X`@XడL$list&Choice%pp&pp@ )pp*pp@@@?G*?E@@@3@@@3*?>?=@@@3@@@3@@3@?Z@?[@@@?Z*#3W@X@@@X@@@X*?R @@@X@@@X@@X3NMMNNNNN@h@@@@ఐ'choices^pp_pp@@@?}(@@@X`@X`@X@@E @@*m@@@X`@X@zq pq@@$argsyppzpp@A@@y*@@@ภ%Lprim pp pp@{%ภ*Pmakeblock pp pp@wఐ*#tag pp pp@@@(3@)@ @!@@@ఐ,$flag pp pp@@@(@ఐ+%shape pp pp@ @@(@@' pp@@{S@@@X`@X @ఐK$args pp pp@(@@+@ఐ#loc pp pp@@@(6@@M_@@7@A`@@@A@ppb@@Р&Choice q'q1 q'q7@#dps q'q8 q'q;@@డd$make#Dps q'q> q'qA@  q'qB q'qF@@@@@HO@@@X@@@XL.@@@X@@@X@@X3@!5.@/@0@@@@࣠$tail~ A@ q'qR q'qS@@Q4@@@Y3@@@@@" q'qL@#dst A@+ q'qY, q'qZ@@Q<Q;@@@Y @@@Y@@5 q'qT @@@ఠ)argumentsA q^qnB q^qw@TA@@)@@@YOb@Y#+@@ఠ$infoUqzqVqzq@hA@@@ND!to&lambda@@@Y.@@@Y-c@Y%@@@Y3c@Y&@@Y'c@Y$Q@࣠@!tA@|qzq}qzq@@@@@Y0@@@Y/3@{5qzqqq@@@@@A/г2&Choiceqzqqzq@9qzqqzq@@г<=qzqqzq@@C@@@Y(&@@@M@@@Y*+ @@qzqqzq@@@U/@@@@ຐ3@@@ x@@@@A@͡)tmc_callsqqqq@ఐW!tqqqq@U@X@F@@,(v@@@Y@d@YD@@@YCd@Y?3@[l@@@)tmc_callsqqqq@ @@@@@Y=@@@Y? @@@3>>@@@3@@@ 3> .>@@@3@@A@A>@>3>>>@@@3@@B @A>@>@A?@?ఠ!@}A@?&`@XK@@@XNc@&choices&sUs&s[Aఠ@~A@.5&`@XP@@@XSv@%afters&s]s&sbA+ఠ@A@?&`@XU@@@XX@@@s&s@s&sd@@c' `@XG@@@XZ_@XY@@@t @@@@@X[@@@@@X\@@@@ఠ&constr shstshsz@,A@@fr@@@Y_@Y3@ZW@Y@XHE@G@F63@5@4@@@ Р}&Constr5shs}6shs@@ 343344444@@@@@A354455555@ @@@ 376677777@@@3jf@@@ j@@@ @@@3j,~@@@ @@A@Aj@j3j ,z@@@ @@B @Aj@j3jj~_j}@@@ @@@ @@C@Aj|@jy3jvjuhjt@@@ @@@ @@D@Ajs@jp3jm"jljkjj@@@ @@E!@Aji@jf@Aj@j#tagnssossAఐ  @@,3qppqqqqq@<@@@/$flag}ss~ssAఐ @@,@9%shapessssAఐ @@,@C&beforessss@డ($List#revssss@ ssss@@@|!a@@@@| @@@@@@|e|e@@|M@@@@'`@Z@@@Z@@@Z@@Z[@@ఐ *rev_beforessss@@@0@@@Z a@Z"a@Z!p@@? @@k'@@@Za@Zw@%after ss ssAఐ @@k'@@@Z+`@Z-@#loc!st!stAఐa @=@-(@@@shs"t t@@@@@@A@shsp@@  డ"<>"#tt8##tt:@?c@@@QQ@@@ZI@@@ZH_@Z=@ ?@@@Z<@@Z;@@Z:30//00000@"@@@@@@ఐa&choiceD#tt'E#tt-@@@/(C`@ZK@@@ZJ`@ZG@)tmc_callsS#tt.T#tt7@ &@@-!@@ภ^u^#tt;_#tt=@@@@:_@ZO.@@d#tt&e#tt>@@t@@@ZP`@ZE6@l#tt@@@@@ZR_@ZQ=@Р X#dps{2vv|2vv@డiD1delay_constructor#Dps2vv2vv@ 2vv2vv@@@U/U.@@@*b@PĠU,@@@*a@@@*`P̠U*@@@*_@@@*^@@*]@@*\@U)@U&!@@@@@@Z`@Pܠ@@@Z_@@@Z^P@@@Z]@@@Z\@@Z[@@ZZ3@@@@@ఐ&constr2vv2vv@@@>@@@Zp_@Zr_@Zq@@ఐ&choice2vv2vv@@@08(_@Zv@@@Zw_@Zt,@#dps2vv2vv@ ԰@@Q!(@@@Zn_@Zx_@Zu;@@r @@ ۠W@ZT@@@ZX_@ZlD@ ܡ&Choice %tJtT %tJtZ@&direct%tJt[%tJta@@࣠@ AĠd%tJti %tJtk@d@@@@R@@@Ze@@@@డ#not2&tot~3&tot@>/@@@?@@@Z>/@@@Z@@Z@@ఐf&choiceI&totJ&tot@$@@0)Da@Z@@@Za@Z@1benefits_from_dpsX&totY&tot@#@@?@@@Za@Za@Z-@@1 @@u@@@Za@Z3@డ%apply&Constru'ttv'tt@ y'ttz'tt@@gʰ@@@h@@@Z@g@@@Zg@@@Z@@Z@@ZU@@ఐ{&constr'tt'tt@_@@h@@@Za@Za@Zi@@డS&direct&Choice'tt'tt@ 'tt'tt@@@1 OT@@@3OS@@3@O`@Oa @@@1)a@Z@@@Z@@Z@@ఐ렐&choice'tt'tt@@@1'@@@Zb@Zb@Z@@'tt'tt@@@@h@@a@Z@డc0with_placeholder&Constr)tt)tt@ )tt)tu@@^@@@iL@@@Z@@ll@@@Z@@@Z^@@@Z@@Z^@@@Z@@Z@@Z@@ఐ&constr)tu)tu@@@iq@@@Zc@Zc@Z@@3 @@@@lؠl@@@Z@@@Z^=@@@Z@@Z^<@@@Z@@Z@@࣠@'new_dst AA)tuB)tu%@TA@@ll@@@Z@@@Z@@  @@ภ)LsequenceT*u)u7U*u)u@@]డT>#dps&Choiced*u)uAe*u)uG@ h*u)uHi*u)uK@@@11@@@3@@@3OkW@@@3OcWW@@@3@@@3W/@@@3@@3@@3@@3@O@O$@@@1ܠ1@@@[@@@[OW@@@[OWW@@@[@@@[@@@[ @@[ @@[ @@[ 3@njmWmV@@@Z@@@Z@h@i@@@@ఐӠ&choice*u)uL*u)uR@@@2*@@@[&c@[)c@[(@Oภx*u)uY*u)u^@x@@@W@@@[%c@[./@Oఐ'new_dst*u)ud*u)uk@9@@WW@@@[$@@@[#c@[1c@[/G@@@@$@@@[@[3c@["O@ภ$Lvar+umu+umu@ఐƠ'new_dst+umu+umu@b@@Vm@@@[b@[;p@#var+umu+umu@f@@@@@[9b@[@b@[=~@@) @@Y@@@[b@[8@@'+umu@@^@@@[@,)tu@@@mm@@@Z@@@Z_J@@@Z@@Za@[Fa@[B}@@O@@a@Z@A&tot{@@e@C%tJtdD+umu@@@T@@@ZW@Z|@@Z^@[L@ )tmc_callsT3ww U3ww@ఐ|&choice_4ww#`4ww)@:@@2+R^@[^@@@[]^@[Z5@)tmc_callsn4ww*o4ww3@A@@TѠT@@@[X@@@[W^@[[E@D1benefits_from_dps,uu,uu@ภy`1vv1vv@y`@@@T@@@[f^@[jZ@U9explicit_tailcall_request5w5w?5w5wX@ఐ&choice6w[wg6w[wm@{@@2+^@[u@@@[t^@[rv@9explicit_tailcall_request6w[wn6w[w@v@@T@@@[p^@[s@@@$t@tH7ww@@0@O@@0@@@0@@@Ai_ic@@03@ L@@@ @@0 @ vA@@111@1 @0@00@@\@@\@@\@@[@@[W@[ ~@@@hh@0ߠ0߰00@00@@000@0@0@00@@B@@B@@B @@B @@B 3@1@@@࣠@#ctxA9ww9ww@A@@03@1@@@@@00A09ww9ww@ A@@03@11@@@@@@9ww@@$primA 9ww 9ww@A@@13        @1@@@@@@@@(primargsA9ww9ww@/A@@13@1@@@@@@@@#locA-9ww.9ww@@A@@13,++,,,,,@1$@@@@@@@@ఐ7$prim?:ww@:ww@@@1;3=<<=====@10@@@@@Ġ*PmakeblockO<xxP<xx@~ఠ#tagX<xx Y<xx#@kA@@@@@\+3ZYYZZZZZ@@@@ఠ$flagg<xx%h<xx)@zA@@@@@\,@ఠ%shapeu<xx+v<xx0@A@@@@@\-@@@.}<xx1@@1w@@1w@@@ఐ1۠0choice_makeblock=x5x==x5xM@1߰@@@111@1@1@11@@]?@@]>@@]=@@]<@@];3@UD=@>@?6/@0@1)"@#@$@@@@ఐ#ctx=x5xN=x5xQ@@@1@1ఐ$tail=x5xS=x5xW@@@1!@@@ఐk#tag=x5xY=x5x\@-@@2_@]S4@@ఐj$flag=x5x^=x5xb@:@@2 _@]TB@@ఐj%shape=x5xd=x5xi@G@@2_@]UP@@=x5xX=x5xj@@2*W@]VU@@ఐڠ(primargs=x5xk=x5xs@°@@1b@@ఐ֠#loc=x5xt=x5xw@@@1o@@}@@1p@Ġ'Popaque@xx@xx@;'Popaque@@@lo~@A@@@@@@  @@23@@@@@2@@@@ఠ"l1#Axx$Axx@6A@@-}_@][@ఐ(primargs2Axx3Axx@@@2%30//00000@@@@Ġ>?Bxx@BxxA ఠ"l1 HBxx@ZA @@-W@]^@Ġ> A @@ A@ @@@]c#@@@YBxx@@2J%@@2J%@@@ఐ"l1aBxxbBxy@@@@@>3`__`````@$#@@@@mCyy nCyy@@2_:@@2_:@@@డ+invalid_argxCyyyCyy@@6@@@!a@@@@vfvf:@@vB@@@@@@@]i-b@]h@@]g\@@+choice_primCyyCyy*@@CyyCyy+@@%@@@]nb@]pb@]op@@. @@q@@@AAxx @@I@A@Axx @@@'A@@V8@@@ภ%LprimEyXy`EyXye@ภ'Popaque'EyXyg(EyXyn@@@@@@@]_@]3*))*****@P$p@@@@@ภY8EyXyq9EyXytAఐ1"l1 BEyXys@ @@@ภA@ A@.5@@@]_@]"@@REyXyp@@.;@@@]_@]*@ఐ7#locaEyXyvbEyXyy@@@3O5@@GY@@6@AZ@@3W@]3cbbccccc@@@@^@@3P @Ġ0Pbytes_to_stringFHyyGHyy@;0Pbytes_to_string@@@@o~@Aww@@@`@@@  @@4I@@4I@Ġ0Pbytes_of_stringXHyyYHyy@;0Pbytes_of_string@@@Ao~@Axx@@@a@@@  @@4[ @@4[ @@ @@4\!@Ġ*PgetglobalkIyylIyy@;*Pgetglobal@!t@@@@A@o~@A/{0{@@@c@@~IyyIyy@@@@@\3A@@@@@4}B@@4}B@@?@@4~C@Ġ*PsetglobalIyyIyy@;*Psetglobal@9!t@@@@AAo~@AQ|R|@@@ d@@IyyIyy@@@@@\6c@@@@@4d@@4d@@a@@4e@Ġ&PfieldJyyJyy@;&Pfield*@@@@,@@@,mutable_flag@@@@CDo~@A{@|@@@@5g@@JyyJyy@@@@@\;@@@D@@@\<@@ @@@@\=@@@+@@4@@4@@@@4@Ġ/Pfield_computedJyzJyz@;/Pfield_computed^@@@Co~@AAA@@@Zh@@@  @@4@@4@@ @@4@Ġ)PsetfieldKzzKzz!@;)Psetfieldq@%@@@s@@@q@@@@CEo~@ABB @@@zi@@Kzz"Kzz#@@@@@\C@@@@@@\D@@ @@@@\E@@@)@@5@@5@@@@5@Ġ2Psetfield_computed(Kzz&)Kzz8@@-Kzz9.Kzz:@@@@@\I@@@@@@\J@@@ @@51@@51@@ @@52@Ġ+PfloatfieldALz;zABLz;zL@;+Pfloatfield@p@@@@AGo~@AD e gD e {@@@k@@RLz;zMSLz;zN@@@@@\M@@@@@5Q@@5Q@@@@5R@Ġ.PsetfloatfieldaLz;zQbLz;z_@;.Psetfloatfield@@@@@@@@BHo~@A'E | ~(E | @@@l@@vLz;z`wLz;za@@@@@\Q9@@@@@@\R>@@@  @@5z?@@5z?@@< @@5{@@Ġ&PccallMzbzhMzbzn@;&Pccall@)Primitive+description@@@@AJo~@APM N PQM N q@@@ s@@MzbzoMzbzp@@@@@\Ub@@@@@5c@@5c@@`@@5d@Ġ&PraiseNzqzwNzqz}@;&Praise)@&*raise_kind@@@@AKo~@AqO  rO  @@@+t@@Nzqz~Nzqz@@@@@\X@@@@@5@@5@@@@5@Ġ$PnotOzzOzz@;$PnotJ@@@Jo~@AQ  Q  @@@Fw@@@  @@5@@5@@ @@5@Ġ'PnegintPzzPzz@;'Pnegint]@@@Ko~@AS  S  @@@Yx@@@  @@5@@5@@ @@5@Ġ'PaddintPzzPzz@;'Paddintp@@@Lo~@AS  S  @@@ly@@@  @@5@@5@@ @@5@Ġ'PsubintPzz Pzz@;'Psubint@@@Mo~@AS  S  @@@z@@@  @@6 @@6 @@ @@6 @Ġ'PmulintPzzPzz@;'Pmulint@@@No~@AS  S  @@@{@@@  @@6@@6@@ @@6@Ġ'Pdivint.Pzz/Pzz@;'Pdivint@'is_safe@@@@ALo~@AT  T  2@@@|@@@PzzAPzz@@@@@\`@@@@@6?@@6?@@@@6@@Ġ'PmodintOPzzPPzz@;'Pmodint@!@@@@AMo~@AT  3T  G@@@}@@_Pzz`Pzz@@.@@@\c"@@@@@6^#@@6^#@@ @@6_$@Ġ'PandintnQzzoQzz@;'Pandint@@@Oo~@A+U H J,U H S@@@~@@@  @@6q6@@6q6@@3 @@6r7@Ġ&PorintQzzQzz@;&Porint@@@Po~@A>U H T?U H \@@@@@@  @@6I@@6I@@F @@6J@Ġ'PxorintQzzQzz@;'Pxorint@@@Qo~@AQU H ]RU H f@@@ @@@@  @@6\@@6\@@Y @@6]@Ġ'PlslintRzzRzz@;'Plslint"@@@Ro~@AdV g ieV g r@@@A@@@  @@6o@@6o@@l @@6p@Ġ'PlsrintRz{Rz{@;'Plsrint5@@@So~@AwV g sxV g |@@@1B@@@  @@6@@6@@ @@6@Ġ'PasrintRz{ Rz{@;'PasrintH@@@To~@AV g }V g @@@DC@@@  @@6@@6@@ @@6@Ġ(PintcompS{{S{{ @;(Pintcomp[@X2integer_comparison@@@@ANo~@AW  W  @@@]D@@S{{!S{{"@@@@@\l@@@@@6@@6@@@@6@Ġ*PoffsetintT{#{)T{#{3@;*Poffsetint|@0@@@@APo~@AZ 7 9Z 7 L@@@}H@@T{#{4T{#{5@@@@@\o@@@@@7@@7@@@@7@Ġ*Poffsetref!T{#{8"T{#{B@;*Poffsetref@P@@@@AQo~@A[ M O[ M b@@@I@@2T{#{C3T{#{D@@@@@\r@@@@@71@@71@@@@72@Ġ+PintoffloatAU{E{KBU{E{V@;+Pintoffloat@@@Wo~@A] | ~] | @@@J@@@  @@7D @@7D @@ @@7E @Ġ+PfloatofintTU{E{YUU{E{d@;+Pfloatofint@@@Xo~@A] | ] | @@@K@@@  @@7W@@7W@@ @@7X@Ġ)PnegfloatgV{e{khV{e{t@;)Pnegfloat@@@Yo~@A$^  %^  @@@L@@@  @@7j/@@7j/@@, @@7k0@Ġ)PabsfloatzV{e{w{V{e{@;)Pabsfloat@@@Zo~@A7^  8^  @@@M@@@  @@7}B@@7}B@@? @@7~C@Ġ)PaddfloatW{{W{{@;)Paddfloat@@@[o~@AJ_  K_  @@@N@@@  @@7U@@7U@@R @@7V@Ġ)PsubfloatW{{W{{@;)Psubfloat@@@\o~@A]_  ^_  @@@O@@@  @@7h@@7h@@e @@7i@Ġ)PmulfloatW{{W{{@;)Pmulfloat.@@@]o~@Ap_  q_  @@@*P@@@  @@7{@@7{@@x @@7|@Ġ)PdivfloatW{{W{{@;)PdivfloatA@@@^o~@A_  _  @@@=Q@@@  @@7@@7@@ @@7@Ġ*PfloatcompX{{X{{@;*PfloatcompT@Q0float_comparison@@@@ARo~@A`  `  @@@VR@@X{{X{{@@@@@\}@@@@@7@@7@@@@7@Ġ-PstringlengthY{{Y{{@;-Pstringlengthu@@@_o~@Ab # %b # 4@@@qS@@@  @@7@@7@@ @@7@Ġ+Pstringrefu Y{{Y{{@;+Pstringrefu@@@`o~@Ab # 5b # B@@@T@@@  @@8@@8@@ @@8@Ġ+Pstringrefs Y{{!Y{{@;+Pstringrefs@@@ao~@Ab # Db # Q@@@U@@@  @@8#@@8#@@ @@8$@Ġ,Pbyteslength3Z{{4Z{| @;,Pbyteslength@@@bo~@Ac R Tc R b@@@V@@@  @@86@@86@@ @@87@Ġ*PbytesrefuFZ{|GZ{|@;*Pbytesrefu@@@co~@Ac R cc R o@@@W@@@  @@8I@@8I@@  @@8J@Ġ*PbytessetuYZ{|ZZ{|%@;*Pbytessetu@@@do~@Ac R pc R |@@@X@@@  @@8\!@@8\!@@ @@8]"@Ġ*PbytesrefslZ{|(mZ{|2@;*Pbytesrefs@@@eo~@A)c R }*c R @@@Y@@@  @@8o4@@8o4@@1 @@8p5@Ġ*PbytessetsZ{|5Z{|?@;*Pbytessets@@@fo~@A<c R =c R @@@Z@@@  @@8G@@8G@@D @@8H@Ġ,Parraylength[|@|F[|@|R@;,Parraylength @ *array_kind@@@@AUo~@AUjVj@@@]@@[|@|S[|@|T@@@@@\g@@@@@8h@@8h@@e@@8i@Ġ*Parrayrefu[|@|W[|@|a@;*Parrayrefu.@!@@@@AVo~@Atkuk@@@.^@@[|@|b[|@|c@@.@@@\@@@@@8@@8@@@@8@Ġ*Parraysetu[|@|f[|@|p@;*ParraysetuM@@@@@@AWo~@All@@@M_@@[|@|q[|@|r@@M@@@\@@@@@8@@8@@@@8@Ġ*Parrayrefs[|@|u[|@|@;*Parrayrefsl@_@@@@AXo~@Amm7@@@l`@@[|@|[|@|@@l@@@\@@@@@9@@9@@@@9@Ġ*Parraysets[|@|[|@|@;*Parraysets@~@@@@AYo~@An8:n8T@@@a@@ [|@|![|@|@@@@@\@@@@@9@@9@@@@9 @Ġ&Pisint/\||0\||@;&Pisint@@@go~@App@@@b@@@  @@92@@92@@ @@93@Ġ&PisoutB\||C\||@;&Pisout@@@ho~@Arr@@@c@@@  @@9E @@9E @@ @@9F @Ġ'PignoreU]||V]||@;'Pignore@@@Bo~@Ayy@@@b@@@  @@9X@@9X@@ @@9Y@Ġ-Pcompare_intsh^||i^||@;-Pcompare_ints@@@Uo~@A%Y  &Y  @@@E@@@  @@9k0@@9k0@@- @@9l1@Ġ/Pcompare_floats{^|||^||@;/Pcompare_floats@@@Vo~@A8Y  9Y  @@@F@@@  @@9~C@@9~C@@@ @@9D@Ġ.Pcompare_bints^||^||@;.Pcompare_bints @-boxed_integer@@@@AOo~@AQY  RY  6@@@ G@@^||^||@@@@@\c@@@@@9d@@9d@@a@@9e@Ġ)Prunstacka}"}(a}"}1@;)Prunstack*@@@Do~@AlH  mH  @@@&o@@@  @@9w@@9w@@t @@9x@Ġ(Pperforma}"}4a}"}<@;(Pperform=@@@Eo~@AI  I  @@@9p@@@  @@9@@9@@ @@9@Ġ'Presumea}"}?a}"}F@;'PresumeP@@@Fo~@AJ  J  (@@@Lq@@@  @@9@@9@@ @@9@Ġ*Preperforma}"}Ia}"}S@;*Preperformc@@@Go~@AK ) +K ) 7@@@_r@@@  @@9@@9@@ @@9@Ġ(Pdls_geta}"}Va}"}^@;(Pdls_getv@@@mo~@A " ,@@@r@@@  @@9@@9@@ @@9@Ġ,Patomic_loadd}}d}}@;,Patomic_load@@@ko~@A@@@@@@  @@:@@:@@ @@:@Ġ*Pmakearray#g}}$g}}@;*Pmakearray@@@@O,mutable_flag@@@@BSo~@Ae  e  @@@[@@9g}}:g}}@@@@@\@@@@@@\ @@@! @@:= @@:= @Ġ)PduparrayLg}}Mg}}@;)Pduparray@@@@x,mutable_flag@@@@BTo~@Af  f @@@\@@bg}}cg}}@@@@@\ %@@@@@@\ *@@@! @@:f +@@:f +@@ng}}og}}@@:i .@@+@@:j /@Ġ*Pduprecordyj~C~Izj~C~S@;*Pduprecord@%Types5record_representation@@@@@@@BIo~@ADF  EF  @@@n@@j~C~Tj~C~U@@@@@\ V@@@@@@\ [@@@% @@: \@@: \@@Y @@: ]@Ġ*Pbintofintn~~n~~@;*Pbintofint"@@@@@AZo~@Aht.0it.M@@@"d@@n~~n~~@@&@@@\ z@@@@@: {@@: {@@x@@: |@Ġ*Pintofbintn~~n~~@;*PintofbintA@8@@@@A[o~@AuNPuNm@@@Ae@@n~~n~~@@E@@@\ @@@@@: @@: @@@@: @Ġ(Pcvtbinto~~o~~@;(Pcvtbint`@W@@@[@@@@B\o~@Avnpvn@@@df@@o~~o~~@@h@@@\ @@@m@@@\ @@@ @@: @@: @@ @@: @Ġ(Pnegbint p~~p~~@;(Pnegbint@@@@@A]o~@Aww@@@g@@p~~p~~@@@@@\ @@@@@; @@; @@@@; @Ġ(Paddbint,q~~-q~@;(Paddbint@@@@@A^o~@Axx@@@h@@<q~=q~@@@@@\ @@@@@;; @@;; @@@@;< @Ġ(PsubbintKq~ Lq~@;(Psubbint@@@@@A_o~@A y y@@@i@@[q~\q~@@@@@\ @@@@@;Z @@;Z @@@@;[ @Ġ(Pmulbintjq~kq~ @;(Pmulbint@@@@@A`o~@A+z,z.@@@j@@zq~!{q~"@@@@@\ =@@@@@;y >@@;y >@@;@@;z ?@Ġ(Pdivbintq~%q~-@;(Pdivbint@,@@@@Aao~@AL{/1M{/j@@;@@$size0@@ @@@İY{/AZ{/V@@k@'is_safe1@@v@@@Űd{/We{/h@@l@@aA@@@@@@@@AA!m@@q~.q~/@@*@@@\ y@@@3@@; z@@; z@@w@@; {@Ġ(Pmodbintq~2q~:@;(Pmodbint@@h@@@@Abo~@A|km|k@@;@@$size3@@G@@@ư|k}|k@@On@'is_safe4@@@@@ǰ|k|k@@Zo@@bA@@@@@@@@@A]p@@q~;q~<@@*@@@\ @@@3@@; @@; @@@@; @Ġ(Pandbintr=Cr=K@;(Pandbint|@s@@@@Aco~@A}}@@@|q@@r=Lr=M@@@@@\ @@@@@< @@< @@@@< @Ġ'Porbint r=P!r=W@;'Porbint@@@@@Ado~@A~~@@@r@@0r=X1r=Y@@@@@\ @@@@@ ?;@@@u@@r=r=@@@@@\ P@@@@@< Q@@< Q@@N@@< R@Ġ(Pasrbintr=r=@;(Pasrbint@@@@@Aho~@A]<>^<Y@@@v@@r=r=@@@@@\ o@@@@@< p@@< p@@m@@< q@Ġ)Pbintcompss@;)Pbintcomp6@-@@@Π@@@@Bio~@AZ\Z@@@:w@@ss@@>@@@\ @@@@@@\ @@@ @@< @@< @@ @@< @Ġ.Pmakelazyblockz z !@;.Pmakelazyblock^@[.lazy_block_tag@@@@ACo~@A[][@@@`f@@z "z #@@@@@\ @@@@@< @@< @@@@< @Ġ,Pbigarrayref}DJ}DV@;,Pbigarrayref@C{@@@Р8@@@Ѡ-bigarray_kind@@@Ҡ/bigarray_layout@@@@Djo~@A@@@x@@&}DW'}DX@@@@@\ @@@@@@\ @@ @@@@\ @@@@@@\ @@@7@@=4 @@=4 @@@@=5 @Ġ,PbigarraysetD}D[E}Dg@;,Pbigarrayset@C@@@Ԡx@@@ՠ@@@@֠>@@@@Dko~@AT@@@y@@b}Dhc}Di@@@@@\ %@@@@@@\ *@@ @[@@@\ /@@@Z@@@\ 4@@@3@@=p 5@@=p 5@@ 2@@=q 6@Ġ,Pbigarraydim~jp~j|@;,Pbigarraydim@@@@@Alo~@ABC@@@z@@~j}~j~@@@@@\ T@@@@@= U@@= U@@ R@@= V@Ġ/Pstring_load_16@;/Pstring_load_16@D@@@@Amo~@Abc@@@{@@@@@@@] t@@@@@= u@@= u@@ r@@= v@Ġ/Pstring_load_32@;/Pstring_load_32;@D7@@@@Ano~@A @@@<|@@@@@@@] @@@@@= @@= @@ @@= @Ġ/Pstring_load_64@;/Pstring_load_64[@DW@@@@Aoo~@A   &@@@\}@@@@@@@] @@@@@= @@= @@ @@= @Ġ.Pbytes_load_16@;.Pbytes_load_16{@Dw@@@@Apo~@A')'A@@@|~@@@@@@@]  @@@@@> @@> @@ @@> @Ġ.Pbytes_load_32 !@;.Pbytes_load_32@D@@@@Aqo~@ABDB\@@@@@12@@@@@]  @@@@@>0 @@>0 @@ @@>1 @Ġ.Pbytes_load_64@A@;.Pbytes_load_64@D@@@@Aro~@A]_]w@@@@@QR@@@@@] @@@@@>P @@>P @@ @@>Q @Ġ-Pbytes_set_16`a@;-Pbytes_set_16@D@@@@Aso~@A"xz#x@@@@@qr@@@@@] 4@@@@@>p 5@@>p 5@@ 2@@>q 6@Ġ-Pbytes_set_32!@;-Pbytes_set_32@D@@@@Ato~@ABC@@@@@"#@@@@@] T@@@@@> U@@> U@@ R@@> V@Ġ-Pbytes_set_64&3@;-Pbytes_set_64@E@@@@Auo~@Abc@@@@@45@@@@@] t@@@@@> u@@> u@@ r@@> v@Ġ2Pbigstring_load_166<6N@;2Pbigstring_load_16;@E7@@@@Avo~@A242P@@@<@@6O6P@@@@@] @@@@@> @@> @@ @@> @Ġ2Pbigstring_load_326S6e@;2Pbigstring_load_32[@EW@@@@Awo~@AQSQo@@@\@@6f6g@@@@@] @@@@@> @@> @@ @@> @Ġ2Pbigstring_load_646j6|@;2Pbigstring_load_64{@Ew@@@@Axo~@Aprp@@@|@@6}6~@@@@@]! @@@@@? @@? @@ @@? @Ġ1Pbigstring_set_16 !@;1Pbigstring_set_16@E@@@@Ayo~@A@@@@@12@@@@@]$ @@@@@?0 @@?0 @@ @@?1 @Ġ1Pbigstring_set_32@A@;1Pbigstring_set_32@E@@@@Azo~@A@@@@@QR@@@@@]'@@@@@?P@@?P@@ @@?Q@Ġ1Pbigstring_set_64`a@;1Pbigstring_set_64@E@@@@A{o~@A"#@@@@@qr@@@@@]*4@@@@@?p5@@?p5@@ 2@@?q6@Ġ(Pctconst@;(Pctconst@5compile_time_constant@@@@A|o~@AC D-@@@@@@@@@@]-U@@@@@?V@@?V@@ S@@?W@Ġ(Pbswap16@;(Pbswap16@@@io~@A^@B_@L@@@@@@  @@?i@@?i@@ f @@?j@Ġ'Pbbswap@;'Pbbswap/@&@@@@A}o~@AuMOvMi@@@/@@@@3@@@]1@@@@@?@@?@@ @@?@Ġ/Pint_as_pointer @;/Pint_as_pointerN@@@jo~@A@@@J@@@  @@?@@?@@  @@?@Ġ(Psequand  @;(Psequanda@@@Ho~@AQ  Q  @@@]u@@@  @@?@@?@@  @@?@Ġ'Psequor  #@;'Psequort@@@Io~@AQ  Q  @@@pv@@@  @@?@@?@@  @@?@Ġ%Ppoll $* $/@;%Ppoll@@@no~@A@@@@@@  @@@@@@@@  @@@@@@@ఠ(primargs!9E"9M@4A@@+Z_@]@ఐA@-traverse_list/9P09]@AD@@@AB@A?A7@@]@@]@@ఐX#ctx@9^A9a@C@@@H+@@ఐ4(primargsM9bN9j@@@@@8@@"@@AR9@A@R9A@@డe:&lambda&Choice`nvan|@ dn}en@@=@@@=@@@]B=@@@]@@@]@@]3onnooooo@3YR@S@T@@@@ภ%Lprimnn@"ఐ$primnn@j@@@@ఐt(primargsnn@!@@s$@ఐv#locnn@^@@@/@@nn@@=@@@]_@]7@@L@@AW@]:@] @@@@@@A:ww @@@3@o@@@A@@@@@@@@@@@@@@^ @@^ @@^ @@^ @@^ W@^@@@9ww@@@@x@w@@v@y@@@@@@@@@@B@@B@@B3@A@@@࣠@#ctxA@A@@@3@A@@@@@@@A@@A@@@3@A@@@@@@@@@%termsA@ A@@@3@@@@@@@@@@డe$list&Choice@ @@@@@X1Cn<W@^!@@@^#@@@^"CtX) @@@^ @@@^@@^3%$$%%%%%@.:@@1@2@@@@డ$List#map=>@ AB@@P{@@@@AA[@^3@@^6@PuA@@@^4Pt @@@^2@@^1@@^0+@@ఐB;&choiceab@B@@@B:CB5@B0B-@@^G@@^F@@^E@@@ఐ#ctxtu@@@AQM@Cڐఐ$tail@@@AWZ@@@@@BOBL@@^Q_@@ఐ%terms@i@@Adl@@@@XB@@@^-[@^T\@^@w@@ @@AhW@^+z@ A@@AAA~@A{As@@^d@@^c@@^bW@^_@@@@AaAaA2A1@A0A3@@A^A[AY@AVAJ@@B@@B@@B3@Bs@@@࣠@#ctxA @A@@Ar3@Bq@@@@@AqAqAAu@A@@Ay3@BA@@@@@@@@"A@ఠ"t1 @A@@AW@^r3@$A@@@@@@ఠ"t2!@A@@AW@^s@@@@@@ @@^v@@ @@డf$pair&Choice"&",@ "-"1@@@@Dy`@@@3@D`@@@3@@3D@`栠@`@@3@@@3@@3@a@a#@@@@DBW@^~@@@^@DBW@^@@@^@@^D@@ @@^}@@@^|@@^{3TSSTTTTT@jtm@n@oe^@_@`@@@@@ఐCH&choicen"3o"9@C@@@CGDCB@C=C:@@^@@^@@^@@ఐ#ctx":"=@@@B++@Dఐ$tail"?"C@@@B18@@ఐ"t1"D"F@A@@E@@1@@CbF@@ఐC&choice"H"N@CJ@@@CEC~@CyCv@@^@@^@@^Z@@ఐ#ctx"O"R@@@Bgg@E#ఐ$tail"T"X@ٰ@@Bmt@@ఐ۠"t2"Y"[@|@@@@1@@C@@"2"\@@@CE@CE@@^[@^@@ @@BvW@^@# A@@BBB@BB@@^@@^@@^W@^'@@@@BrBrBFBE@BDBG@@BoBlBj@BgB\@@B@@B@@B3@C@@@࣠@#ctx#A ]q ]t@A@@B3        @C@@@@@BB$AB]v]z@-A@@B3@CB@@@@@@"]u@@!t%A,]{-]|@?A@@B3+**+++++@B@@@@@@@@డh&option&ChoiceBC@ FG@@@\(E\&@@@3@@@3E\\@@@3@@@3@@3@\?@\@@@@\;ED#@@@^@@@^E\0D+@@@^@@@^@@^3jiijjjjj@@LB@C@D@@@@డ&Option#map@ @@@@!a@_2!b@_0@@_g@B @@@_fC@@@_e@@_d@@_c@*option.mlioo@@.Stdlib__OptionI@&!@@@@C D [@_@@_@CC@@@_ @@@_@@_@@_I@@ఐD&choice@Dd@@@DF,D@DD@@_@@_@@_^@@ఐΠ#ctx@@@CMk@F=ఐ̠$tail@@@CSx@@@@@DD@@_}@@ఐ͠!t@@@C`@@@@\ܠD@@@^[@_\@_@@ @@CaW@^@ A@@CC|Cz@CwCl@@_@@_@@_W@_@@@]_@@ఐD&choice@D@@@DF@@@_@DFy`@@@_@@@_@@_@@_@@_3)(()))))@D@@@@ఐFv#ctx9:@E"@@F@F@@ఐE9!tIJ@E@@F@@2@@F@)@@FE@FA@@F@FF@@_@@_T@_F@@@V=O0O0 @F~F~FmFl@FkFn@@F{@FxFw@@A@@A3\[[\\\\\@F@@@࣠@#ctx:Amn@A@@F3lkklllll@F@@@@@@Ġ$Llet|}@ఠ"lk;@A@@&@@@`3@F(F@@ @@@ఠ"vk<@A@@ @@@`@ఠ#var=@A@@;@@@`@ఠ#def>@A@@@@@`-@ఠ$body?@A@@@@@` ;@@@L@@F=@@@@@ఠ#ctxC@A@@EX@`3@Vb[@\@]RK@L@ME>@?@@81@2@3+$@%@&@@@@ఠ(bindingsD@A@@<X@`@@@@@@@@`@ఐF,traverse_let".@F@@@F@F@F@Fޠ@F@@`$@@`#@@`"@@`!7@@ఐ#ctx/2@@@G=D@@ఐ#var+3,6@H@@<Y@`0S@@ఐ#def:7;:@V@@<Y@`1b@@;@@@k@T@@`2Y@`/k@A@I@@@ఠ$bodyET>HU>L@gA@@BX@`33TSSTTTTT@~@@qj@k@l@@@ఐG(traverseg>Oh>W@G@@@G@GG@@`6@@`5@@ఐ#ctxx>Xy>[@@@"@@ఐŠ$body>\>`@@@FNY@`=1@@$@@G2@A@>D@@ఐN>%lletsdjdo@L@@@8@@@`I@@@@`H@@?@@@`F@@@@`G@@`E@@@`D@@@@`C@@`B@@`A@@`@@@`?3@ble@f@g@@@@ఐB"lkdpdr@@@k@@@`cX@`eX@`d@@ఐE"vkdsdu@@@U@@@`bX@`gX@`f+@@ఐ(bindingsdvd~@@@8@@ఐ$bodydd@B@@E@@j@@CF@u@@C@@@H%@Ġ'Lletrec  @;Ҡఠ(bindings@@&A@@GG@@@`@@@`3@@@@ఠ$bodyA&'@9A@@`@@@`@@@$.@@HF@@@@@ఠ#ctxF=>@PA@@GX@`n3>==>>>>>@70@1@2%@@ @@@@ఠ(bindingsGPQ@cA@@;X@`o@@@@@@@@`r@ఐH/traverse_letrecef@H@@@H@H@H@H@@`v@@`u@@`t/@@ఐ#ctx|}@@@H<@@ఐv(bindings@E@@;T@`K@@*@@@T@C@@`Y@`~T@A@@@ภ'Lletrec@>m>?6@@&Z@@@@@@@@`@@@`@@`@N@@@`N@@@`@@`@@`3@;GI@>@?@@@@ఐI(traverse]n]v@I@@@I@II@@`@@`@@ఐp#ctx]w]z@Z@@I#@@]m]{@@@J J @@`(@@ఐs$lfun]|]@2@@I5@@b@@IT@cT@`9@A@@J@J J@@a@@aT@a@@@ ;;@JJII@II@@I@I@I@I頠@I@@A@@A@@A@@A3@Jg@@@࣠@)outer_ctxJA+,@>A@@J3*))*****@Je@@@@@@#varKA:;@MA@@J!398899999@JuJ+@@@@@@@@#defLAKL@^A@@J)3JIIJJJJJ@J5@@@@@@@@@ఠ)inner_ctxM^_@qA@@JLX@a3_^^_____@"JA@@@@@ఐNR/declare_bindingpq@J@@@NM@@@a"@@NF@@@a$@@@@a%@@a#@@a!@@a "@@ఐh)outer_ctx@R@@J}/@@@ఐj#var@R@@J@@@ఐe#def@I@@JL@@@@@N@@@a2@J@@a1Y@aAZ@@O @@J[@A@@@@ఠ(bindingsN@A@@J@@ఐР#def#&@@@JK@@@@@JL@A@@@@ఐˠ)inner_ctx),.*,7@Y@@3'&&'''''@]g`@a@b@@@@ఐm(bindings8,99,A@ @@l@@@@@ޠ@s@@a\@& @@s@ @@@ A@@K3@K.@K'@K@K@@aq@@ap@@ao@@anT@aj$@@@T@KKJJ@JJ@@K @K @J@J@@A@@A@@A3`__`````@K@@@࣠@#ctxOAqCWrCZ@A@@K$3pooppppp@K@@@@@@(bindingsPAC[Cc@A@@K.3~~@KK6@@@@@@@@@ఠ#ctxQflfo@A@@KW@a~3@"KF@@@@@డ)$List)fold_leftrvrz@ r{r@@e@@@@KW@a@K]W@a@@a@@a@@ @@@a@@a@@a@@a3@*@@@@࣠@#ctxRArr@A@@!=@@@@UAঠ"idrrA3"idK@@@!t@@@@@@ 3#def Q@@@@@A@AC**C*+@@h!@@AB**B**@@l @ఠ S! @A@@@@a3@o>U@5@6@@@#defrrA!ఠT@(A@Q=@@@a@@@rr@@K[@a@@@@ఐP /declare_binding+,@Ls@@@P@@@a@@P@@@a@t@@@a@@a@@a@@a3<;;<<<<<@<DA@C@B1.@0@/@@@@ఐ#ctxPQ@I@@@@@ఐ]"idab@@@P.@@@a[@a(@@ภ)Lfunctionqr@Qఐc#def{|@8@@Q@@@a[@a[@aD@@ @@@@@a[@aJ@@@@@P\@@@a@@@a[@aX@@o @@LY@r@@@@@@a@@aX@aX@a @@ఐA#ctx@+@@La@@ఐ?(bindings@#@@Li@@@@ '@A@fh@@@ఠ(bindingsV@A@@֠L)@@@aW@a3@?JC@D@E@@@డg$List*concat_map@  @@@@!a@5LN!b@3@@@L@@K@L@@@J3@@@I@@H@@G@@@[@'"@@@@LLiLh@@@a@@a@LL@@@aJLr@@@a@@a@@aI@@ఐL7traverse_letrec_binding, -$@L@@@L@LL@@a@@a\@@ఐ#ctx=%>(@f@@i@@A B)@@@LL@@bn@@ఐҠ(bindingsO*P2@@@L{@@l@@|@A@T@@@ఐ͠#ctx`8:a8=@@@3^]]^^^^^@@@@@@@ఐ(bindingso8?p8G@ @@MT@b@@@@@⠠@ @@b @( @@@ @@@ A@@M1@M.@M@M@@b@@b@@bT@b@@@CC@MMLL@LL@@M@M@M @MM@@A@@A@@A@@A3@M@@@࣠@)outer_ctxWAIbIk@A@@M(3@M@@@@@@)inner_ctxXAIlIu@A@@M23@MM:@@@@@@@@#varYAIvIy@A@@M>3@MF@@@@@@@@#defZAIzI}@A@@MI3@MR@@@@@@@@ఐS$.find_candidate@Q@@@&@@@b3S@@@b2@@@b1@@b03@ ,Mk@#@$@@@@ఐ3#def@ @@Mx@@ @@S3@@@b;@@@b:@Ġ$None@w@@@@ҠSG@@@bE@@@bD3!  !!!!!@,@@@ @ڠSO@@@bG@@@bF@@@ภT34A@ఐ~#varA@e@@M@@ఐNm(traverseNO@Nq@@@No@NlNk@@b`@@b_/@@ఐ)outer_ctx_`@@@M<@@ఐ#deflm@r@@MI@@"@@NJ@@>@@N7T@bgM@ภ3yFA3@GA@NFT@bV@@@bZZ@bl]@@Q@@M_@Ġ$Some@ఠ$lfun[@A@@S@@@bN@@@@@SS@@@bP@@@bO@@ZS@@@bR@@@bQ@@@@ఠ)functions\@A@@MT@cqT@bT@bT@bm3@1*@+@,@@@ఐN0make_dps_variant@N@@@N@N@N@N @@@bsN @@br@@bq@@bp@@bo@@ఐ$#var@ @@N^'@@ఐB)inner_ctx@*@@Np4@@ఐ^)outer_ctx@H@@NA@@ఐv$lfun @K@@NH@@@b\@b\@bU@@J @@NGV@A@ @@డ$List#map($*)$.@ ,$/-$2@@\f@@@@N_T@bZ@bOT@bZ@b@@b@\f @@@b\e @@@b@@b@@b3A@@AAAAA@@@@@@@࣠@4_A@ఠ#var]\$9]$<@oA@@OCZ@b3]\\]]]]]@@@@@ఠ$lfun^k$>l$B@~A@@NT@bZ@b@@t$8u$C@@@@ @@b@@ @@@ఐ-#var$G$J@,@-@.@@-3@I8)"@#@$@@@@ภ)Lfunction$L$U@Tఐ8$lfun$V$Z@@@7@@@@@@@b@@"@@@O@ @@b$@$3$[@@@@@b[@b[@bX@@ఐ )functions$\$e@~@@ @@@@OT@bh@@@O8@@@A@@O:@( A@@OP@OM@OJ@OFOE@@c@@c@@c@@c T@c .@@@II@OEOEO/O.@O-O0@@OB@O>O=@@A@@A3@P,@@@࣠@#ctx`Agg@A@@OT3@P*@@@@@@gAঠ"idggAఠa@A@ @@@c3@PD&Op@@@@@#defggA'ఠb@.A@UC@@@c@@@"g#g@@O~@@@@ఐ#def34@@@@@U^@@@c$@c"376677777@196@8@7& @@@$attrDE@U@@U@@@c&@c#@-tmc_candidatePQ@Tɰ @@@@@c'V@c%@@ఠ)functionscbc@uA@@W@c(3baabbbbb@+@@@ఐO0make_dps_variantqr@O@@@O@O@O@O@@@c.O@@c-@@c,@@c+@@c*@@ఐ"id@L@@PoT@cA'@@ఐ#ctx@@@O4@@ఐ#ctx@@@PA@@ఐ#def@@@O@@@c#def45Aఐ4 @@P[@@@=>@@g@@A@@@Pqp@@cWW@cpW@coH@@ఐ)functionsRS$@l@@o@@@@PT@cUX@@@@ภ_,2`,\A@ຠ"idk,4l,6Aఐj @4@@@@c|V@c}@#def~,8,;@ఐQ2traverse_lfunction,>,P@Q@@@Q@QQ@@c@@c)@@ఐ#ctx,Q,T@@@P6@@ఐ#def,U,X@t@@QW@cE@@$@@QF@@@O,Z@@Q>T@csJ@ภq,[XAq@YA@"@@@cwV@cX@@,0a@@QT@cv\@e@@o^@fA@@Q*@Q&Q%@@c@@cT@c@@@ggn@QQPP@PP@@Q@Q@Q@Q@@@AQ @@A@@A@@A@@A3@R'@@@࣠@#varhA^s^v@A@@Q43@R%@@@@@@)inner_ctxiA^w^@ A@@Q=3@R5QF@@@@@@@@)outer_ctxjA ^ ^@A@@QI3        @QQ@@@@@@@@$lfunkA@^^@@(QQ@@@c3@ Q_@@@@@  @8AQ]@@@cY@cгQd5^6^@@@@@c@@<^=^@@@Qq@@@c@@@@@ఠ'speciallMN@`A@@Y@@@cY@c3QPPQQQQQ@5C;@>@2@@@డ#Map$find%Identjk@ no@@st@ @4 @@@VA@@@c@Ss0Y@c@@@c@@c@@c.@@ఐ#var@@@Q;@@ఐ)inner_ctx@@@QJ@+specialized@SҰ @@ZW@@@cU@@B@@+V@A@ @@@ఠ*fun_choicem@A@@SY@c3@hvo@p@q@@@ఐS@&choice@R@@@S?@S:S5@@d@@c@@ఐҠ)outer_ctx@@@R @@ఐР$lfun @@@X@@@d @d 4@$body@W@@SbZ@d =@S]ภ @@@@SfZ@dJ@@?@@SdK@A@ @@ డ!=9:@@!a@@}@@@'@@&@@%&%equalBAt@@@@syty@@rQ@@@@uu@@@d@@@dY@d@ @@@d@@d@@d3;::;;;;;@@@@@@@ఐ*fun_choiceOP'@@@@&ChoiceX(Y.@)tmc_calls]/^8@@11@@-!@@ภi;j=@$@@@:Y@d%.@@ @@@@@d&Z@d4@డ-prerr_warning(LocationCGCO@ CPC]@@4@@@4@@@d,@4@@@d+4@@@d*@@d)@@d(V@@డ=/Scoped_location+to_location)Debuginfo^e^n@ ^o^~@@^^@ @4 @@@4@@@d>4y@@@d=@@d<@@ఐ$lfun^^@u@@X@@@dM@dK@#loc^^@Xi@@f@@@dL@@^d^@@4@@@d8@dQ[@dH@@ภ(Warnings@4Unused_tmc_attribute@@;4Unused_tmc_attribute4k@@@V[n@A4cx 4dx6@@@4kU@@ @@5@@@d7Z@dU@@@@4b@@@dWY@dVZ@d6@@@@ @@ఠ&directn@.A@@YF@@@dY@dX3@@@@@ঠ$kind12AXఠo@IA@X@@@d]@¶msBCAYఠp@ZA@Y@Y@@@de@@@@df@@dd@@@dc6@&return`aAYఠq@xA@@@@diG@$bodyqr@Y @uv@@@@@dlV@$attrAYTఠr@A@YU@@@dog@#locAY#ఠs@A@%@@@drx@@@@@Y@@@ds~@ఐ$lfun@S@@Y@@@duZ@dt@A@ @@@ఠ$bodyt  @A@@UT@eT@dT@dZ@dv3@@@@@mj@l@kNK@M@L>;@=@<@@@డw&direct&Choice  @   %@@$3@@@U=+T@dy@@@dz@@dx'@@ఐB*fun_choice & 0@@@A4@@@@5@A@  @@డ *lfunction' 48 4B@$kindY@@@¶ms@!t@@@ꠠ@@@@@@@@@&return@@@$bodyl@@@$attrZ @@@#loc@@@Zl@@@@@@@@@@@@@@@@5566@@K@FE@@CZ@@@dA?@>@@@d@@@@d@@d@@@d;@@@d9@@@d7Z?@@@d5@@@dZ@@@d@@d@@d@@d@@d@@d@@d3xwwxxxxx@@@@@@tఐQ$kind4D4H@@@ZV@@@dZ@dZ@d@ఐT¶ms4J4P@а@@@@@@d@$@@@d@@d@@@dZ@dZ@d8@ఐW&return4R4X@@@9@@@dZ@dZ@dL@ఐ$body4Z4^@V@@Y@ఐX$attr4`4d@@@Z@@@dZ@dZ@dm@ఐ[#loc4f4i@#@@@@@dZ@dZ@d@@ @@@ @@7@O @@@A@@@@ఠ#dpsu msmv@ A@@[8@@@e?Y@d3@@@@@@@ఠ)dst_paramv#y$y@6A@@v&@@@dZ@d@@@dZ@d@ະ#var;<@డ,create_local%IdentJK@ NO@@*@@@*@@@dO@@@d@@dD@@#dstbc@@ef@@A@@@d[@d[@dX@@% @@-@@@d[@d^@&offsetz{@డ:,create_local%Ident@ @@i@@@i@@@d@@@d@@d@@&offset@@@@@@@d[@d[@d@@% @@@#loc@ఐ$lfun@i@@[@@@d@d@#loc@[]@@Z@@@d@@@y@@@A@y}@@@ఠ#dstw @A@@3@@@e Z@e*@@@e)Z@d3@@@@@@ະD@@@e Z@e@E&offset%@ภ&Offset ( .@ภ$Lvar04@ ఐ)dst_param5 >@0@@q@@@eZ@eZ@e@@@eZ@e@@&offset3?4E@}@@G@@7/8F@@v@@@e Z@eO@@5@@VZ@e R@@@@e(Z@e%@@ఐ-)dst_paramPQ@a@@T@@@eZ@e'@@@e&Z@e$Z@eq@abH@@t@A@d@@డq2duplicate_function&LambdarLPsLV@ vLWwLi@@@\@@@ E\@@@ D@@ C@:==;=>@@X@@@@\@@@e9\@@@e8@@e73@@@@@@@డ*lfunction'LmLw@@@\h@@@eQ@@@@eO@'@@@eP@@eN@@@eM-@@@eL@@@eK\@@@eJU@@@eI\@@@eH@@eG@@eF@@eE@@eD@@eC@@eB@@Ðภ'Curried@;'Curried\@@@$@@@@B@@A!D!Y!D!`@@@R@@  @@\@@@ew[@e{[@אఐ.add_dst_params@@@@@@@e@@@e@k@@@@e@@@@e@@e@@@e|@@@e@@e~@@e}@@ఐ)dst_param"#@3@@@@@e@@@e\@e\@e@@ఐ#$lfun<=@@@]f@@@e@e@¶msHI@]@@@;@@@eu@@@@ev@@et[@e\@e@@@e\@e\@e@@de@@S@@@es[@e\@e@Cఐa$lfunz{@$@@]@@@e@e@&return!@]*@@@@@er[@e[@e@^డ{z#dps&Choice"/"5@ "6"9@@'<@@@XX@@@e@@@ev~@@@ev~Ǡ~@@@e@@@e'<@@@e@@e@@e@@e3@@ఐ*fun_choice"N"X@@@@@vŐภİ"@"D@@@@~@@@e\@eP@vȐఐ #dst"J"M@Z@@~~@@@e@@@e\@e\@eh@@"."Y@@4@@@eq@e\@er@Ȑఐ$lfun ZfZj@@@^7@@@e@e@$attrZkZo@]@@]@@@ep[@e[@e@ఐ$lfun/p{0p@ٰ@@^Y@@@e@e@#loc;p<p@]Ͱ@@@@@eo[@e[@e@@ @@^o@@@e@@e[@en@@@@;@@@<`@{@@=:@A@Qmo@@@ఠ'dps_varx\]@oA@@`k@@@eY@e3`__`````@P^W@X@Y@@@ఐ$'specialqr@@@Z@@@e@e@&dps_id}~@Z@@@A@@@ภAh@ఐ#var@@@X3@3A:@;@<@@@@ఐ&direct@@@XX@e@@"@@XT@e@ภҰ*A@ఐb'dps_var @&@@YT@f+@@ఐ#dps@f@@XX@f9@@ @@XT@f<@ภ QA@RA@CYY@e@@@eX@f K@@2[A@LYT@e@@@eX@eT@@e@@U@@@eZ@qj@@@k@@@l@@@m@@@n@@ 9@Jo@@ @ pA@@YA@Y=@Y:@Y5@@@f*Y3@@f)@@f(@@f'@@f&T@f!@@@^^@Y Y YY@YY@@Y@YY@@A@@A3        @ZY@@@࣠@#ctxyA@0A@@Y/3@ZW@@@@@@%termszA,-@?A@@Y93+**+++++@ZgYA@@@@@@@@డ$List#mapBC@ FG@@g@@@@YRZ V@f7@@f:@gzYY@@@f8gy @@@f6@@f5@@f43UTTUUUUU@+7Yf@.@/@@@@ఐZ(traverseij@Z@@@Z@ZZ@@fJ@@fI@@ఐ`#ctxz{@J@@Y#@@~@@@ZZ@@fQ(@@ఐc%terms@2@@Y5@@N@@YT@fD8@vA@@Y@YY@@f[@@fZT@fXx@@@@@F@Z䠰@ఠ'rewrite{   @A@@@@@@fT@f]@@@fT@f^@@f_T@f\3@Z@@@࣠@!t}A  @A@@3@['  JZ@@@@@  @@@ఠ#ctx~"@A@@^@@@fgV@fb3@(8@@ @@@ຐ\+specialized'2@డ#Map%empty%Ident5:@ ;>@@ ? D@ @\!a@5@@@5@\@[E@ @@\ b@@@fkV@fuV@fs@@@fr?@@@$%%F@@GB@A@'@@ఐ[P(traverse1JL2JT@[T@@@_@@@f@q@@@ft@@@f@@f@@f3<;;<<<<<@^le@f@g@@@@ఐs#ctxNJUOJX@ @@_-@@@fV@fV@f@@ఐ!tbJY@}@@#@@4@@$@?@@@A@T@f@A@@@%StyleTt\cu\h@AAР$Misc%Style$Misc\k\o@ \p\u@@@3@[@@@@@@\\ @ @@Ġqw{w}@p@@@@p@@@i3@6A.@1@@@డ5register_error_of_exn(Location@ @@@@#exnG@@@ &optionL<%error@@@ @@@ @@ <@@@ @@ @<y44<y44@@<_@'"@@@@@@@i@@@i@@@i@@i@@@i@@i3@I@@@@@Ġ%Error@/Cఠ#locΠ@A@@)@@@i3@h@@@Ġ?Ambiguous_constructor_arguments@/ঠ(explicit @0Ġ%&@@@@@@@@i @)arguments12 A0(ఠϠ@IA@@@@i@@@i5@@@AB"@@@@@iY@i=@@@6@@a@@@iA@@@RM#@@@@@iF@@@@ఠ)print_msgҠ['5\'>@nA@@@*Format_doc)formatter@@@lQY@i$unitF@@@sY@i@@iY@i3rqqrrrrr@zs@t@uFC@E@D@@@࣠@#ppfA'?'B@A@@(3@5'1Fy@@@@@  @@డ*Format_doc'fprintf*Format_docEQE[@ E\Ec@@@G@@@k\@&Stdlib&format!a@jY@@@kZS@@@k[@@@kY@@kX@@kW@4utils/format_doc.mliQ@@by@+&@@@j@@@lC@#@*Format_doc'printer&stringQ@@@s@@@sZ@lZ@lR@ Z@lU@@@@s@@@sZ@oZ@lX@ Z@l[@2-@@@s@@sZ@qZ@l^@ Z@laZ@lb@@lcZ@l_@@l`Z@l\@@l]Z@lY@@lZZ@lV@@lWZ@lS@@lTZ@l?@@@lAh@@@lB@@@l@W@@l>@@l=3)(()))))@@@@@@@ఐ#ppf;Ed<Eg@ @@@@ภIhvJAภ#%Alpha% ;%AlphaƠ@@!b@@!x@!c@@@@@@ !a@@@@@ !d@!e@!f@@@@@+"@@@@AOAYAA''(.(j@@@$o@ภ8j,Char_literallS;,Char_literal !a@!b@!c@!d@!e@!f@@@@@$charB@@@6)%!@@@@BLAYAA-%%.%%@@@fl@z@@@@l[@l[@l@ภ.Formatting_lit;.Formatting_litZ!a@&!b@'!c@(!d@)!e@*!f@+@@@@.formatting_lit@@@ ($ @@@!@BQAYAAy)()(z))@@@q@ภ%Break;%Break@@@K@@@@E@@@F@@@G@C@GC@A|  |  9@@@@@"@ @@@@@l[@l[@l @A @"@@@l[@l[@l+@@@(@@@l[@l[@l6@@@Z@@@l[@l;@ภAB)$this.@.@@@@l[@l[@lO@ภ#UV=ภ+]e^EdKI@I@f@@@m [@m[@mj@AT@l@@@m [@m[@mu@@_@r@@@m [@m[@m@@f@@@@m[@m @ภY s +constructorx@x@@@@m [@m#[@m"@ภmภu@@@@@m9[@m=[@m<@A@@@@m:[@m?[@m>@@@@@@m;[@mA[@m@@@@@@@m0[@m8@ภՠUT+application@@9@@@mN[@mQ[@mP@ภ21ภ@@@@@mg[@mk[@mj@A@@@@mh[@mm[@ml @@@@@@mi[@mo[@mn@@@8@@@m^[@mf@ภ #may @ @@@@m|[@m[@m~-@ภ3|4{ภ ;C<#B)'@'@D@@@m[@m[@mH@A2@J@@@m[@m[@mS@@=@P@@@m[@m[@m^@@D@@@@m[@mc@ภ7ijQ"beV@V@@@@m[@m[@mw@ภK}~eŠภSmsq@q@@@@m[@m[@m@A|@@@@m[@m[@m@@@@@@m[@m[@m@@@@@@m[@m@ภ32/TMC-transformed@@@@@m[@m[@m@ภǠภϠ֠@@@@@m[@m[@m@A@@@@m[@m[@m@@@@@@m[@m[@m@@@@@@m[@m@ภ}|"in@@a@@@n[@n [@n @ภZYภ! @@"@@@n[@n#[@n"&@A@(@@@n [@n%[@n$1@@@.@@@n![@n'[@n&<@@"@`@@@n[@nA@ภGH/Ơ'several4@4@@@@n4[@n7[@n6U@ภ)[\Cภ1ckdKjQO@O@l@@@nM[@nQ[@nPp@AZ@r@@@nN[@nS[@nR{@@e@x@@@nO[@nU[@nT@@l@@@@nD[@nL@ภ_y)different~@~@@@@nb[@ne[@nd@ภsภ{@@@@@n{[@n[@n~@A@@@@n|[@n[@n@@@@@@n}[@n[@n@@@@@@nr[@nz@ภ۠[Z%ways.@@?@@@n[@n[@n@ภ87ภ@@@@@n[@n[@n@A@@@@n[@n[@n@@@ @@@n[@n[@n@@@>@@@n[@n@ภ%& &Please@@@@@n[@n[@n3@ภ9:!ภAIB)H/-@-@J@@@n[@n[@nN@A8@P@@@n[@n[@nY@@C@V@@@n[@n[@nd@@J@@@@n[@ni@ภ=opW,disambiguate\@\@@@@n[@n[@n}@ภQkˠภYsyw@w@@@@o[@o [@o@A@@@@o[@o [@o @@@@@@o[@o [@o @@@@@@n[@o@ภ98"by@@@@@o[@o[@o@ภ͠ภՠܠ@@@@@o3[@o7[@o6@A@@@@o4[@o9[@o8@@@@@@o5[@o;[@o:@@@@@@o*[@o2@ภ&adding@@g@@@oH[@oK[@oJ@ภ`_ภ' &  @ @(@@@oa[@oe[@od,@A@.@@@ob[@og[@of7@@!@4@@@oc[@oi[@ohB@@(@f@@@oX[@o`G@ภMN5̠"an:@:@@@@ov[@oy[@ox[@ภ/abIภ7iqjQpWU@U@r@@@o[@o[@ov@A`@x@@@o[@o[@o@@k@~@@@o[@o[@o@@r@@@@o[@o@ภe(explicit@@@@@o[@o[@o@ภyภ@@@@@o[@o[@o@A@@@@o[@o[@o@@@@@@o[@o[@o@@@@@@o[@o@ภภih* attribute@@M@@@o[@o[@o@ภFEภ  @@@@@p[@p[@p@A@@@@p[@p [@p @@@@@@p[@p [@p (@@@L@@@o[@p-@ภ34"to @ @@@@p[@p[@pA@ภGH/ภOWP7V=;@;@X@@@p2[@p6[@p5\@AF@^@@@p3[@p8[@p7g@@Q@d@@@p4[@p:[@p9r@@X@@@@p)[@p1w@ภK}~e#thej@j@@@@pG[@pJ[@pI@ภ_y٠ภg@@@@@p`[@pd[@pc@A@@@@pa[@pf[@pe@@@@@@pb[@ph[@pg@@@@@@pW[@p_@ภǠGF$call@@+@@@pu[@px[@pw@ภ۠$#ภ@@@@@p[@p[@p@A@@@@p[@p[@p@@@@@@p[@p[@p@@@*@@@p[@p @ภ$that@@u@@@p[@p[@p@ภ%n& mภ-5.4@@6@@@p[@p[@p:@A$@<@@@p[@p[@pE@@/@B@@@p[@p[@pP@@6@t@@@p[@pU@ภ)[\Cڠ&shouldH@H@@@@p[@p[@pi@ภ=opWภEwx_~ec@c@@@@p[@p[@p@An@@@@p[@p[@p@@y@@@@p[@p[@p@@@@@@p[@p@ภs%$"be@@ @@@p[@q[@q@ภภȠ@@@@@q[@q[@q@A@@@@q[@q[@q@@@@@@q[@q [@q@@@@@@q[@q@ภon$made@@S@@@q-[@q0[@q/@ภLKภ  @@@@@qF[@qJ[@qI@A@@@@qG[@qL[@qK#@@ @ @@@qH[@qN[@qM.@@@R@@@q=[@qE3@ภ9:!/tail-recursive,&@&@@@@q[[@q^[@q]G@ภMN5ภ#U]V=\CA@A@^@@@qt[@qx[@qwb@AL@d@@@qu[@qz[@qym@@W@j@@@qv[@q|[@q{x@@^@@@@qk[@qs}@ภQk"orp@p@@@@q[@q[@q@ภeߠภm@@@@@q[@q[@q@A@@@@q[@q[@q@@@@@@q[@q[@q@@@@@@q[@q@ภ͠cba@F@@@q[@q[@q@ภ)(ภ@@@@@q[@q[@q@A@@@@q[@q[@q @@@@@@q[@q[@q @@@/@@@q[@q @ภภ * attribute @ @@@@q[@r[@r ,@ภ2{3 zภ:B; "A( &@ &@C@@@r[@r[@r G@A 1@I@@@r[@r[@r R@@ <@O@@@r[@r[@r ]@@ C@@@@r[@r b@ภ6hi P"on U@ U@@@@r,[@r/[@r. v@ภJ|} dĠภR lr p@ p@@@@rE[@rI[@rH @A {@@@@rF[@rK[@rJ @@ @@@@rG[@rM[@rL @@ @@@@r<[@rD @ภ2 1%calls @ @@@@rZ[@r][@r\ @ภƠ   ภΠ ՠ @ @@@@rs[@rw[@rv @A @@@@rt[@ry[@rx @@ @@@@ru[@r{[@rz @@ @ @@@rj[@rr @ภ| {$that @ @`@@@r[@r[@r @ภ Y  Xภ     @ @ !@@@r[@r[@r %@A @ '@@@r[@r[@r 0@@ @ -@@@r[@r[@r ;@@ !@ _@@@r[@r @@ภFG .Š&should 3@ 3@@@@r[@r[@r T@ภ(Z [ B ภ0b jc J i P N@ N@ k@@@r[@r[@r o@A Y@ q@@@r[@r[@r z@@ d@ w@@@r[@r[@r @@ k@ @@@r[@r @ภ^ x#not }@ }@@@@r[@r[@r @ภr   ภz     @ @ @@@r[@s[@s @A @ @@@r[@s[@s @@ @ @@@r[@s[@s @@ @ @@@r[@r @ภڠZ Y"be @ @>@@@s[@s[@s @ภ 7  6ภ     @ @ @@@s+[@s/[@s. @A @ @@@s,[@s1[@s0 @@ @ @@@s-[@s3[@s2 @@ @ =@@@s"[@s* @ภ$% ,transformed. @ @@@@s@[@sC[@sB 2@ภ8e9 d@ @ڠ ZZ@sZ@sZ@lPZ@lZ@l\@s5 @ @sZ@sZ@sZ@lOZ@lZ@l\@s6\@s7 \@s8#\@s9&\@s:@@@sA[@sK h@@ N@.\@s$\@s3\@s6\@s9\@s<\@s@@@s#[@s? ~@@ d@D\@s:\@sI\@s L\@s O\@s R\@s @@@s[@s! @@ z@4Z\@rP\@r_\@rb\@re\@rh\@r@@@r[@s @@ @Jp\@r٠f\@rڠu\@r۠x\@rܠ{\@rݠ~\@r@@@r[@r @@ @`\@r|\@r\@r\@r\@r\@r@@@r[@r @@ @v\@r\@r\@r\@r\@r\@r@@@r[@r @@ @\@r\@r\@r\@r\@r\@r@@@r[@r @@ @\@r}\@r~\@r\@r\@r\@r@@@r[@r @@ @\@r_\@r`\@ra\@rb\@rc\@rd@@@rk[@r .@@ @Π\@rO\@rP\@rQ\@rR\@rS\@rT@@@r[[@ri D@@ *@ \@r1\@r2\@r3\@r4\@r5\@r6@@@r=[@rY Z@@ @@ \@r!\@r"%\@r#(\@r$+\@r%.\@r&@@@r-[@r; p@@ V@6\@r,\@r;\@r>\@rA\@rD\@r@@@r[@r+ @@ l@&L\@qB\@qQ\@qT\@qW\@qZ\@q@@@q[@r  @@ @<bZ@qܠPZ@q^Z@qh\@qk\@qn\@q@@@q[@q @@ @P \@qm\@q|\@q\@q\@q\@q@@@q[@q @@ @g \@q\@q\@q\@q\@q\@q@@@q[@q @@ @~ \@q\@q\@q\@q\@q\@q@@@q[@q @@ @ \@q~\@q\@q\@q\@q\@q@@@q[@q @@ @ 6\@q`\@qa\@qb\@qc\@qd\@qe@@@ql[@q #@@ @à M\@qP\@qQ\@qR\@qS\@qT\@qU@@@q\[@qj :@@ @ڠ d\@q2\@q3\@q4 \@q5 \@q6\@q7@@@q>[@qZ Q@@ 7@ {\@q"\@q#\@q$ \@q%#\@q&&\@q'@@@q.[@q< h@@ N@ \@q%\@q4\@q7\@q:\@q=\@q @@@q[@q, @@ e@ \@p<\@pK\@pN\@pQ\@pT\@p@@@q[@q @@ |@6 \@p֠S\@pנb\@pؠe\@p٠h\@pڠk\@p@@@p[@p @@ @M \@pƠj\@pǠy\@pȠ|\@pɠ\@pʠ\@p@@@p[@p @@ @d \@p\@p\@p\@p\@p\@p@@@p[@p @@ @{\@p\@p\@p\@p\@p\@p@@@p[@p @@ @\@pz\@p{\@p|\@p}\@p~\@p@@@p[@p @@ @3\@pj\@pk\@pl\@pm\@pn\@po@@@pv[@p @@@J\@pL\@pM\@pN\@pO\@pP\@pQ@@@pX[@pt7@@@נa\@p<\@p=\@p>\@p? \@p@ \@pA@@@pH[@pVN@@4@x\@p \@p\@p \@p! \@p"#\@p#@@@p*[@pFe@@K@\@p"\@p1\@p4\@p7\@p:\@p@@@p[@p(|@@b@\@o9\@oH\@oK\@oN\@oQ\@o@@@o[@p@@y@3\@oP\@o_\@ob\@oe\@oh\@o@@@o[@o@@@JZ@oɠaZ@oΠoZ@o͠w\@oϠz\@oР}\@o@@@o[@o@@@_\@o|\@o\@o\@o\@o\@o@@@o[@o@@@v\@o\@o\@o\@o\@o\@o@@@o[@o@@@,\@o{\@o|\@o}\@o~\@o\@o@@@o[@o@@@C\@ok\@ol\@om\@on\@oo\@op@@@ow[@o@@@Z\@oM\@oN\@oO\@oP\@oQ\@oR@@@oY[@ou2@@@Ҡq\@o=\@o>\@o?\@o@\@oA\@oB@@@oI[@oWI@@/@\@o\@o \@o!\@o"\@o#\@o$@@@o+[@oG`@@F@\@o\@o,\@o/\@o2\@o5\@o@@@o[@o)w@@]@\@n4\@nC\@nF\@nI\@nL\@n@@@n[@o@@t@.\@nK\@nZ\@n]\@n`\@nc\@n@@@n[@n@@@E\@nàb\@nĠq\@nŠt\@nƠw\@nǠz\@n@@@n[@n@@@\\@ny\@n\@n\@n\@n\@n@@@n[@n@@@s\@n\@n\@n\@n\@n\@n@@@n[@n@@@)\@n\@n\@n\@n\@n\@n@@@n[@n@@@@\@ng\@nh\@ni\@nj\@nk\@nl@@@ns[@n@@@W\@nW\@nX\@nY\@nZ\@n[\@n\@@@nc[@nq/@@@Ϡn\@n9\@n:\@n;\@n<\@n=\@n>@@@nE[@naF@@,@\@n)\@n*\@n+\@n,\@n-\@n.@@@n5[@nC]@@C@\@n \@n )\@n ,\@n/\@n2\@n@@@n[@n3t@@Z@\@m1\@m@\@mC\@mF\@mI\@n@@@n[@n@@q@+\@mݠH\@mޠW\@mߠZ\@m]\@m`\@m@@@m[@n@@@B\@m͠_\@mΠn\@mϠq\@mРt\@mѠw\@m@@@m[@m@@@Y\@mv\@m\@m\@m\@m\@m@@@m[@m@@@p\@m\@m\@m\@m\@m\@m@@@m[@m@@@&\@m\@m\@m\@m\@m\@m@@@m[@m@@@=\@mq\@mr\@ms\@mt\@mu\@mv@@@m}[@m@@@T\@mS\@mT\@mU\@mV\@mW\@mX@@@m_[@m{,@@@̠k\@mC\@mD\@mE\@mF\@mG\@mH@@@mO[@m]C@@)@\@m%\@m&\@m'\@m(\@m)\@m*@@@m1[@mMZ@@@@\@m\@m&\@m)\@m,\@m/\@m@@@m![@m/q@@W@\@l.\@l=\@l@\@lC\@lF\@l@@@m[@m@@n@(\@lE\@lT\@lW\@lZ\@l]\@l@@@l[@m@@@?\@lɠ\\@lʠk\@lˠn\@l̠q\@l͠t\@l@@@l[@l@@@V\@ls\@l\@l\@l\@l\@l@@@l[@l@@@m Z@lZ@lZ@l\@l\@l\@l@@@l[@l@@@;\@ly@@@l[@l@ %a:@ this@ constructor@ application@ may@ be@ TMC-transformed@ in@ several@ different@ ways.@ Please@ disambiguate@ by@ adding@ an@ explicit@ %a attribute@ to@ the@ call@ that@ should@ be@ made@ tail-recursive,@ or@ a@ %a attribute@ on@ calls@ that@ should@ not@ be@ transformed.@@@@@l[@sM[@sL@@@@xU@@@lN[@l@@డ+inline_code%Style=>@ AB@@fa@@@s@@@s@.utils/misc.mli,QQ ,QQ3@@$Misc@@@t%@@0[@tail_mod_cons][\@@^_@@{[@s4@@డ+inline_code%Stylep&q+@ t,u7@@3@@|J@@+[@tailcall]ǀ9ǁD@@ǃ8DŽE@@[@sY@@డ+inline_code%StyleǕFTǖFY@ ǙFZǚFe@@X@@o@@1[@tailcall false]ǥFgǦFx@@ǨFf@@[@s}@@ @@~@&A@NY@s$@A@!@@ఠ&submgs ǹǺ@A@@|P#msg@@@t@@@tY@s3@Rsl@m@n@@@@ఠ#sub!@A@@@[@@@sZ@s#@@@tZ@s@@sZ@s @࣠@$info#A@@@@@@s3@1([@@@@  @A"г%4tmc_call_information  @@-@@@s@@@@@4@@@@@ఠ#loc$ @2A@@P@@@s\@s3#""#####@1>6@9@+@@@డ/Scoped_location+to_location)Debuginfo<=@ @A@@EF@ @Q @@@Q@@@sQ @@@s@@s)@@ఐm$info]^@5@@K@@@s@s=@#locij@KͰ@@@@@sG@@4@@KH@A@q@@డŕ#msg(Location*Ȁ2@ ȃ3Ȅ6@@#locŠQ@@@ @@@ @&Stdlib'format4!a@ ʠ*Format_doc)formatter@@@ Q@@@ @@@ @@@ @@ @@ @Q e eQ e @@Qn@:5@@20Q@@@t@@@t@/[@s(@@@t#@@@t@@@t@@@t@@s@@s3@@@@@@Rภ$SomeȲܠఐʠ#loc8;@@@R@@@t\@t\@t@@@T @@@t"@@ภҠӰ<Aภܠ\ [=This call could be annotated.@@@@@@t_\@tb\@taB@ภ@@b[@tJ[@t^]@tN@@@t\@tH\@t\@@@t\@tI\@t] @@@t`\@tmh@@<@]@t, @@@tK\@t[t@>L@L@@@@tL\@tq\@tp@@SY@@à-&y@@@t\@tG@@c@@@d@@9@QeA@Z@tl@A@i@డ$List#mapst@ wx@@~@@@@@@@t[@t@@@t[@t@@t@~@@@t~@@@t@@t@@t3ɎɍɍɎɎɎɎɎ@@@@@@@ఐˠ#subɠɡ@ @@@@@@t@@@t@@t@@9 @@@~֠2@@@t~ՠ1@@@t@@t#@@డF$List'flatten@ @@@Ԡؠ!a@}@@@@@@ @@@ @@ @5@@R@"@@@@@@tZ@uZ@uZ@t@@@t@@@t@@@t@@tl@@డȑ$List#mapuu@ uu@@O@@@@Fd@@@t]@t=<@@@t@@@t]@t@@t@U@@@tT@@@t@@t@@t@@࣠@!t%ACuDu@VA@@*3BAABBBBB@@@@@@@ఐ!tSuTu@9@@@@:3RQQRRRRR@@@@)tmc_calls]u^u@F @@< @aubu@@@LG@@t^@t^@t"@@Y@@@R@@@tQ@@@t@@t-@@ఐE)arguments~_k_t@@@F@@@u @@@u \@u \@u E@@+@@@@@t@@@t[@u\@uR@@@@Ơ@@@tZ@u[@t[@@%@@\@@@@A@ʥ@@ภ$Someʬ ʭ @డ&errorf(Locationʼ ʽ @   @@#loc=S@@@ @@@ #subH$listK@@@ @@@ @@@ (footnoteZS+delayed_msg@@@ @@@ @['format4!a@ X)formatter@@@ T@@@ :@@@ @@@ @@ @@ @@ @@ @Tg11Th12@@T[@SN@@KT)@@@u,@@@u+IG^@@@u*@@@u)@@@u(DB@@@u'@@@u&@@@@C@@@uEX@uA@@@uFX@u@@uX@uO}@@@uX@uX@uP@@uQX@u!T@@@u#Q@@@u$@@@u%@@@u"'@@u @@u@@u@@u3UTTUUUUU@@@@@@ภ5_ఐh#locl  m  @@@T@@@uNY@uUY@uT@@@ @@@uV @ภR|ఐР&submgsˉ ˊ @/@@@@@uL@@@uKY@uYY@uW=@@ @@@@u[A@ภ$Nonet@t@@@@u]@@@u\P@@ภR˄Q˅˵ ˶ APภ]ˏ%Thetaˑ ;%Theta2@@!b@ !c@@@!a@@@  !d@!!e@"!f@#@@@@X# @@@@APAYAAO(k(kP()@@@p@ภΠJ@J@pX@uGX@uX@uX@uР̠X@uZ@uZ@u@@@uY@u@@`@Z@umX@u@@@uY@u@"%ts@s@@@@uY@uY@u@@zy@@A.@@@uDY@u@@ఐ砐)print_msgB C (@z@@X@u@@H I )@@@@@@@@@u@@@@@@@@@i@@@i@Ġ%Error` *2a *7@Gఠ#locРi *9j *<@|A@@Ɏ@@@i@Ġ?Ambiguous_constructor_argumentsw >Mx >l@Gtঠ(explicit̂ m̃ m@H~Ġv̉ m̊ m@u@@@@_@@@i@)arguments̕ m̖ mAHఠѠ@̭A@TS@@@i@@@i@@@̥ m~̦ m@@@@@iY@i@@@6@@@@@i@@@Q̱ m@@@@@i@@@@ఠ)print_msg&̿  @A@@@d@@@uY@u_@@@}Y@u@@uY@u3@2qj@k@l>;@=@<@@@࣠@#ppf(A  @A@@ 3@- @@@@@  @@డ\'fprintf*Format_doc@ @@Z@@@@@@u@Z@72@@@}@J@}Z@v/Z@u@ Z@uVZ@u@@uZ@uސ@@uZ@uʠ@@@u̠i@@@u@@@u!@@u@@u3*))*****@IUk@L@M@@@@ఐ\#ppf<=@ @@x@@ภJKXAภ$% ภ,-z@@@@vC[@vF[@vE8@ภ ?@&ภGOH.N52@2@P@@@v\[@v`[@v_S@A=@V@@@v][@vb[@va^@@H@\@@@v^[@vd[@vci@@O@@@@vS[@v[n@ภCuv\$thisa@a@@@@vq[@vt[@vs@ภW͉͊pѠภ_͑͒x|@|@@@@v[@v[@v@A@@@@v[@v[@v@@@@@@v[@v[@v@@@@@@v[@v@ภͿ?>+constructor@@#@@@v[@v[@v@ภӠภ۠@@@@@v[@v[@v@A@@@@v[@v[@v@@@@@@v[@v[@v@@@"@@@v[@v@ภ  +application@@m@@@v[@v[@v@ภfeภ%-& ,@@.@@@v[@v[@v1@A@4@@@v[@v[@v<@@&@:@@@v[@v[@vG@@-@l@@@v[@vL@ภ!ST:Ҡ#may?@?@@@@v[@v[@v`@ภ5ghNภ=owpVv]Z@Z@x@@@w[@w[@w{@Ae@~@@@w[@w[@w@@p@@@@w[@w[@w@@w@@@@w [@w@ภkΝΞ"be@@@@@w)[@w,[@w+@ภαβภικ@@@@@wB[@wF[@wE@A@@@@wC[@wH[@wG@@@@@@wD[@wJ[@wI@@@@@@w9[@wA@ภgf/TMC-transformed@@K@@@wW[@wZ[@wY@ภDCภ  @@ @@@wp[@wt[@ws@A@@@@wq[@wv[@wu@@@@@@wr[@wx[@ww%@@ @J@@@wg[@wo*@ภ12"in@@@@@w[@w[@w>@ภEF,ภMUN4T;8@8@V@@@w[@w[@wY@AC@\@@@w[@w[@wd@@N@b@@@w[@w[@wo@@U@@@@w[@wt@ภI{|b'severalg@g@@@@w[@w[@w@ภ]ϏϐvנภeϗϘ~@@@@@w[@w[@w@A@@@@w[@w[@w@@@@@@w[@w[@w@@@@@@w[@w@ภŠED)different@@)@@@w[@w[@w@ภ٠"!ภ@@@@@w[@w[@w@A@@@@w[@x[@w@@@@@@w[@x[@x@@@(@@@w[@w@ภ%ways.@@s@@@x[@x[@x@ภ#l$ kภ+3,2@@4@@@x([@x,[@x+7@A!@:@@@x)[@x.[@x-B@@,@@@@@x*[@x0[@x/M@@3@r@@@x[@x'R@ภ'YZ@ؠ$OnlyE@E@@@@x=[@x@[@x?f@ภ;mnTภCu}v\|c`@`@~@@@xV[@xZ[@xY@Ak@@@@xW[@x\[@x[@@v@@@@xX[@x^[@x]@@}@@@@xM[@xU@ภqУ#Ф"#one@@@@@xk[@xn[@xm@ภзиภпƠ@@@@@x[@x[@x@A@@@@x[@x[@x@@@@@@x[@x[@x@@@@@@x{[@x@ภml"of@@Q@@@x[@x[@x@ภJIภ  @@@@@x[@x[@x@A@@@@x[@x[@x @@ @@@@x[@x[@x+@@@P@@@x[@x0@ภ78#the#@#@@@@x[@x[@xD@ภKL2ภ!S[T:ZA>@>@\@@@x[@x[@x_@AI@b@@@x[@x[@xj@@T@h@@@x[@x[@xu@@[@@@@x[@xz@ภOстh)argumentsm@m@@@@x[@x[@x@ภcѕі|ݠภkѝў@@@@@y[@y[@y@A@@@@y[@y[@y@@@@@@y[@y[@y@@@@@@y[@y @ภˠKJ#may@@/@@@y#[@y&[@y%@ภߠ('ภ@@@@@y<[@y@[@y?@A@@@@y=[@yB[@yA@@@@@@y>[@yD[@yC @@@.@@@y3[@y;@ภ&become@@y@@@yQ[@yT[@yS"@ภ)r*qภ1928@@:@@@yj[@yn[@ym=@A'@@@@@yk[@yp[@yoH@@2@F@@@yl[@yr[@yqS@@9@x@@@ya[@yiX@ภ-_`FaJ@@@@y[@y[@yk@ภ@rsYภHz{ahe@e@@@@y[@y[@y@Ap@@@@y[@y[@y@@{@@@@y[@y[@y@@@@@@y[@y@ภvҨ(ҩ'#TMC@@ @@@y[@y[@y@ภҼҽภĠˠ@@@@@y[@y[@y@A@@@@y[@y[@y@@@@@@y[@y[@y@@@ @@@y[@y@ภrq%call,@@V@@@y[@y[@y@ภONภ@@@@@y[@y[@y@A@@@@y[@y[@y%@@@#@@@y[@y[@y0@@@U@@@y[@y5@ภ <=##but(@(@@@@z [@z [@z I@ภPQ7ภ&X`Y?_FC@C@a@@@z"[@z&[@z%d@AN@g@@@z#[@z([@z'o@@Y@m@@@z$[@z*[@z)z@@`@@@@z[@z!@ภTӆӇm'severalr@r@@@@z7[@z:[@z9@ภhӚӛภpӢӣ@@@@@zP[@zT[@zS@A@@@@zQ[@zV[@zU@@@@@@zR[@zX[@zW@@@@@@zG[@zO@ภРPO)arguments@@4@@@ze[@zh[@zg@ภ-,ภ@@@@@z~[@z[@z@A@@@@z[@z[@z@@@@@@z[@z[@z@@@3@@@zu[@z}@ภ'contain@@~@@@z[@z[@z'@ภ.w/vภ6>7=$!@!@?@@@z[@z[@zB@A,@E@@@z[@z[@zM@@7@K@@@z[@z[@zX@@>@}@@@z[@z]@ภ2deK%callsP@P@@@@z[@z[@zq@ภFxy_ภNԀԁgnk@k@@@@z[@z[@z@Av@@@@z[@z[@z@@@@@@z[@z[@z@@@@@@z[@z@ภ|Ԯ.ԯ-$that@@@@@z[@z[@z@ภ   ภʠѠ@@@@@{[@{ [@{ @A@@@@{ [@{[@{ @@@@@@{ [@{[@{@@@@@@z[@{@ภxw#are@@\@@@{[@{ [@{@ภ U Tภ@@@@@{6[@{:[@{9 @A @#@@@{7[@{<[@{;+@@@)@@@{8[@{>[@{=6@@@[@@@{-[@{5;@ภBC)*explicitly.@.@@@@{K[@{N[@{MO@ภ$VW=ภ,^f_EeLI@I@g@@@{d[@{h[@{gj@AT@m@@@{e[@{j[@{iu@@_@s@@@{f[@{l[@{k@@f@@@@{[[@{c@ภZՌ Սs &markedx@x@@@@{y[@{|[@{{@ภnՠաภvըթ@@@@@{[@{[@{@A@@@@{[@{[@{@@@@@@{[@{[@{@@@@@@{[@{@ภ¤֠VU"as@@:@@@{[@{[@{@ภ¸ 3 2ภ@@@@@{[@{[@{@A@ @@@{[@{[@{ @@@ @@@{[@{[@{ @@@ 9@@@{[@{ @ภ  ! Ÿ/tail-recursive. @ @„@@@{[@{[@{ -@ภ4 }5  |ภ < D= # C * '@ '@ E@@@{[@{[@{ H@A 2@ K@@@{[@{[@{ S@@ =@ Q@@@{[@{[@{ ^@@ D@ @@@{[@{ c@ภ8jk Q&Please V@ V@@@@|[@|[@| w@ภL~  e ƠภTֆ և m  t q@ q@ @@@|[@| [@| @A |@ @@@|[@|"[@|! @@ @ @@@|[@|$[@|# @@ @ @@@|[@| @ภÂִ4ֵ 3#fix @ @@@@|1[@|4[@|3 @ภÖȠ! !ภÞР   נ  @ @ @@@|J[@|N[@|M @A @ @@@|K[@|P[@|O @@ @ @@@|L[@|R[@|Q @@ @!@@@|A[@|I @ภ~ }#the @ @b@@@|_[@|b[@|a @ภ![ !Zภ!" !!! @ @!#@@@|x[@||[@|{ &@A @!)@@@|y[@|~[@|} 1@@ @!/@@@|z[@|[@| <@@ "@!a@@@|o[@|w A@ภHI /Ǡ(conflict 4@ 4@ì@@@|[@|[@| U@ภ*\!] C!ภ2d!le K!k!R O@ O@!m@@@|[@|[@| p@A Z@!s@@@|[@|[@| {@@ e@!y@@@|[@|[@| @@ l@!@@@|[@| @ภ`גד y"by ~@ ~@@@@|[@|[@| @ภtצ!ק !ภ|׮!ׯ !! @ @!@@@|[@|[@| @A @!@@@|[@|[@| @@ @!@@@|[@|[@| @@ @!@@@|[@| @ภĪܠ\ [)reviewing @ @@@@@|[@|[@| @ภľ"9 "8ภ" !! @ @"@@@}[@}[@} @A @"@@@}[@}[@} @@ @" @@@}[@} [@}  @@ @"?@@@|[@} @ภ&Ħ' ĥ#and @ @Ċ@@@}[@}[@} 3@ภ:"; !"ภB"JC )"I"0 -@ -@"K@@@}0[@}4[@}3 N@A 8@"Q@@@}1[@}6[@}5 Y@@ C@"W@@@}2[@}8[@}7 d@@ J@"@@@}'[@}/ i@ภ>pq W&fixing \@ \@@@@}E[@}H[@}G }@ภR؄"؅ k"̠ภZ،"؍ s""z w@ w@"@@@}^[@}b[@}a @A @"@@@}_[@}d[@}c @@ @"@@@}`[@}f[@}e @@ @"@@@}U[@}] @ภňغ:ػ 9#the @ @@@@}s[@}v[@}u @ภŜΠ# #ภŤ֠" "ݠ" @ @"@@@}[@}[@} @A @"@@@}[@}[@} @@ @"@@@}[@}[@} @@ @#@@@}[@} @ภń Ń+conflicting @ @h@@@}[@}[@} @ภ#a #`ภ #(! #'# @ @#)@@@}[@}[@} ,@A @#/@@@}[@}[@} 7@@ !@#5@@@}[@}[@} B@@ (@#g@@@}[@} G@ภNO 5͠,annotations. :@ :@Ų@@@}[@}[@} [@ภ0bďc IĎ@ I@ {Z@uZ@vZ@v+\@}Ġ%B@ @}Z@uZ@vZ@v*\@}Š\@}Ơ\@}Ǡ\@}Ƞ\@}@@@}[@} @@ o@*&\@} \@}+\@}.\@}1\@}4\@}@@@}[@} @@ @@<\@}6\@}A\@}D\@}G\@}J\@}@@@}[@} @@ @VR\@}xL\@}yW\@}zZ\@}{]\@}|`\@}}@@@}[@} @@ @lh\@}hb\@}im\@}jp\@}ks\@}lv\@}m@@@}t[@} @@ @Ƃ~\@}Jx\@}K\@}L\@}M\@}N\@}O@@@}V[@}r @@ @Ƙ\@}:\@};\@}<\@}=\@}>\@}?@@@}F[@}T @@ @Ʈ\@}\@}\@}\@}\@} \@}!@@@}([@}D #@@ @Ġ\@} \@} \@}\@}\@}\@}@@@}[@}& 9@@ @ڠ\@|\@|\@|\@|\@|\@|@@@|[@} O@@ 5@\@|ޠ\@|ߠ\@|\@|\@|\@|@@@|[@| e@@ K@\@|\@|\@|  \@|à \@|Ġ\@|@@@|[@| {@@ a@\@|\@|\@| \@|#\@|&\@|@@@|[@| @@ w@2.\@|(\@|3\@|6\@|9\@|<\@|@@@|[@| @@ @HD\@|>\@|I\@|L\@|O\@|R\@|@@@|[@| @@ @^Z\@|dT\@|e_\@|fb\@|ge\@|hh\@|i@@@|p[@| @@ @tp\@|Tj\@|Uu\@|Vx\@|W{\@|X~\@|Y@@@|`[@|n @@ @NJ\@|6\@|7\@|8\@|9\@|:\@|;@@@|B[@|^ @@ @Ǡ\@|&\@|'\@|(\@|)\@|*\@|+@@@|2[@|@@@ @Ƕ\@|\@| \@| \@| \@| \@| @@@|[@|0+@@@̠\@{\@{\@{\@{\@{\@{@@@|[@|A@@'@\@{ڠ\@{۠\@{ܠ\@{ݠ\@{ޠ\@{@@@{[@|W@@=@\@{ʠ\@{ˠ\@{̠\@{͠\@{Π\@{@@@{[@{m@@S@ \@{\@{\@{\@{\@{\@{@@@{[@{@@i@$ \@{\@{%\@{(\@{+\@{.\@{@@@{[@{@@@:6\@{~0\@{;\@{>\@{A\@{D\@{@@@{[@{@@@PL\@{nF\@{oQ\@{pT\@{qW\@{rZ\@{s@@@{z[@{@@@fb\@{P\\@{Qg\@{Rj\@{Sm\@{Tp\@{U@@@{\[@{x@@@|x\@{@r\@{A}\@{B\@{C\@{D\@{E@@@{L[@{Z@@@Ȓ\@{"\@{#\@{$\@{%\@{&\@{'@@@{.[@{J@@@Ȩ\@{\@{\@{\@{\@{\@{@@@{[@{,@@@Ⱦ\@z\@z\@z\@z\@z\@z@@@{[@{3@@@Ԡ\@z\@z\@z\@z\@z\@z@@@z[@zI@@/@\@zƠ\@zǠ\@zȠ\@zɠ\@zʠ\@z@@@z[@z_@@E@\@z\@z\@z\@z\@z \@z@@@z[@zu@@[@\@z \@z\@z\@z\@z \@z@@@z[@z@@q@,(\@z"\@z-\@z0\@z3\@z6\@z@@@z[@z@@@B>\@zj8\@zkC\@zlF\@zmI\@znL\@zo@@@zv[@z@@@XT\@zZN\@z[Y\@z\\\@z]_\@z^b\@z_@@@zf[@zt@@@nj\@z<d\@z=o\@z>r\@z?u\@z@x\@zA@@@zH[@zd@@@Ʉ\@z,z\@z-\@z.\@z/\@z0\@z1@@@z8[@zF@@@ɚ\@z\@z\@z\@z\@z\@z@@@z[@z6@@@ɰ\@y\@y\@z\@z\@z\@z@@@z [@z%@@ @Ơ\@y\@y\@y\@y\@y\@y@@@y[@z;@@!@ܠ\@yР\@yѠ\@yҠ\@yӠ\@yԠ\@y@@@y[@yQ@@7@\@y\@y\@y\@y\@y\@y@@@y[@yg@@M@\@y\@y \@y \@y\@y\@y@@@y[@y}@@c@\@y\@y\@y"\@y%\@y(\@y@@@y[@y@@y@40\@yt*\@yu5\@yv8\@yw;\@yx>\@yy@@@y[@y@@@JF\@yV@\@yWK\@yXN\@yYQ\@yZT\@y[@@@yb[@y~@@@`\\@yFV\@yGa\@yHd\@yIg\@yJj\@yK@@@yR[@y`@@@vr\@y(l\@y)w\@y*z\@y+}\@y,\@y-@@@y4[@yP@@@ʌ\@y\@y\@y\@y\@y\@y@@@y$[@y2@@@ʢ\@x\@x\@x\@x\@x\@x@@@y[@y"@@@ʸ\@x\@x\@x\@x\@x\@x@@@x[@y-@@@Π\@x̠\@x͠\@xΠ\@xϠ\@xР\@x@@@x[@xC@@)@\@x\@x\@x\@x\@x\@x@@@x[@xY@@?@\@x\@x\@x\@x\@x\@x@@@x[@xo@@U@ \@x\@x\@x\@x\@x\@x@@@x[@x@@k@&"\@xp\@xq'\@xr*\@xs-\@xt0\@xu@@@x|[@x@@@<8\@x`2\@xa=\@xb@\@xcC\@xdF\@xe@@@xl[@xz@@@RN\@xBH\@xCS\@xDV\@xEY\@xF\\@xG@@@xN[@xj@@@hd\@x2^\@x3i\@x4l\@x5o\@x6r\@x7@@@x>[@xL@@@~z\@xt\@x\@x\@x\@x\@x@@@x [@x<@@@˔\@x\@x\@x\@x\@x\@x @@@x[@x @@@˪\@w\@w\@w\@w\@w\@w@@@w[@x@@@\@w֠\@wנ\@wؠ\@w٠\@wڠ\@w@@@w[@w5@@@֠\@w\@w\@w\@w\@w\@w@@@w[@wK@@1@\@w\@w\@w\@w\@w\@w@@@w[@wa@@G@\@w\@w\@w\@w \@w \@w@@@w[@ww@@]@\@wz\@w{\@w|\@w}\@w~"\@w@@@w[@w@@s@.*\@w\$\@w]/\@w^2\@w_5\@w`8\@wa@@@wh[@w@@@D@\@wL:\@wME\@wNH\@wOK\@wPN\@wQ@@@wX[@wf@@@ZV\@w.P\@w/[\@w0^\@w1a\@w2d\@w3@@@w:[@wV@@@pl\@wf\@wq\@w t\@w!w\@w"z\@w#@@@w*[@w8@@@̆\@w|\@w\@w\@w\@w\@w@@@w [@w(@@@̜\@v\@v\@v\@v\@v\@v@@@v[@w @@@̲\@vҠ\@vӠ\@vԠ\@vՠ\@v֠\@v@@@v[@v'@@ @Ƞ\@v \@và\@vĠ\@vŠ\@vƠ\@v@@@v[@v=@@#@ޠ\@v\@v\@v\@v\@v\@v@@@v[@vS@@9@\@v\@v\@v\@v\@v\@v@@@v[@vi@@O@ \@vv\@vw \@vx\@vy\@vz\@v{@@@v[@v@@e@ \@vf\@vg!\@vh$\@vi'\@vj*\@vk@@@vr[@v@@{@62\@vH,\@vI7\@vJ:\@vK=\@vL@\@vM@@@vT[@vp@@@LH\@v8B\@v9M\@v:P\@v;S\@v<V\@v=@@@vD[@vR@@@b^Z@vTZ@v$^Z@v#b\@v%d\@v&f\@v'@@@v6[@vB@@@s\@ufopqr@@@v[@v1@ L%a:@ this@ constructor@ application@ may@ be@ TMC-transformed@ in@ several@ different@ ways.@ Only@ one@ of@ the@ arguments@ may@ become@ a@ TMC@ call,@ but@ several@ arguments@ contain@ calls@ that@ are@ explicitly@ marked@ as@ tail-recursive.@ Please@ fix@ the@ conflict@ by@ reviewing@ and@ fixing@ the@ conflicting@ annotations.@@{@@@v[@}[@}@@@@,l|@@@u[@v@@డ-+inline_code%Style12@ 56@@@@# @@0[@tail_mod_cons]AB@@DY@@.[@}@@L\@@&@f]A@Y@}d@A@a@@ఠ&submgs)UV@hA@@~@@@~@@@~Y@}3]\\]]]]]@@@@@@@ఠ#sub*op@A@@@@@@~Z@}@@@~6Z@}@@}Z@} @࣠@$info,A@@@@@@~3@1(i@@@@  @A"г%4tmc_call_information@@-@@@~@@@@@4@@@@@ఠ#loc-14@A@@j|@@@~\@~3@1>6@9@+@@@డi/Scoped_location+to_location)Debuginfo7@@ AP@@Q\@ @j @@@j@@@~ j@@@~ @@~)@@ఐm$info]a@5@@e]@@@~@~=@#locbe@eg@@s@@@~G@@4@@KH@A@ -@@డ/#msg(Locationiwi@ ii@@@@k;@@@~&@@@~%@[@~ @@@~"@@@~#x@@@~$@@@~!@@~@@~398899999@}@@@@@ภhCఐ#locPiQi@@@kl@@@~8\@~<\@~;@@@g @@@~= @@ภ89iiAภBC  "This call is explicitly annotated.@@Φ@@@~\@~\@~@@ภ$V̓W͂@@`[@~k[@~]@~o@@@~4\@~i\@~}@@@~5\@~j\@~~ @@@~\@~f@@<@]@~M @@@~l\@~|r@>L@L@@@@~m\@~\@~}@@S%@@)-&E@@@~3\@~h@@/@@@0@@@1A@UZ@~8@A@5@డY$List#mapapat@ auax@@@@@@n@@@~[@~*@@@~[@~@@~@@@@~@@@~@@~@@~3@@@@@@@ఐ#subaya|@ @@@@@@~L@@@~@@~@@9 @@@<2@@@~;1@@@~@@~#@@డ$List&filter.!/%@ 2&3,@@۰@@@@@@@\@~@@@~@@~@ڠ@@@~ @@@~@@~@@~T@@࣠@$info.A@[3\7@@!@@@3[ZZ[[[[[@g@@@  @tA( г+4tmc_call_informationm9nM@@3@@@~@@t2uN@@@:@@@@ఐ)$infoRV@'@*@!@@f@@@ @3@8 @@@(explicitW_@f@@2@@@ ^@@-`@@@g>@@@~@@~]@]@ D@@w @@@<p@@@~nt@@@~@@~O@@డ?$List'flatten @  @@@@@`@@@~Z@s[@[@q[@g[@'@@@)@@@(@@@&@@%@@డt$List#map@ @@2@@@@`G@@@Y^@E @@@X@@@W^@C@@F@8@@@D7@@@B@@A@@@@@࣠@!t/A&'@9A@@*3%$$%%%%%@1@@@@@@ఐ!t67@9@@@@:354455555@B@@@)tmc_calls@A@` @@< @DE@@@LG@@R_@\_@["@@Y@@@wR@@@QvQ@@@P@@O-@@ఐĠ)argumentsab@@@`@@@i@@@h]@l]@jE@@+@@@@@2@@@1\@n]@eR@@@@@@@[@p\@0[@@%@@@@@~Z@r[@d@@.@@4e@@@5.@A@@@ภ$Some!!@Εడ&errorf(Location!!@ !!@@@@'m@@@@@@0@@@@@@@@@=@@@@@@@@@@@@X@@@@X@@@X@1@@@zX@!X@@@X@@@@@@@1+@@@@@@'@@@@@@@@~3@@@@@@:ภ%ఐ#loc !!@9@@n)@@@Y@Y@@@@$ @@@ @LภBఐՠ&submgs*!+!@/@@[r@@@@@@Y@Y@=@@ @E@@@A@[ภҜ@@^@@@@@@O@@ภ$%U!V!Aภ/0 ภ7d8c@@٠X@X@X@X@X@Z@Z@@@@Y@ @@)@Z@ΠX@@@@Y@@"%t<@<@@@@Y@Y@@@CB@@ɠ.@@@Y@@@ఐ점)print_msg!!@I@@X@@@!!@@@@@@g@@@y@(@@W@@@i@@""@@2@@@i1@@@ภ$None##@$@@@{1@@AԠH@@@$@@@2@@@i22@@@i@@@i@@iV@V@2?@@2/@@µ@@@V@i2E@A@ww@@@2H@f`A@A@A@SMA@B@A@ v) unit], but we prefer to have the code explicit about using [unit], in particular as it ignores the destination argument. AABB[@ * The [find_*] machinery is used to locate a single subterm to optimize among a list of subterms. If there are several possible choices, we require that exactly one of them be annotated with [@tailcall], or we report an ambiguity. # here is how we will compute the result once we know that there is an unambiguously-determined tmc call, and whether an explicit request was necessary to disambiguate FFGCG@ & we know there is at least one choice GGGH @ [choice_prim] handles most primitives, but the important case of construction [Lprim(Pmakeblock(...), ...)] is handled by [choice_makeblock] EPPGPP@ o [choice_apply] handles applications, in particular tail-calls which generate Set choices at the leaves KQQLQ_Q@ other cases use the [lift] helper that takes the sub-terms in tail position and the context around them, and generates a choice for the whole term from choices for the tail subterms.  OQQ QRYR@ * mutable bindings are not TMC-specialized [SS[ST@+ decompose hVVhVV@+ transform kVVkVV@) rebuild #pWW$pWW@+ decompose )vXX*vXX@+ transform /xY Y0xY Y$@) rebuild 5|YY6|YY@ in [try l1 with id -> l2], the term [l1] is not in tail-call position (after it returns we need to remove the exception handler) ;ZZ<[4[j@ [ In [static-catch l1 with ids -> l2], the term [l1] is in fact in tail-position A\\ B\2\i@ o Support of tupled functions: the [function_kind] of the direct-style function is identical to the one of the input function, which may be Tupled, but the dps function is always Curried. [find_exact_application] is in charge of recovering the "real" argument list of a possibly-tupled call. G`P`\Haa@ If we are calling a tmc-specializable function in tail context, then both the direct-style and dps-style calls must be tailcalls. MbbNcfc@ [@tailcall false] is interpreted as a bailout annotation: "we are (knowingly) leaving the dps calling convention". It only has sense in the DPS version of the generated code, not in direct style. SffTgg@ * An ambiguous term should not lead to an error if it not used in TMC position. Consider for example: {[ type t = ... | K of t * (t * t) let[@tail_mod_cons] rec map f = function | [...] | K (t, (u, v)) -> K ((map[@tailcall]) f t, (map f u, map f v)) ]} Calling [choice_makeblock] on the K constructor, we need to determine whether its two arguments are ambiguous, which is done by calling [choice] on each argument to see if they would be TMC-able and if they are explicitly annotated. These calls give the following results: - there is an explicitly-requested tailcall in the first argument - the second argument is a nested pair whose arguments themselves are ambiguous -- with no explicit annotation. This determines that the arguments of K are not ambiguous, as only one of them is annotated. But note that the nested pair, in isolation, is ambiguous. This inner ambiguity is innocuous and should not result in an error, as we never use this inner pair in TMC position, only in direct style. This example shows that it would be incorrect to fail with an error whenever [choice] finds an ambiguity. Instead we only error when generating the [dps] version of the corresponding code; requesting the [direct] version is accepted and produces the expected direct code. YjIjQZpup@ Whether or not the caller provides a destination, we can always provide a destination to our settable subterm, so the number of TMC sub-calls is identical in the [direct] and [dps] versions. _-uu`0vv@ - The important case is the construction case e;wwf;wx @ 1 Some primitives have arguments in tail-position k?xyx}l?xyx@ in common cases we just return qGy|yrGy|y@ * we don't handle effect or DLS primitives w`||x`|}!@ # we don't handle atomic primitives }c}`}d~c}`}@ 3 we don't handle array indices as destinations yet f}}f}}@ : we don't handle { foo with x = ...; y = recursive-call } i~~i~~B@ T operations returning boxed values could be considered constructions someday l~W~[m~~@ c Lazy blocks should never contain a recursive call directly: either it's a closure (Lazy_tag), or a variable (Forward_tag). The case 'let foo = recursive_call in lazy foo' could be translated to use tmc in the cases where 'foo' might be of type lazy or float, but given the fragility of such a transformation we choose not to. uy @6 more common cases... |%)|%C@ 1 Support of Tupled function: see [choice_apply]. @@-./boot/ocamlc)-nostdlib"-I&./boot*-use-prims2runtime/primitives"-g0-strict-sequence*-principal(-absname"-w8+a-4-9-40-41-42-44-45-48+-warn-error"+a*-bin-annot/-strict-formats"-I&lambda"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel"-I%tools"-I'runtime"-I1otherlibs/dynlink"-I-otherlibs/str"-I4otherlibs/systhreads"-I.otherlibs/unix"-I8otherlibs/runtime_events"-cސ =/builds/workspace/precheck/flambda/false/label/ocaml-linux-32 >10/.-,+*)('&%$#"! @@012gTa d3@@@(Asttypes0>n{T8cئ5Build_path_prefix_map0z HkGs8CamlinternalFormatBasics0%FU(Q/Tu0CamlinternalLazy0&͂7 Pˆ*Cmi_format0c˯7͗ԩmݠ*Data_types0I'Ue`wq]Ѡ)Debuginfo0PtJ=^w/#Env0zV L{YWI*Format_doc0]mWϓ:Mݠ%Ident0">WA+9*X,Identifiable0 {d\FX'`80z1x]&ZT)Load_path0I@18 ~(Location0a7cK_H%9)Longident0s `7mɕc$Misc0ob]6>Vê>+Outcometree0kX%d5Q/+)Parsetree0T鿁ۘ7Qu$Path0Y2kf֯J._Ϡ)Primitive0²~$xzT෠%Shape0oNՄBH&Stdlib0Lku]8_٠.Stdlib__Buffer08APF< t..Stdlib__Digest0l!LHgErζ .Stdlib__Domain0:M;׉<O$Ġ.Stdlib__Either0Vy`u~c à.Stdlib__Format0ܚ#G7m|/Stdlib__Hashtbl0ѱN][/!,Stdlib__Lazy0* -S$.)"0D.Stdlib__Lexing0e<.V ,Stdlib__List0MYm 7R+Stdlib__Map0L5xE|O0~,J-.Stdlib__Option0zf**=.Stdlib__Printf0)5h Ԝ΀Q .Stdlib__Result06 ]/J+Stdlib__Seq0nwzG&amg+Stdlib__Set0\$;7 .Stdlib__String0sې0vȽ PdŠ.Type_immediacy0A^abOhՠ%Types0^Y~# )Unit_info0ڀh%((Warnings0mJɒkgr=>G@89@B@@@&@#1ᡕ6@ި޲@u@@@HR @S_}@""