
    UHjT
                      d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	  e	e
      j                         j                  d   Zedz  Zdg dd	d
g dd	dg dd	dddgd	dddg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	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&Zd?d'Zd@d(ZdAd)ZdBd*ZefdCd+ZefdCd,ZefdCd-Zed.fdDd/Zed0f	 	 	 	 	 dDd1Zed2f	 	 	 	 	 dDd3ZdEd4ZdFd5ZdGd6ZdHd7ZdId8ZdJd9Z dJd:Z!efdKd;Z"dLd<Z#e$d=k(  r e#        yy)MzSSummarize whether the current VM can run the EXE runtime trace needed for blockers.    )annotationsN)Path   outz&out/runtime_trace_execution_probe.json)
canCaptureTraceNowblockersprobespromotionStatus
proofFoundruntimeTraceExecutionProofFound"failedRuntimeTraceExecutionGateIdsmissingEvidenceevidenceRefsevidenceRefCount)pathfieldsz out/runtime_memory_snapshot.json)loadedBaseHexmemoryr
   z!out/runtime_input_path_probe.json)heldKeyPressedDetectedbaselineSelectedPointerContextfinalSelectedPointerContextz#out/runtime_key_sequence_probe.jsonsequenceCountanyReachedRouteSelectorContextz+out/runtime_key_sequence_prelude_probe.jsonz&out/runtime_selected_pointer_poll.json)sampleCountobservedSelectorsr   z.out/runtime_selected_pointer_prelude_poll.jsonz+out/runtime_selected_pointer_long_poll.jsonz+out/runtime_selected_pointer_late_poll.jsonz(out/runtime_route_watch_values_poll.json)r   observedWatchValuesr   z4out/runtime_selected_pointer_savedata_load_poll.jsonz>out/runtime_selected_pointer_multislot_savedata_load_poll.json)r   publicSaveSelectorsr   zIout/runtime_selected_pointer_multislot_savedata_load_case_alias_poll.jsonzTout/runtime_selected_pointer_multislot_savedata_load_input_path_case_alias_poll.jsonzSout/runtime_selected_pointer_synthetic_selector_2_0_input_path_case_alias_poll.jsonzXout/runtime_selected_pointer_patched_public_selector_2_0_input_path_case_alias_poll.jsonz#out/runtime_save_file_io_probe.json)backendinputTraceUsableanySavedat1DatAccessz*out/runtime_save_file_io_strace_probe.jsonz1out/runtime_save_file_io_strace_attach_probe.jsonzAout/runtime_save_file_io_strace_attach_load_candidates_probe.jsonzLout/runtime_save_file_io_strace_attach_load_candidates_case_alias_probe.jsonc                 h    t         D  cg c]  } t        | d   z  j                         r|   c} S c c} w )Nr   )'RUNTIME_TRACE_FEASIBILITY_EVIDENCE_REFSROOTexists)refs    @/home/exedev/hwanse/tools/summarize_runtime_trace_feasibility.pyexisting_evidence_refsr'   6   s9     ;3v;&&( 	  s   #/c           	     .   	 t        j                  | t        t         j                  t         j                  ddd      }|j                  |j                  j                         fS # t
        t         j                  f$ r}dt        |      fcY d }~S d }~ww xY w)NTreplace
   )cwdstdoutstderrtexterrorstimeout   )
subprocessrunr#   PIPESTDOUTOSErrorSubprocessErrorstr
returncoder,   strip)cmdresultexcs      r&   run_textr>   >   s    ??$$
 fmm11333 Z//0 CH}s   <A$ $B=B	BBc                2    | j                         xs dgd   S )N r   )
splitlines)r.   s    r&   
first_linerB   N   s    OO%"q))    c                j   t        dd| g      \  }}d }d }|j                         D ]{  }|j                         }|j                  d      r#|j	                  dd      d   j                         }|j                  d      sY|j	                  dd      d   j                         }} | |||t        |      dS )Nz	apt-cachepolicyz
Installed::r   z
Candidate:)packagestatus	installed	candidaterawFirstLine)r>   rA   r:   
startswithsplitrB   )rG   rH   outputrJ   rI   linestrippeds          r&   apt_candidaterQ   R   s    {Hg>?NFFII!!# :::<|, sA.q1779I|, sA.q1779I: "6* rC   c                J    t        j                  |       }| t        |      |dS )N)command	availabler   )shutilwhichbool)rS   r   s     r&   command_inforX   e   s'    << D$Z rC   c                    | dz  }|j                         sy 	 t        j                  |j                  d            }t        |t              r|S d S # t        t        j
                  f$ r Y y w xY w)Nz"runtime_trace_execution_probe.jsonutf-8encodingr$   jsonloads	read_textr6   JSONDecodeError
isinstancedictout_dirr   datas      r&   load_execution_proberg   n   sl    99D;;=zz$..'.:; dD)43t3 T))*    %A A-,A-c                    | dz  }|j                         sy 	 t        j                  |j                  d            }t        |t              r|S d S # t        t        j
                  f$ r Y y w xY w)Nzruntime_memory_snapshot.jsonrZ   r[   r]   rd   s      r&   load_memory_snapshotrj   y   sl    33D;;=zz$..'.:; dD)43t3 T))* rh   c                    | dz  }|j                         sy 	 t        j                  |j                  d            }t        |t              r|S d S # t        t        j
                  f$ r Y y w xY w)Nzruntime_input_path_probe.jsonrZ   r[   r]   rd   s      r&   load_input_proberl      sl    44D;;=zz$..'.:; dD)43t3 T))* rh   zruntime_key_sequence_probe.jsonc                    | |z  }|j                         sy 	 t        j                  |j                  d            }t        |t              r|S d S # t        t        j
                  f$ r Y y w xY wNrZ   r[   r]   re   filenamer   rf   s       r&   load_key_sequence_proberq      sk    XD;;=zz$..'.:; dD)43t3 T))* rh   z"runtime_selected_pointer_poll.jsonc                    | |z  }|j                         sy 	 t        j                  |j                  d            }t        |t              r|S d S # t        t        j
                  f$ r Y y w xY wrn   r]   ro   s       r&   load_selected_pointer_pollrs      m     XD;;=zz$..'.:; dD)43t3 T))* rh   zruntime_save_file_io_probe.jsonc                    | |z  }|j                         sy 	 t        j                  |j                  d            }t        |t              r|S d S # t        t        j
                  f$ r Y y w xY wrn   r]   ro   s       r&   load_save_file_io_proberv      rt   rh   c                   g }t        | xs i j                  d      xs i j                               D ];  \  }}dj                  d |xs g D              }|j	                  | d|xs d        = dj                  |      xs dS )Nr   ,c              3     K   | ]:  }|j                  d       '|j                  d        d|j                  d        < yw)valueHexNxcountget.0rows     r&   	<genexpr>z&watch_value_summary.<locals>.<genexpr>   sF      
wwz". wwz"#1SWWW%5$67
s   A A=-; )sortedr~   itemsjoinappend)pollpartsnamerowsvaluess        r&   watch_value_summaryr      s    Etzr../DEKRRTU 0
d 
zr
 

 	vQv}o./0 99U"s"rC   c                r   | xs i j                  d      xs g }t               }d}d}d}d}|D ]  }|j                  d      xs g }t        d |D              }	|	r|dz  }|t        d |D              z  }d}
|j                  d      xs g D ]9  }|j                  d	      xs g }|sd
}
|dz  }|j	                  d |D               ; |
s|dz  } t        |      t        d |D              t        d |D              t        d |D              ||||t        |      t        |      xr |t        |      k(  d
S )Nr   r   writesc              3  h   K   | ]*  }|j                  d       xs i j                  d      du  , yw)writewriteOkTNr}   r   r   s     r&   r   z6selected_pointer_poll_input_quality.<locals>.<genexpr>   s/     aQVEIIg.4"99)DLas   02r   c              3  n   K   | ]-  }|j                  d       xs i j                  d      du s*d / yw)r   r   Tr   Nr}   r   s     r&   r   z6selected_pointer_poll_input_quality.<locals>.<genexpr>   s3     !mEIIg<N<TRT;Y;YZc;dhl;l!!ms   +55FeventspressedKeyOffsetsTc              3  B   K   | ]  }t        |t              s|  y wN)rb   intr   offsets     r&   r   z6selected_pointer_poll_input_quality.<locals>.<genexpr>   s     &_&zRXZ]G^v&_s   c              3  D   K   | ]  }|j                  d       sd  yw)linuxPidr   Nr}   r   s     r&   r   z6selected_pointer_poll_input_quality.<locals>.<genexpr>   s     #M#9LA#M     c              3  D   K   | ]  }|j                  d       sd  yw)r   r   Nr}   r   s     r&   r   z6selected_pointer_poll_input_quality.<locals>.<genexpr>   s     *Y@X1*Yr   c              3  D   K   | ]  }|j                  d       sd  yw)focusedWindowsr   Nr}   r   s     r&   r   z6selected_pointer_poll_input_quality.<locals>.<genexpr>   s     -]C377K[C\a-]r   )
r   sequenceWithPidCountsequenceWithLoadedBaseCountsequenceWithFocusedWindowCountsequenceWithKeyWritesCountkeyWriteOkCount!sequenceWithObservedKeyPressCountpressedEventCountobservedPressedKeyOffsetsinputObservedInAllSequences)r~   setanysumupdatelenr   rW   )r   r   pressed_offsetspressed_event_countsequence_with_observed_presskey_write_ok_countsequence_with_key_writesr   r   row_write_okrow_has_presseventoffsetss                r&   #selected_pointer_poll_input_qualityr      sj   JBF#)rDeO#$   ."(baZ`aa$)$c!m!mmmWWX&," 	`Eii 34:G $#q(#&&&_G&__	` (A-(.  T ##M#M M'**Y*Y'Y*--]4-]*]&>--I0%+O%<'+Dz'_6RVYZ^V_6_ rC   c                   | sydj                  d | j                  d      xs g D              xs d}d| j                  d       d| j                  d       d	| j                  d
       d| j                  d       d| j                  d       d| j                  d       d| j                  d       d| j                  d       d| j                  d       d| S )Nr   rx   c              3  2   K   | ]  }t        |        y wr   )r8   r   s     r&   r   z<selected_pointer_poll_input_quality_brief.<locals>.<genexpr>   s     `vs6{`   r   zpid=r   /r   z base=r   z keyWrites=r   z pressedSeq=r   z pressedEvents=r   z	 offsets=r   r~   )qualityr   s     r&   )selected_pointer_poll_input_quality_briefr      s    hh`=X1Y1_]_``gdgG
w{{1231W[[5Q4R S9:;1W[[=Y<Z [[[!=>?q_A]@^ _kk"EFGqUdIeHf g %89:)G9		NrC   c                    t        d      | z  }|j                         s| ddt        |      ddS |j                  dd      }| dd	|v t        |      t	        |      dS )
Nz/proc/sys/fs/binfmt_miscFr@   )r   
registeredenabledr   rK   rZ   r)   )r\   r/   Tr   )r   r$   r8   r`   rB   )r   r   raws      r&   binfmt_statusr      sr    *+d2D;;=I
 	
 ..').
