Caml1999T037rI;*j$*C,Shape_reduceР%Shape%Shape6typing/shape_reduce.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+&result*ATT@@;@@(Resolved+#Uid!t@@@@@UU@@BA.Resolved_alias<#Uid!t@@@Ӡ*@@@@@VV'@@CA*Unresolved=!t@@@@@W(*W(;@@DA,Approximated>,#Uid!t@@@@@@@@X<>X<\@@EA:Internal_error_missing_uid?@@Y]_Y]{@@FA@@A@@@@@T@@@@@A@#YYUU@O@г[]UU@`U^@_@@h3@x;@@@A@@@@@@@@@@ d@@@@f@#bbVV@S@гdfVV@iVV@@@r@@гl&result V!m@@s$n@@@@p@#ll&W(,'W(6@d@гno/W(:m@@t3n@@@@p@#ll5X<@6X<L@]@гn&option?X<Vg@гrtHX<PIX<S@wLX<TMX<U@@@R@@@S x@@@@z@#vvUY]at@s@@@w@@A@s@@sv@3SRRSSSSS@@@Aఠ,print_result@d[}e[}@wGA@@@&Stdlib&Format)formatter@@@ B@@@@@B@$unitF@@@B@@@@@3@ @@@࣠@#fmtAA[}[}@HA@@-3@9@4@*$@@C@@@C@@;@<@@@@@@&resultBA[}[}@IA@@83@&I@@@@@@@@ఐ&result\\@I@@@@J3@@@@Ġ(Resolved]]@;?W@@@@@A@AD@A9@@6ఠ#uidC]]@JA@@K@@@3@!@@@@@@@m@@m@@@డr&Format'fprintf^^@ ^^@@@@@@ @&Stdlib&format!a@|@@@ @@@ @@@  @@ @@ @*format.mli.....k@@.Stdlib__Format@+&@@@@@@C@#@@@@@OF@P@%Shape#Uid!T!t@@@F@UF@LB@PF@O@@\@@@R@F@V@@WF@S@@TF@?@@@A@@@B@@@@2@@>@@=3TSSTTTTT@|@}@~@@@@ఐ֠#fmtf^g^@@@@@ภ8CamlinternalFormatBasicsD&FormatFv^w^A;&Format8CamlinternalFormatBasics'format6!a@Ơ!b@Ǡ!c@Ƞ!d@ɠ!e@ʠ!f@@@@@'#fmt$ @@@&stringQ@@@@B@@A@A*@@@r@ภ(Open_box;(Open_box%!a@Π!b@Ϡ!c@Р!d@Ѡ!e@Ҡ!f@@@@E@"@@@F@AA@BAAH Q SI  @@@O@ภ&Format֠ภ&-End_of_format(;-End_of_format!f@v!b@w!c@x!e@y@@@8@@@@AYAA.../!@@@y@@@ؠUH@VF@F@G@G@GF@G@G@G@ H@kH@@@@G@<@ %@%@@@@G@G@H@@,@)H@(!"#H@H@@@@G@W@@;@ H@Ҡ5./2F@!G@Ϡ-G@@@@G@h@ภV.String_literalU;.String_literal+!a@Π!b@Ϡ!c@Р!d@Ѡ!e@Ҡ!f@@@@@A@@@R'#@@@@BKAYAAI$}$}J$%@@@k@)Resolved:@@@@@"G@%G@$@ภ.Formatting_lit;.Formatting_litw!a@!b@!c@!d@ !e@!!f@"@@@@.formatting_lit@@@($ @@@@BQAYAA)()())@@@q@ภ&%Break(;%Break@@@B@@@@<#intA@@@=@@@>@C@GC@A|  |  9@@@@@"@ @@@@@?G@CG@B%@A @$@@@@G@EG@D0@@@(@@@AG@GG@F;@@@\@@@6G@>@@ภ.q%Alphas-;%Alpha@@!b@ @!x@ !c@ @@@@@ !a@@@@@  !d@!e@!f@@@@ @1+"@@@@AOAYAA('')(.(j@@@ao@ภusҠภ})Close_box|;)Close_box@@@@GC@A@z Az @@@y~@@@@@@oG@t@ภՠ@@fSF@5F@WH@dF@ F@4F@VH@eH@fH@gH@hH@i@@@pG@|@@@ F@K"H@Q$H@R&H@S@@@bG@n@@@H@'(/H@*23@@@7G@]@@@ H@4H@@@@#G@3@@@Ӡ̠Π@@@G@@@@9H@ޠנؠ٠@@@G@@1@[Resolved:@ %a@]@@@@@G@~G@}@@@@vSJ4@@@NG@$@@డ#Uid%print^^@ ^^@@@&Stdlib&Format)formatter@@@@g@@@$unitF@@@@@@@@0typing/shape.mliI  I  @@,IdentifiableD@&!@@F@Z@@ఐ᠐#uid^^@d@@F@i@@@@Ej@Ġ.Resolved_alias__@;-@+BAAD@A@@ఠ#uidD__@KA@@6@@@3@@@@ఠ!rE__@LA@@=@@@@@@"_@@x@@x@@@డ}&Format'fprintf`!'`!-@ `!.`!5@@ @@@@@@@ @@B@ B@B@B@qB@zB@QB@ZB@F@@@@@4F@F@F@@@@@F@@ @@(F@@F@F@F@@@ @@ F@@F@@@F@@@F@@@F@@@F@͠@@@Ϡ@@@@@@J@@@@3TSSTTTTT@@@zs@t@u@@@@ఐؠ#fmth`!6i`!9@@@@@ภEFv`!:w`!QAภ PQ ภXvYuภ`Caภ%hBi#A@#@H@LF@#F@7G@HG@Y}F@$G@8G@IG@Z H@PH@Q@@@[G@f]@!E@E@@@@\G@iG@hh@@L@IH@<' !"H@@H@A@@@JG@Xw@@[@H@*4-.1F@yG@',G@(@@@9G@G@ภv t&Alias:y@y@@@@zG@}G@|@ภ͠ภՠ@@@@@G@G@@A@@@@G@G@@@@@@@G@G@@@@@@@G@@ภภ & %ภSR@@ @@@G@@ภ !# ->@@k@@@G@G@@ภ4O5Nภ<=@@@@@G@G@@A@@@@G@G@)@@@!@@@G@G@4@@@U@@@G@9@ภ'jk%ภ/rLs-K@-@F@F@F@nhH@ H@H@@@@G@_@@C@H@ޠ$F@xF@F@H@ߠ"H@H@'H@*H@@@@G@{@@_@5H@ΠH@Ϡ8H@Р3H@Ѡ=H@Ҡ@H@@@@G@@@u@KH@2H@NH@IH@SH@VH@@@@G@@@@aF@ؠaH@cH@eH@@@@G@@@@qH@Tn?H@qr@@@G@@@@H@k`JMH@nMN@@@{G@@@@RY@@@:G@w@@@-H@@@@%G@6@5@[Alias:@ %a@] ->@ %a@@@@@&G@G@@@@@RG>@@@G@"@@డ g#Uid%print gaRZ haR]@  kaR^ laRc@@ܰ@@\F@1@@ఐ#uid {aRd |aRg@!@@RF@6'@@ఐ&,print_result aRh aRt@@@RF@96@@ఐ!r aRu aRv@>@@$G@;E@@@@!F@Ġ*Unresolved bw{ bw@;@ABAD@A@@ఠ%shapeF bw bw@ MA@@@@@3        @@@@@@@@E@@E@@@డJ&Format'fprintf c c@  c c@@ذ@@@h@@@C@ؠ@@z@@@OF@@!t@@@YF@UF@xF@PF@@@ @@F@R@F@V@@WF@S@@TF@?@@@A@@@B@@@@,@@>@@=3        @GZS@T@U@@@@ఐ#fmt c c@e@@@@ภ   #c $cAภ l  kภ # "ภ  Šภ  #@#@nH@oF@F@G@G@ŠgF@G@G@G@Ơ H@H@@@@G@[@E@E@@@@G@G@f@@L@H@' !"H@H@@@@G@u@@[@H@4-.1F@G@,G@@@@G@@ภ# f gt̠+Unresolved:y@y@@@@G@G@@ภ7 z {ภ? \ [@@@]@@@G@G@@A@c@@@G@ G@@@@g@@@G@ G@ @@@@@@G@@ภm ? >ภu  Ҡภ}  @@@@@3G@8@ภ ͠ @@^~F@F@H@(F@F@F@H@)H@*H@+H@,H@-@@@4G@@@@@~ F@@1"H@$H@&H@@@@&G@2$@@ @UH@(/H@23@@@G@!2@@@cH@נ4H@ڠ@@@G@@@@&@Ƞ@@@G@K@@1@|H@o@@@G@X@3@[Unresolved:@ %a@]C@C@@@@G@BG@Ad@@JI@@n~@@@NG@m@@డ %print c c@@&Stdlib&Format)formatter@@@ @@@@$unitF@@@@@@@@___@@\C@@@F@V@@ఐ%shape c c@@@G@[@@@@ 2@Ġ,Approximated d d@; @ ACAD@A @@ Ġ$Some d d@;  ) &@@W@ A@AA@A @@ ఠ#uidG d d@ NA@@ @@@ @@@ d d@@  @@@@@@ #@@@, @@ n $@@ n $@@@డ s&Format'fprintf e e@  e e@@ @@@ @@@c@ @@ @@@oF@4@@@@yF@uF@0 F@pF@3@@@@@?F@r@ F@v@@wF@s@@tF@_ @@@a @@@b@@@`*@@^@@]3 * ) ) * * * * *@ naZ@[@\@@@@ఐ #fmt 1"H@5$H@6&H@7@@@FG@R$@@ @ SH@ (/H@23@@@G@A2@@@  aH@4H@@@@G@@@@&@ РȠ@@@G@K@@1@ ۠zH@@@@G@X@5@[Approximated:@ %a@]C@C@ @@@G@bG@ad@@JI@@ ~@@@nG@m@@డ #Uid%print e e@  e e#@@@@F@v@@ఐꠐ#uid e$ e'@@@F@{@@@@ F@Ġ,Approximated f(, f(8@Ġ$None f(9 f(=@; .@@@@AA@A @@ -@@@@  @@@@@@ !@@@ @@ l "@@ l "@@@డ q&Format'fprintf gAG gAM@  gAN gAU@@ @@@ @@@@  F@F@ @@@ @@@@@@ @@@@ N@@ఐ #fmtgAVgAY@ j@@  [@@ภ    (gAZ)gApA ภ  i  h4Approximated: No uid@@ M@@@G@G@ |@ภ   @@ LF@F@H@Р @@@G@G@ݠ  @@@G@ @@6@ H@@@@G@ @7F@F@ @@@G@G@ @@ML@@ vw&w@@@G@ @@U@@  @Ġ:Internal_error_missing_uidhquhq@;  @@@@AD@A @@ @@@@  @@  @@@డ &Format'fprintfii@ ii@@ @@@ 8@@@ @  0F@ F@  E@@@  5@@@ @@@  @@ @@  @@ఐ 3#fmtii@ @@ \ @@ภ ] \iiA [ภ h   +Missing uid@@ @@@ dG@ gG@ f %@ภ |  @@ PLF@ QF@ cH@ U @@@ G@ PG@ b  @@@ eG@ q D@@6@ gH@ 0@@@ RG@ a P@7F@F@ m@@@ SG@ tG@ s [@@ML@@ w&w@@@ G@ O d@@U@@  e@@@A(\W@@ 3$##$$$$$@ g@@@ YA@@ @  @@ @@ B@  @@@2[}}a@@b@ @ఠ*find_shape?l@l@ROA@@@#Env!t@@@*B@ @%Ident!t@@@+B@ %Shape!t@@@*B@ @@ B@ @@ B@ 3dccddddd@ @@@࣠@#envAulvl@PA@@23tssttttt@ ?}l~n 7@@@@@  @@"idAll@QA@@83@!I@@@@@@@@@ఠ)namespacemm@RA@@ g2Sig_component_kind!t@@@ E@ 3@)W@ @!@@@ภ%Shapemm@2Sig_component_kindmm@@&Modulemm@@;&Module$@@@ @@@DI@@A RW[ !RWc@@@ Z@@ @@-@@@ )@A@m@@డ#Env-shape_of_path#Envn  n @ n n @@)namespace2Sig_component_kind!t@@@&@@@@&@$Path!t@@@&@@@&@@&@@&@@&@.typing/env.mlitu@@C@,'@@$"@@@*@@@@*@@@@*@@@*@@*@@*@@*3@y@@@@@9ఐ)namespace.n /n '@ @@F@@@*E@*E@*@@ఐР#envBn (Cn +@@@$@@ภ&PidentNn -On 3@;&Pident$Path!t@@@+;@@@@+4@A@@D@A/typing/path.mliSTVSTi@@@ B@ఐ栐"idln 4mn 6@ð@@N@@pn ,@@u@@@*E@+U@@@@V@@@@A@6B@,@A@@@$MakeBp9@p9D@A@Т&ParamsCp9Ep9K@Б$fuelqRXqR\@гy#intqR_qRb@@ @@@,3@tm@n@o@A @@@qRT @@VA@ @@ /read_unit_shapercircx@б)unit_nameг&stringrcrc@@ @@@,3@$7!@A@@г4&optionrcrc@г!trcrc@@ @@@,@@@@@@, @@/$@@,!rc{@@@rce@@WA@@@(@_I@B @@3@-D @A3@R@@p9Ns@@БA+"nfDw  w  @@;@@#uid@@x&#Uid!t@@@,@@@,°$w  !%w  3@@7]A$desc@@'nf_descD@@@,Ű2w  43w  B@@E^A,approximated@@@@@,Ȱ>w  C?w  U@@Q_A@@A@@@@@Bw  Cw  W@@@@UYA@#33&Jw  $@%@@Ш@г6&optionSw  ,Tw  2@г;=]w  &^w  )@@aw  *bw  +@@@I3_^^_____@@@~@@@XAg;@@@A@@@@@3@@@0F;@@@A@@@@@wx X ZxA C Y@@@@ZA*delayed_nfD;@@@A@@@@@U  U  @@@@[A)local_envD;@@@A @@@:@,@@@@W  W @@@@\A@@50@@@{.6?@@~@@,1@r@#nngw  8@f@@Ш@гq'nf_descw  :w  A@@y@@@|@@,C@v@#rrmw  O@l@@Ш@гu$boolw  Qv@@|Qw@@@@,T@{@@A@w@+x X ^x X e@@;@@$NVar#var@@@,@@y h ly h y@@`A$NApp@@@,̠@@@,@@z z ~z z @@aA$NAbsi@@@,Π#var@@@,Ϡ!t@@@,Р@@@,@@{  {  @@bA'NStruct$Item#Map!t@@@/@@@/@@|  |  @@)cA&NAlias␠@@@/@@$}  %}  @@7dA%NProj㐠%@@@/=$Item!t@@@/@@:~  ;~  @@MeA%NLeaf@@C  D  '@@VfA*NComp_unit吠@@@/@@Q@ ( ,R@ ( B@@dgA&NError搠&@@@/@@_A C G@@qhA@@A@@@@@@@@@#fy h ngy h r@@гoy h v@@ @@@@@#uz z vz z @@г"nfz z z z @@@@г"nfz z @@&@@@@@#{  {  @@г)local_env{  {  @@7@@г{  {  @@@@@г{  {  @@I@@г*delayed_nf{  @@R@@@@@#|  |  @@г|  |  @|  |  @@°|  @ @гĠ*delayed_nf|  |  @@x@@@y@@@@@#ŠŰ}  }  @@гǠ*delayed_nf}  @@@@@@@#Ǡǰ~  ~  @@гɠ"nf~  ~  @@@@гΠа~  ~  @Ӱ ~  @@@@@@@@#ѠѰ  "@@@@@#Πΰ@ ( .@ ( 8@@гР&string"@ ( <@@@@@@@#Ра(A C I)A C O@@гҠ&string2A C S@@ϰ@@@@@@A@@+8U  9U  @@;@@%Thunk琠@@@/Q!t@@@/@@MU  @@_iA@@A@@@@@@@@@#TU  @@г)local_env]U  ^U  @@@@гfU  @@ @@@@@@A@@+lW  mW  @@;@@@A%Ident#Map!tܠ@@@2@@@2@@@2@@@@@@@@@Aг%IdentW  W @W W @@W  @  @г!&optionW  W  @г&*delayed_nfW  W  @@.I@@@3J @@@>K!@@#@@o"@3@I@@@ఠ)approx_nf ]](@jA@@@@@@;FE@;+@@@;DE@;,@@;-E@;*3@lSg[@@@࣠@"nf A])]+@kA@@3@,]]M@@@@@  @@ະ3*@@@;)@@@3@@A@A@3@@B@A@@A@Ѡ@@@;?@@@;>F@;;@ @@@;CF@;A@,approximated]8]D@ภ$true]G]K@;@@@M@@@AB@@A@@@ @@@@@;6F@;:3@AMb@D@E@@@@ఐR"nf/]00]2@ @@m@3].K@@i@ULA@tE@;HS@A@P@PO@h@ఠ-in_memo_tableC_OUD_Ob@VlA@@@'Hashtbl!t@@>E@<@@>0E@<@@@=E@;J@E@;O@@@@> E@> A@> E@;T@ E@;YE@;Z@@;[E@;U@@;VE@;P@@;QE@;K@@;LE@;I3qppqqqqq@@@@@@࣠@*memo_tableA_Oc_Om@mA@@=3@J_OQe)4@@@@@  @@(memo_keyA_On_Ov@nA@@:3@!T@@@@@@@@!fA_Ow_Ox@oA@@F3@N@@@@@@@@#argA_Oy_O|@pA@@K3@Z@@@@@@@@డR'Hashtbl$find``@ ``@@@!a@;!b@;@@@<4@ @@<3@@<2@+hashtbl.mli@@/Stdlib__HashtblF@ @@@@@@<@@@<@@<3@>J@A@B@@@@ఐ*memo_table` `@l@@@@ఐ(memo_key``@h@@@@G@@@ఠ#resd#a$a@6qA@@3"!!"""""@,@@@@@@@ఐ #res/a0a@@ @ @@3.--.....@9@@@Ġ)Not_found?b@b@;)Not_found#exnG@@@@@@ A@A&_none_@@A@@I@@@@@g@@@>X@Tb@@Z@@@@ఠ#rese_c`c@rrA@@ E@>E@>?@ఐɠ!focpc@@@ K@@ఐŠ#arg|c}c@@@ X@@@@Y@A@c@@ డ'Hashtbl'replacedd@ dd@@@N!a@;ܠ!b@;@@@@j@]@@@>@@>@@>@@>3@le@f@g@@@@ఐQ*memo_tabledd@6@@@@ఐJ(memo_keydd#@2@@@@ఐ#resd$d'@'@@*@@_@@@@@>/L@> 1@ఐ#rese)1q@7r@@:@os@@;@t@@@@@A`v@@3@@@@xA@E@>8@A@|@|{@A+#envfEg6=g6@@@;@@$fuelg@@#ref@@@>9@@@>;$hEI%hEW@@7tA*global_envh@@U!t@@@>>2iX\3iXn@@EuA)local_envi@@@@@>A>jos?jo@@QvA1reduce_memo_tablej@@'Hashtbl!t@@@@>D@`!t@@@>E@@>FT@@@>G@@@>Jbkck@@uwA4read_back_memo_tablek@@'Hashtbl!th@@@>M!t@@@>N@@@>Q|l}l@@xA@@A@@@@@g68m@@@@sA@#oodhEM@c@@Ш@гrshEShEV@гu#inthEOhER@@}3@'_X@Y@Z;@@@A@@@@@"@@@@@ @@@ @@@@>< @@#~~wiXf@v@@Ш@г#EnviXhiXk@iXliXm@@@ @@@@>?#@@#jo|@@@Ш@г)local_envjo~jo@@2@@@@>B5@@#rk@q@@Ш@гkk@kk@@В@г)local_envkk@@W@@@гkk@@a@@@b@@г"nfkk@@l@@@m k'@@@@>Kq@@#l@@@Ш@гll@ll@@г"nf(l)l@@@@г1l2l@@@@@5l@@@@>R@@@A@@@@343344444@@@@ఠ$bindlEoFo@XyA@@@E@@@?xF@>@%Ident#Map#key@@@>F@>@@@@?'@@?&F@>&@@@?|F@>@@>F@>@@>F@>@@>F@>3srrsssss@mg@@@࣠@#envnAoo@zA@@<3@Iop N@@@@@  @@#varoAoo@{A@@F3@!S@@@@@@@@%shapepAoo @|A@@G3@Z@@@@@@@@Р3i@@@>@@@3@@A@A@3@@B@A@~3{z@@C@A^@[3XW@@D@AE@B@A@@@@?Y@@@?XI@?U@@@@?]I@?[@)local_envp p $@డj#Map#add%Identp 'p ,@ p -p 0@@p 1p 4@ @@@@@1B@!a@12@!t @@@1A@@@1@@@1?@@1>@@1=@0typing/ident.mliTaiTa@@+Stdlib__MapF@+!@@@@@@>@F@>@@@@> @@@>@@>@@>@@>3"!!"""""@z@}@~@@@@ఐ#var4p 55p 8@@@@@ఐ%shapeAp 9Bp >@@@@@ఐΠ#envPp ?Qp B@@@,@)local_envWp CXp L@ @@!@@?!5@@s@@YD@@@>:@@@@@?i@@@@?j@@?hI@?b@@@?kI@?e@@@?a@@@@?zI@?v@@@?{I@?w@@@?u@@ఐ#envp p @@@Jp@p  @@&r@ A@QF@?@A@@@%Aఠ'reduce_wrPZrPa@}A@@@a@@@@F@?@!t@@@@!F@?@@@HF@?@@?@@?3@K|@}@~@@@࣠@#env}ArPbrPe@CA@@&3@7@2@/(@@?G@?@@?G@?@9@:%forcex@@@@@vF@?@@@@@0F@?>F@?@@?G@?@@?G@?@@@~A(reduce__y@XF@?@V@@@?G@?TF@?@@?G@?@@?G@?@;A;I@@%A)read_backz@1F@?@f@@@?G@?3!t@@@?G@?@@?G@?@@?G@?@/'+'10'+':@@B@A*read_back_{@F@?@8@@@?G@?P!t@@@?G@?@@?G@?@@?G@?@L((M((@@_AA.read_back_desc|@:F@?@2@@@HRF@?&$desc@@@HFF@?@@?G@?@@?G@?@h) )i) )@@{BA@@@@@@!t~AurPfvrPg@DA@@3tssttttt@@@@@@@@@@ఠ)local_envsjrsj{@EA@@U@@@?I@?3@%@@@@@ఐР#envsj~sj@$@@@)local_envsjsj@ @@@A@sjn@@@ఠ(memo_keytt@FA@@@@@@?I@?ؠ@F@?F@?@@?I@?3@7E>@?@@@@@@ఐM)local_envtt@@@@@ఐo!ttt@P@@/@@tt@@@,@8@@?&@A@t @@ఐ-in_memo_tableuu@\@@@@@@@?@E@@?H@?zF@HF@EF@EF@EF@EF@E~F@EzF@DRF@D^F@CF@CF@CF@CF@CF@CF@CF@CxF@CF@BF@AIF@@H@?@@@?@:@@H@?4A@?@7@@?@@?@@?@@?3>==>>>>>@}@@@@@@ఐ#envRuSu@ٰ@@@1reduce_memo_tableYuZu@ @@]R@@@?@@ఐ(memo_keykulu@(@@nH@@-@@ఐy(reduce__|u}u@}@@@{@@@@@v@@@@@@C@@ఐà#envuu@@@P@@uu@@@@@@@@@@X@@ఐ3!tuu@@@e@@@@f@@@@@@@A@@@@@@)@@@(F@@&@@@rPR@Ԡ԰@@@@@@?@@?3@@@@࣠@#envA@GA@@3@@@@@@@%paramAĠ%Thunk@;@@@;'@B@@A@A@@ఠ)local_env @HA@@@@@@33@/@&@'@@@ఠ!t@ IA@@@@@@4@@@@@@@@@ఐg'reduce_ @6@@@f@aZ@@@:@@@93@(4-@.@/$@@@@@@Рk  @@@@W@@@@VJ@@S@q@@@@[J@@Y@w)local_env9,:5AఐY @(@ @@@@FJ@@Q0@@@@@@g@@@@@h@@@fJ@@`@@@@iJ@@c@@@@_@@@@@xJ@@t@@@@yJ@@u@@@@s@@ఐ#envy#z&@@@f@}!~7@@i@@ఐ!t89@q@@J@@x@@@@y@A@@@@@@@@@F@@@@@@@@@@@@@?@@?@@?3@@@@࣠@#envAঠ$fuelJPJTAఠ@JA@@@@@@@@@H@@3@@@@*global_envJVJ`Aఠ@KA@@@@@H@@@)local_envJbJkA'ఠ@LA@@@@@H@@'@@AJOJo@@*@HHJsJv@MA@@@@I@@JNJw@@7@@@@!tA@ Jy Jz@@T@@@@3        @?YV@X@WB?@A@@0-@/@.m!@%@"@@@@+NAf@@@@I@@гm(J})J~@@@@@@@@/Jx0J@@@z@@@@%@@@@@ఠ&reduce@A@SOA@@@I@@@I@@I@@@@@I@@@@@I@@3LKKLLLLL@CQI@L@:@@@࣠@#envA_`@rPA@@3^]]^^^^^@(gh@@@@@  @@!tAst@QA@@)3rqqrrrrr@!2@@@@@@@@ఐݠ'reduce_@@@@@@@@@@@3@"A@@@@@@ఐ=#env@"@@T@@ఐ6!t?@@@@Z@@$A@@@KBA@fI@@I@A@F@@ఠ,delay_reduce@RA@@@q@@@AI@@@ @@@AI@@@@@@I@@@@@I@@@@@I@@3@@@@@@࣠@#envA@SA@@%3@2@@@@@  @@!tA@TA@@03@!<@@@@@@@@ภ%Thunk@'ఐ2#env@@@S3        @'M@@@@@)local_env@] @@ @@@AK@AK@A@ఐ:!t*+@@@f@@,F@@8@@@A @SJA@xI@AQ@A@N@@ఠ&return>?@QUA@@@ @@@A0I@A @@@A I@A@@AI@A3KJJKKKKK@@@@@@࣠@$descA^_@qVA@@3]\\]]]]]@)fg-@@@@@  @@ະ ~#uidst@ఐx!t~@-@@@@@A)@A&3@%1C@(@)@@@#uid@3#uid@@@&optionL_!t@@@ @@@ @@@3$descA@@@ @@A@Aykyk@@ix@3,approximated$boolE@@@ @@B@Ayk yk@@uy@@A ykv yk@@yw@=-@@  @@@A$@@@A#J@A'>@ С$desc Aఐx @J@L@ ݡ,approximated@ఐݠ!t@@@@@@A:@A8e@,approximated+@G@@ @@@A6J@A9q@@@@@s@A@I@A=@A@@Aఠ-force_aliases1=1J@WA@@@I@A?I@A@@@AB3      @@@@@@࣠@"nfA1K1M@/XA@@3@ @@@AAJ@A>@@@@@@  @@ఐ"nf41V51X@+@@@@,332233333@%@@@$desc>1Y?1]@ K @@ @@@AH @Ġ&NAliasNckOcq@; 5 &@@@;(@ 7ADAH@A 3@@ 0ఠ*delayed_nf]cr^c|@pYA@@ B@@@AN,@@@@@ :@@@AO0@@ =@@@AP3@@@@ఠ"nfuv@ZA@@kM@AV3uttuuuuu@C#@@@@@ఐ%force@@@@@@@AY@@AX@@ఐ預#env@@@N@A`"@@ఐI*delayed_nf@,@@N@Aa1@@&@@2@A@@@ఐ-force_aliases@@@@@@Ac3@CMF@G@H@@@@ఐT"nf@ @@S@@@@@!@@T@@@@ @@@AR@@ @@@AS@@@ఐʠ"nf@@@@@@A1P@@3@@@@A@@@@AmI@Al@@@15 @@@ఠ8reset_uid_if_new_binding@ [A@@@ =@@@AI@AoI@Ap@@AqI@An3@@@@࣠@"t'A@'\A@@3@#-U@@@@@  @@ఐ%!t+,@ڰ@@A@@@Ay@Av3.--.....@(4@@ @@@#uid:;@@@@@@Ax@@@Aw@Ġ$NoneN"O&@w@@@@@@@A@@@A3SRRSSSSS@%@@@ @Š@@@A@@@A@@@ఐV"t'g*h,@4@@c@Ġ$Somev-5w-9@@{-:|-;@@@@@AM@@@ @@@@@A@@@AU@#uid-?-B@]AǠN@A@@@A  @@c@@@@@A@@@Aj@@@ະ #uid-P-SAఐ# @ @$@!@@@@A@@@AL@A3@2 @@@ Ơ@@@AL@A@ ̠@@@AL@A@@ఐ"t'-H-J@@@@-F@@@@@A @@@A@I@A@A@@డh!<]j]k@@!a@@$boolE@@@-@@,@@+)%lessthanBA @@@@*stdlib.mli @@S@@@@ @@@AH@A@@@@A@@A@@A3        @@@@@@@డ!! ]d ]e@@#ref!a@@@@i@@h'%field0AA6@@@45@@@@@@6I@A@@@A@@A/@@ఐ$fuel) G]i@4+@@+@@@AJ@AJ@AC@@5 @@D@@@ Y]l Z]m@@WI@AO@@A@@ @@@AI@AV@ఐ )approx_nf m]s n]|@ @@@ @@@A @@@A@@Aj@@ఐF&return ]~ ]@v@@@^@@@A @@@A@@A@@ภ&NError ] ]@;DJ@BAGAH@A>@@<*NoFuelLeft ] ]@@ ] ]@@Q@@@AJ@AJ@A@@ ] ]@@@@@AJ@A@@ ]} ]@@ @@@A@AJ@A@@T @@I@A@ఐȠ!t  @}@@@@@A@A@$desc  @;@@{@@@A@Ġ)Comp_unit  @;)Comp_unit@@@@&stringQ@@@@AFAH@AO24P2I@@@A@ఠ)unit_name!!@!^A@@@@@A3!!!!!!!!@@@@@@#@@@@@A@@@@@A@@@డ/read_unit_shape&Params!"!#@ !&!'@@jh@@@BL\!<U@@@BK@@@BJ@@BI@C@A@@xv@@@BPj@@@BO@@@BN@@BM3!?!>!>!?!?!?!?!?@7F?@@@A@@@ఐM)unit_name!Q !R@ @@@@@BYL@B[L@BZ@@: @@-@@@BX@@@BW@Ġ$Some!m%!n)@ఠ!t!v*!w+@!iA@@H@@@Bb9@@@@@O@@@Bd@@@BcA@@V@@@Bf@@@BeH@@@ఐU&reduce!/!5@İ@@@R@NL@@Bu@@Bt3!!!!!!!!@Y,%@&@'@@@@ఐ#env!6!9@@@M@B|@@ఐB!t!:!;@@@ M@B}!@@)@@"@Ġ$None!<H!<L@@@@@@@@Bn@@@Bm@@@@@Bp@@@Bo@@@ఐ&return!<P!<V@԰@@@@@@B#@@@B@@B@@ภ*NComp_unit!<X!<b@;@AFAH@A@@ఐ)unit_name"<c"<l@@@@@@BM@BM@B@@" <W"<m@@@@@BM@B@@3@@ @@@A""n{@@ 3""""""""@@@@Ġ#App"#|"$|@;#App9@9@@@=@@@@BBAH@A}}@@@|@ఠ!f";|"<|@"N_A@@P@@@B3"="<"<"="="="="=@4@@@ఠ#arg"J|"K|@"]`A@@_@@@B@@@/"R|@@@@@B@@@@@B@@@@ఠ!f"c"d@"vjA@@QK@B3"c"b"b"c"c"c"c"c@\4-@.@/&@ @!@@@ఐp-force_aliases"v"w@V@@@on@@B@@ఐG&reduce""@@@@D@@>@@B@@B&@@ఐꠐ#env""@@@ M@B5@@ఐl!f""@>@@ M@BD@@&@@]E@@'7@@F@A@"9@@ఐX!f""@W@X@Y@@X3""""""""@Xb@@@$desc""@Ұ @@@@@B @Ġ$NAbs""@;@DBAH@A@@٠ఠ(clos_env""@"kA@@@@@B3""""""""@(@@@ఠ#var""@#lA@@@@@B@ఠ$body"" @#mA@@@@@B@ఠ(_body_nf# # @#nA@@@@@B+@@@>#@@@@@B0@@@@@B3@@@@ఠ#arg#$-#%0@#7oA@@ 4@@@BM@B3#(#'#'#(#(#(#(#(@rVO@P@QHA@B@C;4@5@6.'@(@)@@@ఐ,delay_reduce#?3#@?@@@@ @@@B@@@@B V@@@B@@B@@B"@@ఐ#env#Y@#ZC@D@@ @@@BN@BN@B6@@ఐ##arg#mD#nG@@@-@@@BN@BN@BJ@@9 @@NK@A@#y) @@@ఠ#env#K]#K`@#pA@@ ;@@@BM@B3########@aoh@i@j@@@ఐ T$bind#Kc#Kg@ װ@@@ O@@@B@ J@@@B@-,@@@B@@@B `@@@B@@B@@B@@B%@@Р   @@@C@@@CN@C@  @@@C!N@C@ )local_env#Ks#K|@ఐ(clos_env#K#K@@@ @@@CN@CT@ $ @ @@@C.@ @@@C/@@C-N@C' @@@C0N@C*@@@C&@ =  @@@C@N@C< @@@CAN@C=@@@C;@@ఐf#env$Kj$Km@@@ @@@C>N@C+N@C@$Kh$ K@@ @@@CN@CL@@ఐA#var$0K$1K@@@F@@@CQ@@ภ$Some$?K$@K@zఐ%#arg$IK$JK@@@@@@BN@CcN@CeN@Cd@@$VK$WK@@ߠ @@@BN@Cb@@@@@A@$`KY @@ఐp8reset_uid_if_new_binding$j$k@\@@@@@@Cs@@Cr3$m$l$l$m$m$m$m$m@@@@@@@ఐA&reduce$$@@@@>@:8@@C{@@Cz@@ఐ#env$$@ @@ N@C%@@ఐ$body$$@o@@ N@C4@@&@@W5@@'=@@ 6@I>@@ @1?@@ }@@$$@@@@@B@@@@@B@@@@ఠ#arg$$@$qA@@ M@C@ఐ&reduce$$@@@@@@@C@@C@@ఐ 3#env$$ @̰@@ 6N@C@@ఐ#arg$ $ @@@ >N@C@@&@@@A@$@@ఐà&return%%%@@@@@@@CB@@@C@@C3%%%%%%%%@NPI@J@K@@@@ภ$NApp%'%+@;I@GBAAH@A>@@;ఐ!f%$,%%-@i@@@ఐm#arg%//%02@#@@l&@@%3&%44@@ @@@CM@C.@@:@@ M@C1@G @@ .W@@@A%?%@5B@@ 13%<%;%;%<%<%<%<%<@@@@@@ 3@Ġ$Proj%MCK%NCO@;$Projc@c@@@"$Item!t@@@@BEAH@A1@@@"!@@ఠ#str%iCP%jCS@%|aA@@~@@@B 3%k%j%j%k%k%k%k%k@b@@@ఠ$item%xCU%yCY@%bA@@&@@@B @@@3%CZ@@ @@@B @@ "@@@B @@@@ఠ#str%^l%^o@%rA@@ uK@C3%%%%%%%%@4-@.@/&@ @!@@@ఐ-force_aliases%^%^@@@@@@C@@ఐ u&reduce%^r%^x@@@@ r@ n l@@C@@C&@@ఐ #env%^y%^|@ @@ M@C5@@ఐl#str%^}%^@>@@ #M@CD@@&@@ E@@'7@@F@A@%^h9@@@ఠ%nored%%@%sA@@@%@@@CK@C1@@@CK@C@@CK@C3%%%%%%%%@fpi@j@k@@@࣠@ 0AĠ"()& & @;%@@@N@@@@A@@A%@@%@@@@"3& & & & & & & & @/&&@@@@@@@ఐ堐&return&#&$@@@@@@@Cd@@@C@@C@@ภ%NProj&7&8@;@BEAH@A@@ఐ#str&C&D@H@@4@ఐ֠$item&N&O@@@#@@@CN@CN@CF@@&YC@@1@@@CN@CM@@=I@@hN@WJA@uK@CQ@A@N@ఐݠ#str&n&o@s@@3&l&k&k&l&l&l&l&l@w@@@@@$desc&x&y@ @@P@@@C @Ġ'NStruct&& @;:@ACAH@Aw@@tఠ%items& & @&tA& & @@@@@C@@@C/@@@ @@v@@@C3@@y@@@C6@@@డ&$Item#Map$find &  (&  ,@ &  -&  0@@&  1&  5@ @@t#Map#key@@@.@ !t!a@.@@@.@@.@@.@'map.mli@@+Stdlib__MapU@)@@@@@@D@@@@D%M@C@@@D@@C@@C3&&&&&&&&@f]@`@a@@@@ఐ$item'  6'  :@h@@@@@D@@ఐ}%items'  ;'  @@@@E-@@@D N@D&N@D$(@@b @@/)@Ġ)Not_found'& F `'' F i@@@@@&@@@@D*3'''&'&''''''''''@9@@@'. F V@@@@@D+@@@ఐS%nored'; F m'< F r@ʰ@@@N@@@D4|@@@D3@@D2@@ภE'N F s'O F u@D@@@a@@@D;O@D?*@@@@G+@ఠ"nf'a v 'b v @'tuA@@U@@@D-u@@X@@@D.x@@@ఐz8reset_uid_if_new_binding't v 'u v @f@@@@@@DM@@DL3'w'v'v'w'w'w'w'w@!@@@@@@ఐ%force' v ' v @@@@@@@DU@@DT@@ఐ #env' v ' v @ @@P@D\%@@ఐJ"nf' v ' v @/@@P@D]4@@&@@5@@'=@@6@@@A'  '  @@@@'  '  @@@@@CO@@@@@CR@@@ఐ䠐%nored'  '  @[@@@@@@Dc @@@Db@@Daf@@ภְ'  '  @@@@@@@DjM@Dnv@@@@w@@@A''  @@3''''''''@z@@@@@@@@X@Ġ#Abs' !' !@;#Abs@$#var@@@@@@@BAAH@A!]|!^|@@@${@ఠ#var( ! ( ! @(%cA@@@@@B3((((((((@ @@@ఠ$body(! !(" !@(4dA@@6@@@B@@@1() !@@@@@B@@@@@B@@@@ఠ'body_nf(:!!%(;!!,@(MvA@@J@@@DK@Ds3(>(=(=(>(>(>(>(>@781@2@3*#@$@%@@@ఐ ,delay_reduce(Q!!/(R!!;@ @@@@@@Dy@@@@Dxh@@@Dw@@Dv@@Du@@ఐ($bind(m!!=(n!!A@@@@#@@@D@@@@D@@@@D@@@D4@@@D@@D@@D@@DC@@ఐ ⠐#env(!!B(!!E@ {@@H@@@DM@DM@DW@@ఐ#var(!!F(!!I@`@@@@@Dg@@ภ$None(!!J(!!N@@@@=<@@@D@@@DM@D|@@(!!<(!!O@@w@@@D@DM@D@@ఐ$body(!!P(!!T@@@@@@DL@DL@D@@ @@@A@(!!! @@ఐ &return(!X!b(!X!h@ ۰@@@@@@D*@@@D@@D3((((((((@@@@@@@ภ$NAbs)!X!j)!X!n@+ఐ )local_env) !X!o) !X!x@ @@)@@@DK@DK@D @ఐ #var)!X!z)!X!}@ذ@@6@@@DK@DK@D2@ఐ $body).!X!)/!X!@@@B@@@DK@DK@DD@ఐ'body_nf)@!X!)A!X!@L@@N@@@DK@DK@DV@@)K!X!i)L!X!@@$@@@DK@D^@@j@@-K@Da@w @@F@Ġ#Var)`!!)a!!@;#Varv@h@@@@A@AH@A"{"{@@@&,z@ఠ"id)t!!)u!!@)eA@@{@@@B3)v)u)u)v)v)v)v)v@ m@@@@@@@@@@B@@@@@B@@@డ#Map$find%Ident)!!)!!@ )!!)!!@@)!!)!!@ @@L@@@1@!a@0@@@1@@1@@1@@U@@@@]@@@D@ED@@@E@@EK@D@@@D @@D@@D3))))))))@ ]V@W@X@@@@ఐd"id)!!)!!@ @@@@@D@@ఐ )local_env)!!)!!@ ԰@@@&@E"@@X@@0#@Ġ$None)##)##@!@@@@@@@E/@@@E.3))))))))@7@@@ @@@@E1@@@E0@@@ఐ ՠ&return*##*##@ @@@@@@EIT@@@EH@@EG@@ภ$NVar*'##*(##@;g @eA@AH@A`@@]ఐ"id*3##*4##@h@@t@@@EVM@EZM@EY;@@*>##*?##@@@@@EPM@EUC@@3@@6D@Ġ$Some*P##*Q#$@ఠ#def*Y#$*Z#$@*lwA@@@@@E83*[*Z*Z*[*[*[*[*[@@@@@@@@@@@E:@@@E9 @@@@@E<@@@E;@@@ఐ%force*{$ $%*|$ $*@@@@@@@E^@@E]3*}*|*|*}*}*}*}*}@/(@)@*@@@@ఐ᠐#env*$ $+*$ $.@z@@N@Ee@@ఐE#def*$ $/*$ $2@@@N@Ef!@@)@@"@ঠ#uid*$8$J*$8$M@Ġ$Some*$8$P*$8$T@@*$8$U*$8$V@@@@@EsO@En3********@D@@@@@@@@@@Ep@@@Eo @@A*$8$H*$8$\@@ @"nf*$8$`*$8$b@*xA@@@E|P@Eq@@@@@@@ఐ"nf*$8$f*$8$h@@@@@3********@i@@@ঠ#uid*$$*$$@ Ġ$None+$$+$$@+@@@@@@@E@@@E@@A+ $$+$$@@@"nf+$$+$$@+&yAQ@@@EP@E@@"@@"@@@ະ0#uid+%$$+&$$@ఐ*!t+0$$+1$$@߰@@!F@@@E@E3+3+2+2+3+3+3+3+3@+%@)@&@@@#uid+?$$+@$$@ @@-,@@@E@@@EN@E@W$@@@EN@E@]@@@EN@E@@ఐN"nf+a$$+b$$@)@@@@@EN@EN@E3@+l$$+m$$@@^6@@@A+o$ $+p%%*@@a3+l+k+k+l+l+l+l+l@@@@Ġ)Not_found+|%+%A+}%+%J@=@@@@*@@@EA@+%+%7@@ @@@EC@@@EB@@@ఐW*find_shape+%N%^+%N%h@@@@R@@@E@I@@@EB@@@E@@E@@E@@ఐ٠*global_env+%N%i+%N%s@@@n@@@EN@EN@E@@ఐP"id+%N%t+%N%v@@@@@@E@@5@@j@@@E@Ġ)Not_found+%|%+%|%@@@@@*@@@E~@+%|%@@@@@E@@@ఐ&return+%|%+%|%@ ް@@@@@@E-@@@E@@E@@ภ$NVar,%|%,%|%@٠ఐ"id, %|%, %|%@?@@K@@@EO@FO@F@@,%|%,%|%@@@@@EO@E@@1@@ @ఠ#res,'%%,(%%@,:zA@@@@@E3,),(,(,),),),),)@c@@@@@@@E@@డ*!=,<%%,=%%@@!a@@ W@@@'@@&@@%&%equalBA U@@@@ Ty Uy@@)Q@@@@@@@FN@F@@@@F@@F@@F3,\,[,[,\,\,\,\,\@@9@:@;@@@@ఐG#res,n%%,o%%@ @@@@ఐu!t,{%%,|%%@*@@'O@F@@@@ #@@@FO@F%@ఐQ&return,%%,%%@@@@i@@@F@@@F@@F9@@ภ$NVar,%%,%%@|ఐ9"id,%%,%%@@@@@@F#O@F'O@F&V@@,%%,%%@@@@@FO@F"^@@1@@_@ఠ#res,%%,%%@,{A@@m@@@E@@p@@@E @@@ డ+b$decr,%&,%&@@  #intA@@@u@@@t$unitF@@@s@@r%%decrAA @@@  E@@*@@@@ ݠ@@@F-@@@F,@@@F+@@F*3--------@?E>@?@@@@@@ఐW$fuel-%&-%& @@@ 9@@@F6@@@F5P@F9P@F7@@F@@5@@@F;O@F4!@ఐ&reduce-3& &-4& &!@b@@@@@@F>@@F=1@@ఐ#env-D& &"-E& &%@/@@O@FE@@@ఐ#res-S& &&-T& &)@J@@O@FFO@@&@@ P@{@@JQ@@@A-[%N%X@@L@@@A-]!!-^&*&7@@O]@Ġ$Leaf-i&8&@-j&8&D@;$Leaf @@@@AH@A&&@@@*1@@@  @@@@@B!@@@@@B"@@@ఐD&return-&8&H-&8&N@t@@@\@@@Fr@@@Fq@@Fp@@ภ%NLeaf-&8&O-&8&T@;YH@@@@AH@AX@@U@@@r@@@FyK@F}%@@ @@&@Ġ&Struct-&U&]-&U&c@;&Struct @[#Map!t#@@@@@@@ACAH@A'~'~@@@*}@ఠ!m-&U&d-&U&e@-fA@@#@@@B)@@@B(3--------@ @@@@@) @@r@@@B*@@u@@@B+@@@@ఠ#mnf-&i&w-&i&z@-|A@@@@@FK@F@@@FK@F~3--------@ 2+@,@-@@@డ.$Item#Map#map .&i&}.&i&@ . &i&. &i&@@.&i&.&i&@ @@@!a@-!b@-@@/@P @@@/T @@@/@@/@@/@N(e(iO(e(@@M]@(@@@@@@@FK@FK@@F@h @@@FlT@@@F@@F@@FO@@ఐ,delay_reduce.N&i&.O&i&@@@@@@@F@@@@Fe@@@F@@F@@Fk@@ఐ#env.h&i&.i&i&@S@@ @@@FN@FN@F@@.s&i&.t&i&@@@0@@@F@@@F@@F@@ఐ!m.&i&.&i&@@@^@@@FL@FL@F@@ @@@A@.&i&s @@ఐ`&return.&&.&&@@@@x@@@F@@@F@@F3........@@@@@@@ภ'NStruct.&&.&&@-ఐ۠#mnf.&&.&&@@@@@@F@@@FK@FK@F$@@.&&.&&@@@@@FK@F,@@8@@K@F/@E @@@Ġ%Alias.&&.&&@;%Alias @$@@@@ADAH@A(B(C@@@+~@ఠ!t.&&.&&@/ gA@@% @@@B03........@@@@@@@@@@@B1@@@@@B2@@@ఐѠ&return/&&/&&@@@@@@@FP@@@F@@F3////////@ )"@#@$@@@@ภ&NAlias/&&&/'&&@ؠఐ|,delay_reduce/2&&/3&&@@@@@@@F@@@@FI@@@F@@F@@F(@@ఐ#env/L&&/M&&@7@@@@@FL@FL@F<@@ఐi!t/`&&/a&&@F@@ @@@FL@FL@FP@@/k&&/l&&@@R@@@F@FL@FZ@@/u&&/v&&@@N@@@FK@Fb@@n@@mc@Ġ%Error/&'/&'@;%Error@@@@@AGAH@A(JL(J]@@@,TB@ఠ!s/&'/&'@/hA@@@@@B7@@@@@B@@@B8@@E@@@B9@@@ఐ)approx_nf/&' /&'@=@@@@@@F@@@F@@F3////////@(!@"@#@@@@ఐ&return/&'/&'@@@@@@@F@@@F@@F@@ภ&NError/&'/&'%@IఐO!s/&'&/&''@-@@@@@G L@G L@G 7@@/&'/&'(@@@@@GL@G ?@@/&'/&')@@=@@@F@GL@GI@@U @@J@@@A0  @@300000000@@@@0 ]a@@L@@@M@ @@N@@@O@*@@P@@@@Q@A@@@b@@@G @@G@@GF@GT@@@0;=@  @@@ @j@@@?@@@?@@?@@?30)0(0(0)0)0)0)0)@l@@@࣠@#envA0:'+';0;'+'>@0M}A@@"30908080909090909@j@@@@@@"nfA@0I'+'@0J'+'B@@C@@@G30J0I0I0J0J0J0J0J@|6@@@@@  @0e~A@@@GI@Gг"nf0c'+'E0d'+'G@@@@@G@@0j'+'?0k'+'H@@@@@@G @@@@ఐ7-in_memo_table0z'O'S0{'O'`@ް@@@2@@@GH@GǠ0c@@@GH@HH@G@@@G@@@Y@@@HH@GA@G@@@G@@G@@G@@G300000000@Q_W@Z@N@@@@ఐw#env0'O'a0'O'd@_@@@4read_back_memo_table0'O'e0'O'y@ @@O74H@G@@@G@@ఐ"nf0'O'z0'O'|@)@@II@G.@@ఐ*read_back_0'O'~0'O'@@@@@@@@G@@@G@@G@@GG@@ఐ#env0'O'0'O'@@@T@@0'O'}0'O'@@@@@@H@@@H@@H_@@ఐ "nf1'O'1 'O'@i@@tI@Hn@@@г1'+'K1'+'L@@@@@H@G~@@@@@A@@@g@@@H@@@H@@H@@HF@H@@@1,'+'-$@@@@@@@@?@@@?@@?@@?31817171818181818@{@@@࣠@#envA1I((1J((@1\A@@31H1G1G1H1H1H1H1H@y@@@@@@"nfA@1X((1Y((@@ R@@@H*31Y1X1X1Y1Y1Y1Y1Y@(@@@@@  @1tA&@@@H)I@H(г"nf1r((1s((@@@@@H&@@1y((1z((@@@;@@@H+ @@@@ະ#uid1((1((@ఐ?"nf1((1((@=@@@4@@@@@H>@H;311111111@@N @@@#uid1((1((@@@@@@H9@@@H8H@H<@$desc1((1((@ఐm.read_back_desc1((1((@q@@@o@lg@@HI@@HH*@@ఐ#env1((1((@s@@7@@ఐ"nf1((1((@L@@@@@HS@HQK@$desc1((1((@@@R@@0@@S@G,approximated1((1((@ఐ"nf2((2((@m@@?@@@H^@H\l@,approximated2 ((2()@@@f@@@HZH@H]x@@@2((2() @г2%ՠװ2!((2"((@@@@@Hc@H/@@@@@A@@@@@@Hs@@@Hr@@Hq@@HpF@Hl@@@27((!@@@@@@@?@@?32=2<2<2=2=2=2=2=@@@@࣠@#envA2N) ) 2O) )#@2aA@@32M2L2L2M2M2M2M2M@~@@@@@@$descA2]) )$2^) )(@2pA@@32\2[2[2\2\2\2\2\@@@@@@@@@@ఠ)read_backĠ2p)+)32q)+)<@2A@@@@@@HI@H}V@@@HI@H~@@HI@H|32}2|2|2}2}2}2}2}@".*@%@&@@@࣠@"nfA2)+)=2)+)?@2A@@@@@@ఐ)read_back2)+)B2)+)K@@@@@@@@H@@@H@@H@@H322222222@+%7@@@@@@ఐn#env2)+)L2)+)O@X@@f@@ఐ9"nf2)+)P2)+)R@@@Q@@+@@K@;A@WI@HK@A@2)+)/@@@ఠ/read_back_forceƠ2)V)^2)V)m@2A@@@I@H@@@HI@H@@HI@H322222222@g~w@x@y@@@࣠@#dnfA2)V)n2)V)q@3 A@@322222222@&2)V)Z2)V)@@@@@  @@ఐ)read_back3 )V)t3 )V)}@#@@@R@@@H@@@H@@H333333333@)8@ @!@@@@ఐ=%force3%)V)3&)V)@A@@@?@82@@H@@H@@ఐ렐#env36)V)37)V)@հ@@#@@ఐP#dnf3C)V)3D)V)@-@@e0@@3G)V)~I@@N2@@>J@@d3@TKA@mI@HR@A@O@ఐ$desc3U))3V))@Ӱ@@33S3R3R3S3S3S3S3S@q~@@@@@Ġ$NVar3e))3f))@ >ఠ!vɠ3n))3o))@3A@@!@@@H33p3o3o3p3p3p3p3p@@@@@@@@@@@@@ภ#Var3}))3~))@ ఐ!v3))3))@@@@@ @@@HJ@HJ@H333333333@;* @@@@ @@5@Ġ$NApp3))3))@ఠ#nftʠ3))3))@3A@@!@@@H333333333@W@@@ఠ#nfuˠ3))3))@3A@@!@@@H@@@ 3))@@e@@e@@@ภ#App3))3))@ఐb)read_back3))3))@@@@@@@H@@@H@@H333333333@<5@6@7.'@(@)@@@@ఐD#nft3))3))@@@5@@@HK@IK@I@@% @@* @@@H@IK@H!@ఐ)read_back4))4 )*@ @@@O@@@I@@@I@@I6@@ఐf#nfu4)*4)*@>@@f@@@I K@IK@IJ@@  @@*=@@@H@IK@I R@@j40)*@@T@Ġ$NAbs4;** 4<**@fఠ$_env̠4D**4E**@4WA@@"`@@@H34F4E4E4F4F4F4F4F@@@@ఠ!x͠4S**4T**@4fA@@"j@@@H@ఠ"_tΠ4a**4b**@4tA@@"r@@@H@ఠ"nfϠ4o**4p**!@4A@@"z@@@H+@@@<4w**"@@-@@-@@@ภ#Abs4~*&*.4*&*1@ ఐ5!x4*&*24*&*3@4@5@6@@ @@@IJ@IJ@I344444444@?XQ@R@SJ<5@6@7/(@)@*@@@ఐ̠/read_back_force4*&*54*&*D@M@@@@@@I@@I@@ఐH"nf4*&*E4*&*G@@@K@I$)@@@@*@@@I@I%K@I#1@@G4*&*H@@f3@Ġ'NStruct4 *I*O4 *I*V@Hఠ$nstrР4 *I*W4 *I*[@4A@@"֠"@@@H@@@H344444444@@@@@@ @@@@@@@ภ&Struct4 *_*g4 *_*m@Aడ4$Item#Map#map 5 *_*o5 *_*s@ 5 *_*t5 *_*w@@5  *_*x5  *_*{@ @ @@@@J@I3+*@@@I,J@ILJ@IGJ@I1@@I4@L@@@I2P@@@I0@@I/@@I.35!5 5 5!5!5!5!5!@SL@M@N@@@@ఐZ/read_back_force53 *_*|54 *_*@۰@@@W@@@IE@@ID@@ఐl$nstr5E *_*5F *_*@@@z>@@@I?K@IJK@IH*@@5Q *_*n5R *_*@@A@@@I+J@IKK@I>5@@p @@6@Ġ&NAlias5f **5g **@ఠ"nfѠ5o **5p **@5A@@#T@@@H35q5p5p5q5q5q5q5q@@@@@@@@@@@@@ภ%Alias5~ **5 **@ఐ/read_back_force5 **5 **@2@@@f@@@IT@@IS355555555@;)"@#@$@@@@ఐ0"nf5 **5 **@ @@K@IZ@@5 **5 **@@+@@@IQ@I[K@IY@@1 @@O@Ġ%NProj5 **5 **@ఠ"nfҠ5 **5 **@5A@@#@@@H355555555@q@@@ఠ$itemӠ5 **5 **@5A@@#@@@H@@@ 5 **@@@@@@@ภ$Proj5 **5 **@ఐ|)read_back5 **5 **@@@@3@@@If@@@Ie@@Id355555555@<5@6@7.'@(@)@@@@ఐD"nf6 **6 **@@@O@@@ImK@IoK@In@@% @@,&@@@Ia@IpK@Il!@ఐO$item6  **6! **@'@@@@@IbJ@IvJ@Iu3@@K6+ **@@5@Ġ%NLeaf66*+67*+@@@@@p@@p@@@ภ$Leaf6?*+ 6@*+@@@@y@Ġ*NComp_unit6L++6M++ @Vఠ!sԠ6U++!6V++"@6hA@@$ @@@H36W6V6V6W6W6W6W6W@@@@@@@@@@@@@ภ)Comp_unit6d++&6e++/@zఐ!s6n++06o++1@@@@@@@@I~J@IJ@I36t6s6s6t6t6t6t6t@"* @@@@ @@@Ġ&NError6+2+86+2+>@ఠ!sՠ6+2+?6+2+@@6A@@$9@@@H>@@@@@<?@@<?@@@ภ%Error6+2+D6+2+I@ఐ!s6+2+J6+2+K@@@@@#@@@IJ@IJ@I366666666@[) @@@@ @@U@@@A6))@@W366666666@_@@@@@Y@@@Z8@mA@@i@fa@@JV@@JUF@JSo@@@6) ) @@@@ఠ1reduce_memo_table֠6++6++@6A@@&Stdlib#ref"@ @@E@N$@ @@E@N%@E@N#E@J @@E@N&E@J@@@JF@J@@@JF@JW366666666@$@@@డ+Local_store's_table+Local_store7++7 ++@ 7 ++7 ++@@@@!a@Jl!b@Jk@@Jv@ I @@@Ju@@Jt@@Js@5utils/local_store.mli^GG^Go@@+Local_storeA@!@@@@#intA@@@JF@JX@@J@ b]@@@J@@J@@J37675757676767676@g@@@@@ఠ#argߠ77YA7@&random&optionL$boolE@@@J@@@J@-@@@J#r@@@J@@J@@Jl@డ5'Hashtbl&create7o++7p++@ 7s++7t++@@.,)@@@<#@@@<"@S@@@8@8?@98?@838i8h8h8i8i8i8i8i@m=@@@'ภ8H*@@*'@@@J@@@J38y8x8x8y8y8y8y8y@|@@@@ఐ"8Xj@8Y@#8Y@j388888888@'@@@@8[@388888888@@@@@A(8\8\A@@8]@@r@@JG@J@5@@@j8+,:8+,<@@{G@Jr@@@@@A@8++@@@@ఠ&reduce8,>,D8,>,J@8A@@@"@@@K F@J@ @@@KF@J@@@KF@J@@JF@J@@JF@J388888888@@@@@@࣠@*global_envA8,>,K8,>,U@8A@@%388888888@28,>,@8!-M-o@@@@@  @@!tA8,>,V8,>,W@8A@@0388888888@!<@@@@@@@@@ఠ$fuel8,Z,b8,Z,f@9 A@@ޠ(d@@@JI@J@@@JI@J399999999@+Q@"@#@@@డ7#ref9,Z,i9,Z,l@@!a@@@@g@@f,%makemutableAA,@@@*dd+d@@6@@@@* -@@@J@@J(@@డ($fuel&Params9?,Z,m9@,Z,s@ 9C,Z,t9D,Z,x@@(@@@BH@(@( @@FB@@7@@LC@A@9M,Z,^ @@@ఠ)local_env9X,|,9Y,|,@9kA@@!Z% @J@@@JI@J39^9]9]9^9^9^9^9^@[oh@i@j@@@డ%#Map%empty%Ident9u,|,9v,|,@ 9y,|,9z,|,@@9~,|,9,|,@ @!~!a@16@@@1<@!|@!xE@ @@.)@A@9,|,@@@ఠ#env9,,9,,@9A@@"O@@@JI@J399999999@?OH@I@J@@@Р!񡠐$fuel9,,9,,Aఐ @P@##@@@K@@@KI@K@"*global_env9,,9,,Aఐ @@+@")local_env9-3-99-3-BAఐ @7@!֠&f&e@@@K3@@K2I@K(I@K@@@KK@"/1reduce_memo_table9,,9,,@డ8ࠐ9,,9,,@߰@@@ߠ%'@@@KYI@KQ@@@KR@@KPk@@ఐG1reduce_memo_table:,,@@@@@@KWJ@KZJ@KX@@% @@@"c4read_back_memo_table:',-:(,-@డ8:1,-:2,-@@@@%ID@@@KI@K}@@@K~@@K|@@ఐd4read_back_memo_table:K,-1@@@/@@@KJ@KJ@K@@% @@@@@:W,,:X -D-I@@@A@:Z,,@@ఐ!M)read_back:f!-M-b:g!-M-k@!Q@@@#@@@K@!@@@K!J@@@K@@K@@K3:q:p:p:q:q:q:q:q@@@@@@@ఐ렐#env:!-M-l@ @@#:@@@KK@KK@K@@'@@@!@@@K!i@@@K@@K@@ఐ!'reduce_:!-M-Q:!-M-X@!Ȱ@@@#W@@@K@!@@@K!@@@K@@K@@K;@@ఐ##env:!-M-Y:!-M-\@E@@#s@@@KJ@KJ@KO@@ఐ렐!t:!-M-]:!-M-^@ư@@\@@2@@"@@@K@KJ@Kd@@:@@e@@@;@P@@z@@@@ A@1F@K @A@@@Aఠ5is_stuck_on_comp_unit:#-q-{:#-q-@;A@@@)@@@K&@@@L9F@K@@K3::::::::@8XQ@R@S@@@࣠@"nfA@; #-q-; #-q-@@*@@@K3; ; ; ; ; ; ; ; @)@&@@@KG@K%@@KG@K@,@-@@@@;/A.@@@KH@Kг"nf;-#-q-;.#-q-@@#@@@K"@@;4#-q-;5#-q-@@@C@@@K)@@@@ఐ?"nf;F$--;G$--@=@@@+@@'@@@K@K3;J;I;I;J;J;J;J;J@@N @@@$desc;U$--;V$--@'b@@*-@@@K @Ġ$NVar;e%--;f%--@>@;j%--;k%--@@)@@@K3;j;i;i;j;j;j;j;j@ @@@@@ @@*F@@@K@@*I@@@K@@@ภ%false;}'..;~'..@;;6'g@@@@B@@A;R@@;5@@@@Ġ$NApp;(..;(.. @vఠ"nf;(..";(..$@;A@@)p@@@LK@KQ@@;(..&;(..'@@)@@@KY@@@;(..(@@*@@@K^@@^@Ġ%NProj;(..+;(..0@~'"nf;(..2;(..4@;A@@$r@@;(..6;(..7@@)@@@Lz@@@;(..8@@*@@@L@@@@A@@*@@@L@@@ఐ5is_stuck_on_comp_unit;(..<;(..Q@˰@@@@@@L=@@L<3;;;;;;;;@RK@L@M@@@@ఐY"nf;(..R;(..T@ @@@@@LBJ@LDJ@LC@@  @@@Ġ'NStruct<).U.[<).U.b@@< ).U.c< ).U.d@@**@@@L @@@L @@@ @@*@@@L@@@Ġ$NAbs@@@L@@@@@+@@@L@@@@8@@+@@@L@@@ภ˰@@A=1//!=1//_@@@@@LK@LF@@@@@LI@@@@ఠ&result=2/c/o=2/c/u@=A@@F@MaF@M53========@ha@b@cB;@<@=@@@ఐ6reduce_aliases_for_uid=2/c/x=2/c/@@@@@@@@M9@@M8@@M7@@ఐ#env>2/c/>2/c/@԰@@%@@ఐ%'%force>2/c/>2/c/@%+@@@&@@@MG@%#@@@MF%^@@@ME@@MD@@MCA@@ఐ$#env>)2/c/>*2/c/@@@@N@@ఐ#dnf>62/c/>72/c/@V@@%G@@@MRM@MVM@MUb@@>A2/c/>B2/c/@@T@@@MA@MWM@MQl@@_ @@Tm@A@>L2/c/k @@ภ.Resolved_alias>S3//>T3//@7ఐࠐ#uid>]3//>^3//@~@@<@@@M]J@M`J@M_3>b>a>a>b>b>b>b>b@@@@@@ఐ&result>r3//>s3//@ @@@@#>v3//@@;@@@M\@/@@@ঠ#uid>4//>4//@*Ġ$Some>4//>4//@2ʠఠ#uid>4//>4//@>A@@-@@@L3>>>>>>>>@A@@@@@@@--@@@M@@@L @,approximated>4//>4//@*Ġ9>4//>4//@8@@@@-@@@M@@A>4//>4//@@@@@MK@M$@@@@@M '@@@ภ(Resolved>4/0>4/0@;ఐ>#uid>4/0 >4/0 @=@>@?@@=I@@@MfJ@MhJ@Mg3>>>>>>>>@O @@@@ @@@ঠ#uid>50 0>50 0A+ఠ@?A@--@@@M@@@M@,approximated?50 0?50 0&@+Ġ*? 50 0)? 50 0-@*@@@@-@@@M@@@?50 0?50 0/@@@@@MK@M@@@@@M@@@ภ,Approximated?#50 03?$50 0?@3iఐ5#uid?-50 0@?.50 0C@8@:@9@@=j=i@@@Mo@@@MnJ@MrJ@Mp3?7?6?6?7?7?7?7?7@J@@@@@@H@ঠ#uid?K60D0L?L60D0O@+]Ġ$None?S60D0R?T60D0V@1|@@@@.?.>@@@M&@@@M%@,approximated?c60D0X?d60D0d@+oĠ?j60D0g?k60D0l@@@@@.4@@@M,@@A?q60D0J?r60D0q@@M@@@M.K@M-@@P@@@M/@@@ภ:Internal_error_missing_uid?<11?<11@0@@@&@@@A?0/ / @@3????????@(@@@A@@@@@@M@@M@@MF@M@@@?/..@@@@ఠ.reduce_for_uid?>11?>11@?A@@@)~@@@MF@M@&@@@NF@M==@@@NF@M@@MF@M@@MF@M3????????@@@@࣠@*global_envA?>11?>11@?A@@#3????????@0?>11?L3I3l@@@@@  @@!tA?>11?>11@?A@@.3????????@!:@@@@@@@@@ఠ$fuel??11??11@@A@@Ѡ/W@@@MI@M@@@MI@M3????????@+O@"@#@@@డ>#ref@?11@ ?11@@@@@@@M@@M@@డ/$fuel&Params@?11@ ?11@ @#?12@$?12@@@@/+@@ @@5,@A@@)?11@@@ఠ)local_env@4@22@5@22@@GA@@(6+@M@@@MI@M3@:@9@9@:@:@:@:@:@DXQ@R@S@@@డ,#Map%empty%Ident@Q@22@R@22!@ @U@22"@V@22%@@@Z@22&@[@22+@ @ܰ @@$@A@@_@22 @@@ఠ#env@jA2/27@kA2/2:@@}A@@)!@@@MI@M3@n@m@m@n@n@n@n@n@5E>@?@@@@@Р(á$fuel@B2?2E@B2?2IAఐ @F@*p*n@@@M@@@MI@M@(ա*global_env@C2K2Q@C2K2[Aఐܠ @@+@(⡠)local_env@F22@F22Aఐy @7@(-8-7@@@N@@NI@NI@M@@@MK@)1reduce_memo_table@D2]2c@D2]2t@డ?R  @D2]2w@D2]2x@ @@@ ,  @@@N5I@N-@@@N.@@N,k@@ఐ 1reduce_memo_table@D2]2@@@ ̠@@@N3J@N6J@N4@@% @@@)54read_back_memo_table@E22@E22@డ? 砐 AE22AE22@ @@@ ,  @@@NaI@NY@@@NZ@@NX@@ఐ 64read_back_memo_tableAE22@W@@!@@@N_J@NbJ@N`@@% @@@@@A)A2/2=A*G22@@@A@A,A2/23@@@ఠ"nfA7H22A8H22@AJA@@(@@@NI@Nr3A;A:A:A;A;A;A;A;@@@@@@ఐ('reduce_ALH22AMH22@(s@@@*@@@Nx@(@@@Nw(@@@Nv@@Nu@@Nt@@ఐ#envAfH22AgH22@&@@*@@@NJ@NJ@N0@@ఐ!tAzH22A{H22@~@@=@@2@@A>@A@AH22@@ఐ5is_stuck_on_comp_unitAI22AI23@{@@@@@@N-z@@@N@@N3AAAAAAAA@We^@_@`@@@@ఐl"nfAI23AI23@ @@@@@NI@NI@N@@# @@!P@@@NI@N@ภ*UnresolvedAJ33"AJ33,@8ఐ()read_backAJ33.AJ337@(@@@*{@@@N@)@@@N(@@@N@@N@@N?@@ఐu#envAJ338AJ33;@@@*@@@NI@NI@NS@@ఐ"nfAJ33<AJ33>@]@@)<@@@NI@NI@Ng@@AJ33-AJ33?@@@H@@@N@NI@Nq@@O @@Qr@ఐ,6reduce_aliases_for_uidBL3I3OBL3I3e@@@@*@@@N@)@@@N@q@@@N@@N@@N@@ఐ #envB,L3I3fB-L3I3i@@@*@@@NI@NI@N@@ఐ "nfB@L3I3jr@s@@S@@@NI@NI@N@@8{@@F@NI@N@BNI22@@@@@@%@@@@@@*@@W@A@F@N@A@@@@1N1HA@1-0B@0/#B@0.B@.-@.$+@,X,RA@+&)@))@))@)n)l@)Z)X@)?)=@)$)"@  q@  @ {@i@o@@@@@3B{BzBzB{B{B{B{B{@u@@BsBM3m3p@/3BBBBBBBB@1@@@2@113BBBBBBBB@1@@@@Bp99 @ @,Local_reduceFBO3r3yBO3r3@BA@гР2$MakeBP33BP33@@221@11@@11A@10B@1;/{B@15/IB@/.A@.|,@,,A@+~)@*)@))@))@))@))@)|)z@  @  @ +@@@<X@@3BBBBBBBB@2+2X@2P2D2.@2'1@@11A@11(B@1n/B@1h/|B@/3.t@.,P@,,A@+*.@*P*@**@))@))@))@))@ 5 @  ;@ ^@@&@o@@@2@@@Б@ఠ$fuelCQ33CQ33@C+A@@B&@@@NG@N3CCCCCCCC@J@@@JC&Q33C'Q33@@ @A@C)Q33@@@ @ఠ/read_unit_shapeC6R33C7R33@CIA@@)unit_name@@NG@N7~.@N@@@NG@N@@NG@N3CFCECECFCFCFCFCF@u92@3@4@@@࣠(A@CVR33CWR33@@3CSCRCRCSCSCSCSCS@'C\R33C]R33@@@@@C_R33 @@ภ$NoneCgR33 @5@ @@7#@@@N@A@4G@N@A@@@&@_&@C<@=@>@@3CqCpCpCqCqCqCqCq@,F@@CyP33CzS33@ 3CwCvCvCwCwCwCwCw@@@@@C~S33@2wG;@@2r@@2pC2o2n@@@OZ@@@OY2m@2j2i@@2gG@@@O[2f@2c2b@@2`@@@O\2_@2\@@A@@@@@2[@@@2XA@ ;@@1C1@@@O]@@1@1ڠ1ِ-@@@O^@@@O_@@1@1Ӡ1Ґ29G@@@O`C1@@@OaC1@@@Ob2QG@@@Oc@@1@1͠1̐C111Ƞ@@@Oe@@@Od@@1@1à1@@@Of@@1@11:@@@OgC11@@@Oh@@1@11@@1@111@@@Oi@@1@111@@@Oj@@1@1@@A@@@@@2@@@2B@7;@@0ȐP@@@OkD0@@@Ol@@0@0@@A@@@@@2@@@2B@W;@@@A0000U@@@Oo@@@On@@@Om@@@@2@@@2B@0k@|@@@Or@@@Oq@@Op@0n@0o@/@A////@@@Ox@/@@//ԐA@Ow@//@@Ov@@Ou@@Ot@@Os@/@/@.9 G;@@.4@@B.2.1@@@Oz@@@Oy.0@.-.,@@.*.)@@@O{.(@.%.$@@@@@O|.!@..@@B..@@@@O@Dx.@@@O@@O~@@@O@@@O}.@..@@C..@@@OD. @@@O@@@O. @. @@A@@@@@.@@@.A@-H @J@@@O@-:-7-6@@@O@1@@@O@@@O@@@O@@O@@O@@O@-\@-]@, @@@@O@D+@@@O@@@O@@O@@O@, @, @+ @/@@@O@@@@O@@@O@@O@@O@+@+@+ @@@@@O@D,@@@O*@@@O@@O@@O@+@+@+@R@@@O@8@@@OD+@@@O@@O@@O@+@+@+@d@@@O@J@@@OE+@@@O@@O@@O@+@+@+@v@@@O@v@@@OA+@@@O@@O@@O@+@+@F>;B00ɠ@h@@@O@E/.@@@O@@O~@@@O@@@O@@@O@]@^@ N^[B00@@@OEJ.@@@O@@@O@@@O@ \@ ]@ @/!/ @@@O@E\,@@@OE`,-@@@O@@O@@O@ @ @ s@@@@O1J@@@O@@O@ v@ w@@@@@O@@@@OC@@@O@@O@@O@@@@/R/Q@@@O@E,@@@OC @@@O@@O@@O@@@@@@EO3r3r@@@ఠ,local_reduceEU33EU33@EA@@@/u/t@@@Q@E,@@@QE,@@@Q@@Q@@QH@QN3EEEEEEEE@@21A@!B@B@B@@@zyA@98@@ @@@@@@@@zy@po@a`@@@P@@@@డK&reduce,Local_reduceEU33EU33@ EU33EU34@@@O@@@Q@N@@@QM@@@Q@@Q@@Q@ M@ N@@]M@A@EU33@@@P@ఠ4local_reduce_for_uidF V44F V44@FA@@@//@@@Q@F!-`@@@QC@@@Q@@Q@@QH@Q3FFFFFFFF@q@@@@@డ.reduce_for_uid,Local_reduceF,V44F-V44*@ F0V44+F1V449@@@%@@@Q@$@@@QC@@@Q@@Q@@Q@@@@3$@A@FCV44@@@'@DDA@CC@75@5@@5@@@@@@3@PI@J@K@@3FQFPFPFQFQFQFQFQ@9S@@@O,Shape_reduceQ@@ıP@@5ٱO@@ñ N@@  M@A5tI@A5H@@D G@@D@@A>5A^5@ H************************************************************************F|A@@F}A@L@ H FBMMFBM@ H OCaml FCFC@ H FDFD3@ I Ulysse Gérard, Thomas Refis, Tarides FE44FE4@ I Nathanaëlle Courant, OCamlPro FFFF@ H Gabriel Scherer, projet Picube, INRIA Paris FGFG@ H FHFHi@ H Copyright 2021 Institut National de Recherche en Informatique et FIjjFIj@ H en Automatique. FJFJ@ H FKFKP@ H All rights reserved. This file is distributed under the terms of FLQQFLQ@ H the GNU Lesser General Public License version 2.1, with the FMFM@ H special exception on linking described in the file LICENSE. FNFN7@ H FO88FO8@ H************************************************************************FPFP@ e We implement a strong call-by-need reduction, following an evaluator from Nathanaelle Courant. FtFu @ J A type of normal forms for strong call-by-need evaluation. The normal form of an abstraction Abs(x, t) is a closure NAbs(env, x, t, dnf) when [env] is the local environment, and [dnf] is a delayed normal form of [t]. A "delayed normal form" is morally equivalent to (nf Lazy.t), but we use a different representation that is compatible with memoization (lazy values are not hashable/comparable by default comparison functions): we represent a delayed normal form as just a not-yet-computed pair [local_env * t] of a term in a local environment -- we could also see this as a term under an explicit substitution. This delayed thunked is "forced" by calling the normalization function as usual, but duplicate computations are precisely avoided by memoization. FC [ ]FT  @  When reducing in the body of an abstraction [Abs(x, body)], we bind [x] to [None] in the environment. [Some v] is used for actual substitutions, for example in [App(Abs(x, body), t)], when [v] is a thunk that will evaluate to the normal form of [t]. FX F[@  Memoization is absolutely essential for performance on this problem, because the normal forms we build can in some real-world cases contain an exponential amount of redundancy. Memoization can avoid the repeated evaluation of identical subterms, providing a large speedup, but even more importantly it implicitly shares the memory of the repeated results, providing much smaller normal forms (that blow up again if printed back as trees). A functor-heavy file from Irmin has its shape normal form decrease from 100Mio to 2.5Mio when memoization is enabled. Note: the local environment is part of the memoization key, while it is defined using a type Ident.Map.t of non-canonical balanced trees: two maps could have exactly the same items, but be balanced differently and therefore hash differently, reducing the effectivenss of memoization. This could in theory happen, say, with the two programs (fun x -> fun y -> ...) and (fun y -> fun x -> ...) having "the same" local environments, with additions done in a different order, giving non-structurally-equal trees. Should we define our own hash functions to provide robust hashing on environments? We believe that the answer is "no": this problem does not occur in practice. We can assume that identifiers are unique on valid typedtree fragments (identifier "stamps" distinguish binding positions); in particular the two program fragments above in fact bind *distinct* identifiers x (with different stamps) and different identifiers y, so the environments are distinct. If two environments are structurally the same, they must correspond to the evaluation evnrionments of two sub-terms that are under exactly the same scope of binders. So the two environments were obtained by the same term traversal, adding binders in the same order, giving the same balanced trees: the environments have the same hash. FvF@  Note: instead of binding abstraction-bound variables to [None], we could unify it with the [Some v] case by binding the bound variable [x] to [NVar x]. One reason to distinguish the situations is that we can provide a different [Uid.t] location; for bound variables, we use the [Uid.t] of the bound occurrence (not the binding site), whereas for bound values we use their binding-time [Uid.t]. F!!F##@ $ This var already has a binding uid F$i${F$i$@; Set the var's binding uid G$$G$%@ The [nf] normal form we receive may contain a lot of internal sharing due to the use of memoization in the evaluator. We have to memoize here again, otherwise the sharing is lost by mapping over the term as a tree. G''G(^(~@ f Sharing the memo tables is safe at the level of a compilation unit since idents should be unique G +M+OG ++@ 7 This should not happen if we only reduce closed terms G&--G&-.@  A missing Uid after a complete reduction means the Uid was first missing in the shape which is a code error. Having the [Missing_uid] reported will allow Merlin (or another tool working with the index) to ask users to report the issue if it does happen. G70u0{G;11@@-./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&typing"-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"-cGUGV =/builds/workspace/precheck/flambda/false/label/ocaml-linux-32 >10/.-,+*)('&%$#"! @@0W9џP5,.:;3GnGmGmGnGnGnGnGn@Gl@@(Asttypes0>n{T8cئ5Build_path_prefix_map0z HkGs8CamlinternalFormatBasics0%FU(Q/Tu0CamlinternalLazy0&͂7 Pˆ*Cmi_format0c˯7͗ԩmݠ*Data_types0I'Ue`wq]Ѡ70zV L{YWI*Format_doc0]mWϓ:Mݠ%Ident0">WA+9*X,Identifiable0 {d\FX'`)Load_path0I@18 ~0tGwf@Vx$(Location0a7cK_H%9)Longident0s `7mɕc$Misc0ob]6>Vê>+Outcometree0kX%d5Q/+)Parsetree0T鿁ۘ7Qu$Path0Y2kf֯J._Ϡ)Primitive0²~$xzT෠GՐ0oNՄBHG0hqXN&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__Map0L5xE|O0~,J-.Stdlib__Result06 ]/J+Stdlib__Seq0nwzG&amg+Stdlib__Set0\$;7 .Stdlib__String0s.Type_immediacy0A^abOhՠ%Types0^Y~# )Unit_info0ڀh%((Warnings0mJɒkgr