
    Jjx                       d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	  ee
      j                         j                  d   Zedz  Zdd	d
ddZdg dddg dddg dddg dddg dddg dddg dddg dddg ddd g d!dg
Zd*d+d"Zd,d#Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d-d$Zd.d%Zd.d&Zedfd/d'Zd0d(Zed)k(  r e        yy)1z>Summarize why selector merge evidence is closed as shape-only.    )annotationsN)Path)Any   outz[source/predecessor forward bridge or execution-like selector merge bridge into selector 2:0z3real selected-root runtime execution for 0x00540714zCobserved predecessor opcode 0x10 fill context and route-order proofz:strict map1_01a source coordinate or tile hotspot evidence)selector-merge-execution-proofselected-root-runtime-execution"predecessor-fill-route-order-proofstrict-source-hotspotz*out/save_selector_merge_execution_gap.json) selectorMergeExecutionProofFound
proofFound#failedSelectorMergeExecutionGateIdsmissingEvidenceevidenceRefCount)pathfieldsz,out/save_selector_merge_runtime_context.json)selectorMergeRuntimeProofFoundr   !failedSelectorMergeRuntimeGateIdsr   r   z(out/save_selector_set_decomposition.json)"currentEqualsPredecessorPlusSource#sourcePredecessorUnionCoversCurrentsourcePredecessorUnionExtraMapsr   z,out/save_selector_recomposition_lattice.json)currentroutePairOnlyCurrentSelectorexactPairUnionCountz+out/save_selector_target_alias_bridges.json)targetAliasSelectors publicCoveredForwardHitSelectors"addressAdjacentForwardHitSelectorsforwardHitsAddressAdjacentOnly#targetAliasExecutionExclusionStatusz-out/save_selector_route_root_ref_context.json)allRouteSelectorRootsTableOnly predecessorToCurrentRootRefFound(sourceTargetSplitAcrossPreviousSelectorsz.out/save_selector_predecessor_bridge_refs.json)forwardExecutionBridgeFoundforwardBridgeRowspromotionStatusz2out/save_selector_selected_root_execution_gap.json)selectedRootExecutionRefFoundruntimeProbeGatediagnosticExclusionGater   z8out/save_selector_predecessor_fill_opcode10_context.json)r   $failedPredecessorFillOpcode10GateIdsr   r   runtimeObservedAllZerobranchStatePollFillMatchCountz2out/save_selector_predecessor_persistence_gap.json)routeOrderProvenpersistenceProvenselectorMergeGapOpenr%   c                x    | j                         s|i S |S t        j                  | j                  d            S )Nutf-8encoding)existsjsonloads	read_text)r   fallbacks     J/home/exedev/hwanse/tools/summarize_save_selector_merge_closure_context.py	load_jsonr9   y   s5    ;;=%r383::dnngn677    c                B    dj                  d | xs g D              xs dS )N,c              3  2   K   | ]  }t        |        y wN)str).0values     r8   	<genexpr>zcsv.<locals>.<genexpr>   s     95CJ9s   -)join)valuess    r8   csvrF      s     889FLb99@S@r:   c
                f   |j                  d      xs i }