<C#D	"3 rC   c                 <   dD  ci c]  } | t        |        }} t        ddg      \  }}t        ddg      \  }}t        d      }t        d      }t        d      }t        d      }t        d	      }	t        dd
g      \  }
}d|
t        |      |
dk(  d}t        g d      \  }}d|t        |      |dk(  d}t        g d      \  }}d|t        |      |dk(  d}t	        d      }t               }t               }t               }t               }t        d      }t               }t        d      }t        d      }t        d      }t        d      }t        d      }t        d      }t        d      } t        d      }!t        d      }"t        d      }#t        |      }$t        |      }%t        |       }&t        |!      }'t        |"      }(t        |#      })t               }*t        d      }+t        d       },t        d!      }-t        d"      }.|d   d#   xr- |d$   d#   xr# |d%   d#   xr |d&   d#   xr |d'   d#   xr |d(   }/g }0|d   d#   s|0j                  d)       |d$   d#   s|0j                  d*       |d%   d#   s|0j                  d+       |d&   d#   s|0j                  d,       |d'   d#   s|0j                  d-       d.|r|j                         ng vr|0j                  d/       |j                  d0      d1v r|0j                  d2       |d(   s|0j                  d3|d4   xs d5        |d(   r7|d(   s2|d6   s|0j                  d7       n|0j                  d8|d4   xs d5        |d   d#   r|d6   s|d(   s|0j                  d9       |r<|j                  d:      s+|0j                  d; |j                  d<      xs g D               |/xr |0 }1d=d>d?d@dAdBdCdDdEdAdFdCdGdHdAdIdCdJdKdAg}2g dL}3|xs i j                  dM      xs i }4|4j                  dN      xs dO}5t!        |4j                  dP            xr d6|5v }6|j                  dP      |j                  d6      |j                  dQ      |4j                  dP      |6t        |5      |j                  d(      |xs i j                  d:      |4j                  dP      dRu r|6t!        |j                  d6            k7  rdSndTdU	}7dO}8|r|j                  dV      xs i j                  dW      ra|j                  dV      xs i }9dX|j                  dY       dZ|9j                  d[      xs |9j                  d\       d]|9j                  d^       d_}8dO}:|rd|j                  d`      xs i };da|j                  db       dc|j                  dd       de|j                  df       dg|;j                  dh      xs di dj	}:dO}<|r9dk|j                  dl       dm|j                  dn       do|j                  dp       dj}<dO}=|rg }>|j                  dq      xs g D ]2  }?|?j                  dr      xs g D ]  }@|@|>vs|>j                  @        4 ds|j                  dl       dtduj#                  |>      xs di dv|j                  dp       dj}=dO}A|rdw|j                  dx       dy|j                  dl       dz|j                  d{       d|duj#                  |j                  d}      xs g       xs di dv|j                  dp       d~|j                  d       dj}AdO}B|rd|j                  dx       dy|j                  dl       dz|j                  d{       d|duj#                  |j                  d}      xs g       xs di dv|j                  dp       d~|j                  d       dj}BdO}C|rd|j                  dx       dy|j                  dl       d|j                  d{       d|duj#                  |j                  d}      xs g       xs di dv|j                  dp       d~|j                  d       dj}CdO}D|rd|j                  dn       d|j                  dx       dy|j                  dl       dz|j                  d{       d|duj#                  |j                  d}      xs g       xs di dv|j                  dp       d~|j                  d       dj}DdO}E|rnd|j                  dx       dy|j                  dl       dduj#                  |j                  d}      xs g       xs di dt%        |       dv|j                  dp       dj}EdO}F|rd|j                  dx       dy|j                  dl       dt'        |$       dduj#                  |j                  d}      xs g       xs di dv|j                  dp       d~|j                  d       dj}FdO}G|rd|j                  dx       dy|j                  dl       dt'        |%       dduj#                  |j                  d      xs g       xs di dduj#                  |j                  d}      xs g       xs di d|j                  d       dv|j                  dp       dj}GdO}H| rd| j                  dx       dy| j                  dl       dt'        |&       dduj#                  | j                  d      xs g       xs di dduj#                  | j                  d}      xs g       xs di d| j                  d       dv| j                  dp       dj}HdO}I|!rd|!j                  dx       dy|!j                  dl       dt'        |'       dduj#                  |!j                  d      xs g       xs di dduj#                  |!j                  d}      xs g       xs di d|!j                  d       dv|!j                  dp       dj}IdO}J|"rd|"j                  dx       dy|"j                  dl       dt'        |(       dduj#                  |"j                  d      xs g       xs di dduj#                  |"j                  d}      xs g       xs di d|"j                  d       dv|"j                  dp       d}JdO}K|#rd|#j                  dx       dy|#j                  dl       dt'        |)       dduj#                  |#j                  d      xs g       xs di dduj#                  |#j                  d}      xs g       xs di d|#j                  d       dv|#j                  dp       d}KdO}L|*rd|*j                  d      xs i j                  d       d|*j                  d       d|*j                  d       d|*j                  d       d|*j                  dl       d|*j                  d       d|*j                  dl       d|*j                  d       d}LdO}M|+rd|+j                  d      xs i j                  d       d|+j                  d       d|+j                  d       d|+j                  d       d|+j                  dl       d|+j                  d       d|+j                  dl       d|+j                  d       d}MdO}N|,rd|,j                  d      xs i j                  d       d|,j                  d       d|,j                  d       d|,j                  d       d|,j                  dl       d|,j                  d       d|,j                  dl       d|,j                  d       d}NdO}O|-rd|-j                  d      xs i j                  d       d|-j                  d       d|-j                  d       d|-j                  d       d|-j                  dl       d|-j                  d       d|-j                  dl       d|-j                  d       d}OdO}P|.rd|.j                  d      xs i j                  d       d|.j                  d       d|.j                  d      xs i j                  d6       d|.j                  d       d|.j                  d       d|.j                  dl       d|.j                  d       d|.j                  dl       d|.j                  d       d}P|/sd}Qn|r||j                  d:      skt)        d |j                  d<      xs g D              }Rd|Rrdndz   |8z   |:z   |<z   |=z   Az   Bz   Cz   Dz   Ez   Fz   Gz   Hz   Iz   Jz   Kz   Lz   Mz   Nz   Oz   Pz   }Qn>d|8z   |:z   |<z   |=z   Az   Bz   Cz   Dz   Ez   Fz   Gz   Hz   Iz   Jz   Kz   Lz   Mz   Nz   Oz   Pz   }Q|rb|j                  d:      sQt)        d |j                  d<      xs g D              r*|r&|j                  dV      xs i j                  dW      rdn	dndn|1sdnd}S|d(   r!|d(   sSd|d4    d|d(    d|d6   sdnd djz  }S|7j                  dë      dRu rMSd|7j                  dë       d|7j                  dƫ       d|7j                  dȫ       d|7j                  dʫ       z  }S|d(   r|d(   rSd|d4    d|d4    d͝z  }S|ra|j                  db      dRu rNSdz  }S|j                  d`      xs i };|j                  df      dRu rSd|;j                  dh      xs di dНz  }SSdz  }S|r<Sd|j                  dl       d|j                  dn       d|j                  dp       d՝z  }S|rg }>|j                  dq      xs g D ]2  }?|?j                  dr      xs g D ]  }@|@|>vs|>j                  @        4 Sd|j                  dl       dduj#                  |>      xs di d|j                  dp       dٝz  }S|reSd|j                  dx       d|j                  dl       dduj#                  |j                  d}      xs g       xs di d|j                  dp       dݝ	z  }S|reSd|j                  dx       d|j                  dl       dduj#                  |j                  d}      xs g       xs di d|j                  dp       dߝ	z  }S|reSd|j                  dx       d|j                  dl       dduj#                  |j                  d}      xs g       xs di d|j                  dp       dߝ	z  }S|rwSd|j                  dn       d|j                  dx       d|j                  dl       dduj#                  |j                  d}      xs g       xs di d|j                  dp       dߝz  }S|rqSd|j                  dx       d|j                  dl       dduj#                  |j                  d}      xs g       xs di dt%        |       d|j                  dp       dߝz  }S|rqSd|j                  dx       d|j                  dl       dt'        |$       dduj#                  |j                  d}      xs g       xs di d|j                  dp       dz  }S|rSd|j                  dx       d|j                  dl       dt'        |%       dduj#                  |j                  d      xs g       xs di dduj#                  |j                  d}      xs g       xs di d|j                  d       d|j                  dp       dz  }S| rSd| j                  dx       d| j                  dl       dt'        |&       dduj#                  | j                  d      xs g       xs di dduj#                  | j                  d}      xs g       xs di d| j                  d       d| j                  dp       dz  }S|!rSd|!j                  dx       d|!j                  dl       dt'        |'       dduj#                  |!j                  d      xs g       xs di dduj#                  |!j                  d}      xs g       xs di d|!j                  d       d|!j                  dp       dz  }S|"rSd|"j                  dx       d|"j                  dl       dt'        |(       dduj#                  |"j                  d      xs g       xs di dduj#                  |"j                  d}      xs g       xs di d|"j                  d       d|"j                  dp       dz  }S|#rSd|#j                  dx       d|#j                  dl       dt'        |)       dduj#                  |#j                  d      xs g       xs di dduj#                  |#j                  d}      xs g       xs di d|#j                  d       d|#j                  dp       dz  }S|*rSd|*j                  d       d|*j                  d      xs i j                  d       d|*j                  d       d|*j                  d       d|*j                  dl       d|*j                  d       d|*j                  dl       dz  }S|+rSd|+j                  d       d|+j                  d      xs i j                  d       d|+j                  d       d|+j                  d       d|+j                  dl       d|+j                  d       d|+j                  dl       dz  }S|,rSd|,j                  d       d|,j                  d      xs i j                  d       d|,j                  d       d|,j                  d       d|,j                  dl       d|,j                  d       d|,j                  dl       d|,j                  d       d|,j                  d       dz  }S|-rSd|-j                  d       d|-j                  d      xs i j                  d       d|-j                  d       d|-j                  d       d|-j                  dl       d|-j                  d       d|-j                  dl       d|-j                  d       d|-j                  d       d z  }S|.rSd|.j                  d       d|.j                  d      xs i j                  d       d|.j                  d       d|.j                  d       d|.j                  dl       d|.j                  d       d|.j                  dl       d|.j                  d       d|.j                  d       dz  }Sg }T|1dRurTj                  d       |xs i j                  d:      dRurTj                  d       Tj                  d       g d}Ut+               }Vi dd	d
dd|Td|Ud|Vdt-        |V      d|1d<|0d|d|d|d|dM|d|7d|d|r|j                         ng d|||||	di d|d|d|d|d|d|d |d!|d"|d#|d$|d%|$d&|d'|%d(| d)|&d*|!|'|"|(|#|)|*|+|,|-|.|2|3|1sd+nd,SQd-S c c} w (.  N)winewinedbgwinebootgdbgdb-multiarchXvfbxvfb-runxdotoolxwininfo	qemu-i386stracedpkgz--print-architecturez--print-foreign-architectureswine32wine64-toolsr   qemu-user-binfmtr   	--versionzwine --versionr   )rS   rH   	firstLineok)r   /usr/lib/wine/winer   &qemu-i386 /usr/lib/wine/wine --version)envzWINEDEBUG=-allr   r   r;   z/cver:env WINEDEBUG=-all qemu-i386 /usr/lib/wine/wine cmd /c verr   z'runtime_key_sequence_prelude_probe.json)rp   z*runtime_selected_pointer_prelude_poll.jsonz'runtime_selected_pointer_long_poll.jsonz'runtime_selected_pointer_late_poll.jsonz$runtime_route_watch_values_poll.jsonz0runtime_selected_pointer_savedata_load_poll.jsonz:runtime_selected_pointer_multislot_savedata_load_poll.jsonzEruntime_selected_pointer_multislot_savedata_load_case_alias_poll.jsonzPruntime_selected_pointer_multislot_savedata_load_input_path_case_alias_poll.jsonzOruntime_selected_pointer_synthetic_selector_2_0_input_path_case_alias_poll.jsonzTruntime_selected_pointer_patched_public_selector_2_0_input_path_case_alias_poll.jsonz&runtime_save_file_io_strace_probe.jsonz-runtime_save_file_io_strace_attach_probe.jsonz=runtime_save_file_io_strace_attach_load_candidates_probe.jsonzHruntime_save_file_io_strace_attach_load_candidates_case_alias_probe.jsonrT   r   r   r   r   r   zwine is not installedzwinedbg is not installedzwineboot is not installedzgdb is not installedz>xvfb-run/Xvfb is not installed for headless DirectDraw startupi386zTi386 architecture is not enabled, so wine32 is unavailable from the current apt viewrJ   >   N(none)z@wine32 has no candidate package in the current apt configurationzwine --version failed: r   z	no outputr   zidirect qemu-i386 can start the Wine loader, but Wine child-process loader exec still fails without binfmtzGdirect qemu-i386 Wine cmd child smoke failed despite qemu-i386 binfmt: zYqemu-i386 is installed but qemu-i386 binfmt is not enabled for transparent i386 Wine execr   c              3  &   K   | ]	  }d |   yw)zexecution probe: N r   items     r&   r   z build_summary.<locals>.<genexpr>  s     et+D62e   r   zmode1 source write watchpointzwatch-write-byte
0x0059e348zUbreak on any runtime producer of opcode 0x24 mode1 source before the handler reads it)r   kind
addressHexpurposezopcode24 mode1 readzexecute-breakpoint
0x0040c675zNconfirm the value consumed by opcode 0x24 mode1 on the map1_01a->map2_02d pathzcurrent blocker frontier reader
0x00542b0czTconfirm the control path reaches the branch reader and capture selectionBuffer[0x20]zgate-time context base proof
0x005428c4zHcapture context+0xa8 base and gate index before the first inherited gate)z8sudo dpkg --add-architecture i386 && sudo apt-get updatezBsudo apt-get install wine32 wine64-tools xvfb gdb qemu-user-binfmtz"sudo apt-get install gdb-multiarchzUif native i386 exec is unavailable, register qemu-i386 binfmt for EM_386 ELF binarieszxvfb-run -a wineboot -uz.python3 tools/probe_runtime_trace_execution.pyz4WINEDEBUG=-all xvfb-run -a winedbg --gdb Hwanse2.exezkgdb -q -ex 'target remote :<winedbg-port>' -ex 'watch *(unsigned char*)0x0059e348' -ex 'hbreak *0x0040c675'z.python3 tools/probe_runtime_memory_snapshot.pyz)python3 tools/probe_runtime_input_path.pyz,python3 tools/probe_runtime_key_sequences.pyz4python3 tools/probe_runtime_selected_pointer_poll.pyzpython3 tools/probe_runtime_selected_pointer_poll.py --prelude input-path --sequence-name accept --sequence-name accept-accept --sequence-name accept-down-accept --output-prefix runtime_selected_pointer_prelude_polla(  python3 tools/probe_runtime_selected_pointer_poll.py --startup-wait 45 --output-prefix runtime_selected_pointer_late_poll --sequence 'late-menu-explore=Return,Return,z,Return,Down,Return,Down,Return,Up,Return,Escape,Return,space,Return,x,Return,c,Return,Right,Return,Left,Return,Down,Down,Return'aK  python3 tools/probe_runtime_selected_pointer_poll.py --startup-wait 45 --hold 0.35 --gap 0.5 --interval 0.02 --output-prefix runtime_route_watch_values_poll --sequence 'late-menu-explore=Return,Return,z,Return,Down,Return,Down,Return,Up,Return,Escape,Return,space,Return,x,Return,c,Return,Right,Return,Left,Return,Down,Down,Return'zplace a non-synthetic savedat under SaveData\savedat1.dat, then run python3 tools/probe_runtime_selected_pointer_poll.py --startup-wait 18 --output-prefix runtime_selected_pointer_savedata_load_poll with load-menu candidate sequenceszGpython3 tools/probe_runtime_selected_pointer_multislot_savedata_poll.pyzpython3 tools/probe_runtime_selected_pointer_multislot_savedata_poll.py --case-aliases --output-prefix runtime_selected_pointer_multislot_savedata_load_case_alias_pollzpython3 tools/probe_runtime_selected_pointer_multislot_savedata_poll.py --prelude input-path --case-aliases --output-prefix runtime_selected_pointer_multislot_savedata_load_input_path_case_alias_polla  python3 tools/probe_runtime_selected_pointer_multislot_savedata_poll.py --prelude input-path --case-aliases --staged-kind 'patched public-base diagnostic' --slot-source 1=out/runtime_patched_public_savedat_selector_2_0.dat --sequence input-path-slot1-down-enter=Down,Return --sequence input-path-slot1-down-enter-enter=Down,Return,Return --output-prefix runtime_selected_pointer_patched_public_selector_2_0_input_path_case_alias_pollzpython3 tools/probe_runtime_save_file_io.py --backend strace --sequence load-down-enter=Down,Return --output-prefix runtime_save_file_io_strace_probezpython3 tools/probe_runtime_save_file_io.py --backend strace-attach --sequence load-down-enter=Down,Return --output-prefix runtime_save_file_io_strace_attach_probea  python3 tools/probe_runtime_save_file_io.py --backend strace-attach --output-prefix runtime_save_file_io_strace_attach_load_candidates_probe --sequence load-down-enter=Down,Return --sequence load-down-z=Down,z --sequence load-down-space=Down,space --sequence load-down-x=Down,x --sequence load-return-down-z=Return,Down,z --sequence load-return-down-space=Return,Down,space --sequence load-return-down-x=Return,Down,x --sequence load-down-enter-enter=Down,Return,Returna  python3 tools/probe_runtime_save_file_io.py --backend strace-attach --case-aliases --output-prefix runtime_save_file_io_strace_attach_load_candidates_case_alias_probe --sequence load-down-enter=Down,Return --sequence load-down-z=Down,z --sequence load-down-space=Down,space --sequence load-down-x=Down,x --sequence load-return-down-z=Return,Down,z --sequence load-return-down-space=Return,Down,space --sequence load-return-down-x=Return,Down,x --sequence load-down-enter-enter=Down,Return,Returnr   r   qemuI386Binfmtr   r@   r   rK   TzThe current summary /proc view and the embedded execution probe disagree about qemu-i386 binfmt state, but both paths still leave the child/debugger trace unavailable.zZThe qemu-i386 binfmt state is consistent with the child/debugger trace availability check.)	summaryRegisteredsummaryEnabledsummaryRawFirstLineexecutionProbeRegisteredexecutionProbeEnabledexecutionProbeRawFirstLineqemuWineChildExecOkdebuggerProbeCanCapture
conclusionr   canReadProcessMemoryzV A /proc process-memory snapshot can read the relocated Hwanse2.exe image (loadedBase=r   z, selectedPointer=selectedPointerStaticValueHexselectedPointerRuntimeValueHexz, currentRootSelected= selectedPointerEqualsCurrentRootzA), but it is an idle sample, not a watchpoint/control-flow trace.r   zy A bounded input probe found Hwanse2.exe windows and readable input memory, held X keydown reached the DirectInput cache=r   z6, synthetic X key events changed the selected pointer=xEventChangedSelectedPointerz), and cached-key-buffer pokes changed it=#keyBufferPokeChangedSelectedPointerz to selector context selectorr   .z$ A bounded key-sequence probe tried r   z2 direct key-buffer sequence(s) after startup wait startupWaitSecondszs; route selector 2:0 reached=r   	sequencesuniqueSelectorContextsz< A supplemental input-path prelude key-sequence probe tried z! sequence(s); observed selectors=rx   z, route selector 2:0 reached=z. A non-debugger selected-pointer poll sampled r   z state(s) across z key-buffer sequence(s) at pollIntervalSecondsz s intervals; observed selectors=r   z, current root reached=anyReachedCurrentRootz9 A supplemental input-path selected-pointer poll sampled z3 A supplemental long selected-pointer poll sampled z" custom key-buffer sequence(s) at z8 A supplemental late-start selected-pointer poll waited zs before input and sampled z/ A supplemental route watch-value poll sampled z, key-buffer sequence(s); observed selectors=z, watchValues=zz A supplemental SaveData-load selected-pointer poll placed a public captured save under SaveData\savedat1.dat and sampled z0 load-menu candidate sequence(s); input quality=z; observed selectors=z A supplemental multislot SaveData-load selected-pointer poll staged public captured saves under SaveData\savedat1.dat..savedat3.dat and sampled z; public selectors=r   z, observed selectors=z , observed public save selector=anyReachedPublicSaveSelectorz A supplemental case-alias multislot SaveData-load selected-pointer poll staged public captured saves under SaveData\savedat1.dat..savedat3.dat while temporarily aliasing original archive case names, and sampled z A supplemental input-path case-alias multislot SaveData-load selected-pointer poll staged public captured saves under SaveData\savedat1.dat..savedat3.dat, ran the input-path prelude, and sampled z A supplemental standalone synthetic selector 2:0 poll staged a save-shaped file under SaveData\savedat1.dat, ran the input-path prelude with case aliases, and sampled z; staged selectors=z, observed staged selector=zp. This leaves the standalone synthetic file non-promoting and contrasts with the patched public-base diagnostic.z A supplemental patched public-base selector 2:0 diagnostic poll staged a public save with only selector/position bytes patched under SaveData\savedat1.dat, ran the input-path prelude with case aliases, and sampled zz. This proves the current load path can select a constructed 2:0 save-shaped diagnostic, but not a captured gameplay save.zP A supplemental SaveData file-I/O trace probe placed the same public save under temporarySavetargetz with backend=r   z; inputTraceUsable=r   z
, pidRuns=r   r   z, keyWriteRuns=r   z, savedat1Access=r    z,. This is backend-feasibility evidence only.zQ A supplemental strace SaveData file-I/O probe placed the same public save under zZ A supplemental attached strace SaveData file-I/O probe placed the same public save under z}. This makes the bounded file-I/O window usable, but absent savedat lines still only cover that load-menu candidate sequence.zU A broader attached strace SaveData file-I/O probe placed the same public save under z. This makes all covered load-menu candidate file-I/O windows usable, but it still only rules out savedat access for those bounded inputs.zX A case-alias attached strace SaveData file-I/O probe placed the same public save under z; caseAliases=caseAliasesz, inputTraceUsable=zq. The aliases reduce resource lookup trace noise, but no savedat access was observed in the same bounded windows.a	  The current exe.dev VM cannot run the required Hwanse2.exe runtime producer trace yet because one or more Wine/debugger/headless prerequisites still fail. The exact watchpoints and breakpoints are recorded so the trace can be retried after the environment is fixed.c              3  $   K   | ]  }d |v  
 ywnotepadNr   r   s     r&   r   z build_summary.<locals>.<genexpr>  s     "g9#4"g   zWine, winedbg, Xvfb, gdb, and i386 package prerequisites are installed, but the bounded execution probe still fails before a stable route trace can be captured. zThe notepad control probes fail too, so this is a qemu-i386/WineDbg debugger-path issue rather than Hwanse-specific route proof.zNTreat the blocker as a runtime execution/debugger failure, not as route proof.zThe required Wine/winedbg/Xvfb commands appear available; run the recorded watchpoint plan before promoting map1_01a->map2_02d.c              3  $   K   | ]  }d |v  
 ywr
  r   r   s     r&   r   z build_summary.<locals>.<genexpr>6  s     W9$Wr  a  The current VM has Wine tooling installed, but qemu-i386/WineDbg control probes fail even for notepad, so the Hwanse2.exe runtime trace cannot be captured here yet. A non-debugger /proc memory snapshot can read Hwanse2.exe globals, but the latest idle sample is not route-path proof.zThe current VM has Wine tooling installed, but qemu-i386/WineDbg control probes fail even for notepad, so the Hwanse2.exe runtime trace cannot be captured here yet.zThe current VM has Wine tooling installed, but the Hwanse2.exe/winedbg execution probe still fails before the runtime trace can be captured.zEThe current VM cannot run the required Hwanse2.exe runtime trace yet.zTThe runtime trace environment is available, but the trace has not been captured yet.z1 Direct qemu-i386 can run the Wine loader smoke (z), but CLI child exec smoke ok=r   z$transparent binfmt is still requiredz)the child smoke still needs investigationr   z2 Embedded execution-probe binfmt view: registered=z
