ó
    Ö›‘hÏG  ã                   ó  • S r SSKrSSKrSSKrSSKJr  SSKJrJ	r	  SSK
Jr  SSKJr   " S S	5      r " S
 S\5      r " S S\5      r " S S\5      r " S S5      r " S S5      r\" 5       r\\\\\\\" S5      \\" \5      /	r " S S5      r  " S S5      r! " S S5      r" " S S5      r#S r$ " S S\%5      r&\RN                  " S5      r(S  r)S! r*S" r+S# r,S$ r- " S% S&5      r.S' r/S.S( jr0S) r1S* r2S+ r3 " S, S-5      r4g)/z|
AOT: Abstract Object Trees
The source-code-marshallin'est abstract-object-serializin'est persister
this side of Marmalade!
é    N)Úcrefutil)ÚlogÚreflect)Ú_constructMethodé   )Úgenerate_tokensc                   ó   • \ rS rSrS rSrg)ÚNamedé!   c                 ó   • Xl         g ©N©Úname)Úselfr   s     ÚYC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/persisted/aot.pyÚ__init__ÚNamed.__init__"   s   € Ø�	ó    r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__static_attributes__© r   r   r
   r
   !   s   † õr   r
   c                   ó   • \ rS rSrS rSrg)ÚClassé&   c                 ó    • SU R                   -  $ )Nz	Class(%r)r   ©r   s    r   Ú	getSourceÚClass.getSource'   s   € Ø˜TŸY™YÑ&Ð&r   r   N©r   r   r   r   r    r   r   r   r   r   r   &   s   † õ'r   r   c                   ó   • \ rS rSrS rSrg)ÚFunctioné+   c                 ó    • SU R                   -  $ )NzFunction(%r)r   r   s    r   r    ÚFunction.getSource,   s   € Ø §	¡	Ñ)Ð)r   r   Nr"   r   r   r   r$   r$   +   s   † õ*r   r$   c                   ó   • \ rS rSrS rSrg)ÚModuleé0   c                 ó    • SU R                   -  $ )Nz
Module(%r)r   r   s    r   r    ÚModule.getSource1   s   € Ø˜dŸi™iÑ'Ð'r   r   Nr"   r   r   r   r)   r)   0   s   † õ(r   r)   c                   ó    • \ rS rSrS rS rSrg)ÚInstanceMethodé5   c                 óÂ   • [        U[        5      (       d8  [        U[        5      (       d#  [        U[        5      (       d  [	        SU-  5      eXl        X l        X0l        g )Nz$%s isn't an Instance, Ref, or Deref!)Ú
isinstanceÚRefÚInstanceÚDerefÚ	TypeErrorr   ÚklassÚinstance)r   r   r6   Úinsts       r   r   ÚInstanceMethod.__init__6   sI   € ä�tœS×!Ñ!Ü˜$¤×)Ñ)Ü˜$¤×&Ñ&äÐBÀTÑIÓJÐJØŒ	ØŒ
Ø�r   c                 óv   • SR                  U R                  U R                  [        U R                  5      5      $ )Nz InstanceMethod({!r}, {!r}, 
 {}))Úformatr   r6   Úprettifyr7   r   s    r   r    ÚInstanceMethod.getSourceA   s/   € Ø3×:Ñ:Ø�I‰IØ�J‰JÜ�T—]‘]Ó#ó
