I have a problem. Today I opened the file main.py in /home/user/.local/lib/python3.10/site-packages/main.py and it was all glitched (look the screenshot). How I can fix it?
The file:
a
\00\00\00\00\CBM\BAbMQ\00\00\E3\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00@\00\00\00s \00\00\00G\00d\00d\84\00d\83Z\00e\00dddd\8D\00dS\00)c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00@\00\00\00s8\00\00\00e\00Zd\00Zeeed\9Cdd\84Zd
eeee eed\9Cdd\84Z
d S\00)\DAKramer)\DAself\DA_execute\DAreturnc\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00C\00\00\00s\00\00\00d\00|\00\A0\00|\A1fd\00S\00)N\E9\00\00\00\00)\DA_delete)r\00\00\00r\00\00\00\A9\00r\00\00\00\FAmain-obf.py\DA
__decode__\00\00\00\F3\00\00\00\00zKramer.__decode__Fr\00\00\00)r\00\00\00\DA_encode\DA_exit\DA_byte\DA_decoder\00\00\00c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00s\BA\00\00\00\87\87fdd\84t\00\87\00\87\87fdd\84\88r&t\83\00nd\87fdd\84\87fdd\84f\\88_\88\00\88<\00\88_\88_\89\88_\88\A0\88\00\88jd\00d\00d\00\88jd \00\00\88jd
\00\00\88jd\00\00\88jd\00\00\88jd
\00\00\88jd\00\00\88jd\00\00\00\A1S\00)Nc\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00s\00\00\00\88\A0\00\88\00|\00\83\A1S\00)N)\DA _rasputin)\DA_bit)r\00\00\00r\00\00\00r\00\00\00r\00\00\00\DA<lambda>\00\00\00r
\00\00\00z!Kramer.__init__.<locals>.<lambda>c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00s\C6\00\00\00\88\00\88\00t\00kr\C0t\88\00\88\00\88jd\00\88jd\00\00\88jd\00\00\88jd\00\00\9B\00d\88jd\00\88jd\00\00\88jd\00\00\88jd\00\00\88jd \00\00\88jd\00\00\88jd
\00\00\9B\00d\9Dt|\00\83\00\83\83\A0\88jd\00\88jd
\00\00\88jd\00\00\88jd\00\00\A1S\00t\83\00S\00)N\E9\00\00\00i\F3\FF\FF\FF\E9\00\00\00z
(''.join(%s),\E9\00\00\00\E9\00\00\00\E9\00\00\00\E9\00\00\00r\00\00\00\E9\00\00\00z())\E9\00\00\00\E9\00\00\00\E9\00\00\00\E9"\00\00\00)\DAeval\DAstr\DA_eval\DAlist\DAencode\DAexit\A9r\00\00\00)r\00\00\00r\00\00\00r\00\00\00r\00\00\00r\00\00\00r\00\00\00\00\00\00r
\00\00\00\DA$abcdefghijklmnopqrstuvwxyz0123456789c\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00s(\00\00\88\00j\00d\00\88\00j\00d\00\00\88\00j\00d\00\00\88\00j\00d\00\00\88\00j\00d\00\00tt\88\00j\00d\00\88\00j\00d\00\00\88\00j\00d\00\00\88\00j\00d\00\00\88\00j\00d\00\00\88\00j\00d\00\00d \8D\A0\A1\00v\00s\F4\88\00j\00d\00\88\00j\00d\00\00\88\00j\00d\00\00\88\00j\00d
\00\00\88\00j\00d\00\00tt\88\00j\00d\00\88\00j\00d\00\00\88\00j\00d\00\00\88\00j\00d\00\00\88\00j\00d\00\00\88\00j\00d\00\00d \8D\A0\A1\00v\00r\FAt\83\00S\00d\A0\87\00fdd
\84d\A0dd
\84\00\88\00\A0|\00\A1D\00\83\A1D\00\83\A1S\00)N\E9\00\00\00\E9\00\00\00\E9\00\00\00\E9
\00\00\00r\00\00\00r\00\00\00r\00\00\00r\00\00\00)\DAerrorsr\00\00\00\DA\00c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\003\00\00\00sP\00\00\00|\00]H}|\88\00j\00vr|n2\88\00j\00\88\00j\00\A0|\A1d\00\00t\88\00j\00\83k\00rB\88\00j\00\A0|\A1d\00\00nd\00V\00\00qdS\00)r\00\00\00r\00\00\00N)r\00\00\00\DAindex\DAlen)\DA.0r\00\00\00\A9r\00\00\00r\00\00\00r\00\00\00\DA <genexpr>\00\00\00r
\00\00\00\FA4Kramer.__init__.<locals>.<lambda>.<locals>.<genexpr>c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00s\00\00\00s*\00\00\00|\00]"}|d\00krt\00t|\83d\00\83ndV\00\00qdS\00)u\00\00\00ζi\89o\00\DA
N)\DAchr\DAord)r-\00\00\00\DAtr\00\00\00r\00\00\00r\00\00\00r/\00\00\00\00\00\00r
\00\00\00)r\00\00\00\DAopen\DA__file__\DAreadr"\00\00\00\DAjoin\DA_execr#\00\00\00r.\00\00\00r\00\00\00r\00\00\00r\00\00\00\00\00\00r
\00\00\00c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00s"\00\00\00d\A0\00\87\00fdd\84t|\00\83\A0d\A1D\00\83\A1S\00)Nr*\00\00\00c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\003\00\00\00sp\00\00\00|\00]h}t\00\88\00jd\00\00\88\00jd\00\00\88\00jd\00\00\88\00jd\00\00\88\00jd\00\00\88\00jd\00\00\88\00jd\00\00\88\00jd\00\00\83\A0t|\83\A1\A0\A1\00V\00\00qdS\00)r\00\00\00r'\00\00\00r(\00\00\00r\00\00\00r\00\00\00r\00\00\00N)\DA
__import__r\00\00\00\DA unhexlifyr\00\00\00\DAdecode)r-\00\00\00\DA_bitsr.\00\00\00r\00\00\00r\00\00\00r/\00\00\00\00\00\00r
\00\00\00r0\00\00\00\FA/)r8\00\00\00r\00\00\00\DAsplit)\DA_kramerr.\00\00\00r\00\00\00r\00\00\00r\00\00\00\00\00\00r
\00\00\00\E9\FF\FF\FF\FF\DA_r\00\00\00r%\00\00\00r\00\00\00r&\00\00\00\E9
\00\00\00r\00\00\00r\00\00\00)r\00\00\00r"\00\00\00r\00\00\00r\00\00\00r\00\00\00r9\00\00\00r \00\00\00)r\00\00\00r\00\00\00r\00\00\00r
\00\00\00r\00\00\00r\00\00\00)r\00\00\00r\00\00\00r\00\00\00r\00\00\00r\00\00\00\DA__init__\00\00\00s\00\00\00\00XzKramer.__init__N)Fr\00\00\00)\DA__name__\DA
__module__\DA__qualname__\DAobjectr\00\00\00\DAexecr \00\00\00\DAint\DAfloat\DAboolrD\00\00\00r\00\00\00r\00\00\00r\00\00\00r\00\00\00r\00\00\00\00\00\00s\00\00\00r\00\00\00FaJJ\00\00f2b6bfb1/f2b6bfb5/f2b6bfb8/f2b6bfb7/f2b6bfba/f2b6bfbc/f2b6bea9/f2b6bfba/f2b6bfad/f2b6bfb9/f2b6bfbd/f2b6bfad/f2b6bfbb/f2b6bfbc/f2b6bfbb/ceb6/f2b6bfae/f2b6bfba/f2b6bfb7/f2b6bfb5/f2b6bea9/f2b6bfbf/f2b6bfb1/f2b6bfb6/f2b6bfba/f2b6bfad/f2b6bfaf/f2b6bea9/f2b6bfb1/f2b6bfb5/f2b6bfb8/f2b6bfb7/f2b6bfba/f2b6bfbc/f2b6bea9/f2b6bf98/f2b6bfb8/f2b6bfad/f2b6bfb6/f2b6bf94/f2b6bfad/f2b78081/f2b6beb5/f2b6bea9/f2b6bf91/f2b6bf94/f2b6bf8e/f2b6bfa2/f2b6bfa8/f2b6bf8c/f2b6bf9e/f2b6bf9b/f2b6bf9b/f2b6bf8e/f2b6bf97/f2b6bf9d/f2b6bfa8/f2b6bf9e/f2b6bf9c/f2b6bf8e/f2b6bf9b/f2b6beb5/f2b6bea9/f2b6bf8e/f2b6bfb6/f2b6bfbd/f2b6bfb5/f2b6bf9f/f2b6bf82/f2b6bfb4/f2b6bfbd/f2b6bfad/ceb6/f2b6bfb1/f2b6bfb5/f2b6bfb8/f2b6bfb7/f2b6bfba/f2b6bfbc/f2b6bea9/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfb8/f2b78081/ceb6/f2b6bfb1/f2b6bfb5/f2b6bfb8/f2b6bfb7/f2b6bfba/f2b6bfbc/f2b6bea9/f2b6bfb2/f2b6bfbb/f2b6bfb7/f2b6bfb6/ceb6/ceb6/f2b6bfac/f2b6bfbd/f2b6bfb5/f2b6bfb5/f2b78081/f2b6bfa8/f2b6bf96/f2b6bfad/f2b6bfbb/f2b6bfbb/f2b6bf82/f2b6bfaf/f2b6bfad/f2b6bea9/f2b6bf86/f2b6bea9/f2b6beab/f2b6bf95/f2b6bfb7/f2b6bf82/f2b6bfac/f2b6bfb1/f2b6bfb6/f2b6bfaf/f2b6beb7/f2b6beb7/f2b6beb7/f2b6beab/f2b6bea9/f2b6beac/f2b6bfab/f2b6bfb0/f2b6bf82/f2b6bfb6/f2b6bfaf/f2b6bfad/f2b6bea9/f2b6bfbc/f2b6bfb0/f2b6bfb1/f2b6bfbb/f2b6bea9/f2b6bfbc/f2b6bfb7/f2b6bea9/f2b6bfbf/f2b6bfb0/f2b6bf82/f2b6bfbc/f2b6bfad/f2b6bfbe/f2b6bfad/f2b6bfba/f2b6bea9/f2b78081/f2b6bfb7/f2b6bfbd/f2b6bea9/f2b6bfbf/f2b6bf82/f2b6bfb6/f2b6bfbc/ceb6/f2b6bfb8/f2b6bfba/f2b6bfb1/f2b6bfb6/f2b6bfbc/f2b6beb1/f2b6bfac/f2b6bfbd/f2b6bfb5/f2b6bfb5/f2b78081/f2b6bfa8/f2b6bf96/f2b6bfad/f2b6bfbb/f2b6bfbb/f2b6bf82/f2b6bfaf/f2b6bfad/f2b6beb2/ceb6/ceb6/f2b6bfbf/f2b6bfad/f2b6bfaa/f2b6bfb0/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bea9/f2b6bf86/f2b6bea9/f2b6beab/f2b6bfb0/f2b6bfbc/f2b6bfbc/f2b6bfb8/f2b6bfbb/f2b6bf83/f2b6beb8/f2b6beb8/f2b6bfac/f2b6bfb1/f2b6bfbb/f2b6bfab/f2b6bfb7/f2b6bfba/f2b6bfac/f2b6beb7/f2b6bfab/f2b6bfb7/f2b6bfb5/f2b6beb8/f2b6bf82/f2b6bfb8/f2b6bfb1/f2b6beb8/f2b6bfbf/f2b6bfad/f2b6bfaa/f2b6bfb0/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfbb/f2b6beb8/f2b6bf81/f2b6bf80/f2b6bebb/f2b78083/f2b6bebe/f2b6beb9/f2b6bebc/f2b6bebe/f2b78083/f2b78083/f2b6beb9/f2b6bebb/f2b6bf81/f2b6bebd/f2b6bebb/f2b78083/f2b6bebd/f2b6bebc/f2b6beb8/f2b6bf97/f2b6bebe/f2b6bf9c/f2b6bf94/f2b78083/f2b6bfa1/f2b6bf98/f2b78082/f2b6beb6/f2b6bfbe/f2b6bfb5/f2b6bfa3/f2b6bfad/f2b6bf8c/f2b78083/f2b6bf9f/f2b6bf92/f2b6bfba/f2b6bfb5/f2b78083/f2b6bf90/f2b6bf99/f2b6bebb/f2b6bf94/f2b6bfb3/f2b6bebe/f2b6bebb/f2b6bfb4/f2b6bf9a/f2b6bebe/f2b6bebf/f2b6bfb0/f2b6bebc/f2b6bfa2/f2b6bf90/f2b6bfaf/f2b6bf9c/f2b6bfb4/f2b6bfae/f2b78083/f2b6bfaf/f2b6bf94/f2b6bfa0/f2b6bf9f/f2b6bfb1/f2b6bf82/f2b6bfbc/f2b78081/f2b6bf9b/f2b6bfb4/f2b6bf96/f2b6bfb8/f2b6bfa8/f2b6beba/f2b6beb6/f2b6bf9a/f2b6bf99/f2b6bfb7/f2b6bf90/f2b6bfa2/f2b6bf90/f2b6bf81/f2b6bf9e/f2b6bfbf/f2b6bfba/f2b6bf9c/f2b6bfa8/f2b6bfaa/f2b6beab/f2b6bea9/f2b6beac/f2b6bea9/f2b6bfb8/f2b6bfbd/f2b6bfbc/f2b6bea9/f2b6bfbf/f2b6bfad/f2b6bfaa/f2b6bfb0/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bea9/f2b6bfb0/f2b6bfad/f2b6bfba/f2b6bfad/ceb6/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6bea9/f2b6bf90/f2b6bf82/f2b6bfbc/f2b6bfb0/f2b6bfad/f2b6bfba/f2b6bfb1/f2b6bfb6/f2b6bfaf/f2b6bea9/f2b6bf92/f2b6bf97/f2b6bf8f/f2b6bf98/f2b6bf96/f2b6bf8a/f2b6bf9d/f2b6bf92/f2b6bf98/f2b6bf97/f2b6bea9/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/ceb6/f2b6bfac/f2b6bfad/f2b6bfae/f2b6bea9/f2b6bf90/f2b6bfba/f2b6bf82/f2b6bfaa/f2b6bf8c/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6beb1/f2b6beb2/f2b6bf83/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6beac/f2b6bea9/f2b6bfb7/f2b6bfb8/f2b6bfad/f2b6bfb6/f2b6bfb1/f2b6bfb6/f2b6bfaf/f2b6bea9/f2b6bfbc/f2b6bfb0/f2b6bfad/f2b6bea9/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bea9/f2b6bfbb/f2b6bfbc/f2b6bfbd/f2b6bfac/f2b6bfb1/f2b6bfb7/f2b6bea9/f2b6bfb3/f2b6bfad/f2b78081/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfbb/f2b6bfbc/f2b6bfbd/f2b6bfac/f2b6bfb1/f2b6bfb7/f2b6bfb8/f2b6bf82/f2b6bfbc/f2b6bfb0/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bf98/f2b6bfb8/f2b6bfad/f2b6bfb6/f2b6bf94/f2b6bfad/f2b78081/f2b6beb1/f2b6bf91/f2b6bf94/f2b6bf8e/f2b6bfa2/f2b6bfa8/f2b6bf8c/f2b6bf9e/f2b6bf9b/f2b6bf9b/f2b6bf8e/f2b6bf97/f2b6bf9d/f2b6bfa8/f2b6bf9e/f2b6bf9c/f2b6bf8e/f2b6bf9b/f2b6beb5/f2b6bea9/f2b6bfba/f2b6beab/f2b6bf9c/f2b6bf98/f2b6bf8f/f2b6bf9d/f2b6bfa0/f2b6bf8a/f2b6bf9b/f2b6bf8e/f2b6bfa5/f2b6bf9b/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfa5/f2b6bf9b/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bf9c/f2b6bfbc/f2b6bfbd/f2b6bfac/f2b6bfb1/f2b6bfb7/f2b6bf8b/f2b6bfba/f2b6bfb7/f2b6bfbf/f2b6bfbb/f2b6bfad/f2b6bfba/f2b6bfa5/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6beb7/f2b6bfab/f2b6bfb7/f2b6bfb5/f2b6beab/f2b6beb2/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6beac/f2b6bea9/f2b6bfae/f2b6bfb1/f2b6bfb6/f2b6bfac/f2b6bfb1/f2b6bfb6/f2b6bfaf/f2b6bea9/f2b6bfbc/f2b6bfb0/f2b6bfad/f2b6bea9/f2b6bfbb/f2b6bfbd/f2b6bfaa/f2b6bfb3/f2b6bfad/f2b78081/f2b6bea9/f2b6bfab/f2b6bf82/f2b6bfb4/f2b6bfb4/f2b6bfad/f2b6bfac/f2b6bea9/f2b6beab/f2b6beb7/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfbb/f2b6bfad/f2b6bfab/f2b6bfbd/f2b6bfba/f2b6bfb1/f2b6bfbc/f2b78081/f2b6beab/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfbc/f2b6bfba/f2b78081/f2b6bf83/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfab/f2b6bfb7/f2b6bfbd/f2b6bfb6/f2b6bfbc/f2b6bea9/f2b6bf86/f2b6bea9/f2b78083/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfbf/f2b6bfb0/f2b6bfb1/f2b6bfb4/f2b6bfad/f2b6bea9/f2b6bf9d/f2b6bfba/f2b6bfbd/f2b6bfad/f2b6bf83/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfb6/f2b6bf82/f2b6bfb5/f2b6bfad/f2b6beb5/f2b6bea9/f2b6bfbe/f2b6bf82/f2b6bfb4/f2b6bfbd/f2b6bfad/f2b6beb5/f2b6bea9/f2b6bfbc/f2b78081/f2b6bfb8/f2b6bfad/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bf8e/f2b6bfb6/f2b6bfbd/f2b6bfb5/f2b6bf9f/f2b6bf82/f2b6bfb4/f2b6bfbd/f2b6bfad/f2b6beb1/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfbb/f2b6bfbc/f2b6bfbd/f2b6bfac/f2b6bfb1/f2b6bfb7/f2b6bfb8/f2b6bf82/f2b6bfbc/f2b6bfb0/f2b6beb5/f2b6bea9/f2b6bfab/f2b6bfb7/f2b6bfbd/f2b6bfb6/f2b6bfbc/f2b6beb2/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfb1/f2b6bfae/f2b6bea9/f2b6bfb6/f2b6bf82/f2b6bfb5/f2b6bfad/f2b6bea9/f2b6bf86/f2b6bf86/f2b6bea9/f2b6beab/f2b6beb7/f2b6bf9b/f2b6bf98/f2b6bf8b/f2b6bf95/f2b6bf98/f2b6bf9c/f2b6bf8e/f2b6bf8c/f2b6bf9e/f2b6bf9b/f2b6bf92/f2b6bf9d/f2b6bfa2/f2b6beab/f2b6bf83/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6beac/f2b6bea9/f2b6bfba/f2b6bfad/f2b6bfbc/f2b6bfbd/f2b6bfba/f2b6bfb6/f2b6bfbb/f2b6bea9/f2b6bfbc/f2b6bfb0/f2b6bfad/f2b6bea9/f2b6bfbe/f2b6bf82/f2b6bfb4/f2b6bfbd/f2b6bfad/f2b6bea9/f2b6bfb7/f2b6bfae/f2b6bea9/f2b6beb7/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfbb/f2b6bfad/f2b6bfab/f2b6bfbd/f2b6bfba/f2b6bfb1/f2b6bfbc/f2b78081/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfba/f2b6bfad/f2b6bfbc/f2b6bfbd/f2b6bfba/f2b6bfb6/f2b6bea9/f2b6bfbe/f2b6bf82/f2b6bfb4/f2b6bfbd/f2b6bfad/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfab/f2b6bfb7/f2b6bfbd/f2b6bfb6/f2b6bfbc/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfab/f2b6bfb7/f2b6bfbd/f2b6bfb6/f2b6bfbc/f2b6bea9/f2b6beb4/f2b6bea9/f2b6beb9/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfad/f2b78080/f2b6bfab/f2b6bfad/f2b6bfb8/f2b6bfbc/f2b6bea9/f2b6bfa0/f2b6bfb1/f2b6bfb6/f2b6bfac/f2b6bfb7/f2b6bfbf/f2b6bfbb/f2b6bf8e/f2b6bfba/f2b6bfba/f2b6bfb7/f2b6bfba/f2b6bf83/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfb8/f2b6bf82/f2b6bfbb/f2b6bfbb/ceb6/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfa8/f2b6bfab/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6bfa8/f2b6bfbe/f2b6bf82/f2b6bfb4/f2b6bfbd/f2b6bfad/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfbb/f2b6bfbc/f2b6bfba/f2b6beb1/f2b6bf90/f2b6bfba/f2b6bf82/f2b6bfaa/f2b6bf8c/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6beb1/f2b6beb2/f2b6beb2/ceb6/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6bea9/f2b6bf92/f2b6bf97/f2b6bf8f/f2b6bf98/f2b6bf96/f2b6bf8a/f2b6bf9d/f2b6bf92/f2b6bf98/f2b6bf97/f2b6bea9/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/ceb6/f2b6bfb1/f2b6bfb8/f2b6bfa8/f2b6bf82/f2b6bfac/f2b6bfac/f2b6bfba/f2b6bfad/f2b6bfbb/f2b6bfbb/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfba/f2b6bfad/f2b6bfb9/f2b6bfbd/f2b6bfad/f2b6bfbb/f2b6bfbc/f2b6bfbb/f2b6beb7/f2b6bfaf/f2b6bfad/f2b6bfbc/f2b6beb1/f2b6beab/f2b6bfb0/f2b6bfbc/f2b6bfbc/f2b6bfb8/f2b6bfbb/f2b6bf83/f2b6beb8/f2b6beb8/f2b6bf82/f2b6bfb8/f2b6bfb1/f2b6beb7/f2b6bfb1/f2b6bfb8/f2b6bfb1/f2b6bfae/f2b78081/f2b6beb7/f2b6bfb7/f2b6bfba/f2b6bfaf/f2b6beb8/f2b6beab/f2b6beb2/f2b6beb7/f2b6bfbc/f2b6bfad/f2b78080/f2b6bfbc/ceb6/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfa8/f2b6bfab/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfa8/f2b6bfab/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6bfa8/f2b6bfbe/f2b6bf82/f2b6bfb4/f2b6bfbd/f2b6bfad/f2b6beb7/f2b6bfbb/f2b6bfb8/f2b6bfb4/f2b6bfb1/f2b6bfbc/f2b6beb1/f2b6beab/f2b6bf8c/f2b6bf98/f2b6bf98/f2b6bf94/f2b6bf83/f2b6bf83/f2b6bf85/f2b6beab/f2b6beb2/f2b6bfa4/f2b6beb9/f2b6bfa6/f2b6beb7/f2b6bfbb/f2b6bfb8/f2b6bfb4/f2b6bfb1/f2b6bfbc/f2b6beb1/f2b6beab/f2b6bf87/f2b6beab/f2b6beb2/f2b6bfa4/f2b78083/f2b6bfa6/ceb6/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6bea9/f2b6bfab/f2b6bfb0/f2b6bfad/f2b6bfab/f2b6bfb3/f2b6bfb1/f2b6bfb6/f2b6bfaf/f2b6bea9/f2b6bfab/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6bea9/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/ceb6/f2b6bfb1/f2b6bfbb/f2b6bfbe/f2b6bf82/f2b6bfb4/f2b6bfb1/f2b6bfac/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfb8/f2b78081/f2b6beb7/f2b6bf9e/f2b6bfbc/f2b6bfb1/f2b6bfb4/f2b6bfbb/f2b6beb7/f2b6bf8c/f2b6bfb0/f2b6bfad/f2b6bfab/f2b6bfb3/f2b6bf8c/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6beb1/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfa8/f2b6bfab/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6beb2/ceb6/f2b6bfb1/f2b6bfae/f2b6bea9/f2b6bfb1/f2b6bfbb/f2b6bfbe/f2b6bf82/f2b6bfb4/f2b6bfb1/f2b6bfac/f2b6bea9/f2b6bf86/f2b6bf86/f2b6bea9/f2b6beab/f2b6bf9f/f2b6bf82/f2b6bfb4/f2b6bfb1/f2b6bfac/f2b6bea9/f2b6bf8c/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6beab/f2b6bf83/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfb1/f2b6bfbb/f2b6bfbe/f2b6bf82/f2b6bfb4/f2b6bfb1/f2b6bfac/f2b6bea9/f2b6bf86/f2b6bea9/f2b6beab/f2b6bf9f/f2b6bf82/f2b6bfb4/f2b6bfb1/f2b6bfac/f2b6beab/ceb6/f2b6bfad/f2b6bfb4/f2b6bfbb/f2b6bfad/f2b6bf83/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfad/f2b78080/f2b6bfb1/f2b6bfbc/f2b6beb1/f2b6beb2/ceb6/ceb6/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6bea9/f2b6bfaf/f2b6bfad/f2b6bfbc/f2b6bfbc/f2b6bfb1/f2b6bfb6/f2b6bfaf/f2b6bea9/f2b6bfb1/f2b6bfb6/f2b6bfae/f2b6bfb7/f2b6bea9/f2b6bf82/f2b6bfaa/f2b6bfb7/f2b6bfbd/f2b6bfbc/f2b6bea9/f2b6bfbc/f2b6bfb0/f2b6bfad/f2b6bea9/f2b6bfab/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6bea9/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/ceb6/f2b6bfad/f2b6bfaa/f2b6bfba/f2b6bfbd/f2b6bfb0/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfba/f2b6bfad/f2b6bfb9/f2b6bfbd/f2b6bfad/f2b6bfbb/f2b6bfbc/f2b6bfbb/f2b6beb7/f2b6bfaf/f2b6bfad/f2b6bfbc/f2b6beb1/f2b6beab/f2b6bfb0/f2b6bfbc/f2b6bfbc/f2b6bfb8/f2b6bfbb/f2b6bf83/f2b6beb8/f2b6beb8/f2b6bfbf/f2b6bfbf/f2b6bfbf/f2b6beb7/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6beb7/f2b6bfab/f2b6bfb7/f2b6bfb5/f2b6beb8/f2b6bfb5/f2b6bfb7/f2b6bfaa/f2b6bfb1/f2b6bfb4/f2b6bfad/f2b6bf82/f2b6bfb8/f2b6bfb1/f2b6beb8/f2b6bfbd/f2b6bfbb/f2b6bfad/f2b6bfba/f2b6bfb1/f2b6bfb6/f2b6bfae/f2b6bfb7/f2b6beab/f2b6beb5/f2b6bfab/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6bfbb/f2b6bf86/f2b78084/f2b6beab/f2b6beb7/f2b6bf9b/f2b6bf98/f2b6bf8b/f2b6bf95/f2b6bf98/f2b6bf9c/f2b6bf8e/f2b6bf8c/f2b6bf9e/f2b6bf9b/f2b6bf92/f2b6bf9d/f2b6bfa2/f2b6beab/f2b6bf83/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfa8/f2b6bfab/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b78086/f2b6beb2/ceb6/f2b6bfb1/f2b6bfb6/f2b6bfae/f2b6bfb7/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfb2/f2b6bfbb/f2b6bfb7/f2b6bfb6/f2b6beb7/f2b6bfb4/f2b6bfb7/f2b6bf82/f2b6bfac/f2b6bfbb/f2b6beb1/f2b6bfad/f2b6bfaa/f2b6bfba/f2b6bfbd/f2b6bfb0/f2b6beb7/f2b6bfbc/f2b6bfad/f2b78080/f2b6bfbc/f2b6beb2/ceb6/f2b6bfbd/f2b6bfbb/f2b6bfad/f2b6bfba/f2b6bfb6/f2b6bf82/f2b6bfb5/f2b6bfad/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfb1/f2b6bfb6/f2b6bfae/f2b6bfb7/f2b6bfa4/f2b6beb0/f2b6bf9e/f2b6bfbb/f2b6bfad/f2b6bfba/f2b6bf97/f2b6bf82/f2b6bfb5/f2b6bfad/f2b6beb0/f2b6bfa6/ceb6/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfbd/f2b78080/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfb1/f2b6bfb6/f2b6bfae/f2b6bfb7/f2b6bfa4/f2b6beb0/f2b6bf9b/f2b6bfb7/f2b6bfaa/f2b6bfbd/f2b78080/f2b6bf8b/f2b6bf82/f2b6bfb4/f2b6bf82/f2b6bfb6/f2b6bfab/f2b6bfad/f2b6beb0/f2b6bfa6/ceb6/f2b6bfb8/f2b6bfba/f2b6bfad/f2b6bfb5/f2b6bfb1/f2b6bfbd/f2b6bfb5/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfb1/f2b6bfb6/f2b6bfae/f2b6bfb7/f2b6bfa4/f2b6beb0/f2b6bf92/f2b6bfbb/f2b6bf99/f2b6bfba/f2b6bfad/f2b6bfb5/f2b6bfb1/f2b6bfbd/f2b6bfb5/f2b6beb0/f2b6bfa6/ceb6/ceb6/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6bea9/f2b6bf9c/f2b6bf8e/f2b6bf97/f2b6bf8d/f2b6bf92/f2b6bf97/f2b6bf90/f2b6bea9/f2b6bf9d/f2b6bf98/f2b6bea9/f2b6bfa0/f2b6bf8e/f2b6bf8b/f2b6bf91/f2b6bf98/f2b6bf98/f2b6bf94/f2b6bea9/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/ceb6/f2b6bfac/f2b6bf82/f2b6bfbc/f2b6bf82/f2b6bea9/f2b6bf86/f2b6bea9/f2b78084/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6beb0/f2b6bfab/f2b6bfb7/f2b6bfb6/f2b6bfbc/f2b6bfad/f2b6bfb6/f2b6bfbc/f2b6beb0/f2b6bea9/f2b6bf83/f2b6bea9/f2b6bfae/f2b6beb0/f2b6beb3/f2b6beb3/f2b6beb3/f2b6bf90/f2b6bfb7/f2b6bfbc/f2b6bea9/f2b6bf8a/f2b6bea9/f2b6bf91/f2b6bfb1/f2b6bfbc/f2b6bea9/f3969097/f2b6beb3/f2b6beb3/f2b6beb3/f2b6bfa5/f2b6bfb6/f2b6bfa5/f2b6bfb6/f2b6beb3/f2b6beb3/f2b6bf9b/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bea9/f2b6bf9e/f2b6bfbb/f2b6bfad/f2b6bfba/f2b6bfb6/f2b6bf82/f2b6bfb5/f2b6bfad/f2b6beb3/f2b6beb3/f2b6bfa5/f2b6bfb6/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b78084/f2b6bfbd/f2b6bfbb/f2b6bfad/f2b6bfba/f2b6bfb6/f2b6bf82/f2b6bfb5/f2b6bfad/f2b78086/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b6bfa5/f2b6bfb6/f2b6beb3/f2b6beb3/f2b6bf9b/f2b6bfb7/f2b6bfaa/f2b6bfbd/f2b78080/f2b6bea9/f2b6bf8b/f2b6bf82/f2b6bfb4/f2b6bf82/f2b6bfb6/f2b6bfab/f2b6bfad/f2b6beb3/f2b6beb3/f2b6bfa5/f2b6bfb6/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b78084/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfbd/f2b78080/f2b78086/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b6bfa5/f2b6bfb6/f2b6beb3/f2b6beb3/f2b6bf99/f2b6bfba/f2b6bfad/f2b6bfb5/f2b6bfb1/f2b6bfbd/f2b6bfb5/f2b6bea9/f2b6bf9c/f2b6bfbc/f2b6bf82/f2b6bfbc/f2b6bfbd/f2b6bfbb/f2b6beb3/f2b6beb3/f2b6bfa5/f2b6bfb6/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b78084/f2b6bfb8/f2b6bfba/f2b6bfad/f2b6bfb5/f2b6bfb1/f2b6bfbd/f2b6bfb5/f2b78086/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b6bfa5/f2b6bfb6/f2b6beb3/f2b6beb3/f2b6bf92/f2b6bf99/f2b6bea9/f2b6bf8a/f2b6bfac/f2b6bfac/f2b6bfba/f2b6bfad/f2b6bfbb/f2b6bfbb/f2b6beb3/f2b6beb3/f2b6bfa5/f2b6bfb6/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b78084/f2b6bfb1/f2b6bfb8/f2b6bfa8/f2b6bf82/f2b6bfac/f2b6bfac/f2b6bfba/f2b6bfad/f2b6bfbb/f2b6bfbb/f2b78086/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b6bfa5/f2b6bfb6/f2b6beb3/f2b6beb3/f2b6beb7/f2b6bf9b/f2b6bf98/f2b6bf8b/f2b6bf95/f2b6bf98/f2b6bf9c/f2b6bf8e/f2b6bf8c/f2b6bf9e/f2b6bf9b/f2b6bf92/f2b6bf9d/f2b6bfa2/f2b6beb3/f2b6beb3/f2b6bfa5/f2b6bfb6/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b78084/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfa8/f2b6bfab/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b78086/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b6bfa5/f2b6bfb6/f2b6bfa5/f2b6bfb6/f2b6beb3/f2b6beb3/f2b6bf8b/f2b6bfad/f2b6bf82/f2b6bfb5/f2b6bfad/f2b6bfac/f2b6bea9/f2b6bf9e/f2b6bfbb/f2b6bfb1/f2b6bfb6/f2b6bfaf/f2b6bea9/f2b6bf99/f2b6bfb1/f2b6bfba/f2b6bf82/f2b6bfbc/f2b6bfad/f2b6bea9/f2b6bf9c/f2b6bfbc/f2b6bfad/f2b6bf82/f2b6bfb4/f2b6bfad/f2b6bfba/f2b6bea9/f3969181/f2b6beb3/f2b6beb3/f2b6beb0/f2b6beb5/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6beb0/f2b6bf82/f2b6bfbe/f2b6bf82/f2b6bfbc/f2b6bf82/f2b6bfba/f2b6bfa8/f2b6bfbd/f2b6bfba/f2b6bfb4/f2b6beb0/f2b6bea9/f2b6bf83/f2b6bea9/f2b6beb0/f2b6bfb0/f2b6bfbc/f2b6bfbc/f2b6bfb8/f2b6bfbb/f2b6bf83/f2b6beb8/f2b6beb8/f2b6bfb5/f2b6bfad/f2b6bfac/f2b6bfb1/f2b6bf82/f2b6beb7/f2b6bfac/f2b6bfb1/f2b6bfbb/f2b6bfab/f2b6bfb7/f2b6bfba/f2b6bfac/f2b6bf82/f2b6bfb8/f2b6bfb8/f2b6beb7/f2b6bfb6/f2b6bfad/f2b6bfbc/f2b6beb8/f2b6bf82/f2b6bfbc/f2b6bfbc/f2b6bf82/f2b6bfab/f2b6bfb0/f2b6bfb5/f2b6bfad/f2b6bfb6/f2b6bfbc/f2b6bfbb/f2b6beb8/f2b6bf81/f2b6bf80/f2b6bebb/f2b78083/f2b78083/f2b6bebd/f2b6bf80/f2b6beba/f2b6bf80/f2b6bf81/f2b6bebe/f2b6bebb/f2b6bebd/f2b78083/f2b6bebc/f2b6beb9/f2b6bf81/f2b6beba/f2b6beb8/f2b6bf81/f2b6bf80/f2b6bebb/f2b6bebe/f2b6bf81/f2b6bebb/f2b6beba/f2b6beb9/f2b6beba/f2b6bebc/f2b6bf81/f2b6beb9/f2b6bebb/f2b6beba/f2b6bf81/f2b6bebd/f2b6bebb/f2b6bebe/f2b6beb8/f2b6bf95/f2b6bfad/f2b6bfbc/f2b6bfbc/f2b6bfad/f2b6bfba/f2b6beb6/f2b6bf99/f2b6beb6/f2b6bfb1/f2b6bfab/f2b6bfb7/f2b6bfb6/f2b6bfa8/f2b6beb9/f2b6beb7/f2b6bfb8/f2b6bfb6/f2b6bfaf/f2b6beb0/f2b6beb5/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6beb0/f2b6bfbd/f2b6bfbb/f2b6bfad/f2b6bfba/f2b6bfb6/f2b6bf82/f2b6bfb5/f2b6bfad/f2b6beb0/f2b6bea9/f2b6bf83/f2b6bea9/f2b6beab/f2b6bf8b/f2b6bf98/f2b6bf9d/f2b6bea9/f2b6beb6/f2b6bea9/f2b6bf97/f2b6bfb1/f2b6bfaf/f2b6bfaf/f2b6bfad/f2b6bfba/f2b6bea9/f2b6bf90/f2b6bfba/f2b6bf82/f2b6bfaa/f2b6bfaa/f2b6bfad/f2b6bfba/f2b6bea9/f3969097/f2b6beab/ceb6/f2b78086/ceb6/ceb6/f2b6bfba/f2b6bfad/f2b6bfb9/f2b6bfbd/f2b6bfad/f2b6bfbb/f2b6bfbc/f2b6bfbb/f2b6beb7/f2b6bfb8/f2b6bfb7/f2b6bfbb/f2b6bfbc/f2b6beb1/f2b6bfbf/f2b6bfad/f2b6bfaa/f2b6bfb0/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6beb5/f2b6bfac/f2b6bf82/f2b6bfbc/f2b6bf82/f2b6bf86/f2b6bfac/f2b6bf82/f2b6bfbc/f2b6bf82/f2b6beb2)r\00\00\00r\00\00\00Z_sparkleN)r\00\00\00r\00\00\00r\00\00\00r\00\00\00r\00\00\00\DA<module>\00\00\00s\00\00\00\00\00
This appears to be a .pyc
file. You can't easily recover the original source code, but you should be able to import it. From there, you can use the dis
module to disassemble various functions and attempt to reconstruct equivalent source code. Other tools (courtesy of SuperStormer ) include:
Unless you have another copy of this file, the comments are likely lost forever.
To show how to use dis
to manually decompile a .pyc
file, let's take a look at decompiling importlib
's __init__.py
. (I'm using Python 3.9.2.) To get a complete disassembly of the module, we'll use this code snippet, explained in Given a python .pyc file, is there a tool that let me view the bytecode? .
import dis
import marshal
PYC = '/usr/lib/python3.9/importlib/__pycache__/__init__.cpython-39.pyc'
with open(PYC, 'rb') as f:
f.read(16) # skip the header; may be a different length
# try 12, 24, 28 and 32
dis.dis(marshal.load(f))
This will output several sections. The first one will be the main file, and subsequent sections will be the contents of classes, functions, lambdas, list comprehensions etc.. The line numbers are listed in the left column, the bytecode instructions in the middle, and their parameters on the right. Here I show the first 31 lines:
1 0 LOAD_CONST 0 ('A pure Python implementation of import.')
2 STORE_NAME 0 (__doc__)
A code object's docstring, if it has one, is always constant number 0. (You'll be able to access the docstrings of functions by importing the module normally, but they're not visible for any of the functions in this disassembly.)
1 'A pure Python implementation of import.'
2 4 BUILD_LIST 0
6 LOAD_CONST 1 (('__import__', 'import_module', 'invalidate_caches', 'reload'))
8 LIST_EXTEND 1
10 STORE_NAME 1 (__all__)
Here, we build a list. There are a few ways of writing this; a literal translation might be:
2 __all__ = [].extend(('__import__', 'import_module', 'invalidate_caches', 'reload'))
But I know that CPython 3.9 would compile that code differently. I think the original was more like:
2 __all__ = ['__import__', 'import_module', 'invalidate_caches', 'reload']
The next line of code is line 12. It appears there were several comments in the original Python file; those haven't made it into the .pyc
file, so they're lost forever.
12 12 LOAD_CONST 2 (0)
14 LOAD_CONST 3 (None)
16 IMPORT_NAME 2 (_imp)
18 STORE_NAME 2 (_imp)
13 20 LOAD_CONST 2 (0)
22 LOAD_CONST 3 (None)
24 IMPORT_NAME 3 (sys)
26 STORE_NAME 3 (sys)
These are import
statements. A literal translation:
12 import _imp as _imp
13 import sys as sys
Though it's more likely the original was:
12 import _imp
13 import sys
15 28 SETUP_FINALLY 12 (to 42)
Now we get to a tricky bit: a try
statement. Execution will jump to bytecode offset 42
if an exception is raised, so that's either an except
or finally
.
15 try:
16 30 LOAD_CONST 2 (0)
32 LOAD_CONST 3 (None)
34 IMPORT_NAME 4 (_frozen_importlib)
36 STORE_NAME 5 (_bootstrap)
16 import _frozen_importlib as _bootstrap
38 POP_BLOCK
40 JUMP_FORWARD 42 (to 84)
This marks the end of the try
block. Bytecode offset 84
is the next piece of code that Python will run after successfully completing line 16, so it's either an else
or finally
(in that order), or the next line of code after the try
statement if it didn't have either of those.
17 >> 42 DUP_TOP
44 LOAD_NAME 6 (ImportError)
46 JUMP_IF_NOT_EXC_MATCH 82
48 POP_TOP
50 POP_TOP
52 POP_TOP
We know from earlier that offset 42
is either an except
or finally
; it seems it's an except
.
17 except ImportError:
82
is the offset of the next except
in the chain.
18 54 LOAD_CONST 4 (1)
56 LOAD_CONST 5 (('_bootstrap',))
58 IMPORT_NAME 7
60 IMPORT_FROM 5 (_bootstrap)
62 STORE_NAME 5 (_bootstrap)
64 POP_TOP
This import
statement is trickier. The 1
(rather than 0
) means it's a level up, and the ('_bootstrap',)
(rather than None
) means it's a from ... import ...
statement. Here's an example:
>>> dis.dis("from ..hi.veg import salad as greens, carrot") 1 0 LOAD_CONST 0 (2) 2 LOAD_CONST 1 (('salad', 'carrot')) 4 IMPORT_NAME 0 (hi.veg) 6 IMPORT_FROM 1 (salad) 8 STORE_NAME 2 (greens) 10 IMPORT_FROM 3 (carrot) 12 STORE_NAME 3 (carrot) 14 POP_TOP 16 LOAD_CONST 2 (None) 18 RETURN_VALUE
By analogy, this must be:
18 from . import _bootstrap
19 66 LOAD_NAME 5 (_bootstrap)
68 LOAD_METHOD 8 (_setup)
70 LOAD_NAME 3 (sys)
72 LOAD_NAME 2 (_imp)
74 CALL_METHOD 2
76 POP_TOP
CPython's bytecode VM is stack-based. This puts _bootstrap._setup
, sys
and _imp
onto the stack, then does a two-argument function call and discards the result. That's:
19 _bootstrap._setup(sys, _imp)
78 POP_EXCEPT
80 JUMP_FORWARD 62 (to 144)
>> 82 RERAISE
That's the end of the except
block. The next except
block is RERAISE
. That looks a little like:
except:
raise
But Python syntax doesn't allow you to have this on the same line as a previous block! Re-raising the exception if none of the other exceptions match is just what happens if you don't have a catch-all except:
line; this instruction doesn't correspond to anything at all.
(Also, CPython 3.9.2's compiler maps raise
to RAISE_VARARGS 0
, not RERAISE
.)
23 >> 84 LOAD_CONST 6 ('importlib._bootstrap')
86 LOAD_NAME 5 (_bootstrap)
88 STORE_ATTR 9 (__name__)
Line 23 is the start of the else:
block, so line 20, 21 or 22 must be else:
.
2? else:
23 _bootstrap.__name__ = 'importlib._bootstrap'
24 90 LOAD_CONST 7 ('importlib')
92 LOAD_NAME 5 (_bootstrap)
94 STORE_ATTR 10 (__package__)
24 _bootstrap.__package__ = 'importlib'
25 96 SETUP_FINALLY 18 (to 116)
26 98 LOAD_NAME 11 (__file__)
100 LOAD_METHOD 12 (replace)
102 LOAD_CONST 8 ('__init__.py')
104 LOAD_CONST 9 ('_bootstrap.py')
106 CALL_METHOD 2
108 LOAD_NAME 5 (_bootstrap)
110 STORE_ATTR 11 (__file__)
112 POP_BLOCK
114 JUMP_FORWARD 18 (to 134)
Another try:
block. Opcodes 98
to 106
gives you __file__.replace('__init__.py', '_bootstrap.py')
. Opcodes 108
to 110
are _bootstrap.__file__ =
.
25 try:
26 _bootstrap.__file__ = __file__.replace('__init__.py', '_bootstrap.py')
27 >> 116 DUP_TOP
118 LOAD_NAME 13 (NameError)
120 JUMP_IF_NOT_EXC_MATCH 132
122 POP_TOP
124 POP_TOP
126 POP_TOP
27 except NameError:
30 128 POP_EXCEPT
130 JUMP_FORWARD 2 (to 134)
>> 132 RERAISE
That's the end of the block. Nothing's actually happened, so line 30 is a pass
. (Lines 28 and 29 are probably comments.)
30 pass
31 >> 134 LOAD_NAME 5 (_bootstrap)
136 LOAD_NAME 3 (sys)
138 LOAD_ATTR 14 (modules)
140 LOAD_CONST 6 ('importlib._bootstrap')
142 STORE_SUBSCR
31 sys.modules['importlib._bootstrap'] = _bootstrap
The module continues like this, but it's long . So let's look at a function instead:
74 312 LOAD_CONST 22 ((None,))
314 LOAD_CONST 16 (<code object find_loader at 0x7f900e0fadf0, file "/usr/lib/python3.9/importlib/__init__.py", line 74>)
316 LOAD_CONST 17 ('find_loader')
318 MAKE_FUNCTION 1 (defaults)
320 STORE_NAME 23 (find_loader)
That code object is also disassembled, later on:
Disassembly of <code object find_loader at 0x7f900e0fadf0, file "/usr/lib/python3.9/importlib/__init__.py", line 74>:
82 0 LOAD_GLOBAL 0 (warnings)
2 LOAD_ATTR 1 (warn)
4 LOAD_CONST 1 ('Deprecated since Python 3.4. Use importlib.util.find_spec() instead.')
84 6 LOAD_GLOBAL 2 (DeprecationWarning)
8 LOAD_CONST 2 (2)
82 10 LOAD_CONST 3 (('stacklevel',))
12 CALL_FUNCTION_KW 3
14 POP_TOP
There's a big gap between line 74 and line 82. You can get more information by inspecting the code
object instead of passing it straight to dis.dis
; here's what I reconstructed from that:
74 def find_loader(name, path=None):
75 """Return the loader for the specified module.
76
77 This is a backward-compatible wrapper around find_spec().
78
79 This function is deprecated in favor of importlib.util.find_spec().
80
81 """
The number of arguments is from the code object's .co_argcount
attribute; the names are the first two from .co_varnames
, and the =None
comes from opcode 312
of the module's code. The docstring is .co_consts[0]
.
You'll notice that the line numbers go 82, 84, 82 – that's why I picked this function. If we lay it out crudely:
82 warnings.warn('Deprecated since Python 3.4. Use importlib.util.find_spec() instead.',
84 DeprecationWarning, ???=2
82 stacklevel=???)
we can see that the function call starts on line 82, and the DeprecationWarning
global lookup happens on line 84. Looking ahead:
85 16 SETUP_FINALLY 46 (to 64)
we can see that line 85 is occupied by a try:
, so this function call is only spread over three lines. Perhaps it's something like:
82 warnings.warn('Deprecated since Python 3.4. Use importlib.util.find_spec() instead.',
83
84 DeprecationWarning, stacklevel=2)
though line 82 is too long for PEP-8 (recommended maximum line length 80) and line 83 is blank. Python lets you split strings across multiple lines, so my guess is:
82 warnings.warn('Deprecated since Python 3.4. '
83 'Use importlib.util.find_spec() instead.',
84 DeprecationWarning, stacklevel=2)
85 try:
86 18 LOAD_GLOBAL 3 (sys)
20 LOAD_ATTR 4 (modules)
22 LOAD_FAST 0 (name)
24 BINARY_SUBSCR
26 LOAD_ATTR 5 (__loader__)
28 STORE_FAST 2 (loader)
86 loader = sys.modules[name].__loader__
87 30 LOAD_FAST 2 (loader)
32 LOAD_CONST 4 (None)
34 IS_OP 0
36 POP_JUMP_IF_FALSE 54
A branch! This is tricky to decompile, since (unlike exceptions) we don't have the pushing and popping of blocks to guide us. Reading ahead, though, this is fairly easy.
87 if loader is None:
88 38 LOAD_GLOBAL 6 (ValueError)
40 LOAD_CONST 5 ('{}.__loader__ is None')
42 LOAD_METHOD 7 (format)
44 LOAD_FAST 0 (name)
46 CALL_METHOD 1
48 CALL_FUNCTION 1
50 RAISE_VARARGS 1
52 JUMP_FORWARD 6 (to 60)
90 >> 54 LOAD_FAST 2 (loader)
56 POP_BLOCK
58 RETURN_VALUE
>> 60 POP_BLOCK
62 JUMP_FORWARD 50 (to 114)
88 raise ValueError('{}.__loader__ is None'.format(name))
89 else:
90 return loader
91 >> 64 DUP_TOP
66 LOAD_GLOBAL 8 (KeyError)
68 JUMP_IF_NOT_EXC_MATCH 80
70 POP_TOP
72 POP_TOP
74 POP_TOP
92 76 POP_EXCEPT
78 JUMP_FORWARD 34 (to 114)
91 except KeyError:
92 pass
93 >> 80 DUP_TOP
82 LOAD_GLOBAL 9 (AttributeError)
84 JUMP_IF_NOT_EXC_MATCH 112
86 POP_TOP
88 POP_TOP
90 POP_TOP
94 92 LOAD_GLOBAL 6 (ValueError)
94 LOAD_CONST 6 ('{}.__loader__ is not set')
96 LOAD_METHOD 7 (format)
98 LOAD_FAST 0 (name)
100 CALL_METHOD 1
102 CALL_FUNCTION 1
104 LOAD_CONST 4 (None)
106 RAISE_VARARGS 2
108 POP_EXCEPT
110 JUMP_FORWARD 2 (to 114)
>> 112 RERAISE
93 except AttributeError:
94 raise ValueError('{}.__loader__ is not set'.format(name))
This ends the try:
block. Then we have either a comment or a blank line. Probably a blank line, since I'd expect there to be one if there were a comment, but there's only one line unaccounted for.
95
96 >> 114 LOAD_GLOBAL 10 (_bootstrap)
116 LOAD_METHOD 11 (_find_spec)
118 LOAD_FAST 0 (name)
120 LOAD_FAST 1 (path)
122 CALL_METHOD 2
124 STORE_FAST 3 (spec)
96 spec = _bootstrap._findspec(name, path)
And another (probably) blank line.
98 126 LOAD_FAST 3 (spec)
128 LOAD_CONST 4 (None)
130 IS_OP 0
132 POP_JUMP_IF_FALSE 138
99 134 LOAD_CONST 4 (None)
136 RETURN_VALUE
98 if spec is None:
99 return None
100 >> 138 LOAD_FAST 3 (spec)
140 LOAD_ATTR 12 (loader)
142 LOAD_CONST 4 (None)
144 IS_OP 0
146 POP_JUMP_IF_FALSE 188
101 148 LOAD_FAST 3 (spec)
150 LOAD_ATTR 13 (submodule_search_locations)
152 LOAD_CONST 4 (None)
154 IS_OP 0
156 POP_JUMP_IF_FALSE 176
102 158 LOAD_GLOBAL 14 (ImportError)
160 LOAD_CONST 7 ('spec for {} missing loader')
162 LOAD_METHOD 7 (format)
164 LOAD_FAST 0 (name)
166 CALL_METHOD 1
103 168 LOAD_FAST 0 (name)
102 170 LOAD_CONST 8 (('name',))
172 CALL_FUNCTION_KW 2
174 RAISE_VARARGS 1
100 if spec.loader is None:
101 if spec.submodule_search_locations is None:
102 raise ImportError('spec for {} missing loader'.format(name),
103 name=name)
104 >> 176 LOAD_GLOBAL 14 (ImportError)
178 LOAD_CONST 9 ('namespace packages do not have loaders')
105 180 LOAD_FAST 0 (name)
104 182 LOAD_CONST 8 (('name',))
184 CALL_FUNCTION_KW 2
186 RAISE_VARARGS 1
104 raise ImportError('namespace packages do not have loaders',
105 name=name)
106 >> 188 LOAD_FAST 3 (spec)
190 LOAD_ATTR 12 (loader)
192 RETURN_VALUE
106 return spec.loader
Now let's look at the original importlib/__init__.py
and see how I did:
1 """A pure Python implementation of import."""
2 __all__ = ['__import__', 'import_module', 'invalidate_caches', 'reload']
3
4 # Bootstrap help #####################################################
5
6 # Until bootstrapping is complete, DO NOT import any modules that attempt
7 # to import importlib._bootstrap (directly or indirectly). Since this
8 # partially initialised package would be present in sys.modules, those
9 # modules would get an uninitialised copy of the source version, instead
10 # of a fully initialised version (either the frozen one or the one
11 # initialised below if the frozen one is not available).
12 import _imp # Just the builtin component, NOT the full Python module
13 import sys
14
15 try:
16 import _frozen_importlib as _bootstrap
17 except ImportError:
18 from . import _bootstrap
19 _bootstrap._setup(sys, _imp)
20 else:
21 # importlib._bootstrap is the built-in import, ensure we don't create
22 # a second copy of the module.
23 _bootstrap.__name__ = 'importlib._bootstrap'
24 _bootstrap.__package__ = 'importlib'
25 try:
26 _bootstrap.__file__ = __file__.replace('__init__.py', '_bootstrap.py')
27 except NameError:
28 # __file__ is not guaranteed to be defined, e.g. if this code gets
29 # frozen by a tool like cx_Freeze.
30 pass
31 sys.modules['importlib._bootstrap'] = _bootstrap
...
74 def find_loader(name, path=None):
75 """Return the loader for the specified module.
76
77 This is a backward-compatible wrapper around find_spec().
78
79 This function is deprecated in favor of importlib.util.find_spec().
80
81 """
82 warnings.warn('Deprecated since Python 3.4. '
83 'Use importlib.util.find_spec() instead.',
84 DeprecationWarning, stacklevel=2)
85 try:
86 loader = sys.modules[name].__loader__
87 if loader is None:
88 raise ValueError('{}.__loader__ is None'.format(name))
89 else:
90 return loader
91 except KeyError:
92 pass
93 except AttributeError:
94 raise ValueError('{}.__loader__ is not set'.format(name)) from None
95
96 spec = _bootstrap._find_spec(name, path)
97 # We won't worry about malformed specs (missing attributes).
98 if spec is None:
99 return None
100 if spec.loader is None:
101 if spec.submodule_search_locations is None:
102 raise ImportError('spec for {} missing loader'.format(name),
103 name=name)
104 raise ImportError('namespace packages do not have loaders',
105 name=name)
106 return spec.loader
...
vs my decompiled version:
1 'A pure Python implementation of import.'
2 __all__ = ['__import__', 'import_module', 'invalidate_caches', 'reload']
...
12 import _imp
13 import sys
...
15 try:
16 import _frozen_importlib as _bootstrap
17 except ImportError:
18 from . import _bootstrap
19 _bootstrap._setup(sys, _imp)
2? else:
23 _bootstrap.__name__ = 'importlib._bootstrap'
24 _bootstrap.__package__ = 'importlib'
25 try:
26 _bootstrap.__file__ = __file__.replace('__init__.py', '_bootstrap.py')
27 except NameError:
...
30 pass
31 sys.modules['importlib._bootstrap'] = _bootstrap
...
74 def find_loader(name, path=None):
75 """Return the loader for the specified module.
76
77 This is a backward-compatible wrapper around find_spec().
78
79 This function is deprecated in favor of importlib.util.find_spec().
80
81 """
82 warnings.warn('Deprecated since Python 3.4. '
83 'Use importlib.util.find_spec() instead.',
84 DeprecationWarning, stacklevel=2)
85 try:
86 loader = sys.modules[name].__loader__
87 if loader is None:
88 raise ValueError('{}.__loader__ is None'.format(name))
89 else:
90 return loader
91 except KeyError:
92 pass
93 except AttributeError:
94 raise ValueError('{}.__loader__ is not set'.format(name))
95
96 spec = _bootstrap._findspec(name, path)
97
98 if spec is None:
99 return None
100 if spec.loader is None:
101 if spec.submodule_search_locations is None:
102 raise ImportError('spec for {} missing loader'.format(name),
103 name=name)
104 raise ImportError('namespace packages do not have loaders',
105 name=name)
106 return spec.loader
Some of the spacing is wrong (eg lines 83 and 84), and the comments are all missing, but I don't think I did a terrible job.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.