, enabled=r   z; summary view enabled=r   z. r   z6 Direct qemu-i386 can run both the Wine loader smoke (z) and CLI child exec smoke (z;); the remaining blocker is the WineDbg/runtime trace path.z A bounded X/input-buffer probe confirms Wine DirectInput can see held synthetic keydowns, but ordinary X key events did not move the idle selected pointer. zUDirect cached-key-buffer pokes moved the selected pointer only to non-route selector z, not current selector 2:0. z=This remains input-path diagnostic evidence, not route proof.z4 A bounded direct key-buffer sequence probe covered z sequence(s) after z.s startup wait and reached route selector 2:0=z/; it remains non-promoting diagnostic evidence.z< A supplemental input-path prelude key-buffer probe covered z! sequence(s), observed selectors=z!, and reached route selector 2:0=z; it is diagnostic-only.z. A non-debugger selected-pointer poll covered z sample(s) across z3 direct key-buffer sequence(s), observed selectors=z/; it still does not replace a watchpoint trace.z9 A supplemental input-path selected-pointer poll covered z; it is also diagnostic-only.z3 A supplemental long selected-pointer poll covered z3 custom key-buffer sequence(s), observed selectors=zs, covered z, key-buffer sequence(s), observed selectors=z/ A supplemental route watch-value poll covered zi A supplemental SaveData-load poll placed a public captured save under SaveData\savedat1.dat and covered z/ load-menu candidate sequence(s), inputQuality=z/; it did not prove the original load-menu path.z A supplemental multislot SaveData-load poll staged public captured saves under SaveData\savedat1.dat..savedat3.dat and covered z, publicSelectors=z, observedPublic=z A supplemental case-alias multislot SaveData-load poll staged public captured saves under SaveData\savedat1.dat..savedat3.dat and temporarily aliased original resource archive case names; it covered zD; aliases did not make the public saves or route selector reachable.z A supplemental input-path case-alias multislot SaveData-load poll staged public captured saves under SaveData\savedat1.dat..savedat3.dat, ran the input-path prelude, and covered zN; this remains non-route load-path evidence, not current route selector proof.z A supplemental standalone synthetic selector 2:0 poll staged a save-shaped file under SaveData\savedat1.dat, ran the input-path prelude with case aliases, and covered z, stagedSelectors=z, observedStaged=z=; this keeps standalone synthetic selector 2:0 non-promoting.z A supplemental patched public-base selector 2:0 diagnostic poll staged a public save with only selector/position bytes patched under SaveData\savedat1.dat, ran the input-path prelude with case aliases, and covered zx; this proves the load path can select a constructed 2:0 save-shaped diagnostic, but it is not a captured gameplay save.z/ A supplemental SaveData file-I/O trace probe (z) placed a public save under z but inputTraceUsable=z
 (pidRuns=zQ); absent savedat lines remain backend-feasibility evidence, not load-menu proof.z8 A supplemental attached SaveData file-I/O trace probe (z and had inputTraceUsable=z, matchedFileIoLines=matchedLineCountz|); this rules out savedat file access only for the bounded attached load-menu candidate window, not the full load-menu path.z3 A broader attached SaveData file-I/O trace probe (zz); this rules out savedat file access across the covered bounded load-menu candidate windows, not the full load-menu path.z6 A case-alias attached SaveData file-I/O trace probe (zB with temporary resource archive aliases and had inputTraceUsable=zZ); aliases reduce archive lookup noise but still do not prove full load-menu reachability.z!runtime-trace-capture-unavailablez%stable-watchpoint-session-unavailablez&equivalent-selected-root-proof-missing)z4stable runtime trace capture session for Hwanse2.exezYwatchpoint or breakpoint path that observes selected pointer 0x0059de30 on the route pathzEequivalent selected-root proof if runtime tracing remains unavailable	objectivez=runtime trace feasibility for Hwanse2.exe route blocker proofr   FfailedRuntimeTraceGateIdsr   r   r   canRunRuntimeTraceNowcommandswineLoaderSmokeqemuWineLoaderSmokeqemuWineChildExecSmokebinfmtConsistencydpkgArchitecturedpkgForeignArchitecturesaptPackages)r   r   r   r   r   executionProbememorySnapshot
