Caml1999T037zUSuOC1Diffing_with_keysA+(with_posA:utils/diffing_with_keys.mlQ8@Q8H@А!a@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;@@@A@A@G@B@@@Q88Q8]@@@@@A@@Q8=Q8?@@BA@;@A#pos@@j@@@Q8LQ8T@@AA$data@@B@Q8UQ8\@@BA@@A@Y@@@@@#@@@ @#Q8O@@@Ш@г#intQ8PQ8S@@$@@'@@@#@#Q8Y@@@Ш@А!a%Q8Z#@@)@@@'@@A@D@@DC@3@@@@ఠ(with_posR^bR^j@CA@@@$listK@@ C@ c@@@ sB@ @@@ C@ a@@@ rB@@@B@3@n@@@࣠@!lA R^k R^l@DA@@,3@9R^^R^@@@@@  @@డ$List$mapi$R^o%R^s@ (R^t)R^x@@@@#intA@@@-@!a@>!b@<@@,@@+@] @@@*T @@@)@@(@@'@(list.mliCCCu@@,Stdlib__ListX@-(@@@@%@@@ f@od@@ e@@ d@wt@@@ bnm@@@ `@@ _@@ ^3YXXYYYYY@Vb@Y@Z@@@@࣠@!n_AuR^~vR^@EA@@I@@@ |3qppqqqqq@@@@@ @@$data`AR^R^@FA@@3@(^@@@ {@@@@@@  @@ຠ3@@@@@3@@A@A@@A@#posR^R^@డ)!+R^R^@@#intA@@@~@@@@} @@@|@@{@@z'%addintBA @@@@*stdlib.mli0++0+,@@&Stdlibn@"!@@@@@@ @@@@ @@@ @@ @@ 3@R^@U@V@@@@ఐw!nR^=@]>@@=@@@ G@ G@ @@AKR^@@D@@@ G@ G@ %@@ @@k@@@ G@ +@l$data R^R^Aఐ @7@*9@@@R^R^@@"<@R^yR^@@@@@@ v@;0@@ u@@ tD@ D@ @@ఐ(!l0R^@˰@@O@@@@A@) A@UB@ '@A@$@$#@9A+(mismatchaB@UAU@А!l@ 3?>>?????@Nvo@p@q;@@ @@ @@ @C@A@GGG@BBB@@@`UaW&^@)ocaml.doc0 ! Composite change and mismatches pTqT@@@@@@@@@GA@@tUuU@@堠А!r@ 4UU@@А$diff@ ?UU@@@;G @C$Nameb#posc@@k@@@ VV@@HA#gotd@@k@@@ VV@@IA(expectede@@w@@@ VV@@JA+types_matchf@@w@@@ VV$@@KA@@VV%@@LA$Typeg#posh@@@@@ ðW&3W&;@@MA#goti@@C@ ưW&<W&C@@NA(expectedj@@pC@ ʰW&DW&P@@OA&reasonk@@oC@ ΰW&QW&]@@PA@@W&(@@QA@@A@YYY@@@@@@@@@@#rrVV@@@#ttoV@n@@Ш@гw#intVV@@ϰ@@@@ @~@#zzu V@t@@Ш@г}&string)V*V@@@@@@ @@#{2V @z@@Ш@г&string;V @@#W&W@@@Ш@А$diffHW&X@@@@ L@@@@@@A@74c32@22@@@2@2@@BA@3@W@@A+&changelCY`sY`y@А!l@ 3@m}-;@@ @@ @@ @C@A@GGG@BBB@@@Y``^1S@@@@^A@@Y`fY`h@@@А!r@ #Y`iY`k@@KА$diff@ .Y`lY`q@@V@;6 @C&ChangemED@ %D@ D@ @@@ @@Z|~Z|@@_A$Swapn#poso@@@@@@ @@@@ @@ [[@@*`A%firstp@@@@@ '[([@@6aA$lastq@@@@@ 3[4[@@BbA@@7[8[@@FcA$Mover$names@@@@@ H\I\@@WdA#gott@@ @@@ T\U\@@ceA(expectedu@@,@@@ !`\a\ @@ofA@@d\e\ @@sgA&Insertv#posw@@A@@@ $u]v]%@@hA&insertx@@D@ ']&]/@@iA@@]]0@@jA&Deletey#posz@@`@@@ +^1@^1H@@kA&delete{@@D@ .^1I^1R@@lA@@^13@@mA@@A@YYY@@@@@@@@@@@#Z|Z|@@г(mismatchZ|@А!lZ|Z|@@А!rZ|Z|@@А$diffZ|Z|@@@Z|@@@@@#Πΰ[[@@#Ра[@@@Ш@В@гӠ#int[[@@5@@@гؠ#int[[@@@@@@A@@@@ D@@#ܠܰ[@@@Ш@гߠ&string[[@@S@@@@ V@@#[@@@Ш@г堐&string[@@d@@@@ g@@@@@#!\"\@@#(\@@@Ш@г蠐&string1\2\@@}@@@@ @@#:\@@@Ш@г#intC\D\@@@@@@ @@#L\@@@Ш@г#intU\ @@@@@@ "@@@@@#]]^]@@#d] @@@Ш@г#intm]!n]$@@@@@@ %@@#v],@@@Ш@А!rư}]-@@@@ (@@@@@#^15^1;@@#^1C@@@Ш@г#int^1D^1G@@@@ @@ ,@@#^1O@@@Ш@А!l^1P@@ @@ /@ @@@@@A@@@@3@@@@ఠ&prefix|`UY`U_@FA@@@*Format_doc)formatter@@@'FD@ @'@ @ @ @@@ D@ $unitF@@@%D@ @@ D@ @@ D@ 3@(8@@@࣠@#ppf~A`U``Uc@GA@@33@@`UUr@@@@@  @@!xA`Ud`Ue@HA@@93@!J@@@@@@@@@ఠ$kindahnahr@!IA@@'Diffing+change_kind@@@ G@ 3@*Y@!@"@@@ఐ0!x,ah{-ah|@ @@e@Ġ&Change=b>b@;QtZ@@ }@RA@@E@AE@@B@GbHb@@W|{z@@@ /@@@@@0@@0@Ġ$SwapXbYb@;U@Z@@@ @AA@E@A,@;@@]AA@@@@@0@@@sEA.@jbkb@@@@@ O@@@@@P@@P@@4@@Q@Ġ$Moveybzb@;?<@D@@@ @AB@E@A @;@@GBA@@@@@Q@@@DA"@bb@@@@@ p@@@@@q@@q@@U@@r@@@ภ'Diffingbb@,Modificationbb@@;,Modification@@@ @@@BD@@A1utils/diffing.mliP  P  @@@I@@@@@Ġ&Insertcc@;Q{@V@@@ @AC@E@AA@;AZCA@O@B@@@@@@CAE@cc@@D@ @@@ @@@@@ @@ @@@ภ'Diffingcc@)Insertioncc@@;)InsertionD@@@AD@@AAO  BO  @@@H@@ @@@Ġ&Deletedd@;r@1wN@@@ @AD@E@Ab@;A{DA@O@B@@@@@@BAg@ dd@@DD@ @@@ @@@@@L@@L@@@ภ'Diffingdd@(Deletion#d$d@@;(Deletion@@@@D@@AN  N  @@@G@@ @@@@@A/ahu @@@A@1ahj@@@ఠ%style@@@ 2@@@ 1@@ 07@@ఐ!k g!= g!>@x@@D@@3@@VE@A@ g!%@@ డ*Format_doc,pp_open_stag*Format_doc /hBF 0hBP@  3hBQ 4hB]@@y'printer&Format$stag@@@ >@@@ =@4utils/format_doc.mli    @@@@@@@@ @@@ 3 F E E F F F F F@{@@@@@@ఐŠ#ppf ^hB^ _hBa@@@@@ภ$Misc nhBc ohBg@%Style shBh thBm@@%Style yhBn zhBs@@;%Style&Stdlib&Format$stag@@@@$listK$Misc%Style%style@@@@@@@A @@A&_none_@@A@@ y@ఐ蠐#sty hBt hBw@W@@&#@@@@@@L@L@e@@ hBb hBx@@@@@ L@m@@@@ i@@@K@ t@డ(kfprintf*Format_doc iz~ iz@  iz iz@@@@ @@@ !a@ 2@@ @)@@@ @!b@ .6@@@ @@@ @@@ @@ @@ @@ @RR@@>z@0+@@@@H@@@)@@(@M@@@'@V@@@$@@@%@@@#@@!@@ @@@@࣠@#ppfsA +iz ,iz@ :OA@@q@@@C3 ' & & ' ' ' ' '@@@@@ @@డ-pp_close_stag*Format_doc Biz Ciz@  Fiz Giz@@u@@@ @@@@ ?@   !@@@@@  @@@H@@@G3 S R R S S S S S@<@@@B@6@7@@@@ఐF#ppf niz oiz@@@@@`M@bM@a@@ภ"() iz iz@; # -@@@N@@@@A@@A T@@ &@ @@@@@@ZM@f2@@O@@3@ iz iz@@@@@@>+@@=K@jK@hk@@ఐ#ppf iz iz@@@]Y@@ఐ %inner iz$@ܰ%@@`e@@&@@W@'@@X@(@@Y@2)A@zG@$0@A@-@ఐɠ!x k k@@@3        @O@@@@@Ġ&Change l l@Ġ$Name l l@;S]@@ @\@@@ @A@@B@A,@;@@_@A@@@@@ @@@ ]A.ঠ#pos l lA3j@@@$l@@@3cb@@AA^@[3XW@@BAS@P3ML@@CAH@EAl@iఠ@ PA@@@@%3N@$3        @M@@@@A l l@@/@@@$O@$ @@@;@@-TD@$ҠUD@$ӠVD@$@@@$@Ġ$Type 1l 2l@;gM@Ol@@@ @AA@B@AE@;CrAA@OOO@BBB@@@ @@@ U\ANঠ#pos Rl SlA3 @@$@@@3|{@@AAy@v3sr@@BAp@m3ji@@CAg@dA@R @ mQA@SJ@%L@$O@@A el fl@@4P@$P@$P@$@@@$O@$`@@@E@@WUS@@@%g@@ }l ~l @@`^\@@@%p@@@@@q@@q@Ġ&Insert m  m @֠ঠ#pos m  m A3-ސ@@%/@@@3&%@@AA#@ A-@*   @ RA@C@@A m  m @@D@% @@@%M@%@@@$ @@@@@@ @@@Ġ&Delete m " m (@àঠ#pos m + m .A3;ː@@%)=@@@343@@AA1@.A;@8Ġ   @ SA@@@A m ) m 3@@ܠ D@%"@@@%5K@%4@@@$ @@@@@@ @@@@@ఐ%style n7= n7B@!@@@@@@%z@5@@@%y@@#intA@@@%1H@%H@%@@%H@%tL@@@%v@@@%w:@@@%x@@@%u@@%s@@%r@@%q3        @O  @ @ @@@@ఐ$kind #n7C $n7G@@@@@@%I@%I@%@@ఐO#ppf 7n7H 8n7K@4@@~$@@ภ8CamlinternalFormatBasics &Format  Gn7L Hn7RA;&Format8CamlinternalFormatBasics'format6!a@Ǡ!b@Ƞ!c@ɠ!d@ʠ!e@ˠ!f@@@@$@'#fmt$ @@@$&stringQ@@@$@B@@A@A@@@%I@%@ภ Ӡ*No_padding ;*No_paddingF!a@#@@@#@@@@ABAAee@@@j@@@V%J@%ɠ)H@%I@%@@@%I@%@ภ ,No_precision ;,No_precisionb!a@"@@@#'@@@@BAAAlLNlLq@@@o@@@r"H@@@%I@%0@ภ  .String_literal  ;.String_literalߠ!a@ Ϡ!b@ Р!c@ Ѡ!d@ Ҡ!e@ Ӡ!f@ @@@#@@@@#'#@@@#@BKAYAA$}$}$%@@@6k@". E@E@@@@&I@& I@&|@ภV c-End_of_format eU;-End_of_format+!f@!w!b@!x!c@!y!e@!z@@@$9@@@@AYAA2..3./!@@@ky@@u@KH@%H@&J@%@@@%I@%I@%I@&i@@@%I@%I@%I@&  @@@&I@&@@@mݠ#@@@%I@&@@@xJ@%%@@@%I@%@$%i. @@@@@%I@&I@&@@@@ ;21@@@%I@%@@ఐ#posn7Sn7V@@@I@&'@@1@@D@Ġ$Swap$oW[%oW_@̠ঠ#pos/oWb0oWe@3 '@@@%C )@@@3  @@AA @ 3  @@BA @ A @ @ఠ$leftBoWhCoWl@QTA@@ 6@@@%P3>==>>>>>@@@@@ఠ%rightRoWnSoWs@aUA@@ @@@@%Q@@@@@@ @@%R@@AaoW`boWx@@ @@@%TI@%S@@@E@@ @@ @@@ఐ6%stylerp|sp|@@@@_@@@&2@@@@&1@)@@@@&@@@@&H@&EH@&~H@&@@&H@&@@&H@&,@@@&.0@@@&/@@@&0@@@&-!@@&+@@&*@@&)3@jc@d@e[T@U@V@@@@ఐ$kindp|p|@:@@@@@&GI@&OI@&N@@ఐࠐ#ppfp|p|@Ű@@&@@ภp|p|AภN Mภ@@)@@@&I@&H@ภ @ @0vJ@&zH@&I@&@@@&I@&[@ภѠ3@3@;@@@&I@&j@ภBȠ#<->G@G@@@@&I@&I@&~@ภVภA^@@^@t@@@&I@&@ภ 6 k5@k@{J@&ȠH@&I@&@@@&I@&@ภ%~$@~@@@@&I@&@ภ+,". @@@@@'I@'I@'@ภ2?@@@H@&H@&H@&H@'J@&@@@&CI@&|I@&I@&I@&I@'0@@@&DI@&}I@&I@&I@&I@'&@@@'I@'@@@4#/@@@&I@' @@@?)J@&- !"9@@@&I@&@@@K56)*+B@@@&I@&!@@@VGJ@&`@345=@@@&I@&-@)%i<->%i. @@]@@@&I@'I@'9@@ @@`VIQ@@@&BI@&{C@@ఐ$leftp|p|@L@@oI@'&R@@ఐ%rightp|p|@Z@@wI@''a@@@@ 1b@Ġ$Moveqq@ঠ#gotqqA3 @@@%\ @@A3  @@@A @ 3  @@BA @ A @ ఠ @7VA@ @@@%cf@(expected4q5qA3 @@@%^ @@B3  @@@A @ 3  @@AA @ A @ ఠ @OWA@ @@@%g~@@AGqHq@@@@@%iI@%h@@@>@@ @@ @@@ఐ%styleXrYr@@@@ E@@@'2@ @@@'1@@o@@@'@v@@@' H@'EH@'~H@'@@'H@'@@'H@', @@@'.@@@'/ @@@'0@@@'-!@@'+@@'*@@')3@gd@f@ePM@O@N@@@@ఐ $kindrr@ @@ @@@'GI@'OI@'N@@ఐ Ơ#ppfrr@ @@ &@@ภwvrrAuภ4 3ภ@@@@@'I@'H@ภ @ @vJ@'zH@'I@'@@@'I@'[@ภ3@3@!@@@'I@'j@ภƠB"->G@G@@@@'I@'I@'~@ภڠV~ภ'^&@^@Z@@@'I@'@ภk@k@aJ@'ȠH@'I@'@@@'I@'@ภ ~ @~@l@@@'I@'@ภ". @@@@@(I@(I@(@ภ%&@@H@'H@'H@'H@(J@' @@@'CI@'|I@'I@'I@'I@( @@@'DI@'}I@'I@'I@'I@(&@@@(I@(@@@#/@@@'I@( @@@%)J@'- !"9@@@'I@'@@@156)*+B@@@'I@'!@@@<GJ@'`@345=@@@'I@'-@(%i->%i. @@C@@@'I@(I@(9@@ @@ o`VIQ@@@'BI@'{C@@ఐ(expectedrr@K@@oI@(&R@@ఐ#gotr @Z @@vI@('`@@ @@ a@@@Ak @@ 3@&@@@ ` @@  v@  @@  @  A@ :D@(` @A@ @  @ )Two_cycleD@  @  @^A@БA+!tED P WD P X@@;@@@A@@@@(b@@@@(c@@(d@@@@$D P R%D P j@@@@3XA@@AВ@г&string2D P [3D P a@@3)(()))))@ X  @ @ ,;@@@A4@@@(m@(a@@@@@@@@@@@@г%&stringJD P d&@@,'@@@7(@@*@@*)@3CBBCCCCC@@@@ఠ&createZE k q[E k w@iYA@@@@@(F@(q@F@(v@F@(@@@(F@(w@@(xF@(r@@(sF@(p3ihhiiiii@@jd@@@࣠@"kxAE k xE k z@ZA@@#3zyyzzzzz@0E k mF  @@@@@  @@"kyAE k {E k }@[A@@/3@!:@@@@@@@@డ%"<=F  F  @@!a@@$boolE@@@3@@2@@1*%lessequalBA@@@@)))Z@@U@@@@WF@(@@@@(~@@(}@@(|3@5Af@8@9@@@@ఐ\"kxF  F  @A@@{@@ఐU"kyF  F  @@@@@@@@@@(I@($@@ఐ~"kxF  F  @c@@2@@ఐv"kyF   F  @;@@>@@@@@@@@(E@@ఐ"kyF  F  @Q@@T@@ఐ"kx*F  @@@_@@@@#H@(b@0F  @@%d@A@F@(@A@@@@+%A@@@@@3/../////@@@=C C I>G  @ 354455555@ @@@!tF;@@4@@@@@(@@@@(@@(@@@@WA  XA  @@@@f\AA@&create@&@@@(@,@@@(*@@@(@@(@@(@pB  !qB  B@@]A@@БA+88~A  A  @@:@@@В@г9&stringA  A  @@A3@YK;@@@@S@@@(@(@@@@B@@@?@A @@@гI&stringA  A  @@Q@@@\@@O@@3@p@APO@OOB  %B  +@б@гP&stringB  -B  3@@X3@wu@A@@б@гW&stringB  7B  =@@_ @@г\!tB  A]@@c^@@j _@@q`@@s@ba@@c@3@xv@A3@@@@  C C F@@@@@w  To detect [move] and [swaps], we are using the fact that there are 2-cycles in the graph of name renaming. - [Change (x,y,_)] is then an edge from [key_left x] to [key_right y]. - [Insert x] is an edge between the special node epsilon and [key_left x] - [Delete x] is an edge between [key_right] and the epsilon node Since for 2-cycle, knowing one edge is enough to identify the cycle it might belong to, we are using maps of partial 2-cycles. v  @@@@@@@@  @@$SwapGH  H  @aA@гР#Map$MakeH  H  @  H   H  @@@3@@A@@@>=@==@@@=@=@:!@@@#Ord+Stdlib__Map+OrderedType#key@;@@@A!t@@@*\@@@@'map.mlin::n::@@@@r@A@!t@;!a@*[@A@A@I@B@@@I V ZI V e@@@@&D@A@%empty!a@*Z@@@*Y@$L  %L  @@8E@@#add@=@@@*X@!a@*V@  @@@*W$ @@@*U@@*T@@*S@@*R@CO  DO  @@WF@@+add_to_list@@@@*Q@!a@*N@>$listK@@@*P@@@*OI @@@*M@@@*L@@*K@@*J@@*I@mX  nX  @@G@@&update@I@@@*H@@&optionL!a@*C@@@*G  @@@*F@@*E@v@@@*Dz@@@*B@@*A@@*@@@*?@^^@@H@@)singleton@u@@@*>@!a@*=@@@*<@@*;@@*:@jW[jW{@@I@@&remove@@@@*9@!a@*7@@@*8@@@*6@@*5@@*4@oo@@J@@%merge@@@@@*3@`!a@*,@@@*2@k!b@**@@@*1t!c@*(@@@*0@@*/@@*.@@*-@@@@*+@@@@*)@@@*'@@*&@@*%@@*$@ vY] x@@ K@@%union@@@@@*#@!a@*@ @@@*"@@*!@@* @@*@@@@*@@@@*@@@*@@*@@*@@*@9fj:f@@ML@@(cardinal@)!a@*@@@*#intA@@@*@@*@RS@@fM@@(bindings@B!a@*@@@* @>@@@*@@@*@@@*@@*@s8<t8a@@N@@+min_binding@c!a@* @@@* @[@@@* @@@* @@* @bfb@@O@@/min_binding_opt@!a@*@@@*#@{@@@*@@@*@@@*@@*@JNJ|@@P@@+max_binding@!a@*@@@*@@@@*@@@)@@)@484[@@Q@@/max_binding_opt@!a@)@@@)`@@@@)@@@)@@@)@@)@ @@R@@&choose@ݠ!a@)@@@)@@@@)@@@)@@)@  @@S@@*choose_opt@!a@)@@@)@@@@)@@@)@@@)@@)@*+@@>T@@$find@@@@)@!a@)@@@)@@)@@)@BC@@VU@@(find_opt@@@@)@7!a@)@@@)۠ @@@)@@)@@)@_IM`Is@@sV@@*find_first@@=@@@)$boolE@@@)@@)@\!a@)@@@)@T@@@)ܠ@@@)@@)@@)@    D@@W@@.find_first_opt@@f@@@))@@@)@@)@!a@)@@@)'@@@@)Ӡ@@@)@@@)@@)@@)@"*"."*"l@@X@@)find_last@@@@@)U@@@)@@)@!a@)@@@)@@@@)ɠ@@@)@@)@@)@#_#c#_#@@Y@@-find_last_opt@@@@@)|@@@)@@)@֠!a@)@@@)z@@@@)@@@)@@@)@@)@@)@$y$}$y$@@Z@@$iter@@@@@)@!a@)$unitF@@@)@@)@@)@ @@@) @@@)@@)@@)@-%%.%& @@A[@@$fold@@ @@@)@!a@)@#acc@)@@)@@)@@)@0@@@)@  @@)@@)@@)@Q'%')R'3'l@@e\@@#map@@!a@)!b@)@@)@M @@@)Q @@@)@@)@@)@p(e(iq(e(@@]@@$mapi@@N@@@)@!a@)!b@)@@)@@)@q @@@)u @@@)@@)@@)@))))@@^@@&filter@@r@@@)@!a@);@@@)@@)@@)@ @@@)@@@)@@)@@)@****@@_@@*filter_map@@@@@)@!a@)O!b@)@@@)@@)@@)@@@@) @@@)@@)@@)@ ,, ,,?@@`@@)partition@@@@@)@!a@)@@@)@@)@@)@ @@@)@@@@)~@@@@)@@)}@@)|@@){@.../%@@#a@@%split@@@@)z@!a@)v@@@)y@ @@@)u@@@@)w@@@@)x@@)t@@)s@@)r@<$0'0+=$0'0\@@Pb@@(is_empty@,!a@)q@@@)p@@@)o@@)n@S022!T022;@@gc@@#mem@/@@@)m@H!a@)l@@@)k@@@)j@@)i@@)h@o32l2pp32l2@@d@@%equal@@!a@)c@@@@)g@@)f@@)e@m@@@)d@s@@@)b#@@@)a@@)`@@)_@@)^@722723-@@e@@'compare@@!a@)Y@]@@@)]@@)\@@)[@@@@)Z@@@@)Xm@@@)W@@)V@@)U@@)T@=4(4,=4(4a@@f@@'for_all@@@@@)S@!a@)Od@@@)R@@)Q@@)P@ @@@)Nn@@@)M@@)L@@)K@A45A450@@g@@&exists@@@@@)J@!a@)F@@@)I@@)H@@)G@ @@@)E@@@)D@@)C@@)B@F55F55@@h@@'to_list@!a@)@@@@)A@@@@)?@@@)>@@@)=@@)<@&M6~6'M6~6@@:i@@'of_list@ՠ@ @@@);@!a@)8@@):@@@)9(@@@)7@@)6@GQ66HQ67@@[j@@&to_seq@7!a@)4@@@)5&Stdlib#Seq!t@9@@@)3@@@)2@@@)1@@)0@nW77oW77@@k@@*to_rev_seq@^!a@).@@@)/'#Seq!t@]@@@)-@@@),@@@)+@@)*@[8A8E[8A8n@@l@@+to_seq_from@n@@@))@!a@)'@@@)(P#Seq!t@@@@)&@@@)%@@@)$@@)#@@)"@_88_88@@m@@'add_seq@l#Seq!t@@@@)!@!a@)@@) @@@)@  @@@)Ơ@@@)@@)@@)@d99d99@@n@@&of_seq@#Seq!t@@@@)@!a@)@@)@@@)@@@)@@)@ h:: h::>@@o@@@@9K@;'9@БA+!tHUI  VI  @@;@@EAc!t@@@(@@@@`I  aI  @@@@o_A@@Aг )Two_cyclelI  mI  @pI  @@@3gffggggg@c#;@@@A+@@@(@(@@@@@@@@@@@@@@3tssttttt@o@@@@J  J  @@@?@@@(@E@@@(h@@@(@@(@@(3@LF@@@'compare@`A@@@@(@@@@(@@@(@@(@@('б@г'!tJ  J  @@/@@@($@@б@г/!tJ  J  @@7@@@(2@@г7#intJ  J  @@?@@@(>@@@@@(A@@@#@@(D& @@XWA@@@V@@@(@U@@@(T@@@(@@(@@(S@డq'compare&StdlibJ  J  @ J  J  @@@!a@@W@@@9@@8@@7(%compareBAK@@@@J,,K,[@@IW@@б@гΠih@@@@(e@б@гؠed@@@@(a@гa`@@@@(]@@ @@(\@@@@([@B=A@@@@@@)@@@@)@@@)@@)@@)I@) @A@KJ  N@@O@@A@@@@@3GFFGGGGG@@@UH  VK  @ 3MLLMMMMM@H@@@@SZK  @.I;@@@A  @@@+@+@@@@-@@@)A@(I;'@A@A@#"@@!@@@A@ @@@+@@@@"@@@+@@@@@+@@@+@@+@@+@@+@@ @ @@@@+@ @(@@@+@@@+0@@@+@@@+@@+@@+@@+@@@@3@@@+@@@@@+@@@+@@+@O@@@+S@@@+@@+@@+@@+@@@@R@@@+@b@@@+@@+@@+@@@@a@@@+@q@@@+u@@@+@@+@@+@@@@@v@@@+@ޠ@@@+@٠@@@+Ԡ@@@+@@+@@+@@+@@@@+@@@@+@@@+@@+@@+@@+@@@@@@@@+@@Ơ@@@+@@+@@+@@+@@@@+@@@@+à@@@+@@+@@+@@+@@@@͠@@@+@@@+@@+@@@@ڠ@@@+@@@@+נ@@@+@@@+@@+@@@@@@@+@@@@+۠@@@+@@+@@@@@@@+@@@@+ࠠ@@@+@@@+@@+@@@@@@@+@@@@+䠠@@@+@@+@@@@.@@@+@.@@@+頠@@@+@@@+@@+@@@@E@@@+@B@@@+@@@+@@+@@}@|@X{@@@+w@X@@@+@@@+@@@+@@+@v@s@r@d@@@+@tq@@@+r@@+@@+@m@j@i@s@@@+@h@@@+dl@@@+@@+@@+@c@`@_@@@@@,^@@@,@@,@[@@@,@@@@,@e@@+@@+@@+@W@T@S@@@@@, R@@@, @@, @Q@@@, M@@@@, @^@@,@@@,@@,@@,@L@I@H@@@@@,G@@@,@@,@٠F@@@,@@@@,@P@@,@@,@@,@B@?@>@@@@@,=@@@,@@,@<@@@,8@@@@,@I@@,@@@,@@,@@,@7@4@3@@@@@,&@2.@@@,%@@,$@@,#@:@@@,"+@@@,!@@, @@,@*@'@&@@@@@,.@%@!!@@,-@@,,@@,+@1,@@@,*@))@@,)@@,(@@,'@@@@@@@,3@A@@@,2E@@@,1@@,0@@,/@@ @ @@F@@@,:@ @@,9@@,8@X@@@,7\@@@,6@@,5@@,4@@@@@]@@@,B@@@@,A@@,@@@,?@r@@@,>v @@@,=@@,<@@,;@@@@@w@@@,J@@@@,I@@,H@@,G@@@@,F@@@,E@@,D@@,C@@@@@@@@,T@@@@,S@@,R@@,Q@@@@,P@@@@,N@@@@,O@@,M@@,L@@,K@@@@@@@,\@Ġ@@@,[@̠@@@,X@ؠ@@@,Y@ؠ@@@,Z@@,W@@,V@@,U@@@@@@@,_@@@,^@@,]@@@@@@@,d@@@@,c@@@,b@@,a@@,`@@@@@@@@@,m@@,l@@,k@ @@@,j@@@@,i@@@,h@@,g@@,f@@,e@@@@@@@@@,v@@,u@@,t@&@@@,s@,@@@,r@@@,q@@,p@@,o@@,n@@@@@0@@@,~@@@@,}@@,|@@,{@E@@@,z@@@,y@@,x@@,w@@@@@I@@@,@@@@,@@,@@,@^@@@,@@@,@@,@@,@@@@k@@@,@k@@@,@@@,@@@,@@,@@@@@~@@@,@@@,@@@,@@@,@@,@@@@~@@@,zwv@@@@,@@@,@@@,@@,@u@r@q@p@@@,lk@@@@,@@@,@@@,@@,@j@g@f@@@@,@Рe@@@,a`@@@@,@t@@,@@@,@@,@@,@_@\@[@ZY@@@@,@X@@,@@@,@^@@@,b@@@,@@,@@,@T@Q@P@ON@@@@,@M@@,@@@,Q@@@,@@,@I@F@@5@@H  5@6@8$MoveJL  !L  %@bAAР$Misc&Stdlib&String#Map$MiscL  (L  ,@L  -L  3@@L  4L  :@ @L  ;L  >@@@&3@  @mlA@cbA@_^@XW@DC@)(@  @@@@@@@sr@^]@ML@87@'&@@@@@@@@ih@TS@DC@/.@@@@@@@@lk@UT@>=@)(@@@@@@@@ ,@@@@ $L  d@e@a&DefineYK 0O A H 1O A N@ ?A@Т!DM <O A O =O A P@УРd$Defs'Diffing KO A Q LO A X@  OO A Y PO A ]@@3 H G G H H H H H@A@4@@ @@"eq@"eq aO A h bO A j@+ @;@@@A @@@;@@@@ nO A c oO A r@@A@ }cA@@Aг $unit xO A n @@& @@ @@$leftL;@@@A@@@@@7@@@@f@@A@%rightL;@@@A@@@@@@@@mA@A@$diffL;@@@A@@@@@@@@tC@A@%stateL;@@@A@@@@@@@@{D@A@@E@Б-Internal_defsN Q ~  Q ~ @ jA@БA+$leftO R   R  @@;@@A $left@@@;@@@;@@@@ R   R  @@@@ eA@@Aг(with_pos R   @г!D R   R  @ R   R  @@@#3        @@jhA@dbA@_]A@ZXA@@@ dA>;@@@AF@@@;$@;@@@@4@@@1@@ @@@@!4@@6@@65@3        @@@A+%rightP!S  !S  @@;@@A!%right@@@;)@@@;+@@@@!S  !S  @@@@!#fA@@Aг(with_pos!S   @г!D!(S  !)S  @!,S  !-S  @@@#3!$!#!#!$!$!$!$!$@Q|2;@@@A:@@@;2@;(@@@@(@@@%@@@@@4 (@@*@@*)@3!3!2!2!3!3!3!3!3@@@A+$diffQ!HT  !IT  @@;@@8A$left@@@;7$%right@@@;8+$diff@@@;9@@@;=@@@@!fT  !gT  @@@@!ugA@@Aг(mismatch!pT   @г"!D!zT  !{T  @)!~T  !T  @@@13!v!u!u!v!v!v!v!v@S~@;@@@AH@@@;H@;6@@@@(@@@%@@@@г8!D!T  !T  @?!T  !T  @@@G@@гB!D!T  !T  @I!T  !T  @@@Q.@@@d/!T  K@@M@@ML@3!!!!!!!!@1@@A+"eqR!U  !U  @@;@@A!i@@@;Q@@@@!U  !U  &@@A@!hA@@Aг $unit!U  " @@3!!!!!!!!@Q;@@@A#@@@;V@;P@@@@@@@@@@@@@@3!!!!!!!!@ @@A+%stateS!V ' 0!V ' 5@@;@@A%state@@@;Y@@@@!V ' +!V ' ?@@@@"iA@@Aг !D"V ' 8"V ' 9@"V ' :@@@3!!!!!!!!@6PJ$;@@@A,@@@;^@;X@@@@@@@@@@@ @@ @3" """ " " " " @ @@@gaA@A@A@d^A@:4A@@3""""""""@<6@@""Q ~ "#W @ E@3""""""""@E@@@@"'Q ~ @@$DiffT"3X F O"4X F S@"BkA@гР\&Define'Diffing"CX F V"DX F ]@ "GX F ^"HX F d@@@!D7$Defs&change@;@@@AC&change$left@@@;c%right@@@;d "eq@@@;e$diff@@@;f@@@;b@@@@ff4@@@@`T@@@%patch@;@@@A5@@@;a@@@;`@@@@g57g5O@@@@tU@A@*Parameters@-update_result@;@@@A@@@@@kk@@@@V@A@&weight@!@@@;#intA@@@;@@;~@ m m@@W@@$test@]%state@@@;}@d$left@@@;|@k%right@@@;{&Stdlib&resultx"eq@@@;y~$diff@@@;z@@@;x@@;w@@;v@@;u@<q>B=q>w@@X@@&update@g@@@;t@%state@@@;sb@@@;r@@;q@@;p@UwVw%@@Y@@@@YjZ|@Z@@!S@$diff@%state@@@;o@%arrayJ$left@@@;n@@@;m@%right@@@;l@@@;k@@@;j@@;i@@;h@@;g@%@@[@@@@~@!\@@ӱ&Simple@@#Arg@@@@;@@@;@@;@@@@@@@@;@@@@;@ @@@;@@@;@@@;@@@;@@;@@;@@;@'@@@@@@;@'@@@;+%state@@@;@@;@@;@;@@@@@@@z^@@@ӱ-Left_variadic@@Y@@@@;@@@;@@;@@@@@V@@@;@\@@@;@b@@@;j@@@;o@@@;@@@;@@;@@;@@;@'@@@R@@@;@@@@;@%state@@@;@Ԡ$left@@@;@@@;@@;@@;@@;@K@@@@@@S}T@`@@@ӱ.Right_variadic@@g@@@@;f@@@;@@;@mn1@@c@b@a@@@;@`@@@;@_@@@;^[Z@@@;Y@@@;@@@;@@;@@;@@;@'@U@T@@@@;@S@@@;@%state@@@;@<%right@@@;@@@;@@;@@;@@;@K@`@@US@@@7@Jb@@@@3$\$[$[$\$\$\$\$\@@A@oiA@-'A@A@A@@@O@@@Рؠ-Internal_defs$|X F e$}X F r@@A@~A@B@$A+%patch"[(_cj(_co@@;@@A(@@@<@@@<@@@@(_ce(_c@@@@(qA@@Aг$list(_c @г0composite_change(_cr(_c@@3((((((((@Q);@@@A1@@@<@<@@@@!@@@@@@@@+ !@@#@@#"@3((((((((@@@*Parameters6^(a(a@(uAБУР*Parameters$Diff(b(b@ (b(b@@3((((((((@8`Z@A @@i&T-update_result)b) b@+ @;@@@A%state@@@<@@@@)b)b@@@@)&rA@@Aг !D)#b)$b@)'b@@@,@@@@.@@@@=)@@@=(@@='@E"@@@/@@@@=&@@@@=%@@@@=$}|@@@="{@@@=#@@@=!@@= @@=@@=@%@w@v0@3@@@=@v@@@= ;^@@@=@@=@@=@:@s@@v:@1@H%@@@=:@@@=9@@=8@G@@2@@@@=7@@@@=6@@@@=5à&@@@=3+@@@=4@@@=2@@=1@@=0@@=/@k@@3@yV@@@=.@<@@@=-F@@@=,@@=+@@=*@@@@)b@@@(key_left4)c)c@б@г $left!D)c)c@ )c)c@@@@@@=;3))))))))@kj^]:9@A @@г)&string)c)c @@ @@@=<@@@@@==@@@)c @@*sA@ @@)key_right5)d )d @б@г %right!D* d *d @ *d *d $@@@@@@=>3* * * * * * * * @<Z(@A @@г)ߠ&string*!d (*"d .@@ @@@=?@@@@@=@@@@*,d  @@*:tA@ @@@uC@< @@3*+*****+*+*+*+*+@ >@A 3*.*-*-*.*.*.*.*.@<@A*;a*<e/4@@@*>a@@3*5*4*4*5*5*5*5*5@C@@&SimpleX_*Kg6?*Lg6E@*ZA@Т$Impl7`*Wg6F*Xg6J@Р*Parameters*`g6K*ag6U@3*X*W*W*X*X*X*X*X@g@@@@xH@@@5@@@@БР+$Impl*h`i*h`m@@ 3*z*y*y*z*z*z*z*z@$6@/@4*vA9@@@@A3********@@@*h`d @@@3********@ @@A+-partial_cycle8a*k*k@А!l@=Z3********@;@@=X@@=Y@B@A@GG@BB@@@*k*n@'S2 Partial 2-cycles *jos*jo@@@@@@@@@*wA@@*k*k@@)6А!r@=[+*k*k@@)A@;3 @B$Left9*@@@=\ %state@@@=]Ib@=^@@*l*l@@*xA%Right:*@@@=` %state@@@=a6b@=b@@+m+m@@+yA$Both; %state@@@=dtb@=eLb@=g@@+nf@@+'zA@@A@YY@@@@@@mj@@\@#JJ+$l+%l@9@гL#int+.l+/l@@T@@гQ!D+:l+;l@X+>l+?l@@@`@@А!l^+Gl\@@@@^@#ZZ+Lm+Mm@I@г\#int+Vm+Wm@@d@@гa!D+bm+cm@h+fm+gm@@@pŰ@@А!rnʰ+oml@@@@n@#jj+tn+un@\@гl!D+n+n@s+n+n @@@{@@А!ly+n +n@@А!r}+n@@@@}@@A@㠰(3+b@@@@@@@@3++++++++@@@@ఠ$edge<+qZb+qZf@+{A@@@@@@=b@=~@&@@@=b@=@@@@=b@=@@@@>#b@>@L@'@@@>,@"@@@>-@@>+@4@@@>/@/@@@>0@@>.@@@>*b@>@@>b@=@@=b@=@@=b@=@@=b@=}3++++++++@si-@@@࣠@%state>A, qZg, qZl@,|A@@Y3,,,,,,,,@f,qZ^,yDf@@@@@  @@!x?A@,qZn,qZo@@`@@@=3,,,,,,,,@"q@@@@@  @,5}Ai гl$left,2qZp,3qZt@@t@@@=@@,9qZm,:qZu@@@{@@@@!y@A@,EqZw,FqZx@@}@@@=3,?,>,>,?,?,?,?,?@(5-@0@%@@@  @,\~A г%right,YqZy,ZqZ~@@@@@=@@,`qZv,aqZ@@@@@@@@@ఠ"kxA,rr,sr@,A@@@@@=f@=3,p,o,o,p,p,p,p,p@2?7@:@/@@@@ఠ"kyB,r,r@,A@@r@@@=f@=@@ @@@@ @@=@@డ#(key_left,r,r@@@@@=T@@@=S@@=R@@  @@@ @@@=@@@=@@==@@ఐ!x,r,r@z@@@@@=O@$data,r,r@*4 @@-@@@=g@=g@=]@@6 @@a^@@డd)key_right,r,r@@@@@=W@@@=V@@=U@@ð  @@@ @@@=@@@=@@=~@@ఐà!y-r-r@@@>@@@=@$data-r-r@*u @@-@@@=g@=g@=@@6 @@@@x @@@@@@=@A@-"r@@@ఠ$edgeC--s-.s@-<A@@T@~@@@=f@=@{@@@=f@=@@=f@=ܠ@@@@>f@> @@@@>f@> @@> f@=@@@=f@=3-Q-P-P-Q-Q-Q-Q-Q@@@@@@@@డ+"<=-lt-mt@ð@@@@@@=f@=@@@@=@@=@@=@@ఐ"kx-t-t@(@@,@@ఐ "ky-t-t@4@@$g@=;@@@@@@@=g@=A@ภ$Left-u-u@;Ր@@=|@C@@C@A@@ఐ!x-u-u@j@@@@@=^@#pos-u-u@+) @@@@@=f@=f@=l@ఐɠ%state-u-u@@@w@@ఐĠ!x-u-u@@@@@ఐ!y-u-u@p@@@@-u-u@@f@=@@Q-u@@ @@@=@ภ%Right.w .w%@;^@CA@C@A@@ఐ!x.w'.w(@Ű@@R@@@>@#pos.w).w,@+ @@,@@@=f@> f@>@ఐ$%state.+w-.,w2@@@y@@ఐ!x.:w5.;w6@@@@@ఐ!y.Fw7.Gw8@˰@@@@.Jw4.Kw9@@f@>@@N.Ow:@@]f@=@.St@@_@A@.Us@@@డf&create)Two_cycle.gyDJ.hyDS@ .kyDT.lyDZ@@@@@@(@@@@(@@@(@@(@@(@ @ @@@@@@>@@@@>@@@>@@>@@>3..~.~.....@/c\@]@^@@@@ఐ%"kx.yD[.yD]@:@@=@@@>%f@>'f@>&@@ఐ%"ky.yD^.yD`@M@@K@@@>$f@>)f@>(+@@O @@,@@ఐ$edge.yDb@4@@7@@[@@@@@@>1>@t@@m@@@O@A@b@>7@A+k. : Compute the partial cycle and edge associated to an edge .p.pY@@@@@@@@@࠰@ఠ*merge_edgeD.{hp.{hz@.A@@@- @>b@>W-@>b@>X@@@>Vb@>9@.]*b@>`b@>a@@@>_b@>N@@@>Mb@>>&b@>@@@>b@>?@@>@b@>:@@>;b@>83// / /////@rk@l@m@@@࣠@"exFA/'{h{/({h}@/6A@@;3/ /// / / / / @H//{hl/0@@@@@  @@"eyGA/;{h~/<{h@/JA@@>3/4/3/3/4/4/4/4/4@!R@@@@@@@@@ఐ-"ex/Q{h/R{h@@@d3/I/H/H/I/I/I/I/I@"V@@@@@@ఐ("ey/`{h/a{h@ @@b@@@@@x@i@@>G@@ఠ"exH/x|/y|@/A@@@>I3/r/q/q/r/r/r/r/r@)@@@@Ġ$None/|/|@;..ߐ@@W@@@@AA@A/W@@.@@@@@>J@@ @@@@@@>O@@@@@@>P@@@ภ$Some/|/|@;.@.A@AA@A/p@@.ఐ6"ex/|/|@5@6@7@@63////////@_@@@@@@@@@Ġ$Left/}/}@"ఠ$lposI/}/}@/A@@@@@>yh@>[3////////@@@@ఠ&lstateJ/}/}@/A@@@@@>zh@>\@ఠ!lK/}/}@/A@@@@@//}@@@>R@@Ġ$Some/}/}@\Ġ%Right0}0}@ఠ$rposL0}0}@0A@@"@@@>ph@>dB@ఠ&rstateM0 }0!}@0/A@@-@@@>qh@>eR@ఠ!rN00}01}@0?A@@&]@@@.05}@@/b@>^`@@@:@@7@>Sc@@v@@@J@ @@>fj@@j@@Ġ%Right0M~0N~@LF$rpos0U~0V~@0dA@@C@@&rstate0_~0`~@0nA@@=@:!r0i~ 0j~ @0xA@@vb@>m@@@#0p~ @@@>g@@Ġ$Some0{~ 0|~@٠Ġ$Left0~0~@$lpos0~0~@0A@@@&lstate0~0~$@0A@@@!l0~&0~'@0A@@b@>u@@@#0~(@@b@>s@@@0@@@>h@@a@@@A@ @@>{@@@@@@@ɠ@@@>@@@@ఠ%stateX0,:0,?@0A@@@@@>g@>300000000@ @@@@@@@@@@@@@@@డ/b!<0,J0,K@@!a@@=@@@-@@,@@+)%lessthanBA.3@@@@.2.3 @@.1S@@@@'@@@>g@>@@@@>@@>@@>=@@ఐG$lpos1,E1,I@B@@J@@ఐ$rpos1",L1#,P@L@@$h@>Y@@@@=@@@>h@>_@ఐ&rstate14,V15,\@]@@li@ఐ`&lstate1?,b1@,h@k@@yg@>v@1E,B@@{x@A@1G,6@@ภ$Some1Nlv1Olz@ภ$Both1Wl|1Xl@;Q@OCB@C@AC@@Aఐ%state1cl1dl@@@@@_@@@>f@>f@>31c1b1b1c1c1c1c1c@ @@@ఐ!l1xl1yl@@@ @ఐS!r1l1l@@@x@@1l{1l@@b@>@@>@@b@>@@@>$@L @@@@Ġ$Both11@N@11@@@@@>i@>311111111@]@@@@ @b@>@@@b@> @@@@@@> @!bU11@1AҠ@@@>h@>' @@@@@11@@@>#@@0@@@@ @@>*@@*@@@11@@@>6@@Ġ$Some11@MĠ$Both11@@12@@@@@>i@>U@@ @b@>b@>Z@@@b@>b@>_@@@@@ b@>b@V!b22@2%AS22@@ k@@@.@@@>n@@=@@@?@ @@>u@@u@@ @@@;@,@@>|@@@ภ$Some2324@ఐ|!b2=2>@|@@}@@Qb@>32827272828282828@@@@@@@5@@ఠ!lW2T2U@2cA@@h@>@@@2^2_@@_@>@@@@@@ @@>@@@@@@>@@@ภ$Some2u2v@Ӡఐ+!l2P@)@*@+R@@*32w2v2v2w2w2w2w2w@/4@@@@U@@t@@@A2{hW@@v32|2{2{2|2|2|2|2|@3@@@bYA@b@?\`@A@]@]\@s@ఠ*two_cyclesY22@2A@@@-@@@Hb@?^@0Ơ |@@@Hd@H@@@Hb@?c@@@@@@@HϠ@ @@@H@@HΠ@@@@HҠ@@@@H@@H@@@H@@@H̠@V!t @@@H֠ @@@H@@@H@@@H@@H@@Hb@?d@@?eb@?_@@?`b@?]322222222@@@@@@࣠@%state[A33@3A@@l332233333@y33K@@@@@  @@'changes\A33@3*A@@v333333333@!@@@@@@@@@ఠ#add]3. 3/@3=A@@@@@@@?e@?l@@q@@@@A젠@@@@A@@A@@@@A@@@@A@@A@@@Ai@A@@@Ae@?o@ 4@@@Gנ 5@@@G:e@G@@@Gi@D@@@G@e@?p@@?qe@?m@@?ne@?i@@@@?e@?z@ ( @@@?e@?@@Ye@@{@6e@@|@@@}e@?@@?e@?{@@?|e@?j@@?ke@?h333333333@@@@@@࣠@%paramA@ఠ%state_33@3A@@333333333@3 3&A@@@@@@ఠ%swaps`33@3A@@@@ఠ%movesa33$@3A@@q"@@33%@@@@z@@?r+@@33&@@@@@@@@?u@@?t:@@@@!dbA@4(4)@@T@@@?333333333@LU@O@P@@:@;5@/@0@@@ @4Aгd&change4*40@@l@@@?}@@4"'4#1@@@@@@@@డ &update434<444B@@ @@@=Q@@@@=P@@@=O@@=N@@=M@ @D@@@@@@?@@@@?@@@?@@?@@?34G4F4F4G4G4G4G4G@KXP@S@D@@@@ఐ_!d4_4C4`4D@ @@@@@?@@ఐ%state4o4E4p4J@e@@6 @@@@@!@@ఐ~!d4~LZ4L[@,@@@@@?34y4x4x4y4y4y4y4y@2@@@Ġ&Change4ak4aq@;&Change8$left@ %right@ "eq@ $diff@ @@@ @@CC@D@A-Z  -Z  @@@-Q@ఠ!xc4as4at@4A@@ w@@@?344444444@n@@@ఠ!yd4au4av@4A@@ @@@?@@4aw4ax@@ @@@?@@@I4ay@@(@@@?@@+@@@?@@@@@ఠ!kg4}4}@4A@@ @@@@^j@@3344444444@D=@>@?6/@0@1@@@@ఠ$edgeh5}5}@5A@@ *@ P@@@@a@ K@@@@b@@@`@ ]@@@@d@ X@@@@e@@@c@@@@_j@@40@@:#@@@:@&@@@77@ఐ $edge56}57}@@@@ B@@@@G@ @@@@F@ {@@@@E@ v@@@@=@ r@ @@@@@@ @@@@A@@@?@ @@@@C@ @@@@D@@@B@@@@>@@@<@@@;@@@:@@@9x@@ఐ%state5x}5y}@n@@?@@ఐ̠!x5}5}@@@ @@@@gk@@rk@@q@@ఐѠ!y5}5}@@@ @@@@fk@@yk@@x@@n @@@@@@@zk@@]@A@5}@@@డ!&update$Swap55@ 55@@@!@@@@@@!!@@@@!!@@@@@@@@!@@@@!"@@@@@@@@@@@@@@!@! % @@@@@@A@@!3@@@A!,@@@A@@A@5@@@A9@@@A@@A@@A@@A355555555@ @@@@@@@@ఐ!!k66@@@J@@@Aj@A@@ఐ:*merge_edge6"6#@)@@@ H@ p@@@Aנ@ k@@@A@@Ak@Aà@ @@@Aڠ@ z@@@A@@Ak@A@@@A@G n&@@@A@@@AP/@@@A@@A@@AX@@ఐ^$edge6a6b@`@@ A3@@@Al@Al@An@@6n6o@@@o @ @@@Aᠠ@ @@@A@@A@ @@@A䠠@ @@@A@@A@@@A@@@A !@@@A@@@A@@A@@ఐՠ%swaps66@@@`@@@@_@@ఐ֠%moves66@@@F@@@@@p@M@@A@ @@"@Ġ&Insert66@;&Insert9@2@AA@D@A/&X { }/'X { @@@/O@ఠ"nxe66@6A@@@@@@ 366666666@@@@@@@@1@@@@ @@4@@@@ @@@@ఠ!ki6 6 @7A@@ @@@Aj@A366666666@(!@"@#@@@డ )key_right7 7@ #@@@ #@@@A @@@A@@A@@ఐE"nx77@#@@@@@B)@$data7(7)@4 @@ F@@@Bk@B k@B7@@, @@;8@A@74 @@@ఠ$edgej7?"27@"6@7NA@@ f5[@B @@@B!j@B@@@Bj@B 37E7D7D7E7E7E7E7E@Vd]@^@_@@@ภ%Right7Y"97Z">@ Xఐ"nx7e"@7f"B@j@@@@@B@#pos7o"C7p"F@4ڰ @@ @@@Bj@Bj@B)@ఐƠ%state7"H7"M@w@@H4@ఐ"nx7"N7"P@@@C?@@77"Q@@ LK@@@BF@A@7".@@@ఐҠ%swaps7Ua7Uf@@@]377777777@Wmf@g@h@@@@డ&update$Move7Uh7Ul@ 7Um7Us@@@#key@@@C@@&optionL!a@CU@@@C  @@@C@@C@@@@C@@@C@@C@@C@@C@'map.mli^^@@+Stdlib__MapH@4/@@@,@@@D@@*@@@D#@@@D@@D@@@@D@@@D@@D@@D@@Da@@ఐ!k8Ut8Uu@@@T@@@Gj@Gs@@ఐ =*merge_edge8%Uw8&U@,@@@ Ke@G@@@G/k@G@@@G@ 5 \@@@G@@@G >@@@G@@G@@G@@ఐ$edge8OU8PU@@@ w,*@@@G*l@G0l@G-@@8\Uv8]U@@@ ] 9@@@G4@@@G6@@@G5 i E @@@G3@@@G2@@G1@@ఐ%moves8U8U@s@@@@@@@@@G@@@@@C@ @@GJ@@@?@\@@@Ġ&Delete88@;&Delete @ @A@@D@A0W g i0W g z@@@1N@ఠ"nxf88@8A@@i@@@@!.@@@@@@@@@"2@@@@@@#5@@@@@ఠ!kŠ88@8A@@@@@G^j@GL388888888@+$@%@&@@@@ఠ$edgeƠ88@8A@@ @@@Gj@Gk6@Gl@@@Goj@GM@@&@@@&@@@GP#@@డ(key_left99@ ]@@@ ]@@@GX'@@@GW@@GV;@@ఐl"nx99@G@@@@@GaM@$data9!9"@6 @@ @@@G_k@Gik@Gg[@@, @@_\@@ภ$Left9495@ ఐ"nx9@9A@p@@@@@Gtv@#pos9J9K@6 @@u@@@Gqj@G}j@Gz@ఐ%state9\9]@R@@#@ఐ"nx9g9h@@@@@79k@@ @@@Gp@@r@@@@ @@G@A@9y@@@ఐ%swaps99@z@@?39}9|9|9}9}9}9}9}@@@@@@@@@డ&update$Move99@ 99 @@@@@@@@G@@;i@G@@@Gݠ@@@G@@G@Ҡ @@@G֠@@@G@@G@@G@@G9@@ఐ!k9 9 @B@@@@@Gj@GK@@ఐ *merge_edge99@@@@@@@Gk@Go@@@G@ y@@@G@@@G @@@G@@G@@Gu@@ఐ,$edge::@}@@/*@@@Gl@Gl@G@@::@@@ <@@@GѠ@@@G@@@G !H @@@G@@@G@@G@@ఐZ%moves:7 :8%@+@@@@@@T@@@G@@@@@@ @@G@@@w@@:M&0:N&1@@@@@@%@@@@@@&@@@@ఐ%swaps:`&5:a&:@U@@@@ఐ%moves:l&<@_@@@@@@@@@A:pLT@@@@?@@@ࠠ@@@H&@A@Ge@H@A@@డ9$List)fold_left:KQ:KU@ :KV:K_@@@@#acc@@!a@ @@M@@L@ @ @@@K@@J@@I@@H@8\338]3r@@8[]@#@@@@d@H@@@H@@H@@  @@@H @@H@@H@@H3::::::::@@@@@@@ఐ#add:K`:Kc@ @@@@0@@@HŠ@@@$@@@H@@@@H@@H@1@@@H@,@@@H@@H@@@H@@@H@!@@@H@@@H@@@H@@@H@@H@@H@]@@@H@@@@H@@D@#@@H@@H@@H@@He@@@ఐ*%state;.Ke;/Kj@@@v@@@డ'K%empty$Swap;BKl;CKp@ ;FKq;GKv@@&@@@@@&@& @@d@H@@డ%empty$Move;^Kw;_K{@ ;bK|;cK@@!a@Cl@@@Cr@L  L  @@E@@@d@H@@@H@@;zKk;{K@@d@H@@;Kd;K@@d@H@@ఐu'changes;K~@@@@@@@@@@@A@b@H@A@@@@ఠ$swapȠ;;@;A@@@Р@F@@@Ib@I@N@@@Ib@I@@Ib@Ik@@@@Ib@I@@@@Ib@I@@Ib@Il@@@Ijb@IJ@@@IWb@H@9>@@@Ib@I@@@Ib@H@9 @@@I(b@I*@@@I+b@I @:*@@@Ji@Jx@@@Jyb@Jr@:@@@Ji@J@@@Jb@Js@@Jtb@I@@@Ib@I@@Ib@H@@Hb@H@@Hb@H3<<<<<<<<@ %  @ @ @@@࣠@%swapsA<+<,@<:A@@3<$<#<#<$<$<$<$<$@<3<4Y@@@@@  @@!xAf@I.3<<<<<<<<@@@@@@@@డ+&create)Two_cycle=%=.@ =/=5@@@@@)@@@I4@)@@@I3Q@@@I2@@I1@@I0'@@ఐ͠"kx=46=58@0@@)@@@I@g@IBg@IA;@@ఐ͠"ky=H9=I;@C@@)@@@I?g@IDg@ICO@@> @@SP@A@=T @@డ)m(find_opt$Swap=d?K=e?O@ =h?P=i?X@@@@@@@@ &@@@@&&@@@@@@@@@@@&@&ް@@@@@@IL@ @@@IK&@@@II@@IH@@IG3========@@@@@@@ఐ#key=?Y=?\@ @@@@@I\g@I[@@ఐ%swaps=?]=?b@g@@"@@J@@'@@@IV'@Ġ$None=hp=ht@8@@@@',@@@If3========@:@@@@@Ġ$Some=hw=h{@,Ġ$Left=h}=h@6@=h=h@@@@@Io@@@@@@Ip#@@ @8%@@@ @@>k@Ii'@Ġ%Right=h=h@@=h=h@@@@@Iv7@@@@@@Iw<@@ @>b@Is@@@@@@A@@>h|>h@@D@@@<@@'u`@@@IxI@@I@@Q@@'ze@@@IzN@@@ภ$None>h>h@@@@#W@Ġ$Some>&>'@Ġ$Both>/>0@ ؠఠ%stateР>8>9@>GA@@0@@@I@@ఠ"llѠ>J>K@>YA@@@@ఠ"lrҠ>V>W@>eA@@@@>[>\@@@@@@I@@ఠ"rlӠ>n>o@>}A@@@@ఠ"rrԠ>z>{@>A@@@@>>@@@@@@I@@@Y>@@i@I~@@@f@@'@@@I@@'@@@I @@@@డ#$test>>@@4@@@=L@@@@=K@@@@=JF@@@=HK@@@=I@@@=G@@=F@@=E@@=D@@ݰ"!@@@@@@I@@@@I@@@@I@@@I@@@I@@@I@@I@@I@@I3>>>>>>>>@Y@@/@@(@@~@x@ys@m@n@@@@ఐ%state>>@@@Q@@@Ii@I@@ఐ"ll??@"@@Q*@@ఐ"rr??@,@@B7@@t@@a`@@@I_@@@I@@@IC@@డ$test?-?.@@@@@@@I@}@@@I@z@@@I@@@IР@@@I@@@I@@I@@I@@Ik@@ఐ%state?T?U@q@@@@@Ii@I}@@ఐ"rl?f?g@@@@@ఐ"lr?s?t@@@@@J@@@@@I@@@I@@@I@@@@@p@@@I@@Ġ"Ok? ? @;"Ok<&result!a@x!b@y@@@v@ @A@@B@A<<@@@<@@? ? @@@@@J@@@$@@@@@J@@@J@@@J@@Ġ"Ok??@7@??@@@@@J@@@ @@#"@@@J!@@@J@@@J@@N@@@.@@@J  @@@98@@@J#7@@@J$@@@J"@FE@@@J&D@@@J'@@@J%@@J!(@@@ภ$Some@ %@)@k@ຠ=#pos@,@/@ఐޠ"ll@(0@)2@D@@sL@#pos@/3@06@= @@>@@@J{i@JX@=$data@=8@><@ఐߠ"kx@F=@G?@B@@>j@@@@J+@K@@@Hm@@ຠ=#pos@WC@XF@ఐ"rl@bG@cI@|@@@#pos@iJ@jM@=԰ @@>@@@Ji@J@=֡$data@wO@xS@ఐ"ky@T@V@{@@k@@@@B@W@@u@@@*@X@@b@J@@@@@@Ġ%Error@Ye@Yj@;%Error@@AA@B@A==@@@=@@@Yk@Yl@@@@@J?@@@@@@@@JA@@@JB@@@J@@@@@Yn@Yo@@  @@@JD@@@JE@@@JC@@0 @@@!@@@JF@@@@@@Yr@Ys@@&%@@@JR$@@@JS@@@JQ@@Ġ%Error@Yu@Yz@S@@Y{@Y|@@7@@@JZ@@@ @@DC@@@J\B@@@J]@@@J[&@@,@@@.@@@J^-@@-@@q@@@[Z@@@JhY@@@Ji@@@Jg@hg@@@Jkf@@@Jl@@@Jj@@JfJ@@@ภ$NoneA/Y@@@@8R@@@AA2@@:T@@@AA4?E@@<p@@@=3@H@@>@ A@b@KG @A=A - Check if an edge belongs to a known 2-cycle AGAH@@@@@@@@@-@ఠ$moveՠAUAV@AdA@@@x@@@Mb@M@@@Mb@M@@@Mb@Mf@@@Mb@KI@&Either!t?@@@M(b@M*@@@M+b@L3?@@@M7b@M9@@@M:b@L4@@@L2b@KN:Ԡ?@N ?@N ?@N @@@N b@M@@@Mb@KO@@KPb@KJ@@KKb@KH3AAAAAAAA@ @ @ @@@࣠@%movesAAA@AA@@_3AAAAAAAA@lAA,G@@@@@  @@!xAAA@AA@@X3AAAAAAAA@!v@@@@@@@@@ఠ$name٠AA@AA@@@@@M'e@KS3AAAAAAAA@%s@@@@@ఐ+!xAA@ @@3AAAAAAAA@@@@Ġ&EitherBB@$LeftB B @@;$Left!a@KԠ!b@K@@@K@ @A@@B@A*either.mlix  x  @@@.Stdlib__EitherA@ఠ!xB*B+@B9A@@3B#B"B"B#B#B#B#B#@F@@@@@,@@@@@@@డ(key_leftB9B:@@@@@@@M!`@@@M @@M3B9B8B8B9B9B9B9B9@] @@@@@@ఐ)!xBSBT@@@@$dataBZB[@? @@@@%@@{@Ġ&EitherBjBk@%RightBoBp@@;%Rightf@_@AA@B@AYx  Zx  @@@XB@ఠ!xBB@BA@@b@M8b@M@@@@@@@@@@డ)key_rightB B@@@@@@@M0@@@M/@@M.3BBBBBBBB@"@@@@@@ఐ+!xBB@@@*@$dataBB@@ @@$@@%@@@@@AB@@@A@B@@డ#.(find_opt$MoveB$0B$4@ B$5B$=@@@ @@@C@!a@B@@@C  @@@C@@C@@C@ IM Is@@ V@!@@@ +@@@Mh@ @@@Mg@@@Me@@Md@@Mc3BBBBBBBB@!@@@@@@ఐ($nameC$>C$B@ @@ J@@@Mxf@Mw@@ఐd%movesC$CC$H@I@@"@@S@@<@@@Mr'@Ġ$NoneC-NVC.NZ@@@@@O@@@M3C)C(C(C)C)C)C)C)@:@@@@@Ġ$SomeC=N]C>Na@Ġ$LeftCHNcCINg@@CMNhCNNi@@s@@@M@@@s@@@M#@@ @%@@@ @@j@M'@Ġ%RightCaNlCbNq@`@CfNrCgNs@@t@@@M7@@@t@@@M<@@ @b@M@@@@@@A@@CvNbCwNt@@D@@@<@@@@@MI@@I@@Q@@@@@MN@@@ภ$NoneCNwCN{@@@@W@Ġ$SomeC|C|@Ġ$BothC|C|@Gఠ%stateC|C|@CA@@@@@M@ఠ#gotC|C|@CA@@Rb@M@ఠ(expectedC|C|@CA@@Xb@M@@@)C|@@fh@M@@@6@@l@@@M@@p@@@M@@@డ^$testCC@;@@@;@@@M@.@@@M@+@@@M:9@@@M8@@@M@@@M@@M@@M@@M3CCCCCCCC@\U@V@WOH@I@JD=@>@?@@@@ఐe%stateD D @@@i@@@Mh@M@@ఐi#gotDD@ @@h&@@ఐj(expectedD+D,@,@@i3@@Q@@yx@@@MΠw@@@M@@@M?@Ġ"OkDDDE@@DIDJ@@@@@MS@@@ @@@@@M@@@M@@@M_@ @@@@M@@@M@@@Mj@@@ภ$SomeDkDl@ɠภ$MoveDtDu@<ະ3?:<@@@N?<@@@3?3?2@@AD,?@@4@@@M@@@ @@A@@@@M?@@@M@@@M@ @LK@@@NJ@@@N@@@N@@@ภ$NoneE,CS@@T@@|@@@AEV@@~@@@AE$*X@@@`Y@@2@cZA@b@Na@A@^@^]@t@ఠ&refineE)IQE*IW@E8A@@@@@@Nb@N@CW @@@T"d@T@@@Tb@NCd@@@T!d@T@@@Tb@N@@Nb@N@@Nb@N3EIEHEHEIEIEIEIEI@@@@@@࣠@%stateAEbIXEcI]@EqA@@53E[EZEZE[E[E[E[E[@BEjIMEk@@@@@  @@%patchAEvI^EwIc@EA@@@3EoEnEnEoEoEoEoEo@!L@@@@@@@@@@@EfpEfq@@Ze@N3EEEEEEEE@ V@@@@@@@ఠ%swapsEftEfy@EA@@Ơ@@@@N۠@@@@N@@Nڠ@@@@Nޠ@@@@N@@N@@@N@@@Ne@N6@@ఠ%movesEf{Ef@EA@@@@@N@@@N@@@N@@@Ne@NS@@EfsEf@@@G@@@N\@@a@@@c@@T@'@@N@@Ni@ఐh*two_cyclesEfFf@ @@@c@@@N@^[@@@N@@@N@@@X>@d@@@N@_@@@N@@N@q@@@N@l@@@N@@N@@@N@@@N@Va@@@N@@@N@@@N@@@N@@N@@N@@N@@N@@ఐ%stateFVfFWf@ܰ@@(@@ఐ%patchFcfFdf@ְ@@,@@h@@@⠠@@Ӡ@@@N@@Nf@N@A@Fvfl@@@@FF@@@A@@@OE;@@@O@@@N@@N3FFFFFFFF@@@@@@@@&filter @FA@X@@@NQ@@@N@@@N@@N&б@гg&changeFF@@o@@@N&@@г/&optionFF@гo0composite_changeFF@@w@@@N;@@@D@@@N@ @@@ @@NC#@@TSA@@@@@@OR@@@O@@@O@@OQ@@Ġ$KeepFF@;$Keep[@YUQ@CB@D@A?JY  ?KY  @@@?P@@FF@@@@@O&3FFFFFFFF@qlGG}@@@@@@@@@O' @@@@@@O(@@@%@@@@@O*@@@ภ$NoneGG@@@@Fv`@@@Ov@@@Ou'@Ġ&InsertG-G.@eఠ!x G6G7@GEA@@@@@O>3G2G1G1G2G2G2G2G2@?@@@@@@@0@@@O@@@@ఐ$moveGM $GN (@@@@kv @@@O @@@O@@@O@@@O@En@@@O@@@OEv@@@O@@@O@@@Os@E@OE@OE@O@@@O@@@O@@O@@O3GxGwGwGxGxGxGxGx@SL@M@N@@@@ఐŠ%movesG )G .@@@ @@@O @@@O@@@Oi@Oi@O@@@O#@@ภ&EitherG 0G 6@%RightG 7G <@@Gఐ!xG =G >@>@@y@@@OD@@G /G ?@@PEנ*@@@O@@@Oi@Oi@O@@@OW@@@@ؠAedc@@@O@@@Ob@Ġ$SomeGESGEW@O@GEXGEY@@A,F@OF@OF@P@@@P~@@@ @@A9   @@@P@@@P@$moveHE]HEa@HA k@P @@@P) @@@@AQ%$#@@@P @@@P @@@ఐ$moveH+EeH,Ei@@@@@@@@P@@@P3H+H*H*H+H+H+H+H+@, @@@Ġ$NoneHBjxHCj|@@@@@BA|Ri@PSi@PTi@P@@@P@@@P@@RA @@@P@@@P@@@ภ$SomeHejHfj@àภ&InsertHnjHoj@@ຠ3C@@@@PHC @@@3CB@@A@AB@B@AC@C#posHjHj@ఐU!xHjHj@@@ C@@@PY@#posHjHj@F @@C*@@@PWi@P_@$&insertHjHj@ఐx!xHjHj@+@@ f@@@Pn1@$dataHjHj@F @@ @@@Pli@Pt=@@@HjHj@@A  @@@Pi@PC@@@PEi@PM@@HjHj@@@ @P/i@PAT@@s@@U@@@AH H@@3HHHHHHHH@X@@@Ġ&DeleteHH@Jఠ!x HH@HA@@ @@@OT3HHHHHHHH@@@@@@@@@@@OV@@@ఐ$moveII@@@@"- U@@@P Q@@@P@@@P@@@P@G%x@@@P@@@PG-?@@@P@@@P@@@P*BdGF@PGH@PGJ@P@@@P@@@P@@P@@P3I/I.I.I/I/I/I/I/@=SL@M@N@@@@ఐ|%movesIGIH@@@cr @@@PŠ @@@P@@@Pi@Pi@P@@@P#@@ภ&EitherIhIi@$LeftImIn@@dఐ!xIxIy@>@@!5@@@QD@@II@@ i@QG@@@P@@@Pi@Q@@@QW@@@@Bɠedc@@@P@@@Pb@Ġ$SomeII@@II@@BG@QG@QG@Q@@@Q |@@@ @@B   @@@Q"@@@Q!@ @B@@@Q$@@@Q#@@@ภ$NoneII"@K@@@@@@Q4@@@Q3@Ġ$NoneI#1I#5@_@@@@C@i@Q'Ai@Q(Bi@Q)@@@Q/@@@Q.@@C/ @@@Q1@@@Q0@@@ภ$SomeJ#9J #=@fภ&DeleteJ#?J#E@Bຠ3DBB@@Q[D@@@3DD@@ABAD@D~BAD@D#posJ##GJ$#J@ఐA!xJ.#KJ/#L@@@!@@@Ql@#posJ8#MJ9#P@G @@D@@@Qji@Qr@$&deleteJF#RJG#X@ఐd!xJQ#YJR#Z@@@"@@@Q@$dataJ[#[J\#_@G @@"@@@Qi@Q)@B]@Jd#FJe#`@@Bl"@@@Qi@QU@@@QXi@Q9@@Jt#>Ju#a@@X@ @QBi@QT@@@s@@A@@@AJ|J}bq@@bD@Ġ&ChangeJr|Jr@ఠ!x JrJr@JA@@"M@@@Oj3JJJJJJJJ@@@@ఠ!yJrJr@JA@@"W@@@Ok@ఠ&reasonJrJr@JA@@"[@@@Ol@@@.Jr@@@@@On"@@@ఐ#$swapJJ@ @@@@@@@Q@@@@Q@@Q@%@@@Q@"@@@Q@@Q@@@Q@@@Q@HF@@@Q@@@Q@H@@@Q@@@Q@I !$@@@Q@@@Q@I @@@Q@@@Q@@Q@@@Q@@Q@@Q@@Q3KKKKKKKK@@@~w@x@yqj@k@l@@@@ఐ%swapsK$K%@@@iO@{@@@Q렠@x@@@Q@@Q@@@@Q@@@@Q@@Q@@@Q@@@Qi@Qi@Q9@@ఐǠ!xKVKW@A@@#@@@R,I@@ఐȠ!yKfKg@P@@#@@@R4Y@@@@j@I|!@@@Q@@@Qࠠ@I!f@@@Q@@@Q@@Q@@@Qr@Ġ$SomeKK@@ঠ#posKK@I ఠ$pos1KK@KA@@J@@@RY@$dataKK@Iఠ%firstKK@KA@@!@@@R^@@@KK@@IϠ!@@@Rb@@@Raj@R_@@ঠ#posKK@ICఠ$pos2KK@KA@@JK@@@Rj@$dataKK@ISఠ$lastKK@LA@@!@@@Ro@@@KK@@J !@@@Rs@@@Rrj@Rp@@L L @@@J@@@Rt@@@@@@J!";@@@Rx@@@Rw@J*" @@@Rz@@@Ry@@Rv@@@Ru@@'@J9"S@@@R~@@@R}@JB"#@@@R@@@R@@R|@@@R{/@@@డJ!=LMLN@@!a@@9@@@'@@&@@%&%equalBAI@@@@IyIy@@IQ@@@@J@@@Ri@R@@@@R@@R@@R3LgLfLfLgLgLgLgLg@c@@@@@@@@@@@@ఐ!xLL@r@@$D@@@R@#posLL@I @@*"@@ఐ$pos1LL@)@@9j@R1@@@@9@@@Rj@R7@ภ$SomeL$6L$:@ ภ$SwapL$<L$@@E`ະ3GEd@@@RG@@@3GG@@AE`AG@G3GG@@BEaAG@GEaAG@G#posL$CL$F@@ఐ2$pos1L$IL$M@c@@G@@@Ri@Ri@Rp@@ఐ $pos2L$OL$S@t@@G@@@Ri@Ri@R@@ @@@@ @@Ri@R@;%firstM$UM$ZAఐR @@G@@@Ri@R@M$lastM$\M$`Aఐ+ @@G@@@Si@S@E@M%$AM&$a@@E@@@Ri@S @@M-$;M.$b@@@@@Ri@R@@@@2@@@R@ภ$NoneM@cxMAc|@@@@i@S@MF@@+*@@@R@@@R@Ġ$NoneMX}MY}@@@@@X@Kj#@@@R@@@R@Ks#T@@@R@@@R@@R@@@R`@@p@K#@@@R@@@R@K#l@@@R@@@R@@R@@@Rx@@@ภ$SomeM}M}@ภ&ChangeM}M}@F]ఐ&reasonM}M}@@@%R@@@S8@@M}@@@@@S!i@S3@@!@@k@@@AM@@3MMMMMMMM@@@@@A%paramM@@@@б@г@@@@O@гг  @@@@O @@@@@O @@@@O @!A@@@@@@SZ@@@S@@@S@@Se@S@A@@డLm$List*filter_mapMM@ MM@@@@!a@/&optionL!b@-@@@8@@7@ՠ@@@6̠@@@5@@4@@3@KK@@KZ@*%@@@@@@@T@@T@@@@T@@@T@@T@@T3N%N$N$N%N%N%N%N%@@@@@@@ఐ&filterN=N>@ @@@ @@@T@@@T@@@T@@T@@ఐ㠐%patchNV@Ȱ@@ (@@e@@ )@X@@ @@@ @A@ /b@T'@A@@@ @ఠ$diffNjNk@NyA@@@@@@Wb@T)@L--@@@Wb@T=@@@TGb@T.@L--@@@Wb@TN@@@TXb@T3 T Q@@@W@@@Wb@T4@@T5b@T/@@T0b@T*@@T+b@T(3NNNNNNNN@ Q  z@ {@ |@@@࣠@%stateANN@NA@@D3NNNNNNNN@QNN@@@@@  @@$leftANN@NA@@O3NNNNNNNN@![@@@@@@@@%rightANN@NA@@N3NNNNNNNN@c@@@@@@@@@ఠ$leftNN@NA@@LLv@@@TF@@@TEf@T83NNNNNNNN@*n@!@"@@@ఐM)(with_posOO@K@@@M$@@@T>MM@@@T<@@@T;@@T:@@ఐ\$leftOO @D@@*@@@@3+@A@O$@@@ఠ%rightO/!O0&@O>A@@MCM@@@@TW@@@TVf@TI3O2O1O1O2O2O2O2O2@FYR@S@T@@@ఐMn(with_posOI)OJ1@K@@@Mi@@@TOM`M]@@@TM@@@TL@@TK@@ఐ%rightOd2Oe7@l@@*@@@@3+@A@Oi@@ #Raw"gOu;LOv;O@OA@гР-P&Simple$DiffO;RO;V@ O;WO;]@@@,J#,@&g-D@@@Tt,@@@Ts@@Tr@,J@,@,@+1,@@@Tq@+7,@@@Tp@+=,@@@To,,+E,@@@Tm+J,@@@Tn@@@Tl@@Tk@@Tj@@Ti@,n@,@, @1@@@Th@+Z,@@@Tg+^,G@@@Tf@@Te@@Td@,@,@@,@+i,@@@Tc@,ɠ+r,@@@Tb@@@Ta@,Š+|,@@@T`@@@T_&-x@@@T^@@T]@@T\@@T[@,@,@@3OOOOOOOO@@@@@@Р%$ImplP;^P;b@@&&@&&@&g&f@&P&@&%@@@@@A@B@@@P;c@-!@+-@@@T@- +- @@@T@@@T@- +-@@@T@@@T'-@@@T@@T@@T@@T@-@-@@D@@@P?;E'@G@ఠ#raw#PJgqPKgt@PYA@@'-@@@Ti@T3PIPHPHPIPIPIPIPI@\@=<@@@@@@డ$diff#RawPggwPhgz@ Pkg{Plg@@@+-^@@@T@-],-Z@@@T@@@T@-Y,-X@@@T@@@T9@@@T@@T@@T@@T@-V@-S&!@@@@@@T@-z@@@T@@@T@-u@@@T@@@TT@@@T@@T@@T@@TS@@ఐ%statePgPg@@@B`@@డO=%Array'of_listPgPg@ PgPg@@@$listK!a@V@@@V%arrayJ @@@V@@V@)array.mli@@-Stdlib__ArrayP@#@@@0:s@p@Wj@Wj@Wj@W@@@W@@@W@@W@@ఐ$leftQgQg@ɰ@@?$@@@Wk@Wk@W@@QgQg@@-@@T@@@Tj@Wk@W@@డO%Array'of_listQ.gQ/g@ Q2gQ3g@@j@@@j09@@Wj@Wj@Wj@W@@@Wn@@@W@@W@@ఐ&%rightQUgQVg@\@@$@@@Wk@Wk@W @@QagQbg@@.?@@T@@@Tj@Wk@W@@ @@@A@Qogm@@ఐ P&refineQyQz@հ@@@@@@W@ G D@@@W@@@W A >@@@W@@@W@@W@@W3QQQQQQQQ@>MF@G@H@@@@ఐ%stateQQ@԰@@/@@ఐa#rawQ@@@]@@@W@@8@@ @C@@^@Q;A@@3QQQQQQQQ@@@@M@@y@@@@A@Jb@X4@A@@@@''&A@&"@"@0@)@v q@ #@e^@_@`@@3QQQQQQQQ@)h@@Qg6YQ@3QQQQQQQQ@'M@@@'@''t3QQQQQQQQ@'s@@@@Qg68 @ @@1<@/@/16@@/@-T@+K/@@+E+?A@**A@**A@*%*A@))@@)M)GA@)'@')@'@@'@@@3QQQQQQQQ@''@'''f'*A@&U"@#@o@hX@ @ b@?@@@3'@@R O A vR @43RRRRRRRR@1.@@@1@113RRRRRRRR@1@@@@RO A A @ @@RPA@PCN@NNA@MvM7A@Kp?@@(@>> >;@"@@>5@6@2>/@@2A2e@22@@2@@1@@@3R!R R R!R!R!R!R!@12@111A@11A@11A@11A@@1@11A@1C1=A@10A@00A@0d0^A@@@0#1@@0@--@@--A@---A@--@--@-h-g@@@/]/Z@-W-V-U@@@/+/(@-6@-5-3-2@-)-(@--@@,,@@@..@@,@,֑,,@,,@,,@@,,@@@..@@,j@,i,g,f@,],\@,;,:@@,,@@@./.,@@@@+0]@@++A@+}+wA@+J+DA@**A@*d*^@@))A@))0)/@)%)$@))@((@((@@@(p)@(i@(a(X( 'A@'#@#@ )@"@o j@ @^@@@(w@@@@2@@@21Diffing_with_keysT@@(}S@@aR@@) Q@A( P@A(O@A/ٱN@A/M@A0*L@@*K@@*2J@@+"I@@+%H@@,@(G@@++F@@L>.C@@N*1[@@O4D@@Q 7C@@Qs:@@A1 2lA12uA1?KB@A12A2F2A8m>A@A8>@@@@?@@?@ H************************************************************************SA@@SA@L@ H S BMMS!BM@ H OCaml S&CS'C@ H S,DS-D3@ H Florian Angeletti, projet Cambium, Inria Paris S2E44S3E4@ H S8FS9F@ H Copyright 2021 Institut National de Recherche en Informatique et S>GS?G@ H en Automatique. SDHSEHg@ H SJIhhSKIh@ H All rights reserved. This file is distributed under the terms of SPJSQJ@ H the GNU Lesser General Public License version 2.1, with the SVKSWKN@ H special exception on linking described in the file LICENSE. S\LOOS]LO@ H SbMScM@ H************************************************************************ShNSiN5@ "* Composite change and mismatches O * To detect [move] and [swaps], we are using the fact that there are 2-cycles in the graph of name renaming. - [Change (x,y,_)] is then an edge from [key_left x] to [key_right y]. - [Insert x] is an edge between the special node epsilon and [key_left x] - [Delete x] is an edge between [key_right] and the epsilon node Since for 2-cycle, knowing one edge is enough to identify the cycle it might belong to, we are using maps of partial 2-cycles. ?3* Partial 2-cycles ( ;* Compute the partial cycle and edge associated to an edge $ .* Check if an edge belongs to a known 2-cycle 3@-./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%utils"-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"-cSS =/builds/workspace/precheck/flambda/false/label/ocaml-linux-32 >10/.-,+*)('&%$#"! @@0_\K1P?p3SSSSSSSS@S@@5Build_path_prefix_map0z HkGs8CamlinternalFormatBasics0%FU(Q/TuLG0ɞyM۠S0%h8Lc\5*Format_doc0]mWϓ:Mݠ$Misc0ob]6>Vê>&Stdlib0Lku]8_٠-Stdlib__Array0?3$( Q&.Stdlib__Buffer08APF< t..Stdlib__Digest0l!LHgErζ .Stdlib__Domain0:M;׉<O$Ġ.Stdlib__Either0Vy`u~c à.Stdlib__Format0ܚ#G7m|/Stdlib__Hashtbl0ѱN][/!,Stdlib__List0MYm 7R+Stdlib__Map0L5xE|O0~,J-.Stdlib__Result06 ]/J+Stdlib__Seq0nwzG&amg+Stdlib__Set0\$;7 .Stdlib__String0QVQ@@OUNl@''4)434b4o@ؑ)ѓ)-f-@Q-P@MQ$P@BB@PP;@ObNqSES7@jT@@--ѰQ%P@@@@*)@.B.U@3ܒ3@OOI@**+ߒ+@@@PU @4D4ӡ4ϰ@@,2E,/@@@*D*š*@@@@@@A@@@AB,A,@@@-ZA-9@@@AC-A-@@@.A.y@@@,A,y@@@A.A.@@@BCD@@@APAPe@PGBP6@@@OBO@OCO@@@AOCO@@@B@@AOBOœ@OCO@@@AOCO@@@B@@BCPBO@PCO@@@APCP @@@BPCP@@@C@@P_BP.@PJCPD@@@PBCP<@@@ABPgCPW@@@C@@AD@@BR8AR@QBQ@QCQ@@@AQCQ@@@BQCQ@@@QCQ@@@AC@@QBQ@QCQ@@@AQCQ@@@BQCQ@@@QCQ@@@AC@@AB@@N@N@@@ACS@S@@@UAT @T CT @@@ATCT@@@B@@AD@@