|j                  d      xs i }|j                  d      xs i }| j                  d      xs( |
j                  d      xs |j                  d      xs g }| j                  d      du xr |j                  d      du }| j                  d      du xs |
j                  d      du }t        |      dkD  }|xr |xr |j                  d	      du }| j                  d
      dk(  xr* | j                  d      dk(  xr | j                  d      dk(  }| j                  d      dk(  xr* | j                  d      dk(  xr | j                  d      dk(  }|j                  d      du xr* |j                  d      dk(  xr |j                  d      dk(  }|j                  d      dk(  xr |j                  d      du }|j                  d      du xr |j                  d      du }|j                  d      du xr( |j                  d      du xr |j                  d      du }|j                  d      du xr) |j                  d      du xr |j                  d      dk(  }|	j                  d       }| j                  d!      du xs= |j                  d      du xs( |j                  d      du xs |j                  d"      du }|j                  d#      du xr |j                  d      du }|xr |xr |j                  d      du xr |du }|j                  d$      du xr |j                  d%      du }|xr |xr | }g }|s|j                  d&       |s|j                  d'       |j                  d      du r|du s|j                  d(       |r|j                  d)       |D  cg c]  } t        j                  | |        }!} |rd*nd+}"d,|r|rd-nd.d/| d0| d1t	        |       d2| j                  d3       d4| j                  d5       d6| j                  d7       d8| j                  d9       d:d;|rd<nd.d=| j                  d
       d>| j                  d       d?| j                  d       d@| j                  dA       dB| j                  dC       dD| j                  dE       d:dF|rdGnd.dH| j                  d       dI| j                  d       dJ| j                  d       d:dK|r|rdLnd.dMt	        |j                  dN             dOt	        |j                  dP             dQt	        |j                  dR             dS|j                  d       dT|j                  d       dU|j                  d       d:dV|rdWnd.dX|j                  d       dY|j                  dZ       d[|j                  d       d\|j                  d]       d:d^|rd_nd.d`|j                  d       da|j                  d       db|j                  dc       dd|j                  d       d:de|rdfnd.dg|j                  dh       di|j                  dj       dk|j                  dl       dm|j                  d       dn|j                  d       do|j                  d       d:dp|du rdqnd.dr| ds|	j                  dt       du|	j                  dv       d:dw|rdxndydz|j                  d$       d{|j                  d%       d:g	}#d|}$i d}| j                  d}      xs d~d| j                  d      xs dd| j                  d      d| j                  d      d| j                  d      d| j                  d      d|d|d|d|d3| j                  d3      d5| j                  d5      d7| j                  d7      d9| j                  d9      d	|d
| j                  d
      d| j                  d      i d| j                  d      d| j                  d      dA| j                  dA      dC| j                  dC      dE| j                  dE      d|d| j                  d      d| j                  d      d| j                  d      d|dN|j                  dN      xs g d|j                  dP      xs g d|j                  dR      xs g d|j                  d      d|j                  d      d|j                  d      d|j                  d      i d|d|j                  dZ      d|j                  d      d|j                  d]      d|j                  d"      d|j                  d      d|j                  d      dc|j                  dc      d|j                  d      d|j                  d      d|j                  dj      d|j                  dl      d|j                  d      d|j                  d      d|j                  d      d |d|	j                  dt      i d|	j                  dv      d$|j                  d$      d%|j                  d%      d!|d#|d|d|d|d|!dt
        dt        t
              d|dv| d|"d|#dg dd|$S c c} w )Nr   r'   r(   r   r   Tr   r   mergeShapeOnlysourceToCurrentBridgeHitCountpredecessorToCurrentHitCountforwardMergeBridgeHitCountcurrentToPredecessorHitCount3   &currentToPredecessorBeforeFillHitCount$currentToPredecessorFillSiteHitCountr   !publicCoveredForwardHitAliasCountforwardHitPublicSampleCountr   z address-adjacent-alias-data-only&aliasToCurrentExecutionLikeBridgeFoundFr    r!   r&   "anyRuntimePollReachedRouteSelector&excludedFromSelectedRootExecutionProofr   r*   r+   r,   r   r#   r   strictSourceCoordinateFoundtileHotspotConfirmedr   r	   r
   r   zready-for-reviewblockedzshape-closurezshape-only-overinclusiveopenz#currentEqualsPredecessorPlusSource=z; unionCoversCurrent=z; extra=z; routePairOnlyCurrent=r   z; exactCurrentPairUnions=currentExactPairUnionCountz; coveringCurrentPairUnions=currentCoveringPairUnionCountz; globalExactPairUnions=globalExactPairUnionCount)kindstatusdetailzforward-closurezno-forward-bridgezsourceToCurrent=z; predecessorToCurrent=z; forwardMergeBridge=z; encodedRaw=+forwardEncodedAnchorRawScalarCandidateCountz; encodedPromoting=+forwardEncodedAnchorPromotingCandidateCountz; encodedMerge= encodedMergeExecutionBridgeFoundzreverse-closurezreverse-reuse-before-fill-onlyzcurrentToPredecessor=z; beforeFill=z; fillSite=zalias-closurezaddress-adjacent-data-onlyztargetAliases=r   z; publicForward=r   z; addressAdjacentForward=r   z; publicSamples=z; executionLike=z; exclusion=zroute-root-closurez
table-onlyzallTableOnly=z; textRefs=anyRouteSelectorRootTextRefsz; predecessorToCurrentRootRef=z"; sourceTargetSplitAcrossPrevious=r"   zselected-root-runtimezreal-route-not-observedzselectedRootExecutionRefFound=z; anyRuntimePollRoute=z; constructedDiagnosticRoute=-constructedDiagnosticPollReachedRouteSelectorz; diagnosticExcluded=zpredecessor-fill-closurezopcode10-context-nonpromotingzopcodeHandler=opcodeHandlerHexz; helperOpcode10Only=)helperOnlyDirectCallInsideOpcode10Handlerz; directFillRefs=directFillSiteTextRefCountz; runtimeAllZero=z; fillMatches=z; proof=zroute-order-closurezroute-order-unprovenzrouteOrderProven=z; persistenceProven=r-   z; selectorMergeGapOpen=r.   zstrict-hotspotmissingpresentzstrictSource=z; tileHotspot=a  Selector 2:0 can be explained as a source/predecessor set recomposition, but the closure remains shape-only: the union over-includes map1_02b, there is no source/predecessor forward bridge into 2:0, reverse hits are before-fill reuse, target-alias hits are address-adjacent data only, route-root refs are table-only, and runtime evidence still lacks a real selected-root route observation.sourcemap1_01atargetmap2_02dsourceSelectorpredecessorSelectorcurrentSelectorcurrentRootHexshapeOverIncludesExtraMapscurrentToSourceBridgeHitCountforwardBridgeAbsentreverseReuseBeforeFillOnly+targetAliasPublicCoveredForwardHitSelectors-targetAliasAddressAdjacentForwardHitSelectors&targetAliasForwardHitPublicSampleCount)targetAliasForwardHitsAddressAdjacentOnly,targetAliasToCurrentExecutionLikeBridgeFoundrouteRootsTableOnlyrouteRootTextRefs-routeRootRefsPredecessorToCurrentRootRefFound5routeRootRefsSourceTargetSplitAcrossPreviousSelectors,predecessorBridgeForwardExecutionBridgeFound&constructedDiagnosticExcludedFromProof!predecessorFillOpcode10ProofFound@predecessorFillOpcode10HelperOnlyDirectCallInsideOpcode10Handler1predecessorFillOpcode10DirectFillSiteTextRefCount-predecessorFillOpcode10RuntimeObservedAllZero1predecessorFillOpcode10BranchStatePollSampleCountbranchStatePollSampleCount4predecessorFillOpcode10BranchStatePollFillMatchCountpredecessorPersistenceProven-predecessorPersistenceGapSelectorMergeGapOpenselectorMergeClosureProofFoundfailedSelectorMergeGateIdsr   evidenceRefsr   &predecessorPersistenceUsableForCurrentr%   evidenceremainingProofs)z;prove a source/predecessor forward bridge into selector 2:0z;capture real selected-root runtime execution for 0x00540714zLturn predecessor opcode 0x10 fill context into an observed route-order proofz?find strict map1_01a source coordinate or tile hotspot evidence
conclusion)getlenappend'SELECTOR_MERGE_MISSING_EVIDENCE_BY_GATErF   $SELECTOR_MERGE_CLOSURE_EVIDENCE_REFS)%merge_execution_gapmerge_runtime_contextset_decompositionrecomposition_latticetarget_alias_bridgesroute_root_ref_contextpredecessor_bridge_refsselected_root_execution_gap!predecessor_fill_opcode10_contextpredecessor_persistence_gapr   runtime_gatediagnostic_gate
extra_maps&current_equals_predecessor_plus_source'source_predecessor_union_covers_currentshape_over_includes_extra_maps
shape_onlyforward_bridge_absentreverse_reuse_before_fill_only#alias_forward_address_adjacent_onlyalias_execution_excludedroute_roots_table_onlyselected_root_runtime_absentpredecessor_fill_non_promotingroute_order_proven$selector_merge_execution_proof_found"selector_merge_runtime_proof_found*predecessor_persistence_usable_for_currentstrict_hotspot_missing"selector_merge_closure_proof_foundfailed_selector_merge_gate_idsgate_idmissing_evidencepromotion_statusr   r   s%                                        r8   build_summaryr      s5    $''	28bG.223EFL"L1556OPVTVO AB 	;;89	  !BC	 	  	 DEM 	P!!"FG4O +
 	 EF$N 	F;;<=E , &)_q%8". 	@3	@!%%&674?  	 ?@AE 	G##$BCqH	G##$@AQF  	 >?2E 	Q##$LMQSS	Q##$JKqP # 	  !ABdJ 	I $$%HIQN	I $$%BCqH ( 	  !FG-	. 	X $$%MNRWW  	""#CDL 	T"&&'IJeS 
 	$''(GHEQ 	RABeK	R HITQ ! 	*--l;uD 	X-112JKtS	X-112QRVWW #
 5889KL BCtK 	N##$LMQUU	N!%%&HITQ	N #&&'DEM	 ) 	!!"BCtK 	U'++,KLPTT '
 	- 	'.	'-11,?4G	' $&	 / 	!!"?@EI 	G!%%&<=F 
 	- 	'.	'&& '
 &("/&--.NO-&--.OP)--l;tC$&&--.RS&--.EF 6 	033GWE  .P)U^ $4>Ca0gm56\5] ^&&M%N OZ))@&**+IJK L**=*A*AB^*_)` a--@-D-DEd-e,f g))<)@)@A\)](^`		
 &-B)"#6#:#:;Z#["\ ]((;(?(?@^(_'` a&&9&=&=>Z&[%\ ]1556cde f$$7$;$;<i$j#k l  3 7 78Z [\^		
 &:X6^d'(;(?(?@^(_'` a1556^_` a/334Z[\^		
 $6Y^v2  }C %9%=%=>T%U!V W X!!$%9%=%=>`%a!b c d**-.B.F.FGk.l*m)n o!!5!9!9:W!X Y Z!!5!9!9:b!c d e1556[\]_		
 )&<l& 6 : :;[ \] ^2667UVW X/)--.PQR S3)--.XYZ\		
 ,3O/U[0.223RST U''3'7'78\']&^ _.##$STU V&&5&9&9:b&c%df		
 /9W5]c !B!F!FGY!Z [ \&4889def g""C"G"GHd"e!f g""C"G"GH`"a!b c@DDEdef g:>>|LMO		
 *0Be0K,QW#$6#7 8%%@%D%DEX%Y$Z [((C(G(GH^(_'`b		
 %#9iy 5 9 9:W XY Z4889OPQS		
{eHN	h z%))(3Azz%))(3Azz 	-112BCz 	2667LM	z
 	.223DEz 	-112BCz 	-.Tz 	./Vz 	*:z 	%&Dz 	'(;(?(?@^(_z 	%&9&=&=>Z&[z 	()<)@)@A`)az 	$%8%<%<=X%Yz 	*z  	()<)@)@A`)a!z" 	()<)@)@A`)a#z$ 	'(;(?(?@^(_%z& 	%&9&=&=>Z&['z( 	67J7N7N98
)z. 	67J7N7N98
/z4 	+,?,C,C.-
5z: 	4;z< 	'(;(?(?@^(_=z> 	12E2I2I43
?zD 	/0C0G0G21
EzJ 	%&DKzL 	 4 8 89O P VTVMzN 	67K7O7O.8
 8 UzV 	89M9Q9Q0:
 : ]z^ 	12F2J2J)3
_zd 	45I5M5M,6
ezj 	./C/G/G10
kzp 	78L8P8P49
qzv 	5wzx 	3778VWyzz 	89O9S9S.:
{z@ 	@AWA[A[6B
AzF 	78O8S8S)9
GzL 	()D)H)H+*
MzR 	-l.>.>?c.dSzT 	89I9I;:
UzZ 	1/2E2E43
[z` 	,-N-R-RS_-`azb 	K-112]^ezh 	<=^=b=b(>
izn 	89Z9^9^$:
ozt 	<=^=b=b(>
uzz 	?@a@e@e+A
{z@ 	.AzB 	'(C(G(GH[(\CzD 	89T9X9X":
EzJ 	&'<'@'@A^'_KzL 	 5 9 9:P QMzN 	+,POzP 	)*LQzR 	)*LSzT 	8UzV 	%&DWzX 	+YzZ 	<[z\ 	C DE]z^ 	12\_z` 	$F Fazb 	+czd 	Hezf 	 
gzr 	jsz zcs   j.c           
        g dd| d   dd| d    d| d    dd	| d
    d| d    d| d    dd| d    dd| d    dt        | d          dd| d    d| d    dt        | d          dt        | d          dd| d    d| d     d!| d"    d#| d$    d%| d&    d'| d(    d'| d)    d*| d+    d,t        | j                  d-             dd.t        | j                  d/      xs g        d0| j                  d1       d2| d3    d4| d5    ddd6d| j                  d/      xs g D cg c]  }d7| 	 c}dd8dd9d:}| d;   D ]&  }|j                  d<|d=    d>|d?    d>|d@    dA       ( |j	                  g dB       |j	                  dC | dD   D               |j                  d       dEj                  |      S c c}w )FNz%# Save Selector Merge Closure Context r   z
- route: `ri   z -> rk   `z- selectors: source `rm   z`, predecessor `rn   z`, current `ro   z- current root: `rp   z- merge shape only: rH   z"- source+predecessor extra maps: `r   z- forward bridge absent: rs   z"- reverse reuse before fill only: rt   z4- alias public/address-adjacent forward selectors: `ru   z` / `rv   z- route roots table only: rz   z%- selected-root execution ref found: r&   z$- predecessor opcode10 proof found: r   z- route order proven: r,   z8- selector merge execution/runtime/closure proof found: r   z / r   r   z- proof found: r   z - failed selector-merge gates: `r   z- missing evidence count: r   z- evidence refs: r   z.- predecessor persistence usable for current: r   z- promotion status: `r%   z## Missing Evidence- z## Evidencez| kind | status | detail |z| --- | --- | --- |r   z| r\   z | r]   r^   z |)r   z## Remaining Proofsr   c              3  &   K   | ]	  }d |   yw)r   N r@   items     r8   rB   zmarkdown.<locals>.<genexpr>  s     D2dVDs   r   
)rF   r   r   r   extendrD   )summaryr   linesrows       r8   markdownr     s   !/!
! 	! 		!
 WX&'tGH,=+>a@!  (8 9::J7ShKiJjjvw~  @Q  xR  wS  ST  	U! G$456a8! w'789:! -S9Z1[-\,]]^_! $G,A$B#CD! -W5Q-R,ST! ?s7KxCy?z>{  |A  BE  FM  N}  F~  B  A@  @A  	B! %W-B%C$DE! 08W0X/YZ! /w7Z/[.\]!  !);!< =>!!" C7KmCnBoorsz  |\  t]  s^  ^a  bi  jJ  bK  aL  	M#!$ ',/01%!& +3w{{;W/X+Y*ZZ[\'!( %S5F)G)M2%N$OP)!* GKK(:;<=+!, 9Ai9j8kl-!.  (9 :;1=/!0 	1!2 	3!4 	5!6 #*++.?"@"FB	G$Btf+	G7!8 	9!: 	;!< 	=!> 	%?!@ 	A!ED z" Or#f+c#h-CM?"MNO	LL01	LLD1B)CDD	LL99U 
Hs   Gc           ,     t   dj                  d | d   D              }dj                  d | d   D              }dj                  d | j                  d      xs g D              }dj                  dd	d
dddddddt        j                  | d          ddt        j                  t	        | d                dt        j                  t	        | d                dt        j                  t	        | d                dt        j                  t	        | d                dt        j                  t	        | d                dt        j                  t	        | d                d d!| d"    d#t        j                  t        | d$                d%| d&    d'| d(    d)| d*    d+| d,    d-| d.    d/| d0    d1| d2    d3| d4    d5t        j                  t        | j                  d6                   d7t        | j                  d      xs g        d8| j                  d9       d:t        j                  | d;          d d<t        j                  t        | d=                d>t        j                  t        | d?                d@| dA    dBt        j                  t	        | dC                d 	dDdE| dFdGdH| dIdJdE| dFdKdLdMg      S )NNr   c           
   3     K   | ]R  }d t        j                  |d          dt        j                  |d          dt        j                  |d          d T yw)z<tr><td>r\   z	</td><td>r]   r^   z