inputProbekeySequenceProbekeySequencePreludeProbeselectedPointerPollselectedPointerPreludePollselectedPointerLongPollselectedPointerLatePollrouteWatchValuesPollselectedPointerSavedataLoadPoll'selectedPointerSavedataLoadInputQuality(selectedPointerMultislotSavedataLoadPoll0selectedPointerMultislotSavedataLoadInputQuality1selectedPointerMultislotSavedataLoadCaseAliasPoll9selectedPointerMultislotSavedataLoadCaseAliasInputQuality:selectedPointerMultislotSavedataLoadInputPathCaseAliasPollblockedztrace-required)BselectedPointerMultislotSavedataLoadInputPathCaseAliasInputQuality8selectedPointerSyntheticSelector20InputPathCaseAliasPoll@selectedPointerSyntheticSelector20InputPathCaseAliasInputQuality<selectedPointerPatchedPublicSelector20InputPathCaseAliasPollDselectedPointerPatchedPublicSelector20InputPathCaseAliasInputQualitysaveFileIoProbesaveFileIoStraceProbesaveFileIoStraceAttachProbe)saveFileIoStraceAttachLoadCandidatesProbe2saveFileIoStraceAttachLoadCandidatesCaseAliasProbetracePointscommandsToTryr
   auditGapr   )rX   r>   rQ   rB   r   rg   rj   rl   rq   rs   r   rv   r   rM   r~   extendrW   r   r   r   r   r'   r   )Wr   r  _archforeign_archesr   wine64_tools	wine_metaqemu_user_binfmtgdb_multiarchwine_version_statuswine_version_outputwine_loader_smokeqemu_wine_statusqemu_wine_outputqemu_wine_loader_smokeqemu_child_statusqemu_child_outputqemu_wine_child_exec_smokeqemu_i386_binfmtexecution_probememory_snapshotinput_probekey_sequence_probekey_sequence_prelude_probeselected_pointer_pollselected_pointer_prelude_pollselected_pointer_long_pollselected_pointer_late_pollroute_watch_values_poll#selected_pointer_savedata_load_poll-selected_pointer_multislot_savedata_load_poll8selected_pointer_multislot_savedata_load_case_alias_pollCselected_pointer_multislot_savedata_load_input_path_case_alias_pollBselected_pointer_synthetic_selector_2_0_input_path_case_alias_pollGselected_pointer_patched_public_selector_2_0_input_path_case_alias_poll,selected_pointer_savedata_load_input_quality6selected_pointer_multislot_savedata_load_input_qualityAselected_pointer_multislot_savedata_load_case_alias_input_qualityLselected_pointer_multislot_savedata_load_input_path_case_alias_input_qualityKselected_pointer_synthetic_selector_2_0_input_path_case_alias_input_qualityPselected_pointer_patched_public_selector_2_0_input_path_case_alias_input_qualitysave_file_io_probesave_file_io_strace_probe save_file_io_strace_attach_probe0save_file_io_strace_attach_load_candidates_probe;save_file_io_strace_attach_load_candidates_case_alias_probebase_environment_readyr   can_run_nowtrace_pointscommands_to_tryexecution_probe_binfmtexecution_probe_binfmt_rawexecution_probe_binfmt_enabledbinfmt_consistencysnapshot_noter   
input_notefinal_contextkey_sequence_notekey_sequence_prelude_noteobservedr   r   selected_pointer_poll_note"selected_pointer_prelude_poll_noteselected_pointer_long_poll_noteselected_pointer_late_poll_noteroute_watch_values_poll_note(selected_pointer_savedata_load_poll_note2selected_pointer_multislot_savedata_load_poll_note=selected_pointer_multislot_savedata_load_case_alias_poll_noteHselected_pointer_multislot_savedata_load_input_path_case_alias_poll_noteGselected_pointer_synthetic_selector_2_0_input_path_case_alias_poll_noteLselected_pointer_patched_public_selector_2_0_input_path_case_alias_poll_notesave_file_io_probe_notesave_file_io_strace_probe_note%save_file_io_strace_attach_probe_note5save_file_io_strace_attach_load_candidates_probe_note@save_file_io_strace_attach_load_candidates_case_alias_probe_noter   control_probe_failed	audit_gapfailed_runtime_trace_gate_idsmissing_evidenceevidence_refssW                                                                                          r&   build_summaryr    s*   
 	l4  H    678GAt &*I!JKA~8$F 0Lf%I$%78!/2M/78M/N,,#% 34!Q&	 *22b)c&&;" 01!#	 ,4 5 ,(( P# 121$	" %[1*,O*,O"$K02!8Bk!l68$>Ht$u!!;En!o!;En!o8Bhi*DC+' 5OM51 @ZX@< KecKG JdbJF OigOK 4W+40 >a5>: Il@IE TwKTP SvJSO 	,,st U 12 7Ai j'>@($ 8OP84 CZ[C? 	% 	$Y,	$Z -	$ UOK(	$ Z -		$
 d#  HFK(/0I{+23J,34E?;'./J,XYn**,BGnozz+"22Z[T"12CK2P2_T_1`abd#,Ft,L	*OO{ OOY-k:IkJL [)2B92MVghlVmst223GHe?R?RS]?^?dbdee(9\K 4&&n		
 *(&g		
 6(&m		
 3(&a		
'L4O8 .3889IJPb!7!;!;E!B!Hb%)*@*D*D\*R%S &// # .11,?*..y9/33NC$:$>$>|$L!?&01K&L9==dC$3$9r#>#>?S#T &)),74?.$7G7K7KI7V2WW] n" MO//9?RDDE[\ $$X.4"*..?@ A%zz*IJzfjjYyNz{ |##)::.P#Q"R SMM 	 J#(EFL"<<GOOLd<e;f gCCN??SqCrBs t66AooFk6l5m n##0#4#4Z#@#GC"H	K 	 2!%%o67 8""4"8"89M"N!O P**<*@*@Aa*b)ccdf 	 !#!-11+>D" 	.CGG$<=C .8+OOH-.	.
 K)--o>? @""%((8"4";!< =**D*H*HIi*j)kkln 	" "$<$((788I$((9::U$(()>?@ A""%((+@+D+DEX+Y+_]_"`"gdg!h i**?*C*CDd*e)f g$$9$=$=>U$V#WWXZ 	# *,&$G,00?@@Q,00ABB],001FGH I""%((+H+L+LM`+a+geg"h"olo!p q**G*K*KLl*m)n o$$A$E$EF]$^#__`b 	+ ')#!A)--m<==N)--o>??a)--.CDE F""%((+E+I+IJ]+^+dbd"e"lil!m n**D*H*HIi*j)k l$$>$B$BCZ$[#\\]_ 	( ')#!F)--.BCDD_)--m<==N)--o>??Z)--.CDE F""%((+E+I+IJ]+^+dbd"e"lil!m n**D*H*HIi*j)k l$$>$B$BCZ$[#\\]_ 	( $& =&**=9::K&**?;< =""%((+B+F+FGZ+[+a_a"b"ifi!j k./FGH I**A*E*EFf*g)hhik 	% 02,*2266}EFFW266GH I89efg h""%((+N+R+RSf+g+mkm"n"uru!v w**M*Q*QRr*s)t u$$G$K$KLc$d#eefh 	1 :<64@<@@OPPa<@@QR S89opq r xxEIIJ_`fdfgnkno p""%((+X+\+\]p+q+wuw"x"|  "A A-<@@A_`a b**W*[*[\|*})~~A 	; EGA?xGKKMZ[[lGKKO\] ^89z{| } xxPTTUjkqoqryvyz {"xxPTTUhiomopwtwx y-GKKLjkl m**b*f*f  hH  +I  *J  JKL 	F PRLJiRVVWdeffwRVVWfgh i8  :F  G  H H xx[__`uv|z|}  E  BE  F F"xx[__`stzxz{  C  @C  D D-RVVWuvw x**m*q*q  sS  +T  *U  UVW 	Q OQKIaQUUVcdeevQUUVefg h8  :E  F  G G xxZ^^_tu{y{|  D  AD  E E"xxZ^^_rsywyz  B  B  C C(QUUVtuv w**l*p*p  rR  +S  *T T}} 	P  TVPNGVZZ[hijj{VZZ[jkl m8  :J  K  L L xx_ccdyz  A  A  B  I  FI  J J"xx_ccdwx~|~  G  DG  H H(VZZ[yz{ |**q*u*u  wW  +X  *Y YGG 	U  !^"&&7=2BB8LM^!%%i011DEWE[E[\nEoDp q)--.DEFaHZH^H^_nHoGp q.223OPQQRSeSiSijySzR{ |0445KLMMy{ 	  &(" _)--o>D"II(STTb(,,Y788K(,,-?@A B0445KLMQ(,,_=>o(,,-IJK1(,,_=> ?7;;<RST U9	9 	' -/)'h044_EKPPQYZ[[i/33I>??R/334FGH I7;;<RSTTU/33ODE_/334PQRRS/33ODE F>BBCYZ[ \J	J 	. =?97c@DD_U[Y[``aijkky?CCINOOb?CCDVWX YGKKLbcdde?CCOTUUd?CCD`abbc?CCOTU VNRRSijk lW	W 	> HJDBfKOOP_`fdfkkltuv  wEJNNyYZZhKOOP]^dbdiijstu v  [ _ _`r st uRVVWmnoopJNN_``oJNNOklmmnJNN_` aY]]^tuv w~
~ 	I "c 	
 
!4!45I!J""gATATU_A`Afdf"ggX ( Se    	  (
( )) 11 .. .. ++  7!7" A#A$ L%L& W'W( V)V* [+[, &-&. -/-0 4142 D3D4 O5O 	>3   	 
 (( )) 11 .. .	. +
+ 77 AA LL WW VV  [![" &#&$ -%-& 4'4( D)D* O+O 	F ?#6#67K#L W1D1DZ1P1VTVWW #(;(;H(E(K'P'PQg'hI | `  Uc   d#,Ft,L?@VWb@c?d e++Ed+K*LB=Mi=X5  _J  K  KLM	
	
 89TA,001KLM N)--.EFG H$$6$:$:;K$L#MR!%%l34	6	
	 d#(B4(HDE[\gEhDi j))CK)P(Q  RMN	
	 {'?@DHQ	
	 $(EFL"??@ATIg $$Z07C88TVI 	TT	BCUCYCYZiCjBk l'++,@ABBp!%%&FGHHwy	
	
 "-11+>D" 	.CGG$<=C .8+OOH-.	. 	JKeKiKijyKzJ{ |""%((8"4";!<<])--.NOPPhj	
	
 <=R=V=VWd=e<f g+//@AAtxx-112EFL"MTQTUUv$(()IJKKz|	
	 %GHeHiHijwHxGy z377HII|xx599:MNTRTU\Y\]]~,001QRSSpr	
	 "AB\B`B`anBoAp q044_EFFyxx2667JKQrRYVYZZ{)--.NOPPmo	
	 "FGaGeGefzG{F| }155mDEEW)--o>??kxx2667JKQrRYVYZZ{)--.NOPPm	o	
	 =>U>Y>YZg>h=i j-11/BCCoxx/334GHNBOVSVWWe"#:;<<]&**+KLMMj	l	
	 +x266}EFFX266GHHw89efgg|xx;??@STZXZ[b_bc  dE2667WXY  ZIJ	
	 5 P<@@OPPb<@@QR  SB89opq  rDxxEIIJ_`fdfgnkno  pExxEIIJ]^dbdelilmm~<@@A_`a  bC<@@Aabc  dST		
	 @}GKKMZ[[mGKKO\]  ^M89z{|  }OxxPTTUjkqoqryvyz  {PxxPTTUhiomopwtwx  yJGKKLjkl  mNGKKLlmn  ost
	
	 K]RVVWdeffxRVVWfgh  iX8  :F  G  H  HZxx[__`uv|z|}  E  BE  F  F[xx[__`stzxz{  C  @C  D  DURVVWuvw  xYRVVWwxy  zHI
	
	 JIQUUVcdeewQUUVefg  hW8  :E  F  G  GYxxZ^^_tu{y{|  D  AD  E  EZxxZ^^_rsywyz  B  B  C  CTQUUVtuv  wXQUUVvwx  yvw
	
	 OgVZZ[hijj|VZZ[jkl  m\8  :J  K  L  L^xx_ccdyz  A  A  B  I  FI  J  J_xx_ccdwx~|~  G  DG  H  HYVZZ[yz{  |]VZZ[{|}  ~vw
	
	 =>P>T>TU^>_=` a-11/BHbMMhWXXn!%%&89:*EWE[E[\rEsDttu!%%o67GYG]G]^zG{F||}!%%o67  8I	J	
	 !=>W>[>[\e>f=g h488IORTTU]^__u(,,-?@A(,,-CDEQ(,,_=>o(,,-IJK1(,,_=>  ?PQ	
	 (FGgGkGkluGvFw x;??PVTV[[\def  gA/334FGH
/334JKLA/33ODE_/334PQRRS/33ODEEZ/334FGHHY/334JKL  MIJ
	
	 8ABrBvBv  xA  CB  BC CKOOP_`fdfkkltuv  wQ?CCDVWXXb?CCDZ[\\]?CCOTUUd?CCD`abbc?CCOTUUj?CCDVWXXi?CCDZ[\  ]WX
	
	 CD  FA  FE  FE  FO  FP  EQ QVZZ[jkqoqvvw  A  B  BDJNNOabccmJNNOefgghJNN_``oJNNOklmmnJNN_``uJNNOabcctJNNOefg  hBC
	
	 %'!$%,,-PQ2""#78D%,,-TU!(()QR
 +,M8T8e8 	$%B8 	+	8
 	8 	C.8 	 8 	H8 	H8 	,8 	58 	!"<8 	*8 	/8 	D8  	#nN$8$8$:RT!8" 	( 0*
#80 	/182 	/384 	k586 	.788 	"#=98: 	4;8< 	%&C=8> 	"#=?8@ 	"#=A8B 	 7C8D 	*+NE8F 	23_G8H 	34aI8J 	;<rK8L 	<=uM8N 	D  FGO8P 	E  GJQ8R O[ EG MX IP Qa-!:'G5e>y#(,79=M o8 8cs   Ax<c                \2   ddd| d    d| d    ddj                  | j                  d	      xs g       xs d
 ddt        | j                  d      xs g        d| j                  d       d| d    d| d    dddj                  | d         xs d
 dd| d   d   xs d dd| d   d   xs d dd| d   d   xs d dd| d   d    xs d
 dd!| j                  d"i       j                  d#       d$| j                  d"i       j                  d%       dd&| d'    dd| d(   dd)dg| j                  d      xs g D cg c]  }d*| 	 c}dd+d}|j                  d, | j                  d-      xs g D               |j                  g d.       | d/   j	                         D ]6  }|j                  d0|d1    d2|d3    d4|j                  d5      xs d
 d6       8 |j                  g d7       | d8   j	                         D ]F  }|j                  d0|d9    d:|j                  d;      xs d
 d:|j                  d<      xs d
 d6       H |j                  dd=dd>d?d0| d   d1    d2| d   d@    d4| d   d   xs d
 d6d0| d   d1    d2| d   d@    d4| d   d   xs d
 d6g       | j                  dA      rZ| dA   }|j                  ddBddC|j                  dD       dEdg       |j                  dF |j                  dG      xs dHgD               | j                  dI      r| dI   }|j                  dJ      xs i }|j                  ddKddL|j                  dM       dN|j                  dO      xs d
 ddP|j                  dQ      xs d
 ddR|j                  dS       dT|j                  dU       dVdg
       | j                  dW      r_| dW   }|j                  dX      xs i }|j                  dY      xs i }|j                  ddZdd[|j                  d\      xs d
 ddN|j                  dO      xs d
 dd]|j                  d^      xs d
 dd_|j                  d`      xs i j                  da      xs d
 ddb|j                  dc      xs d
 ddd|j                  dc      xs d
 dde|j                  df      xs i j                  da      xs d
 ddg|j                  dh       di|j                  dj       dk|j                  dl       dm|j                  dn       dodg       | j                  dp      rh| dp   }|j                  ddqddr|j                  ds       dt|j                  du       ddv|j                  dw       dx|j                  dy       dzdg	       | j                  d{      r| d{   }g }	|j                  d|      xs g D ]2  }|j                  d}      xs g D ]  }
|
|	vs|	j                  |
        4 |j                  dd~ddr|j                  ds       d|j                  d      xs d
 dddj                  |	      xs d
 ddv|j                  dw       dx|j                  dy       ddg
       | j                  d      r| d   }|j                  ddddr|j                  ds       d|j                  d       d|j                  d       dddj                  |j                  d      xs g       xs d
 ddv|j                  dw       dx|j                  dy       ddg       | j                  d      r| d   }|j                  ddddr|j                  ds       d|j                  d       d|j                  d      xs d
 dd|j                  d       dddj                  |j                  d      xs g       xs d
 ddv|j                  dw       dx|j                  dy       ddg       | j                  d      r| d   }|j                  ddddr|j                  ds       d|j                  d       d|j                  d      xs d
 dd|j                  d       dddj                  |j                  d      xs g       xs d
 ddv|j                  dw       dx|j                  dy       ddg       | j                  d      r| d   }|j                  ddddr|j                  ds       d|j                  d       dt|j                  du       dd|j                  d      xs d
 dd|j                  d       dddj                  |j                  d      xs g       xs d
 ddv|j                  dw       dx|j                  dy       ddg       | j                  d      r| d   }| j                  d      xs i }|j                  ddddr|j                  ds       d|j                  d       dt|j                  du       dd|j                  d      xs d
 dd|j                  d       ddt        |       dddj                  |j                  d      xs g       xs d
 ddv|j                  dw       dx|j                  dy       ddg       | j                  d      r^| d   }| j                  d      xs i }|j                  ddddr|j                  ds       d|j                  d       dt|j                  du       dd|j                  d      xs d
 dd|j                  d       ddt        |       dddj                  |j                  d      xs g       xs d
 dddj                  |j                  d      xs g       xs d
 dddj                  |j                  d      xs g       xs d
 dd|j                  d       dv|j                  dw       dx|j                  dy       ddg       | j                  d      r| d   }| j                  d      xs i }|j                  ddddr|j                  ds       d|j                  d       dt|j                  du       dd|j                  d      xs d
 dd|j                  d       dd|j                  d      xs i j                  d       ddj                  |j                  d      xs i j                  d      xs g       xs d
 dt        |       dddj                  |j                  d      xs g       xs d
 dddj                  |j                  d      xs g       xs d
 dddj                  |j                  d      xs g       xs d
 dd|j                  d       dv|j                  dw       dx|j                  dy       ddg       | j                  d      r| d   }| j                  d      xs i }|j                  ddddr|j                  ds       d|j                  d       dt|j                  du       dd|j                  d      xs d
 dd|j                  d       dd|j                  d      xs i j                  d       ddj                  |j                  d      xs i j                  d      xs g       xs d
 dt        |       dddj                  |j                  d      xs g       xs d
 dddj                  |j                  d      xs g       xs d
 dddj                  |j                  d      xs g       xs d
 dd|j                  d       dv|j                  dw       dx|j                  dy       ddg       | j                  d      r| d   }| j                  d      xs i }|j                  ddddr|j                  ds       d|j                  d       dt|j                  du       dd|j                  d      xs d
 dd|j                  d       dd|j                  d      xs i j                  d       ddj                  |j                  d      xs i j                  d      xs g       xs d
 dt        |       dddj                  |j                  d      xs g       xs d
 dddj                  |j                  d      xs g       xs d
 dddj                  |j                  d      xs g       xs d
 dd|j                  d       dv|j                  dw       dx|j                  dy       dddg       | j                  d      r| d   }| j                  d      xs i }|j                  dddd|j                  d      xs d
 ddr|j                  ds       d|j                  d       dt|j                  du       dd|j                  d      xs d
 dd|j                  d       dd|j                  d      xs i j                  d       ddj                  |j                  d      xs i j                  d      xs g       xs d
 dt        |       dddj                  |j                  d      xs g       xs d
 dddj                  |j                  d      xs g       xs d
 dddj                  |j                  d      xs g       xs d
 dd|j                  d       dv|j                  dw       dx|j                  dy       dddg       | j                  d      r| d   }|j                  d«      xs i }|j                  dddd|j                  dū       dd|j                  dǫ       ddr|j                  ds       d|j                  dɫ       d|j                  d˫       d|j                  dͫ       d|j                  dϫ       d|j                  dѫ       ddg       | j                  dӫ      r| d   }|j                  d«      xs i }|j                  dddd|j                  dū       dd|j                  dǫ       ddr|j                  ds       d|j                  dɫ       d|j                  d˫       d|j                  dͫ       d|j                  dϫ       d|j                  dѫ       ddg       | j                  d֫      r| d   }|j                  d«      xs i }|j                  dddd|j                  dū       dd|j                  dǫ       ddr|j                  ds       d|j                  dɫ       d|j                  d˫       d|j                  dͫ       d|j                  dϫ       d|j                  dѫ       ddg       | j                  d٫      r| d   }|j                  d«      xs i }|j                  dddd|j                  dū       dd|j                  dǫ       ddr|j                  ds       d|j                  dɫ       d|j                  d˫       d|j                  dͫ       d|j                  dϫ       d|j                  dѫ       ddg       | j                  dܫ      r,| d   }|j                  d«      xs i }|j                  dddd|j                  dū       dd|j                  dǫ       dd|j                  d      xs i j                  d       ddj                  |j                  d      xs i j                  d      xs g       xs d
 dr|j                  ds       d|j                  dɫ       d|j                  d˫       d|j                  dͫ       d|j                  dϫ       d|j                  dѫ       ddg       |j                  g dߢ       |j                  d | dG   D               | dG   s|j                  d       |j                  g d       | d   D ],  }|j                  d|d    d4|d    d:|d    d2|d    d	       . |j                  g d       |j                  d t        | d   d      D               |j                  d       dj                  |      S c c}w )Nz# Runtime Trace Feasibilityr@   z- objective: r  z- proof found: r   z- failed runtime trace gates: `, r  r   `z- missing evidence count: r   z- evidence refs: r   z- can run runtime trace now: r  z- dpkg architecture: `r  z- foreign architectures: `r  z- wine loader smoke: `r  r   failedz- qemu wine loader smoke: `r  z- qemu wine child exec smoke: `r  z- qemu-i386 binfmt: `r   rK   z'- binfmt consistency: summary enabled `r  r   z`, execution probe enabled `r   z- promotion status: `r
   r   z## Missing Evidence- z## Evidence Refsc           	   3  x   K   | ]2  }d |d    ddj                  |j                  d      xs g        d 4 yw)z- `r   z`: `r  r   r  Nr   r   s     r&   r   zmarkdown.<locals>.<genexpr>r  sC       c&k]$tyy):)@bAB!Ds   8:r   )r@   z## Tool Availabilityr@   z| command | available | path || --- | --- | --- |r  z| `rS   z` | rT   z | `r   z` |)r@   z## Apt Packagesr@   z#| package | installed | candidate |r  r  rG   z` | `rI   rJ   z## QEMU Wine Smokez| check | status | first line |z| --- | ---: | --- |rH   r  z## Execution Probez- can capture trace now: r   z2- report: `out/runtime_trace_execution_probe.json`c              3  &   K   | ]	  }d |   ywr  Nr   r   s     r&   r   zmarkdown.<locals>.<genexpr>  s     OTr$[Or   r   noner  r   z## Process Memory Snapshotz- can read process memory: r   z- loaded base: `r   z"- selected pointer static value: `r   z(- selected pointer equals current root: r   z'- current root relocation looks valid: currentRootRelocationLooksValidz,- report: `out/runtime_memory_snapshot.json`r  initialSamplefinalSamplez## Input Path Probez- xdotool path: `xdotoolPathz- baseline selected pointer: ` baselineSelectedPointerStaticHexz- baseline selector context: `r   r   z- initial selected pointer: `selectedPointerStaticHexz- final selected pointer: `z- final selector context: `r   z- held-key pressed detected: r   z%- held-key changed selected pointer: heldKeyChangedSelectedPointerz$- X event changed selected pointer: r   z,- key-buffer poke changed selected pointer: r   z-- report: `out/runtime_input_path_probe.json`r  z## Key Sequence Probez- sequence count: r   z- startup wait seconds: `r   z- any reached current root: r  z"- any reached route selector 2:0: r   z/- report: `out/runtime_key_sequence_probe.json`r  r  r  z## Key Sequence Prelude Probez- prelude: `preludez- observed selectors: `z7- report: `out/runtime_key_sequence_prelude_probe.json`r  z## Selected-Pointer Pollz- sample count: r   z- poll interval seconds: `r  r   z2- report: `out/runtime_selected_pointer_poll.json`r   z ## Selected-Pointer Prelude Pollz:- report: `out/runtime_selected_pointer_prelude_poll.json`r!  z## Selected-Pointer Long Pollz7- report: `out/runtime_selected_pointer_long_poll.json`r"  z## Selected-Pointer Late Pollz7- report: `out/runtime_selected_pointer_late_poll.json`r$  r%  z&## Selected-Pointer SaveData Load Pollz- input quality: `z@- report: `out/runtime_selected_pointer_savedata_load_poll.json`r&  r'  z0## Selected-Pointer Multislot SaveData Load Pollz- public save selectors: `r   z#- observed public save selectors: `observedPublicSaveSelectorsz$- any reached public save selector: r  zJ- report: `out/runtime_selected_pointer_multislot_savedata_load_poll.json`r(  r)  z;## Selected-Pointer Multislot SaveData Load Case-Alias Pollz- case aliases: enabled=r  r   z
