\x89\x50\x4E\x47\x0D\x0A\x1A\x0A PNG  \x89\x50\x4E\x47\x0D\x0A\x1A\x0A U e5d1@sdZddlZddlmZmZddlmZddlmZm Z ddl m Z m Z m Z e edZddlmZd d Zd d Zd dZddZddZddZddZddZddZddZddZdd ZdS)!z%Michael Felt N)environpath) executable)c_void_psizeof)PopenPIPEDEVNULL)maxsizecsfdd}tt||dS)NcsL|}g}z|r*|dt|qWntk r@YnX|pJtgS)Nr)splitinsertintpop ValueErrorr )ZlibnamepartsZnumssep#/usr/lib64/python3.8/ctypes/_aix.py _num_version>s z#_last_version.._num_version)key)maxreversed)Zlibnamesrrrrr _last_version=s rcCs:d}|jD]*}|dr|}q d|kr |dSq dS)N)/z./z../ZINDEX )stdout startswithrstrip)p ld_headerlinerrr get_ld_headerJs  r#cCs0g}|jD] }td|r&||q q,q |S)Nz[0-9])rrematchappend)r infor"rrrget_ld_header_infoTs    r(cCs\g}tddtd|gdttd}t|}|rF||t|fq"qFq"|j| |S)Nz /usr/bin/dumpz-Xz-HT)Zuniversal_newlinesrstderr) rAIX_ABIrr r#r&r(rclosewait)fileZ ldr_headersr r!rrrget_ld_headersas  r.cCs6g}|D](\}}d|kr|||ddq|S)N[)r&index)Z ld_headersZsharedr"_rrr get_sharedys  r3csJddttdfdd|D}t|dkrB|ddSdSdS)Nz\[(z)\]c3s|]}t|VqdS)N)r$search).0r"exprrr sz get_one_match..r)listfilterlengroup)r7linesZmatchesrr6r get_one_matchs   r?cCsJtdkr d}t||}|rF|Sn&dD] }tt||}|r$|Sq$dS)N@z shr4?_?64\.o)zshr.ozshr4.o)r*r?r$escape)membersr7membernamerrr get_legacys  rEcCsfd|dd|dg}|D]D}g}|D]$}t||}|r(||dq(|rt|dSqdS)Nlibz\.so\.[0-9]+[0-9.]*z_?64\.so\.[0-9]+[0-9.]*r.)r$r4r&r=r)rDrBZexprsr7Zversionsr"mrrr get_versions   rIcCsbd|d}t||}|r|Stdkrr"rrrr get_libpathss     rOcCsp|D]f}|dkrqd|d}t||}t|rtt|}tt||}|dkrd||fSdSqdS)N/librFz.a)NN)rjoinexistsr3r.rJr$rA)pathsrDdirbasearchiverBrCrrr find_shared s     rWcCsnt}t||\}}|dkr,|d|dSd|d}|D],}|dkrJq/s&      &