</td></tr>Nhtmlescape)r@   r   s     r8   rB   zhtml_page.<locals>.<genexpr>  sg       	{{3v;'( ){{3x=)* +{{3x=)* +	s   AAr   c              3  N   K   | ]  }d t        j                  |       d  ywz<li>z</li>Nr   r   s     r8   rB   zhtml_page.<locals>.<genexpr>  s#     cd4;;t#4"5U;c   #%r   c              3  N   K   | ]  }d t        j                  |       d  ywr   r   r   s     r8   rB   zhtml_page.<locals>.<genexpr>  s(      ,0$t{{4 !'r   r   z<!doctype html>z<html lang="en">z<head>z  <meta charset="utf-8">z4  <title>Save Selector Merge Closure Context</title>a    <style>body{font-family:system-ui,sans-serif;margin:24px;line-height:1.45;max-width:1200px}table{border-collapse:collapse;width:100%;margin:16px 0}td,th{border:1px solid #ddd;padding:6px 8px;text-align:left;vertical-align:top}th{background:#f5f5f5}code{white-space:nowrap}</style>z</head>z<body>z.  <h1>Save Selector Merge Closure Context</h1>z  <p>r   z</p>z  <p><b>Route:</b> <code>ri   z</code> -&gt; <code>rk   z</code>; source <code>rm   z</code>; predecessor <code>rn   z</code>; current <code>ro   z</code> root <code>rp   z</code>.</p>z  <p><b>Closure:</b> shapeOnly=rH   z; extraMaps=<code>r   z</code>; forwardBridgeAbsent=rs   z; reverseBeforeFillOnly=rt   z; routeRootsTableOnly=rz   z; selectedRootExecution=r&   z; opcode10Proof=r   z; routeOrder=r,   z; closureProof=r   z; proofFound=r   z!; failedSelectorMergeGates=<code>r   z</code>; missingEvidenceCount=z; evidenceRefs=r   z; status <code>r%   z/  <p><b>Alias closure:</b> publicForward=<code>ru   z&</code>; addressAdjacentForward=<code>rv   z</code>; publicSamples=rw   z; exclusion <code>r   z  <h2>Missing Evidence</h2>z  <ul>z</ul>z  <h2>Evidence</h2>zS  <table><thead><tr><th>kind</th><th>status</th><th>detail</th></tr></thead><tbody>z</tbody></table>z  <h2>Remaining Proofs</h2>z</body>z</html>r   )rD   r   r   r   r?   rF   r   )r   evidence_rowsproof_itemsmissing_itemss       r8   	html_pager     sv   II  :& M ))cPaHbccKII 4;KK@Q4R4XVX M 99&B i<DKK 567t<S):%;<= >S):%;<= >  $C8H0I,J KL M%%)[[W=R5S1T%U$V W!!%S9J1K-L!M N O"kk#g6F.G*HIJ,X$%567 8##';;s7;\3]/^#_"` a''./D'E&F G))01M)N(O P''./D'E&F G))01P)Q(R S!!()L!M N O%&89: ;  '(H IJ K%l34 5S5Q)R%STU V((+GKK8I,J,Pb(Q'R S  ',> ?@ A  $G4E,F GHV$''+{{3w?l7m3n'o&p q004CHw@x<y0z/{ |!!()Q!R S T##';;s7;`3a/b#c"ddp	r *]O5)!aboap  qA  B)[M'k6	
8 8r:   c                   |j                  dd       |dz  }|j                  t        j                  | dd      dz   d	       |9|j                  j                  dd       |j                  t        |       d	       |S )
NT)parentsexist_okz(save_selector_merge_closure_context.jsonF   )ensure_asciiindentr   r0   r1   )mkdir
write_textr4   dumpsparentr   )r   out_dirhtml_outjson_outs       r8   write_outputsr   O  s    MM$M.CCH