; removed=rx   caseAliasCleanupremovedAliaseszU- report: `out/runtime_selected_pointer_multislot_savedata_load_case_alias_poll.json`r*  r,  zF## Selected-Pointer Multislot SaveData Load Input-Path Case-Alias Pollz`- report: `out/runtime_selected_pointer_multislot_savedata_load_input_path_case_alias_poll.json`r-  r.  zE## Selected-Pointer Synthetic Selector 2:0 Input-Path Case-Alias Pollz- staged selectors: `z- observed staged selectors: `z- any reached staged selector: zF- promotion note: standalone synthetic save-shaped file; non-promotingz_- report: `out/runtime_selected_pointer_synthetic_selector_2_0_input_path_case_alias_poll.json`r/  r0  zO## Selected-Pointer Patched Public-Base Selector 2:0 Input-Path Case-Alias Pollz- staged save kind: `stagedSaveKindze- promotion note: constructed from a public save by patching selector/position bytes; diagnostic-onlyzd- report: `out/runtime_selected_pointer_patched_public_selector_2_0_input_path_case_alias_poll.json`r1  r  z## Runtime Save File I/O Probez- backend: `r   z- temporary save: `r  z!- sequence with Hwanse2.exe PID: r   z#- sequence with key-buffer writes: r   z- input trace usable: r   z- matched file-I/O lines: r  z- any savedat1.dat access: r    z/- report: `out/runtime_save_file_io_probe.json`r2  z%## Runtime Save File I/O Strace Probez6- report: `out/runtime_save_file_io_strace_probe.json`r3  z,## Runtime Save File I/O Strace Attach Probez=- report: `out/runtime_save_file_io_strace_attach_probe.json`r4  z<## Runtime Save File I/O Strace Attach Load Candidates ProbezM- report: `out/runtime_save_file_io_strace_attach_load_candidates_probe.json`r5  zG## Runtime Save File I/O Strace Attach Load Candidates Case-Alias ProbezX- report: `out/runtime_save_file_io_strace_attach_load_candidates_case_alias_probe.json`)r@   z## Blockersr@   c              3  &   K   | ]	  }d |   ywr  r   r   s     r&   r   zmarkdown.<locals>.<genexpr>  s     =2dV=r   z- none)r@   z## Trace Pointsr@   z#| name | kind | address | purpose |z| --- | --- | --- | --- |r6  z| r   r   r   r   z |)r@   z## Commands To Tryr@   c              3  2   K   | ]  \  }}| d | d  yw)z. `r  Nr   )r   indexrS   s      r&   r   zmarkdown.<locals>.<genexpr>"  s!     f^UGE7#gYa(fr   r7  r   
)r   r~   r   r9  r   r   r   	enumerate)summaryr   linesr   probesnapshotr   initialfinalrs  r   r   temporary_saves                r&   markdownr  T  s&   %

