
    `i                     @    S r SSKr " S S5      rS r " S S\5      rg)z&Unpacker for Dean Edward's p.a.c.k.e.r    Nc                   2    \ rS rSrS rS rS rS rS rSr	g)	cPacker   c                 8    [         R                  " SU5      nUSL$ )z/Detects whether `source` is P.A.C.K.E.R. coded.zReval[ ]*\([ ]*function[ ]*\([ ]*p[ ]*,[ ]*a[ ]*,[ ]*c[ ]*,[ ]*k[ ]*,[ ]*e[ ]*,[ ]*N)research)selfsourcemystrs      D/home/kodi/.kodi/addons/plugin.video.vstream/resources/lib/packer.pydetectcPacker.detect   s%    		,

 D      c                 J  ^^	^
^ U R                  U5      u  nm
m	n[        T
5      U:  a  US:  a  T
US2	 [        T
5      U:  a  US:  a  T
R                  S5        U[        T
5      :w  a  [        S5      e [	        T	5      mU	U
U4S jnT	4U4S jjmUR                  SS	5      R                  S
S5      n[        R                  " SU5      nU(       a0  [        R                  " SU5      S   R                  S5      S   S:H  nOSnU(       aL  [        US-
  SS5       H  nUR                  T" U5      T
U   5      nM      [        U R                  U5      5      $ [        R                  " SXB[        R                  S9nU R                  U5      $ ! [
         a    [        S5      ef = f)z$Unpacks P.A.C.K.E.R. packed js code.r   NBUGGEDzMalformed p.a.c.k.e.r. symtab.zUnknown p.a.c.k.e.r. encoding.c                    > U R                  S5      n TS:X  a  T[        U5         $ TT" U5         =(       d    U$ !   Us $ = f)z(Look up symbols in the synthetic symtab.r      )groupint)matchwordradixsymtabunbases     r   lookupcPacker.unpack.<locals>.lookup3   sJ    ;;q>D,1QJvc$i(XF6$<<P<XTXXs   < < Ac                 `   > [        X-  S-   5      nX:  a  U$ T" [        X-  5      U5      U-   $ )N   )chrr   )cafoo	getstrings      r   r#   !cPacker.unpack.<locals>.getstring;   s5    aeck"Cu
 QUQ/#55r   z\\\\''z9eval\(function\(p,a,c,k,e.+?String\.fromCharCode\(([^)]+)zString\.fromCharCode\(([^)]+)+r   161Fz\b\w+\b)flags)_filterargslenappendUnpackingErrorUnbaser	TypeErrorreplacer   r   findallsplitrange_replacejsstrings_replacestringssubUNICODE)r	   r
   payloadcountr   ppnewir#   r   r   r   s           @@@@r   unpackcPacker.unpack!   s   (,(8(8(@% K%eaiuvK%eaiMM(#CK !ABB	CU^F	 ! 	6 //&$/77sCIIRTZ[::>GJPPQTUVWX\aaDD519b"-!//)A,q	B .$d&:&:7&CEEVVJrzzJF''//?  	C !ABB	Cs   6F F"c                    UR                  SS5      R                  SS5      nSn[        R                  " X![        R                  5      nU(       at  UR	                  5       n U R                  US   5      U R                  US   5      R                  U R                  US   5      5      [        US	   5      [        US
   5      4$ Sn[        R                  " X![        R                  5      nU(       aG  UR	                  5       n US   US   R                  US   5      [        US	   5      [        US
   5      4$ [        S5      e! [         a    [        S5      ef = f! [         a    [        S5      ef = f)z9Juice from a source file the four args needed by decoder.z,[],z,0,r&   r'   zE}\s*\(\s*(.*?)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*\((.*?)\).split\((.*?)\)r         r      zCorrupted p.a.c.k.e.r. data.z4}\('(.*)', *(\d+), *(\d+), *'(.*)'\.split\('(.*?)'\)zDCould not make sense of p.a.c.k.e.r data (unexpected code structure))
r2   r   r   DOTALLgroups	_cleanstrr4   r   
ValueErrorr/   )r	   r
   juicerargsr!   s        r   r,   cPacker._filterargsQ   s[    u-55eSAZyy3AE~~ad+T^^AaD-A-G-GWXYZW[H\-]_bcdefcg_hjmnopqnrjsss Jyy3AEtQqTZZ!-s1Q4y#ad)CC
 cdd  E$%CDDE  E$%CDDEs   "A"E 5E EE4c                    [         R                  " SU[         R                  5      nU(       a  UR                  5       u  p4[	        UR                  S5      5      nUR                  S5      nSU-  n[        U5       HX  u  pSU	;   a6  U	R                  SS5      n	[        R                  U	5      R                  S5      n	UR                  Xx-  SU	-  5      nMZ     XS	 $ U$ )
z>Strip string lookup table (list) and replace values in source.zvar *(_\w+)=\["(.*?)"];r   z","z%s[%%d]z\x asciiz"%s"N)r   r   rE   rF   r-   r   r4   	enumerater2   binascii	unhexlifydecode)
r	   r
   r   varnamestrings
startpointr   variableindexvalues
             r   r7   cPacker._replacestringsl   s    		4fbiiH$||~GU[[^,J]]5)F 7*H )& 1E>!MM%4E$..u5<<WEE(8&5.I	 !2
 +&&r   c                     [         R                  " SU5      nU(       aW  [        U5      nU HF  nUR                  SR	                  U5      [
        R                  U5      R                  S5      5      nMH     U$ )z7Strip JS string encodings and replace values in source.z\\x([0-7][0-9A-F])z\x{0}rN   )r   r3   setr2   formatrP   rQ   rR   )r	   r
   r   rX   s       r   r6   cPacker._replacejsstrings}   sa    

0&9JE(>@R@RSX@Y@`@`ah@ij  r    N)
__name__
__module____qualname____firstlineno__r   r?   r,   r7   r6   __static_attributes__r^   r   r   r   r      s    !.0`e6"	r   r   c                     [        U 5        g N)print)	Exceptions    r   r/   r/      s    	)r   c                   4    \ rS rSrSrSSS.rS rS rS rS	r	g
)r0      zNFunctor for a given base. Will efficiently convert
strings to natural numbers.>0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZz_ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~)>   _   c                   ^ TU l         TS:X  a  SmSTs=::  a  S::  a  O  OU4S jU l        g TS:  a   U R                  S   ST U R                  T'   O/STs=:  a  S:  a"  O  OU R                  S   ST U R                  T'    [        S [	        U R                  T   5       5       5      U l        U R                  U l        g ! [         a    [        S5      ef = f)	Nr   $   rD   c                    > [        U T5      $ re   )r   )stringbases    r   <lambda>"Unbaser.__init__.<locals>.<lambda>   s    VT):r   rk   rl   c              3   ,   #    U  H
  u  pX!4v   M     g 7fre   r^   ).0rW   ciphers      r   	<genexpr>#Unbaser.__init__.<locals>.<genexpr>   s     &kLj=5Ljs   zUnsupported base encoding.)	rq   r   ALPHABETdictrO   
dictionaryKeyErrorr1   _dictunbaser)r	   rq   s    `r   __init__Unbaser.__init__   s    	 19D ??:DKby&*mmB&7$&?d#dR&*mmB&7$&?d#>"&&kIVZVcVcdhViLj&k"k ++DK  > <==>s   -C Cc                 $    U R                  U5      $ re   )r   )r	   rp   s     r   __call__Unbaser.__call__   s    {{6""r   c                     Sn[        USSS2   5       H&  u  p4X R                  U-  U R                  U   -  -  nM(     U$ )zDecodes a  value to an integer.r   Nr*   )rO   rq   r{   )r	   rp   retrW   rv   s        r   r}   Unbaser._dictunbaser   sD    &vdd|4MEII&$//&*AAAC 5
r   )rq   r{   r   N)
r_   r`   ra   rb   __doc__ry   r~   r   r}   rc   r^   r   r   r0   r0      s(    # M4H,.#r   r0   )r   r   r   r/   objectr0   r^   r   r   <module>r      s+   & - 	o od	)f )r   