ð 	
r   )r7   r6   r   N©r   r   r   r   r   r    r   r   r   r   r.   r.   5   s   † ò	õ
r   r.   c                   ó   • \ rS rSrSrg)Ú_NoStateObjéI   r   N)r   r   r   r   r   r   r   r   r@   r@   I   s   † Úr   r@   c                   ó&   • \ rS rSr\4S jrS rSrg)r3   é\   c                 óž   • [        U[        5      (       d  [        SU-  5      eXl        U[        La  X l        SU l        g X0l        SU l        g )Nz%s isn't a string!r   r   )r1   Ústrr5   r6   Ú
NoStateObjÚstateÚstateIsDict)r   Ú	classNameÚ__stateObj__rG   s       r   r   ÚInstance.__init__]   sG   € Ü˜)¤S×)Ñ)ÜÐ0°9Ñ<Ó=Ð=ØŒ
ØœzÒ)Ø%ŒJØ ˆDÕàŒJØ ˆDÕr   c                 óê  • U R                   (       a  U R                  nOa[        U R                  [        5      (       a@  [        U R                  R                  [
        5      (       a  U R                  R                  nOS nUb   SU R                  < S[        U5       S3$ SU R                  < S[        U R                  5       S3$ ! [         a     SU R                  < S[        U5       S3s $ f = f)Nz	Instance(ú, Ú))
rH   rG   r1   r2   ÚobjÚdictr6   ÚdictToKWÚNonFormattableDictr<   )r   Ú	stateDicts     r   r    ÚInstance.getSourceh   sÍ   € à××ØŸ
™
‰IÜ˜Ÿ
™
¤C×(Ñ(¬Z¸¿
¹
¿¹Ì×-MÑ-MØŸ
™
Ÿ™‰IàˆIØÑ ðJØ" 4§:¡:¡.°´8¸IÓ3FÐ2GÀqÐIÐIð ˜4Ÿ:™:™.¨¬8°D·J±JÓ+?Ð*@ÀÐBÐBøô &ó JØ" 4§:¡:¡.°´8¸IÓ3FÐ2GÀqÐIÒIðJús   ÂC Ã'C2Ã1C2)r6   rG   rH   N)r   r   r   r   rF   r   r    r   r   r   r   r3   r3   \   s   † Ø/9ô 	!õCr   r3   c                   ó,   • \ rS rSrS rS rS rS rSrg)r2   éx   c                 óx   • [        U5      S:X  a  US   U l        US   U l        g U(       d  S U l        S U l        g g )Né   r   r   )ÚlenÚrefnumrO   )r   Úargss     r   r   ÚRef.__init__y   s9   € äˆt‹9˜‹>Ø˜q™'ˆDŒKØ˜A‘wˆD�HÞØˆDŒKØˆD�Hð r   c                 óh   • U R                   (       a  [        SU SU R                    35      eXl         g )NzError setting id ú, I already have )rZ   Ú
ValueError©r   Únums     r   ÚsetRefÚ
Ref.setRef‚   s,   € Ø�;�;ÜÐ0°°Ð5FÀtÇ{Á{ÀmÐTÓUÐUØ�r   c                 óh   • U R                   (       a  [        SU SU R                    35      eXl         g )NzError setting obj r^   )rO   r_   )r   rO   s     r   ÚsetObjÚ
Ref.setObj‡   s,   € Ø�8�8ÜÐ1°#°Ð6GÈÏÉÀzÐRÓSÐSØ�r   c                 óÆ   • U R                   c  [        S5      eU R                  (       a$  SU R                  [        U R                   5      4-  $ [        U R                   5      $ )Nz7Don't try to display me before setting an object on me!zRef(%d, 
 %s))rO   ÚRuntimeErrorrZ   r<   r   s    r   r    ÚRef.getSourceŒ   sQ   € Ø�8‰8ÑÜØIóð ð �;�;Ø$¨¯©´X¸d¿h¹hÓ5GÐ'HÑHÐHÜ˜Ÿ™Ó!Ð!r   )rO   rZ   N)	r   r   r   r   r   rb   re   r    r   r   r   r   r2   r2   x   s   † òòò
õ
"r   r2   c                   ó$   • \ rS rSrS rS r\rSrg)r4   é–   c                 ó   • Xl         g r   ©rZ   r`   s     r   r   ÚDeref.__init__—   s   € Ø�r   c                 ó    • SU R                   -  $ )Nz	Deref(%d)rm   r   s    r   r    ÚDeref.getSourceš   s   € Ø˜TŸ[™[Ñ(Ð(r   rm   N)r   r   r   r   r   r    Ú__repr__r   r   r   r   r4   r4   –   s   † òò)ð ƒHr   r4   c                   ó    • \ rS rSrS rS rSrg)ÚCopyregé    c                 ó   • Xl         X l        g r   ©ÚloadfuncrG   )r   rw   rG   s      r   r   ÚCopyreg.__init__¡   s   € Ø ŒØ�
r   c                 óP   • SU R                   < S[        U R                  5       S3$ )NzCopyreg(rM   rN   )rw   r<   rG   r   s    r   r    ÚCopyreg.getSource¥   s&   € Ø˜$Ÿ-™-Ñ*¨"¬X°d·j±jÓ-AÐ,BÀ!ÐDÐDr   rv   Nr>   r   r   r   rs   rs       s   † òõEr   rs   c                 ó0   • [        S[        U 5      -   5      $ )zDPass me an AO, I'll return a nicely-formatted source representation.zapp = )Ú	indentifyr<   )Úaos    r   r    r    ®   s   € ä�X¤¨£Ñ,Ó-Ð-r   c                   ó   • \ rS rSrSrSrg)rR   é³   z!A dictionary was not formattable.r   N)r   r   r   r   Ú__doc__r   r   r   r   rR   rR   ³   s   † Ü+r   rR   z[a-zA-Z_][a-zA-Z0-9_]*$c           	      óh  • / n[        U R                  5       5      nUR                  5         U Hq  u  p4[        U[        5      (       d  [        SU-  5      e[        R                  U5      (       d  [        SU-  5      eUR                  SU S[        U5       S35        Ms     SR                  U5      $ )Nz%r ain't a stringz%r ain't an identifierú
 Ú=Ú,Ú )ÚlistÚitemsÚsortr1   rE   rR   ÚrÚmatchÚappendr<   Újoin)ÚdÚoutr‡   ÚkÚvs        r   rQ   rQ   º   s–   € Ø
€CÜ�—‘“‹O€EØ	‡J�J„LÛ‰ˆÜ˜!œS×!Ñ!Ü$Ð%8¸1Ñ%<Ó=Ð=Ü�w‰w�q�z‰zÜ$Ð%=ÀÑ%AÓBÐBØ�
‰
�T˜!˜˜Aœh q›k˜]¨!Ð,Ö-ñ ð �7‰7�3‹<Ðr   c           	      ó|  • [        U S5      (       a  U R                  5       $ [        U 5      nU[        ;   a  [	        U 5      $ U[
        L aƒ  S/nU R                  5        H/  u  p4UR                  S[        U5       S[        U5       S35        M1     UR                  [        U 5      =(       a    S=(       d    S5        SR                  U5      $ U[        L af  S	/nU  H   nUR                  S
[        U5      -  5        M"     UR                  [        U 5      =(       a    S=(       d    S5        SR                  U5      $ U[        L af  S/nU  H   nUR                  S
[        U5      -  5        M"     UR                  [        U 5      =(       a    S=(       d    S5        SR                  U5      $ [        SU SU  S35      e)Nr    Ú{r‚   z: r„   z
 }Ú}r…   Ú[z
 %s,z
 ]Ú]Ú(z
 )rN   zUnsupported type z when trying to prettify Ú.)Úhasattrr    ÚtypeÚ_SIMPLE_BUILTINSÚreprrP   r‡   r‹   r<   rY   rŒ   r†   Útupler5   )rO   ÚtrŽ   r�   r�   Úxs         r   r<   r<   Ç   sk  € Üˆs�K× Ñ Ø�}‰}‹Ðô �‹IˆàÔ Ó Ü˜“9Ðà”$ŠYØ�%ˆCØŸ	™	ž‘�Ø—
‘
˜T¤(¨1£+ ¨b´¸!³°¸QÐ?Ö@ñ $à�J‰J”s˜3“x×+ G×2¨sÔ3Ø—7‘7˜3“<Ðà”$ŠYØ�%ˆCÛ�Ø—
‘
˜9¤x°£{Ñ2Ö3ñ à�J‰J”s˜3“x×+ G×2¨sÔ3Ø—7‘7˜3“<Ðà”%ŠZØ�%ˆCÛ�Ø—
‘
˜9¤x°£{Ñ2Ö3ñ à�J‰J”s˜3“x×+ G×2¨sÔ3Ø—7‘7˜3“<ÐäÐ/°¨sÐ2KÈCÈ5ÐPQÐRÓSÐSr   c                 óH  • / n/ nSU /n[        UR                  5       Hq  u  nnu  pgu  p‰n
US;   a  UR                  U5        OUS;   a  UR                  5         US:X  a  UR                  S[        U5      -  5        M`  UR                  U5        Ms     SR	                  U5      $ )Nr…   )r”   r–   r’   )r•   rN   r“   Ú z  )ÚtokenizeÚpopr‹   rY   rŒ   )ÚsrŽ   ÚstackÚlÚ	tokenTypeÚtokenStringÚstartRowÚstartColumnÚendRowÚ	endColumnÚlogicalLines              r   r|   r|   é   s�   € Ø
€CØ€EØ	ˆQˆ€Aô 
�!—%‘%Žñ	ØØÙˆÙˆØà˜/Ó)Ø�L‰L˜Õ%Ø˜OÓ+Ø�I‰IŒKØ˜$ÓØ�J‰J�tœc %›jÑ(Ö)à�J‰J�{Ö#ñ 
ð �7‰7�3‹<Ðr   c                 ó4   • [        5       R                  U 5      $ )z?
Pass me an Abstract Object Tree, and I'll unjelly it for you.
)ÚAOTUnjellierÚunjelly)Úaots    r   ÚunjellyFromAOTr±     s   € ô ‹>×!Ñ! #Ó&Ð&r   c           	      ó  • [         [        [        [        [        [
        [        [        S.n[        U S5      (       a  U R                  5       nOU n[        USS5      n[        X1U5        SU;   a  [        US   5      $ [        SU -  5      e)zÕ
Pass me a string of code or a filename that defines an 'app' variable (in
terms of Abstract Objects!), and I'll execute it and unjelly the resulting
AOT for you, returning a newly unpersisted Application object!
)r3   r.   r   r$   r)   r2   r4   rs   Úreadz<source>ÚexecÚappz'%s needs to define an 'app', it didn't!)r3   r.   r   r$   r)   r2   r4   rs   r˜   r³   ÚcompileÚevalr±   r_   )ÚstringOrFileÚnsÚsourceÚcodes       r   ÚunjellyFromSourcer¼     s„   € ô Ü(ÜÜÜÜÜÜñ	
€Bô ˆ|˜V×$Ñ$Ø×"Ñ"Ó$‰àˆÜ�6˜: vÓ.€DÜˆ�2Ôà�ƒ{Ü˜b ™iÓ(Ð(äÐBÀ\ÑQÓRÐRr   c                   óB   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)r®   i*  zOI handle the unjellying of an Abstract Object Tree.
See AOTUnjellier.unjellyAO
c                 ó.   • 0 U l         / U l        / U l        g r   )Ú
referencesr¤   ÚafterUnjellyr   s    r   r   ÚAOTUnjellier.__init__/  s   € ØˆŒØˆŒ
ØˆÕr   c                 óV   • [         R                  " 5       nU R                  USU5        U$ )zUnjelly a node, later.r   )r   Ú_DeferÚunjellyInto)r   Únoder�   s      r   ÚunjellyLaterÚAOTUnjellier.unjellyLater7  s%   € ä�OŠOÓˆØ×Ñ˜˜A˜tÔ$Øˆr   c                 ó�   • U R                  U5      nXAU'   [        U[        R                  5      (       a  UR	                  X5        U$ )zfUtility method for unjellying one object into another.
This automates the handling of backreferences.
)Ú	unjellyAOr1   r   ÚNotKnownÚaddDependant)r   rO   Úlocr}   Úos        r   rÄ   ÚAOTUnjellier.unjellyInto=  s=   € ð �N‰N˜2ÓˆØˆC‰Ü�aœ×*Ñ*×+Ñ+Ø�N‰N˜3Ô$Øˆr   c                 ó¬   • [        U[        R                  5      (       a  S /nUR                  US5        OU/nU R                  R                  X45        g )Nr   )r1   r   rÊ   rË   rÀ   r‹   )r   ÚcallableÚresultÚ
listResults       r   Ú	callAfterÚAOTUnjellier.callAfterG  sJ   € Ü�fœh×/Ñ/×0Ñ0Ø˜ˆJØ×Ñ 
¨AÕ.à ˜ˆJØ×Ñ× Ñ  (Ð!7Õ8r   c                 ó<   • U R                  UR                  X#5        g)zÁUtility method for unjellying into instances of attributes.

Use this rather than unjellyAO unless you like surprising bugs!
Alternatively, you can use unjellyInto on your instance's __dict__.
N)rÄ   Ú__dict__)r   r7   ÚattrNamer}   s       r   ÚunjellyAttributeÚAOTUnjellier.unjellyAttributeO  s   € ð 	×Ñ˜×*Ñ*¨HÕ9r   c           	      ó�	  • U R                   R                  U5        [        U5      nU[        ;   a  U$ U[        L a=  / nU H3  nUR                  S5        U R                  U[        U5      S-
  U5        M5     U$ U[        L ax  / n[        nU Hb  nUR                  S5        [        U R                  U[        U5      S-
  U5      [        R                  5      (       d  MR  [        R                  nMd     U" U5      $ U[        L aY  0 nUR                  5        HA  u  px[        R                  " U5      n	U R                  U	SU5        U R                  U	SU5        MC     U$ UR                  n
U
[         L a   ["        R$                  " UR&                  5      $ U
[(        [*        4;   d  [-        U
[        5      (       a   ["        R.                  " UR&                  5      $ U
[0        L a±  UR&                  n["        R.                  " UR2                  5      nU R5                  UR6                  5      nX¼R8                  ;   aP  Uc  [;        XË5      $ [        U[        R                  5      (       a  [        R<                  " X½U5      $ [?        XËU5      $ [A        S5      eU
[B        L a°  ["        R.                  " UR2                  5      nU R5                  URD                  5      nURG                  U5      n[I        US5      (       a  U RK                  URL                  U5        U$ [        U[        5      (       a	  UUl        U$ URO                  5       Ul        U$ U
[P        L aµ  U R5                  URR                  5      nURT                  nU RV                  RY                  U5      nUc  UU RV                  U'   U$ [        U[        R                  5      (       a"  UR[                  U5        UU RV                  U'   U$ Uc   U$ []        SU< SU< SU< S35      eU
[^        L aS  URT                  nU RV                  RY                  U5      nUc'  [        R`                  " U5      nUU RV                  U'   U$ U$ U
[b        L aN  ["        R.                  " URd                  5      nU Rg                  URD                  5      Ri                  S	 U5      nU$ [A        S
U-  5      e)zQUnjelly an Abstract Object and everything it contains.
I return the real object.
Nr   r   zinstance method changedÚ__setstate__z&Multiple references with the same ID: rM   Ú!c                 ó   • U" U 6 $ r   r   )rÑ   Ú_ls     r   Ú<lambda>Ú(AOTUnjellier.unjellyAO.<locals>.<lambda>º  s   € ¡r¨6¡{r   zUnsupported AOT type: %s)5r¤   r‹   r™   rš   r†   rÄ   rY   rœ   r1   r   rÊ   Ú_TuplerP   r‡   Ú_DictKeyAndValueÚ	__class__r)   r   ÚnamedModuler   r   r$   Ú
issubclassÚnamedObjectr.   r6   rÉ   r7   rÖ   ÚgetattrÚ_InstanceMethodr   r5   r3   rG   Ú__new__r˜   rÓ   rÛ   Ú__getstate__r2   rO   rZ   r¿   ÚgetÚresolveDependantsr_   r4   Ú_Dereferencers   rw   rÆ   ÚaddCallback)r   r}   r�   r¥   rž   Útuple_r�   r�   r�   ÚkvdÚcÚim_nameÚim_classÚim_selfr6   rG   r8   rÍ   ÚrefkeyÚrefra   Úderrw   s                          r   rÉ   ÚAOTUnjellier.unjellyAOX  s	  € ð 	�
‰
×Ñ˜"ÔÜ�‹HˆØÔ Ó ØˆIà”$ŠYØˆAÛ�Ø—‘˜”Ø× Ñ  ¤C¨£F¨Q¡J°Ö2ñ ð ˆHà”%ŠZØˆAÜˆFÛ�Ø—‘˜”Ü˜d×.Ñ.¨q´#°a³&¸1±*¸aÓ@Ä(×BSÑBS×TÓTÜ%Ÿ_™_’Fñ ñ ˜!“9Ðà”$ŠYØˆAØŸ™ž
‘�Ü×/Ò/°Ó2�Ø× Ñ   a¨Ô+Ø× Ñ   a¨Ö+ñ #ð ˆHð —‘ˆAØ”FŠ{Ü×*Ò*¨2¯7©7Ó3Ð3à”uœhÐ'Ó'¬:°a¼×+>Ñ+>Ü×*Ò*¨2¯7©7Ó3Ð3à”nÒ$ØŸ'™'�Ü"×.Ò.¨r¯x©xÓ8�ØŸ.™.¨¯©Ó5�Ø×/Ñ/Ó/Ø‘Ü& xÓ9Ð9Ü# G¬X×->Ñ->×?Ñ?Ü'×7Ò7¸È(ÓSÐSä/°À7ÓKÐKä#Ð$=Ó>Ð>à”h’Ü×+Ò+¨B¯H©HÓ5�ØŸ™ r§x¡xÓ0�Ø—}‘} UÓ+�Ü˜5 .×1Ñ1Ø—N‘N 4×#4Ñ#4°eÔ<ð
 �ô	   ¤t×,Ñ,Ø$)�D”Mð �ð %*×$6Ñ$6Ó$8�D”MØ�à”c’Ø—N‘N 2§6¡6Ó*�ØŸ™�Ø—o‘o×)Ñ)¨&Ó1�Ø‘;Ø./�D—O‘O FÑ+ð �ô   ¤X×%6Ñ%6×7Ñ7Ø×)Ñ)¨!Ô,Ø./�D—O‘O FÑ+ð �ð ‘^àð �õ	 %ã£«ð,óð ð ”e’Ø—i‘i�Ø—o‘o×)Ñ)¨#Ó.�Ø‘;Ü"×/Ò/°Ó4�CØ+.�D—O‘O CÑ(Ø�JØ�
à”g’Ü"×.Ò.¨r¯{©{Ó;�Ø×%Ñ% b§h¡hÓ/×;Ñ;Ù2°Hó�ð �äÐ :¸QÑ >Ó?Ð?r   c           	      ó>  •  S /nU R                  USU5        U R                   H  u  p4U" US   5        M     US   $ ! [         aU    [        R                  " S5        [        R                  " SR                  [        [        U R                  5      5      5        e f = f)Nr   ú+Error jellying object! Stacktrace follows::Ú
)	rÄ   rÀ   ÚBaseExceptionr   ÚmsgrŒ   Úmapr›   r¤   )r   r}   r¥   Úfuncr�   s        r   r¯   ÚAOTUnjellier.unjellyÀ  s…   € ð		Ø�ˆAØ×Ñ˜Q  2Ô&Ø×,Ô,‘�Ù�Q�q‘T–
ñ -à�Q‘4ˆKøÜó 	Ü�GŠGÐAÔBÜ�GŠG�D—I‘Iœc¤$¨¯
©
Ó3Ó4Ô5Øð	ús
   ‚:= ½AB)rÀ   r¿   r¤   N)r   r   r   r   r€   r   rÆ   rÄ   rÓ   rØ   rÉ   r¯   r   r   r   r   r®   r®   *  s-   † ñòòòò9ò:òf@õP
r   r®   c                 ó4   • [        5       R                  U 5      $ )z-Convert an object to an Abstract Object Tree.)Ú
AOTJellierÚjelly)rO   s    r   Ú
jellyToAOTr  Ò  s   € ä‹<×Ñ˜cÓ"Ð"r   c                 ó�   • [        U 5      nU(       a*  UR                  [        U5      R                  S5      5        g[        U5      $ )zš
Pass me an object and, optionally, a file object.
I'll convert the object to an AOT either return it (if no file was
specified) or write it to the file.
zutf-8N)r  Úwriter    Úencode)rO   Úfiler°   s      r   ÚjellyToSourcer	  ×  s5   € ô �S‹/€CÞØ�
‰
”9˜S“>×(Ñ(¨Ó1Õ2ä˜‹~Ðr   c                 ó.   • U R                   R                  $ )z¥
Get the associated class of the given method object.

@param methodObject: a bound method
@type methodObject: L{types.MethodType}

@return: a class
@rtype: L{type}
)Ú__self__rã   ©ÚmethodObjects    r   Ú_classOfMethodr  å  s   € ð × Ñ ×*Ñ*Ð*r   c                 ó   • U R                   $ )zØ
Get the associated function of the given method object.

@param methodObject: a bound method
@type methodObject: L{types.MethodType}

@return: the function implementing C{methodObject}
@rtype: L{types.FunctionType}
)Ú__func__r  s    r   Ú_funcOfMethodr  ò  ó   € ð × Ñ Ð r   c                 ó   • U R                   $ )zÀ
Get the object that a bound method is bound to.

@param methodObject: a bound method
@type methodObject: L{types.MethodType}

@return: the C{self} passed to C{methodObject}
@rtype: L{object}
)r  r  s    r   Ú_selfOfMethodr  ÿ  r  r   c                   ó,   • \ rS rSrS rS rS rS rSrg)r  i  c                 ó.   • 0 U l         SU l        / U l        g )Nr   )ÚpreparedÚ_ref_idr¤   r   s    r   r   ÚAOTJellier.__init__  s   € àˆŒØˆŒØˆ�
r   c                 ó2   • XR                   [        U5      '   g)zYI prepare an object for later referencing, by storing its id()
and its _AORef in a cache.N)r  Úid)r   ÚaorefÚobjects      r   ÚprepareForRefÚAOTJellier.prepareForRef  s   € ð %*�‰”b˜“jÒ!r   c           	      ót  ^ ^^• [        T5      nT R                  R                  [        T5      5        U[        ;   a  TmGOe[        U[        R                  5      (       aW  [        [        T5      R                  [        R                  " [        T5      5      T R                  [        T5      5      5      mGOï[        U[        R                   5      (       a  [#        TR                  5      mGO¹[        U[         5      (       a!  [%        [        R                  " T5      5      mGOƒU[        R&                  L a!  [)        [        R*                  " T5      5      mGOO[-        T5      T R.                  ;   ar  T R.                  [-        T5         nUR0                  (       a  UR0                  nO1T R2                  S-   T l        T R2                  nUR5                  U5        [7        U5      $ [9        5       mUUU 4S jnT R;                  TT5        U[<        L a3  TR?                  T Vs/ s H  nT R                  U5      PM     sn5        GOdU[@        L a0  TR?                  [A        [C        T R                  T5      5      5        GO+U[D        L aP  0 nTRG                  5        H(  u  p‰T R                  U	5      UT R                  U5      '   M*     TR?                  U5        OÒU[H        RJ                  ;   aZ  [H        RJ                  U   " T5      u  p«TR?                  [M        [        R*                  " U
5      T R                  U5      5      5        Od[O        TS5      (       a  U" TRQ                  5       5        O<[O        TS5      (       a  U" TRR                  5        O[U        SUR                  -  5      eT R                  S	 T$ s  snf )z+I turn an object into an AOT and return it.r   c                 ó–   >• TR                  [        [        R                  " TR                  5      TR                  U 5      5      5        g r   )re   r3   r   Úqualrã   Ú	jellyToAO)rG   rO   Úretvalr   s    €€€r   Ú
_stateFromÚ(AOTJellier.jellyToAO.<locals>._stateFromL  s/   ø€ Ø—‘ÜœWŸ\š\¨#¯-©-Ó8¸$¿.¹.ÈÓ:OÓPõr   rê   rÖ   zUnsupported type: %séÿÿÿÿ)+r™   r¤   r‹   r›   rš   rå   ÚtypesÚ
MethodTyper.   r  r   r   r"  r  r#  r  Ú
ModuleTyper)   r   ÚFunctionTyper$   ÚfullFuncNamer  r  rZ   r  rb   r4   r2   r  r†   re   rœ   rþ   rP   r‡   Úcopy_regÚdispatch_tablers   r˜   rê   rÖ   r5   )r   rO   ÚobjTypeÚoldRefÚkeyr%  rÍ   r�   r�   r�   ÚunpickleFuncrG   r$  s   ``          @r   r#  ÚAOTJellier.jellyToAO  s´  ú€ ä�s“)ˆØ�
‰
×Ñœ$˜s›)Ô$ð Ô&Ó&ØŠFä˜¤×!1Ñ!1×2Ñ2ô $Ü˜cÓ"×+Ñ+Ü—’œ^¨CÓ0Ó1Ø—‘œ}¨SÓ1Ó2óŠFô ˜¤×!1Ñ!1×2Ñ2Ü˜CŸL™LÓ)ŠFä˜¤×&Ñ&Üœ7Ÿ<š<¨Ó,Ó-ŠFàœ×*Ñ*Ò*Üœg×2Ò2°3Ó7Ó8ŠFô �#‹w˜$Ÿ-™-Ó'ØŸ™¤r¨#£wÑ/�Ø—=—=à Ÿ-™-‘Cð $(§<¡<°!Ñ#3�D”LØŸ,™,�CØ—M‘M #Ô&Ü˜S“zÐ!ä“UˆF÷ð
 ×Ñ˜v sÔ+àœ$ŠØ—‘¹#Ó>º#°Q˜tŸ~™~¨aÖ0¹#Ñ>Ö?àœEÒ!Ø—‘œe¤C¨¯©¸Ó$<Ó=Ö>àœD’Ø�ØŸI™IžK‘D�AØ+/¯>©>¸!Ó+<�A�d—n‘n QÓ'Ó(ñ (à—‘˜aÕ àœH×3Ñ3Ó3Ü&.×&=Ñ&=¸gÒ&FÀsÓ&KÑ#�à—‘ÜœG×0Ò0°Ó>ÀÇÁÈuÓ@UÓVõô ˜˜n×-Ñ-Ù˜3×+Ñ+Ó-Õ.Ü˜˜j×)Ñ)Ù˜3Ÿ<™<Õ(äÐ 6¸×9IÑ9IÑ IÓJÐJà�J‰J�rˆNØˆùò5 ?s   ÈN5c                 óÒ   •  U R                  U5      nU$ ! [         aG    [        R                  " S5        [        R                  " SR	                  U R
                  5      5        e f = f)Nrú   rû   )r#  rü   r   rý   rŒ   r¤   )r   rO   r}   s      r   r  ÚAOTJellier.jellyp  sR   € ð	Ø—‘ Ó$ˆBØˆIøÜó 	Ü�GŠGÐAÔBÜ�GŠG�D—I‘I˜dŸj™jÓ)Ô*Øð	ús
   ‚ •AA&)r  r  r¤   N)	r   r   r   r   r   r  r#  r  r   r   r   r   r  r    s   † òò*ò
Võpr   r  r   )5r€   Úcopyregr-  Úrer(  Útwisted.persistedr   Útwisted.pythonr   r   Útwisted.python.compatr   Ú	_tokenizer   r¡   r
   r   r$   r)   r.   r@   rF   ÚboolÚbytesrE   ÚintÚfloatÚcomplexr™   ÚsliceÚEllipsisrš   r3   r2   r4   rs   r    Ú	ExceptionrR   r¶   r‰   rQ   r<   r|   r±   r¼   r®   r  r	  r  r  r  r  r   r   r   Ú<module>rD     s7  ðñó Û 	Û å &ß 'Ý 2õ 3÷ñ ô
'ˆEô 'ô
*ˆuô *ô
(ˆUô (÷

ñ 
÷(	ñ 	ñ ‹]€
ð 	Ø	ØØØ	ØÙˆƒJØ	ÙˆƒNð
Ð ÷Cñ C÷8"ñ "÷<ñ ÷Eñ Eò.ô
,˜ô ,ð ‡J‚JÐ(Ó)€ò
òTòDò6'òS÷>`ñ `òP#ô
ò
+ò
!ò
!÷kò kr   