,-.
',/01
)$))GKK@[4\4b`b*c*jgj)kklm
$S5F)G)M2%N$OP
GKK(:;<=
'0G(H'IJ
 );!< =Q?
$TYYw7Q/R%S%ZWZ$[[\]
 ):!;K!H!TH UUVW
%g.C&D[&Q&]U]%^^_`
)'2J*KK*X*d\d)eefg
(8 9. I PSQQRS	#KK(;R@DDEUVW X$$+KK0CR$H$L$LMd$e#ffg	i  (9 :;1=


/0 #*++.?"@"FB	G$Btf+	G12 	34 	56 	7E: 
LL ;;~.4"  
LL   z"))+ bs3y>*$s;/?.@SWWV_E[X[D\\_`ab	LL   }%,,. ts3y>*%0D0K/LERURYRYZeRfRmjmQnnqrst	LL

)'/0;<D,-h78 9-.{;BsC3H
 '23I>?t/0:; <01+>E#FcK " {{#$() '		2F(G'HI@
 	 	OUYYz-B-NvhOO{{#$+,h'-2()&**5K*L)MNx||O<CDAF0<[1\1c`c0ddef6vzzBd7e6fg5fjjAb6c5de:
 	 {{< %))O,2		-(.B!		- 8 ?C@Buyy9@SAC,UYY7Y-Z-a^a,bbcd,eii8X.Y._]_-d-deo-p-wtw,xxyz+GKK8R,S,ZWZ+[[\])%))4N*O*VSV)WWXY)5995R+S+YWY*^*^_i*j*qnq)rrst+EII6N,O+PQ3EII>]4^3_`2599=[3\2]^:599Ej;k:lm;!
 	$ {{%&*+# ?!; <='		2F(G'HJ*5995L+M*NO0;[1\0]^=

 
	 {{,-1299[)/R 	.CGG$<=C .8+OOH-.	. 	+ ?!; <=599Y/637q9%dii&9&@S%AC*5995L+M*NO0;[1\0]^E
 	 {{()-.& ?!; <=uyy789(3H)I(J!L%dii		:M0N0TRT&U&\Y\%]]^_*5995L+M*NO0;[1\0]^@
 	 {{/045. ?!; <=uyy789599Y/637q9(3H)I(J!L%dii		:M0N0TRT&U&\Y\%]]^_*5995L+M*NO0;[1\0]^H
 	 {{,-12+ ?!; <=uyy789599Y/637q9(3H)I(J!L%dii		:M0N0TRT&U&\Y\%]]^_*5995L+M*NO0;[1\0]^E
 	 {{,-12+ ?!; <=uyy789'		2F(G'HJ599Y/637q9(3H)I(J!L%dii		:M0N0TRT&U&\Y\%]]^_*5995L+M*NO0;[1\0]^E
 	 {{459:++GHNB4 ?!; <=uyy789'		2F(G'HJ599Y/637q9(3H)I(J!L !J7!S TTUV%dii		:M0N0TRT&U&\Y\%]]^_*5995L+M*NO0;[1\0]^N
 	  {{=>BC++PQWUW> ?!; <=uyy789'		2F(G'HJ599Y/637q9(3H)I(J!L !J7!S TTUV(599=R3S3YWY)Z)a^a(bbcd%dii		:M0N0TRT&U&\Y\%]]^_1$))EIIFc<d<jhj2k2ror1sstu2599=[3\2]^*5995L+M*NO0;[1\0]^X#
 	& {{FGKL++YZ`^`I ?!; <=uyy789'		2F(G'HJ599Y/637q9(3H)I(J!L&		-(@(FB'K'KI'V&WWabebjbjlqlulu  wI  mJ  mP  NP  lU  lU  Vf  lg  lm  km  cn  cu  ru  bv  w !J7!S TTUV(599=R3S3YWY)Z)a^a(bbcd%dii		:M0N0TRT&U&\Y\%]]^_1$))EIIFc<d<jhj2k2ror1sstu2599=[3\2]^*5995L+M*NO0;[1\0]^c%
 	( {{OPTU++bcigiT ?!; <=uyy789'		2F(G'HJ599Y/637q9(3H)I(J!L&		-(@(FB'K'KI'V&WWabebjbjlqlulu  wI  mJ  mP  NP  lU  lU  Vf  lg  lm  km  cn  cu  ru  bv  w !J7!S TTUV(599=R3S3YWY)Z)a^a(bbcd%dii		:M0N0TRT&U&\Y\%]]^_1$))EIIFc<d<jhj2k2ror1sstu2599=[3\2]^*5995L+M*NO0;[1\0]^n%
 	( {{MNRS++`agegS ?!; <=uyy789'		2F(G'HJ599Y/637q9(3H)I(J!L&		-(@(FB'K'KI'V&WWabebjbjlqlulu  wI  mJ  mP  NP  lU  lU  Vf  lg  lm  km  cn  cu  ru  bv  w !J7!S TTUV#DIIeii8M.N.TRT$U$\Y\#]]^_%dii		:M0N0TRT&U&\Y\%]]^_,TYYuyyA^7_7ece-f-mjm,nnop-eii8V.W-XY*5995L+M*NO0;[1\0]^Tm'
 	* {{QRVW++dekik]#EII.>$?$F3#GqI ?!; <=uyy789'		2F(G'HJ599Y/637q9(3H)I(J!L&		-(@(FB'K'KI'V&WWabebjbjlqlulu  wI  mJ  mP  NP  lU  lU  Vf  lg  lm  km  cn  cu  ru  bv  w !J7!S TTUV#DIIeii8M.N.TRT$U$\Y\#]]^_%dii		:M0N0TRT&U&\Y\%]]^_,TYYuyyA^7_7ece-f-mjm,nnop-eii8V.W-XY*5995L+M*NO0;[1\0]^sr)
 	, {{$%)*?39r,599Y/02!."4"4X">!?qA ?!; <=/		:P0Q/RS1%))<X2Y1Z[$UYY/A%B$CD(3E)F(GH)%))4J*K)LM=
 	 {{*+/0?39r3599Y/02!."4"4X">!?qA ?!; <=/		:P0Q/RS1%))<X2Y1Z[$UYY/A%B$CD(3E)F(GH)%))4J*K)LMD
 	 {{0156?39r:599Y/02!."4"4X">!?qA ?!; <=/		:P0Q/RS1%))<X2Y1Z[$UYY/A%B$CD(3E)F(GH)%))4J*K)LMK
 	 {{>?CD?39rJ599Y/02!."4"4X">!?qA ?!; <=/		:P0Q/RS1%))<X2Y1Z[$UYY/A%B$CD(3E)F(GH)%))4J*K)LM[
 	 {{GHLM?39rU599Y/02!."4"4X">!?qA&		-(@(FB'K'KI'V&WWabebjbjlqlulu  wI  mJ  mP  NP  lU  lU  Vf  lg  lm  km  cn  cu  ru  bv  w ?!; <=/		:P0Q/RS1%))<X2Y1Z[$UYY/A%B$CD(3E)F(GH)%))4J*K)LMf
 	  
LL  
 
LL=)<==:X	LL   }% hr#f+d3v;-uS=N<OtTWXaTbSccefgh	LL  
 
LLfyQ`Iacd?eff	LL99Uo 
Hs   Ad)c           "     S   dj                  d | d   j                         D              }dj                  d | d   j                         D              }dj                  d | d   D              xs d}d	j                  d
 | j                  d      xs g D              }dj                  d | d   D              }dj                  d | d   D              }d	}| j                  d      r| d   }|j                  d      xs i }	dt        j                  t        |	j                  d                   dt        j                  t        |j                  d      xs d             dt        j                  t        |	j                  d      xs d             dt        j                  t        |	j                  d                   dt        j                  t        |	j                  d                   d}d	}
| j                  d      rn| d   }|j                  d      xs i }|j                  d       xs i }d!t        j                  t        |j                  d"      xs d             d#t        j                  t        |j                  d      xs d             d$t        j                  t        |j                  d%      xs d             d&t        j                  t        |j                  d'      xs i j                  d(      xs d             d)t        j                  t        |j                  d*      xs d             d+t        j                  t        |j                  d*      xs d             d,t        j                  t        |j                  d-      xs i j                  d(      xs d             d.t        j                  t        |j                  d/                   d0t        j                  t        |j                  d1                   d2t        j                  t        |j                  d3                   d4t        j                  t        |j                  d5                   d6}
d	}| j                  d7      r| d7   }d8t        j                  t        |j                  d9                   d:t        j                  t        |j                  d;                   d<t        j                  t        |j                  d=                   d>t        j                  t        |j                  d?                   d@	}d	}| j                  dA      r9| dA   }g }|j                  dB      xs g D ]2  }|j                  dC      xs g D ]  }||vs|j                  |        4 dDt        j                  t        |j                  d9                   dEt        j                  t        |j                  dF      xs d             dGt        j                  dHj                  |      xs d       d<t        j                  t        |j                  d=                   d>t        j                  t        |j                  d?                   dI}d	}| j                  dJ      r*| dJ   }dKt        j                  t        |j                  d9                   dLt        j                  t        |j                  dM                   dNt        j                  t        |j                  dO                   dGt        j                  dHj                  |j                  dP      xs g       xs d       d<t        j                  t        |j                  d=                   d>t        j                  t        |j                  d?                   dQ}d	}| j                  dR      r\| dR   }dSt        j                  t        |j                  d9                   dLt        j                  t        |j                  dM                   dEt        j                  t        |j                  dF      xs d             dTt        j                  t        |j                  dO                   dGt        j                  dHj                  |j                  dP      xs g       xs d       d<t        j                  t        |j                  d=                   d>t        j                  t        |j                  d?                   dU}d	}| j                  dV      r\| dV   }dWt        j                  t        |j                  d9                   dLt        j                  t        |j                  dM                   dEt        j                  t        |j                  dF      xs d             dTt        j                  t        |j                  dO                   dGt        j                  dHj                  |j                  dP      xs g       xs d       d<t        j                  t        |j                  d=                   d>t        j                  t        |j                  d?                   dX}d	}| j                  dY      r| dY   }dZt        j                  t        |j                  d9                   dLt        j                  t        |j                  dM                   d:t        j                  t        |j                  d;                   d[t        j                  t        |j                  dF      xs d             dTt        j                  t        |j                  dO                   dGt        j                  dHj                  |j                  dP      xs g       xs d       d<t        j                  t        |j                  d=                   d>t        j                  t        |j                  d?                   d\}d	}| j                  d]      r| d]   }| j                  d^      xs i }d_t        j                  t        |j                  d9                   dLt        j                  t        |j                  dM                   d:t        j                  t        |j                  d;                   d[t        j                  t        |j                  dF      xs d             dTt        j                  t        |j                  dO                   d`t        j                  t        |             dGt        j                  dHj                  |j                  dP      xs g       xs d       d<t        j                  t        |j                  d=                   d>t        j                  t        |j                  d?                   da}d	}| j                  db      rd| db   }| j                  dc      xs i }ddt        j                  t        |j                  d9                   dLt        j                  t        |j                  dM                   d:t        j                  t        |j                  d;                   d[t        j                  t        |j                  dF      xs d             dTt        j                  t        |j                  dO                   d`t        j                  t        |             det        j                  dHj                  |j                  df      xs g       xs d       dGt        j                  dHj                  |j                  dP      xs g       xs d       dgt        j                  dHj                  |j                  dh      xs g       xs d       dit        j                  t        |j                  dj                   dkt        j                  t        |j                  d=                   d>t        j                  t        |j                  d?                   dl}d	}| j                  dm      r| dm   }| j                  dn      xs i }dot        j                  t        |j                  d9                   dLt        j                  t        |j                  dM                   d:t        j                  t        |j                  d;                   d[t        j                  t        |j                  dF      xs d             dTt        j                  t        |j                  dO                   dpt        j                  t        |j                  dq      xs i j                  dr                   dst        j                  dtj                  |j                  du      xs i j                  dv      xs g       xs d       d`t        j                  t        |             det        j                  dHj                  |j                  df      xs g       xs d       dGt        j                  dHj                  |j                  dP      xs g       xs d       dgt        j                  dHj                  |j                  dh      xs g       xs d       dit        j                  t        |j                  dj                   dkt        j                  t        |j                  d=                   d>t        j                  t        |j                  d?                   dw}d	}| j                  dx      r| dx   }| j                  dy      xs i }dzt        j                  t        |j                  d9                   dLt        j                  t        |j                  dM                   d:t        j                  t        |j                  d;                   d[t        j                  t        |j                  dF      xs d             dTt        j                  t        |j                  dO                   dpt        j                  t        |j                  dq      xs i j                  dr                   dst        j                  dtj                  |j                  du      xs i j                  dv      xs g       xs d       d`t        j                  t        |             det        j                  dHj                  |j                  df      xs g       xs d       dGt        j                  dHj                  |j                  dP      xs g       xs d       dgt        j                  dHj                  |j                  dh      xs g       xs d       dit        j                  t        |j                  dj                   dkt        j                  t        |j                  d=                   d>t        j                  t        |j                  d?                   d{}d	}| j                  d|      r| d|   }| j                  d}      xs i }d~t        j                  t        |j                  d9                   dLt        j                  t        |j                  dM                   d:t        j                  t        |j                  d;                   d[t        j                  t        |j                  dF      xs d             dTt        j                  t        |j                  dO                   dpt        j                  t        |j                  dq      xs i j                  dr                   dst        j                  dtj                  |j                  du      xs i j                  dv      xs g       xs d       d`t        j                  t        |             dt        j                  dHj                  |j                  df      xs g       xs d       dGt        j                  dHj                  |j                  dP      xs g       xs d       dt        j                  dHj                  |j                  dh      xs g       xs d       dt        j                  t        |j                  dj                   dkt        j                  t        |j                  d=                   d>t        j                  t        |j                  d?                   d}d	}| j                  d      rT| d   }| j                  d      xs i }d	j                  g dt        j                  t        |j                  d      xs d             dt        j                  t        |j                  d9                   dLt        j                  t        |j                  dM                   d:t        j                  t        |j                  d;                   d[t        j                  t        |j                  dF      xs d             dTt        j                  t        |j                  dO                   dpt        j                  t        |j                  dq      xs i j                  dr                   dst        j                  dtj                  |j                  du      xs i j                  dv      xs g       xs d       d`t        j                  t        |             dt        j                  dHj                  |j                  df      xs g       xs d       dGt        j                  dHj                  |j                  dP      xs g       xs d       dt        j                  dHj                  |j                  dh      xs g       xs d       dt        j                  t        |j                  dj                   dkt        j                  t        |j                  d=                   d>t        j                  t        |j                  d?                   d      }d	}| j                  d      r| d   }|j                  d      xs i }dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d9                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   d}d	} | j                  d      r| d   }|j                  d      xs i }dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d9                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   d} d	}!| j                  d      r| d   }|j                  d      xs i }dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d9                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   d}!d	}"| j                  d      r| d   }|j                  d      xs i }dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d9                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   d}"d	}#| j                  d      r| d   }|j                  d      xs i }dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dpt        j                  t        |j                  dq      xs i j                  dr                   dst        j                  dtj                  |j                  du      xs i j                  dv      xs g       xs d       dt        j                  t        |j                  d9                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   dt        j                  t        |j                  d                   d}#dj                  g dddddt        j                  | d          ddt        j                  t        | d                ddt        j                  dtj                  | j                  d      xs g       xs d       ddt        j                  t        t        | j                  d      xs g                    ddt        j                  t        | j                  d                   dd| d    ddt        j                  | d          ddt        j                  dHj                  | d         xs d       ddt        j                  | d   d   xs d       ddt        j                  | d   d   xs d       ddt        j                  | d   d   xs d       ddt        j                  | d   d   xs d       ddt        j                  t        | j                  di       j                  dɫ                   dt        j                  t        | j                  di       j                  d˫                   ddt        j                  | d          ddΑdt        j                  | d          dѝdґddӄ | j                  d      xs g D        dΑdԑd|dΑdՑd֑|dבdؑdّ|dבdڑdۑdt        j                  | d   d          dt        j                  t        | d   d                dt        j                  | d   d   xs d       dt        j                  | d   d          dt        j                  t        | d   d                dt        j                  | d   d   xs d       ddב| j                  d      rd| d   j                  d       dnd	||
|||||||||||||| |!|"|#d|dΑdd|dבd|d      S )Nr  c              3     K   | ]X  }d t        j                  |d          d|d    dt        j                  t        |j                  d      xs d             d Z yw)	<tr><td><code>rS   </code></td><td>rT   </td><td><code>r   r   </code></td></tr>Nhtmlescaper8   r~   r   s     r&   r   zhtml_page.<locals>.<genexpr>(  sm       	[[Y01 2;  ![[SWWV_%;!<=> ?	   AA r  c              3    K   | ]  }d t        j                  |d          dt        j                  t        |j                  d      xs d             dt        j                  t        |j                  d      xs d             d  yw)r  rG   </code></td><td><code>rI   r   rJ   r  Nr  r   s     r&   r   zhtml_page.<locals>.<genexpr>0  s       	[[Y01 2[[SWW[%9%@S!ABC D[[SWW[%9%@S!ABC D	s   B
Br  c              3  N   K   | ]  }d t        j                  |       d  ywz<li></li>Nr  r  r   s     r&   r   zhtml_page.<locals>.<genexpr>8  s#     YT4D 12%8Y   #%r   z<li>none</li>r@   c              3     K   | ]X  }d t        j                  |d          dt        j                  dj                  |j                  d      xs g              d Z yw)
<li><code>r   z</code>: <code>r  r   </code></li>N)r  r  r   r~   r   s     r&   r   zhtml_page.<locals>.<genexpr>9  s_        T[[V-. /TYYswwx'8'>B?@A	Or  r   c              3     K   | ]k  }d t        j                  |d          dt        j                  |d          dt        j                  |d          dt        j                  |d          d	 m y	w)
z<tr><td>r   r  r   r  r   r  r   z
</td></tr>Nr  r   s     r&   r   zhtml_page.<locals>.<genexpr>>  s       	{{3v;'( )[[V-. /[[\!234 5{{3y>*+ ,		s   A1A3r6  c              3  N   K   | ]  }d t        j                  |       d  yw)r  r  Nr  )r   rS   s     r&   r   zhtml_page.<locals>.<genexpr>G  s#     qW:dkk'&:%;<Hqr  r7  r  r   z<<h2>Process Memory Snapshot</h2><p>can read process memory: r   z; loaded base: <code>r   r   z.</code>; selected pointer static value: <code>r   z/</code>; selected pointer equals current root: r   z'; current root relocation looks valid: r  zA.</p><p>report: <code>out/runtime_memory_snapshot.json</code></p>r  r  r  z0<h2>Input Path Probe</h2><p>xdotool path: <code>r  z</code>; loaded base: <code>z*</code>; baseline selected pointer: <code>r  z*</code>; baseline selector context: <code>r   r   z)</code>; initial selected pointer: <code>r  z'</code>; final selected pointer: <code>z'</code>; final selector context: <code>r   z$</code>; held-key pressed detected: r   z%; held-key changed selected pointer: r  z$; X event changed selected pointer: r   z,; key-buffer poke changed selected pointer: r   zB.</p><p>report: <code>out/runtime_input_path_probe.json</code></p>r  z.<h2>Key Sequence Probe</h2><p>sequence count: r   z; startup wait seconds: <code>r   z#</code>; any reached current root: r  z"; any reached route selector 2:0: r   zD.</p><p>report: <code>out/runtime_key_sequence_probe.json</code></p>r  r  r  z6<h2>Key Sequence Prelude Probe</h2><p>sequence count: z; prelude: <code>r  z#</code>; observed selectors: <code>r  zL.</p><p>report: <code>out/runtime_key_sequence_prelude_probe.json</code></p>r  z1<h2>Selected-Pointer Poll</h2><p>sequence count: z; sample count: r   z; poll interval seconds: <code>r  r   zG.</p><p>report: <code>out/runtime_selected_pointer_poll.json</code></p>r   z9<h2>Selected-Pointer Prelude Poll</h2><p>sequence count: z&</code>; poll interval seconds: <code>zO.</p><p>report: <code>out/runtime_selected_pointer_prelude_poll.json</code></p>r!  z6<h2>Selected-Pointer Long Poll</h2><p>sequence count: zL.</p><p>report: <code>out/runtime_selected_pointer_long_poll.json</code></p>r"  z6<h2>Selected-Pointer Late Poll</h2><p>sequence count: z</code>; prelude: <code>zL.</p><p>report: <code>out/runtime_selected_pointer_late_poll.json</code></p>r$  r%  z?<h2>Selected-Pointer SaveData Load Poll</h2><p>sequence count: z</code>; input quality: <code>zU.</p><p>report: <code>out/runtime_selected_pointer_savedata_load_poll.json</code></p>r&  r'  zI<h2>Selected-Pointer Multislot SaveData Load Poll</h2><p>sequence count: z&</code>; public save selectors: <code>r   z/</code>; observed public save selectors: <code>r  z+</code>; any reached public save selector: r  z; any reached current root: z_.</p><p>report: <code>out/runtime_selected_pointer_multislot_savedata_load_poll.json</code></p>r(  r)  zT<h2>Selected-Pointer Multislot SaveData Load Case-Alias Poll</h2><p>sequence count: z</code>; case aliases: enabled=r  r   z; removed=<code>rx   r  r  zj.</p><p>report: <code>out/runtime_selected_pointer_multislot_savedata_load_case_alias_poll.json</code></p>r*  r,  z_<h2>Selected-Pointer Multislot SaveData Load Input-Path Case-Alias Poll</h2><p>sequence count: zu.</p><p>report: <code>out/runtime_selected_pointer_multislot_savedata_load_input_path_case_alias_poll.json</code></p>r-  r.  z^<h2>Selected-Pointer Synthetic Selector 2:0 Input-Path Case-Alias Poll</h2><p>sequence count: z!</code>; staged selectors: <code>z*</code>; observed staged selectors: <code>z&</code>; any reached staged selector: z.</p><p>promotion note: standalone synthetic save-shaped file; non-promoting.</p><p>report: <code>out/runtime_selected_pointer_synthetic_selector_2_0_input_path_case_alias_poll.json</code></p>r/  r0  zp<h2>Selected-Pointer Patched Public-Base Selector 2:0 Input-Path Case-Alias Poll</h2><p>staged save kind: <code>r  z</code>; sequence count: z.</p><p>promotion note: constructed from a public save by patching selector/position bytes; diagnostic-only.</p><p>report: <code>out/runtime_selected_pointer_patched_public_selector_2_0_input_path_case_alias_poll.json</code></p>r1  r  z6<h2>Runtime Save File I/O Probe</h2><p>backend: <code>r   z</code>; temporary save: <code>r  z; pid runs: r   z; key-write runs: r   z; input trace usable: r   z; matched file-I/O lines: r  z; any savedat1.dat access: r    zD.</p><p>report: <code>out/runtime_save_file_io_probe.json</code></p>r2  z=<h2>Runtime Save File I/O Strace Probe</h2><p>backend: <code>zK.</p><p>report: <code>out/runtime_save_file_io_strace_probe.json</code></p>r3  zD<h2>Runtime Save File I/O Strace Attach Probe</h2><p>backend: <code>zR.</p><p>report: <code>out/runtime_save_file_io_strace_attach_probe.json</code></p>r4  zT<h2>Runtime Save File I/O Strace Attach Load Candidates Probe</h2><p>backend: <code>zb.</p><p>report: <code>out/runtime_save_file_io_strace_attach_load_candidates_probe.json</code></p>r5  z_<h2>Runtime Save File I/O Strace Attach Load Candidates Case-Alias Probe</h2><p>backend: <code>zm.</p><p>report: <code>out/runtime_save_file_io_strace_attach_load_candidates_case_alias_probe.json</code></p>zM<!doctype html><meta charset="utf-8"><title>Runtime Trace Feasibility</title>z<style>body{font-family:system-ui,sans-serif;background:#111;color:#eee;max-width:1100px;margin:24px auto}table{border-collapse:collapse}td,th{border:1px solid #444;padding:6px 8px;vertical-align:top}code{color:#9bd4ff}</style>z"<h1>Runtime Trace Feasibility</h1>z<ul>z<li>objective: r  r  z<li>proof found: r   z&<li>failed runtime trace gates: <code>r  r  z<li>missing evidence count: r   z<li>evidence refs: r   z<li>can run runtime trace now: r  z<li>dpkg architecture: <code>r  z!<li>foreign architectures: <code>r  z<li>wine loader smoke: <code>r  r   r  z"<li>qemu wine loader smoke: <code>r  z&<li>qemu wine child exec smoke: <code>r  z<li>qemu-i386 binfmt: <code>r   rK   z.<li>binfmt consistency: summary enabled <code>r  r   z'</code>, execution probe enabled <code>r   z<li>promotion status: <code>r
   z</ul>z<p>r   z</p>z<h2>Missing Evidence</h2>c              3  N   K   | ]  }d t        j                  |       d  ywr  r  r   s     r&   r   zhtml_page.<locals>.<genexpr>  s#     	[dDT"#5
)	[r  z<h2>Evidence Refs</h2>z<h2>Tool Availability</h2>zU<table><thead><tr><th>command</th><th>available</th><th>path</th></tr></thead><tbody>z</tbody></table>z<h2>Apt Packages</h2>zZ<table><thead><tr><th>package</th><th>installed</th><th>candidate</th></tr></thead><tbody>z<h2>QEMU Wine Smoke</h2>zV<table><thead><tr><th>check</th><th>status</th><th>first line</th></tr></thead><tbody>r  rS   r  rH   r  z</code></td></tr><tr><td><code>r  r  z2<h2>Execution Probe</h2><p>can capture trace now: r   zF</p><p>report: <code>out/runtime_trace_execution_probe.json</code></p>z<h2>Blockers</h2><ul>z<h2>Trace Points</h2>z`<table><thead><tr><th>name</th><th>kind</th><th>address</th><th>purpose</th></tr></thead><tbody>z<h2>Commands To Try</h2><ol>z</ol>)	r   r   r~   r  r  r8   r   r   r   )$r  command_rowspackage_rowsr   r  
trace_rowsr  memory_snapshot_htmlr  r   input_probe_htmlr  r  r  key_sequence_htmlkey_sequence_prelude_htmlrs  r   r   selected_pointer_poll_html"selected_pointer_prelude_poll_htmlselected_pointer_long_poll_htmlselected_pointer_late_poll_html(selected_pointer_savedata_load_poll_htmlr   2selected_pointer_multislot_savedata_load_poll_html=selected_pointer_multislot_savedata_load_case_alias_poll_htmlHselected_pointer_multislot_savedata_load_input_path_case_alias_poll_htmlGselected_pointer_synthetic_selector_2_0_input_path_case_alias_poll_htmlLselected_pointer_patched_public_selector_2_0_input_path_case_alias_poll_htmlsave_file_io_probe_htmlr  save_file_io_strace_probe_html%save_file_io_strace_attach_probe_html5save_file_io_strace_attach_load_candidates_probe_html@save_file_io_strace_attach_load_candidates_case_alias_probe_htmls$                                       r&   	html_pager  '  s(   99  :&--/ L 99  =)002 L yyYWZEXYYl]lHGG  ;;~.4" M
   =) J yyqX_`oXpqqH{{#$+,h'-2++/;;s6::F\;]7^+_*` a""&++c(,,2O2VSV.W"X!Y Z448KKFJJOnDoDvsv@w4x3y z559[[VZZPrEsAt5u4v w448KKFJJOpDq@r4s3t uKK 	 {{< %))O,2		-(.B&&*kk#eii6N6URU2V&W%X Y""&++c%))O2L2SPS.T"U!V W004C		Jl@m@tqt<u0v/w x004CKkAlArpr@w@w  yC  AD  AK  HK  =L  1M  0N N//3{{3w{{Ke?f?mjm;n/o.p q--1[[UYYGa=b=ifi9j-k,l m--1[[eiiHe>f>ljl=q=qr|=}  >E  BE  :F  .G  -H H**.++c%))D\:]6^*_)` a226++c%))LkBl>m2n1o p115SKiAj=k1l0m n99=SSxIyEz9{8| }LL 	 {{%&*+""&++c%))O2L.M"N!O P++/;;s599EY;Z7[+\*] ^))-SCZ9[5\)](^ _//3{{3uyyIi?j;k/l.m nN	N 	 !#{{,-1299[)/R 	.CGG$<=C .8+OOH-.	.
""&++c%))O2L.M"N!O P"kk#eii	.B.Ic*JKL M))-TYYx5H5OC)P(Q R))-SCZ9[5\)](^ _//3{{3uyyIi?j;k/l.m nVV 	" "${{()-.""&++c%))O2L.M"N!O P![[UYY}-E)FGH I,,0KKEIIF[<\8],^+_ `))-TYYuyyI\?]?cac5d5khk)l(m n))-SCZ9[5\)](^ _//3{{3uyyIi?j;k/l.m nQQ 	# *,&{{/045""&++c%))O2L.M"N!O P![[UYY}-E)FGH I"kk#eii	.B.Ic*JKL M,,0KKEIIF[<\8],^+_ `))-TYYuyyI\?]?cac5d5khk)l(m n))-SCZ9[5\)](^ _//3{{3uyyIi?j;k/l.m nYY 	+ ')#{{,-12""&++c%))O2L.M"N!O P![[UYY}-E)FGH I"kk#eii	.B.Ic*JKL M,,0KKEIIF[<\8],^+_ `))-TYYuyyI\?]?cac5d5khk)l(m n))-SCZ9[5\)](^ _//3{{3uyyIi?j;k/l.m nVV 	( ')#{{,-12""&++c%))O2L.M"N!O P![[UYY}-E)FGH I++/;;s599EY;Z7[+\*] ^"kk#eii	.B.Ic*JKL M,,0KKEIIF[<\8],^+_ `))-TYYuyyI\?]?cac5d5khk)l(m n))-SCZ9[5\)](^ _//3{{3uyyIi?j;k/l.m nV	V 	( 02,{{459:++GHNB""&++c%))O2L.M"N!O P![[UYY}-E)FGH I++/;;s599EY;Z7[+\*] ^"kk#eii	.B.Ic*JKL M,,0KKEIIF[<\8],^+_ `$$(KK0YZa0b$c#d e))-TYYuyyI\?]?cac5d5khk)l(m n))-SCZ9[5\)](^ _//3{{3uyyIi?j;k/l.m n_
_ 	1 :<6{{=>BC++PQWUW""&++c%))O2L.M"N!O P![[UYY}-E)FGH I++/;;s599EY;Z7[+\*] ^"kk#eii	.B.Ic*JKL M,,0KKEIIF[<\8],^+_ `$$(KK0YZa0b$c#d e[[5995J+K+Qr!R!YVYZ[ \))-TYYuyyI\?]?cac5d5khk)l(m n[[5995R+S+YWY!Z!a^abc d115SKiAj=k1l0m n))-SCZ9[5\)](^ _//3{{3uyyIi?j;k/l.m nii 	;$ EGA{{FGKL++YZ`^`""&++c%))O2L.M"N!O P![[UYY}-E)FGH I++/;;s599EY;Z7[+\*] ^"kk#eii	.B.Ic*JKL M,,0KKEIIF[<\8],^+_ `%%)[[eii6N6TRT5Y5YZc5d1e%f$g h![[599=O3P3VTV2[2[\l2m2sqs)t){x{|} ~$$(KK0YZa0b$c#d e[[5995J+K+Qr!R!YVYZ[ \))-TYYuyyI\?]?cac5d5khk)l(m n[[5995R+S+YWY!Z!a^abc d115SKiAj=k1l0m n))-SCZ9[5\)](^ _//3{{3uyyIi?j;k/l.m nt!t 	F( PRL{{OPTU++bcigi""&++c%))O2L.M"N!O P![[UYY}-E)FGH I++/;;s599EY;Z7[+\*] ^"kk#eii	.B.Ic*JKL M,,0KKEIIF[<\8],^+_ `%%)[[eii6N6TRT5Y5YZc5d1e%f$g h![[599=O3P3VTV2[2[\l2m2sqs)t){x{|} ~$$(KK0YZa0b$c#d e[[5995J+K+Qr!R!YVYZ[ \))-TYYuyyI\?]?cac5d5khk)l(m n[[5995R+S+YWY!Z!a^abc d115SKiAj=k1l0m n))-SCZ9[5\)](^ _//3{{3uyyIi?j;k/l.m n! 	Q( OQK{{MNRS++`ageg""&++c%))O2L.M"N!O P![[UYY}-E)FGH I++/;;s599EY;Z7[+\*] ^"kk#eii	.B.Ic*JKL M,,0KKEIIF[<\8],^+_ `%%)[[eii6N6TRT5Y5YZc5d1e%f$g h![[599=O3P3VTV2[2[\l2m2sqs)t){x{|} ~$$(KK0YZa0b$c#d e[[5995J+K+Qr!R!YVYZ[ \))-TYYuyyI\?]?cac5d5khk)l(m n[[5995R+S+YWY!Z!a^abc d,,0KKEIIFd<e8f,g+h i))-SCZ9[5\)](^ _//3{{3uyyIi?j;k/l.m n~!~ 	P* TVP{{QRVW++dekikC C * C*.++c%))DT:U:\Y\6]*^)_C`C#{{3uyy/I+JKLCMC "[[UYY}-E)FGHCI+C ,0;;s599EY;Z7[+\*]	C^	C
 #kk#eii	.B.Ic*JKLC