7q9D@   dT:Ig.AOr:   c                    t        j                  t              } | j                  dt        t
               | j                  dt               | j                         }t        t        |j                  dz        t        |j                  dz        t        |j                  dz        t        |j                  d	z        t        |j                  d
z        t        |j                  dz        t        |j                  dz        t        |j                  dz        t        |j                  dz        t        |j                  dz        
      }t        ||j                  |j                        }t        d|        y )N)descriptionz	--out-dir)typedefaultz
--html-out)r   z&save_selector_merge_execution_gap.jsonz(save_selector_merge_runtime_context.jsonz$save_selector_set_decomposition.jsonz(save_selector_recomposition_lattice.jsonz'save_selector_target_alias_bridges.jsonz)save_selector_route_root_ref_context.jsonz*save_selector_predecessor_bridge_refs.jsonz.save_selector_selected_root_execution_gap.jsonz4save_selector_predecessor_fill_opcode10_context.jsonz.save_selector_predecessor_persistence_gap.jsonz-wrote save selector merge closure context -> )argparseArgumentParser__doc__add_argumentr   OUT
parse_argsr   r9   r   r   r   print)parserargsr   r   s       r8   mainr   \  s.   $$9F
$<
40D$,,!IIJ$,,!KKL$,,!GGH$,,!KKL$,,!JJK$,,!LLM$,,!MMN$,,!QQR$,,!WWX$,,!QQRG WdllDMMBH	9(
DEr:   __main__r>   )r   r   r7   z
Any | Nonereturnr   )rE   zlist[Any] | Noner   r?   )r   dictr   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   r   r   zPath | Noner   r   )r   None)r   
__future__r   r   r   r4   pathlibr   typingr   __file__resolver   ROOTr   r   r   r9   rF   r   r   r   r   r   __name__r   r:   r8   <module>r      s   D "      H~''*
Ul 	f'\MY	+ ' =
	 ?
	 ;
 ?
 >
	 @
 A
 E
 K

 E
i]( $@8AVVV V  	V
 V !V "V "&V (,V "&V 
Vr
(VEP 25d 
F* zF r:   