M,C -1KKEIIF[<\8],^+_C`%C &*[[eii6N6TRT5Y5YZc5d1e%f$gChC "[[599=O3P3VTV2[2[\l2m2sqs)t){x{|}C~$C %)KK0YZa0b$c#dCeC [[5995J+K+Qr!R!YVYZ[C\)C *.TYYuyyI\?]?cac5d5khk)l(mCnC [[5995R+S+YWY!Z!a^abcCd,C -1KKEIIFd<e8f,g+hCi)C  *.SCZ9[5\)](^!C _/!C" 04{{3uyyIi?j;k/l.m#C"nC#C 	U, !{{$%)*?39r!!%S91E-F!G H I%%)[[^5G5G5Q1R%S$T U#{{3uyy/I+JKL MS3I)J%KLM N#{{3uyy9U/V+WXY Z##';;s599=O3P/Q#R"S T''+{{3uyyAS7T3U'V&W X((,C		BX8Y4Z(['\ ]N	N 	  &("{{*+/0?39r!!%S91E-F!G H I%%)[[^5G5G5Q1R%S$T U#{{3uyy/I+JKL MS3I)J%KLM N#{{3uyy9U/V+WXY Z##';;s599=O3P/Q#R"S T''+{{3uyyAS7T3U'V&W X((,C		BX8Y4Z(['\ ]U	U 	' -/){{0156?39r!!%S91E-F!G H I%%)[[^5G5G5Q1R%S$T U#{{3uyy/I+JKL MS3I)J%KLM N#{{3uyy9U/V+WXY Z##';;s599=O3P/Q#R"S T''+{{3uyyAS7T3U'V&W X((,C		BX8Y4Z(['\ ]\	\ 	. =?9{{>?CD?39r!!%S91E-F!G H I%%)[[^5G5G5Q1R%S$T U#{{3uyy/I+JKL MS3I)J%KLM N#{{3uyy9U/V+WXY Z##';;s599=O3P/Q#R"S T''+{{3uyyAS7T3U'V&W X((,C		BX8Y4Z(['\ ]l	l 	> HJD{{GHLM?39r!!%S91E-F!G H I%%)[[^5G5G5Q1R%S$T U%%)[[eii6N6TRT5Y5YZc5d1e%f$g h![[599=O3P3VTV2[2[\l2m2sqs)t){x{|} ~#{{3uyy/I+JKL MS3I)J%KLM N#{{3uyy9U/V+WXY Z##';;s599=O3P/Q#R"S T''+{{3uyyAS7T3U'V&W X((,C		BX8Y4Z(['\ ]ww 	I 99 ZYZ 	nZ 	-Z 		Z
 $++gk&:;<EBZ DKKGL,A(BCDEJZ	SXXgkk2M&N&TRTU\Y\]^^j	lZ 't{{3s7;;GX;Y;_]_7`3a'b&cchiZ dkk#gkk:L.M*NOPPUVZ *'2I*J)K5QZ (G<N4O(P'QQ]^Z ,DKK		'JdBe8f8mjm,n+oo{|Z (G<M4N{4[4g_g(h'iiuvZ -T[[AV9WXc9d9php-q,rr~Z  1WE]=^_j=k=wow1x0y  zF  	G!Z" 't{{7;K3L^3\3c`c'd&eeqr#Z$	S-@"!E!I!IJZ![\]^ _S-@"!E!I!IJa!bcdeeq	s%Z, 't{{7;L3M'N&O|\-Z. 	/Z0 dkk',/0161Z2 	$3Z4 	5Z6 
\gkkBS6T6ZXZ	[7Z8 	9Z: 	!;Z< 	=Z> 	?Z@ 	AZB 	%CZD 	`EZF 	GZH 	IZJ 	 KZL 	eMZN 	OZP 	QZR 	#SZT 	aUZV	[[)>!?	!JKL M{{3w'<=hGHIJ K[[)>!?!L!SPSTU V [[)A!B9!MNO P{{3w'?@JKLM N[[)A!B;!O!VSVWX Y		WZj 	kZt {{+,))01A)B)F)FG[)\(] ^QQ wZz 	{Z| 	}Z~ 	Z@ 	"AZB 	#CZD 	+EZF 	(GZH 	(IZJ 	1KZL 	;MZN 	FOZP 	QQZR 	PSZT 	UUZV 	 WZX 	'YZZ 	.[Z\ 	>]Z^ 	I_Z` 	 aZb 	cZd 	eZf 	 gZh 	kiZj 	kZl 	mZn 	'oZp 	qZr 	sZ Z ZrC   c                    |j                  dd       |dz  j                  t        j                  | dd      dz   d	       |d
z  j                  t	        |       d	       y )NT)parentsexist_okzruntime_trace_feasibility.jsonF)rx   rF   )ensure_ascii
separatorsr  rZ   r[   runtime_trace_feasibility.html)mkdir
write_textr^   dumpsr  )r  re   s     r&   write_outputsr    sd    MM$M.//;;

7:FM <  //;;Ig<NY`;arC   c                    t        j                  t              } | j                  dt        t
               | j                         }t               }t        ||j                         t        d|j                  dz          y )N)descriptionz	--out-dir)typedefaultz#wrote runtime trace feasibility -> r  )argparseArgumentParser__doc__add_argumentr   OUT
parse_argsr  r  re   print)parserargsr  s      r&   mainr    se    $$9F
$<DoG'4<<(	/?_0_/`
abrC   __main__)returnz
list[dict])r;   z	list[str]r  ztuple[int, str])r.   r8   r  r8   )rG   r8   r  rc   )rS   r8   r  rc   )re   r   r  dict | None)re   r   rp   r8   r  r  )r   r  r  r8   )r   r  r  rc   )r   r  r  r8   )r   r8   r  rc   )r  rc   )r  rc   r  r8   )r  rc   re   r   r  None)r  r  )%r  
__future__r   r  r  r^   rU   r2   pathlibr   __file__resolver  r#   r  r"   r'   r>   rB   rQ   rX   rg   rj   rl   rq   rs   rv   r   r   r   r   r  r  r  r  r  __name__r   rC   r&   <module>r     sg   Y "       H~''*
Ul 9
 0;ij0  =X  Y2Pp>qr:XxFyz5  BH  I=  JP  Q:  GM  N:  GM  N7  DL  MC  PV  WM  Zb  cX  em  nc  px  yb  ow  xg  t|  }2>uv9E|}@  MD  EP  ]T  U[  h_  `G$+ 'N4 *& *- 4 *- 4 &) 4 -0Ab 4 8444 4 5444 4	#!H
(JZPfL^ 25 bc zF rC   