
    ^j!              
          d dl mZ d dlZd dlZd dlZd dlZddlmZ ddl	m
Z
 ej                  ej                  ej                  ej                  ej                  ej                   ej"                  ej$                  ej&                  ej(                  iZ G d dej,                        Z G d	 d
e      Z G d de
      Z e        y)    )absolute_importN   )CloudflareSolveError   )JavaScriptInterpreterc                   .    e Zd Zd Zd Zd Zed        Zy)Calcc                     t        t        |j                           | j                  |j                        | j                  |j
                              S N)_OP_MAPtypeopvisitleftrightselfnodes     [/var/www/lego-monitor/venv/lib/python3.12/site-packages/cloudscraper/interpreters/native.pyvisit_BinOpzCalc.visit_BinOp   s6    tDGG}%djj&;TZZ

=STT    c                     |j                   S r   )nr   s     r   	visit_NumzCalc.visit_Num   s    vvr   c                 8    | j                  |j                        S r   )r   valuer   s     r   
visit_ExprzCalc.visit_Expr$   s    zz$**%%r   c                 v    t        j                  |      } |        }|j                  |j                  d         S )Nr   )astparser   body)cls
expressiontreecalcs       r   doMathzCalc.doMath)   s.    yy$uzz$))A,''r   N)__name__
__module____qualname__r   r   r   classmethodr&    r   r   r	   r	      s&    U

&
 ( (r   r	   c                       e Zd Zd Zd Zd Zy)Parenthesesc                 p    g }t        |g      | _        | j                  || j                  |      |       |S r   )setvisiteddfsinvalid)r   sress      r   fixzParentheses.fix4   s1    A3xDLLOS)
r   c                 R   |dk(  r|j                  |       y t        t        |            D ]y  }||   dv s|d | ||dz   d  z   }|| j                  vs(| j	                  |      |k  s=| j                  j                  |       | j                  || j	                  |      |       { y )Nr   ()r   )appendrangelenr0   r2   addr1   )r   r3   r   r4   is_news         r   r1   zParentheses.dfs<   s    6JJqMs1v 	>Atz!"1!a%&	),e1Dq1HLL$$U+HHUDLL$7=	>r   c                     dx}}ddd}|D ]/  }||j                  |d      z  }||dk  rdndz  }t        d|      }1 ||z   S )Nr   r   r7   )getmax)r   r3   plusminusmemocs         r   r2   zParentheses.invalidI   sb    uR  	 ADHHQN"D$(Q)Eq$<D	  e|r   N)r'   r(   r)   r5   r1   r2   r+   r   r   r-   r-   2   s    	>r   r-   c                   $     e Zd Z fdZd Z xZS )ChallengeInterpreterc                 ,    t         t        |   d       y )Nnative)superrI   __init__)r   	__class__s    r   rM   zChallengeInterpreter.__init__W   s    "D28<r   c                     t         j                  t         j                  t         j                  t         j                  dfdfdfdfd} |||      S )N)+-*/c                 V    t        | t              rt        t        |       g       S | gS r   )
isinstancelistsummap)listsflattens    r   rZ   z*ChallengeInterpreter.eval.<locals>.flatteng   s)    3=eT3J3s7E*B/WQVPWWr   c                    | j                  dd      j                  dd      j                  dd      } | j                  d      j                  dd      j                  d	d
      } t               j                  |       d   } g }g } t	        j
                         j                  |       j                               D ],  }|dk(  r|j                  |       g }|j                  |       . |j                  |       t        d
j                  |D cg c]/  }t        t        j                  d
j                  |                  1 c}            S c c}w )Nz!+[]1z!![]z[]0rP   z(+r8     r   )replacelstripr-   r5   	pyparsing
nestedExprparseStringasListr:   intjoinstrr	   r&   )jsFuckstackbstackr>   rZ   s       r   jsfuckToNumberz1ChallengeInterpreter.eval.<locals>.jsfuckToNumberl   s   ^^FC088EMMdTWXF]]3'//c:BB3KF ]&&v.q1F EFY113??GNNPQ !8LL(Fa ! LL rwweLDKK
$; <LMNNLs   4Ec                 v   | j                  d      }||d   v r}t        j                  d|d         d   } |d      t         |d               t        t	        | |d   |d   j                  d      t        d      z   d                            }n |d         } |d         t        |      z  }|S )NrS   r   z^(.*?)(.)\(functionr   "("+p+")")})splitrefindallfloatordfindr<   )payloadneedledomain
jsfuckMathr#   expression_valuerl   	operatorss         r   divisorMathz.ChallengeInterpreter.eval.<locals>.divisorMath   s     s+JA&ZZ(>
1NqQ
#;9Z]#;.A78#f^JqM"1**=9C<NNr5 &   $  $2*Q-#@ -jm<uEU?VV##r   c                    d}	 t        j                  d| t         j                  t         j                  z        j	                         }t        j                  d|d   t         j                  t         j                  z        }|r	  |j                  d            }	 t        j                  d|       j                  d	      }	 t        j                  dj                  |            }i }|j                  |       D ].  }|j                  d      |t        |j                  d            <   0 ||   |d<   t        j                  dj                  |d   |d         |d         |d<   d|d   v r5|d   j                  d      }	 |	d         t!         |	d               z  }n |d         }|d   D ]J  }
|
j#                         \  }}d|v r |d|      }nd|v r |d   d|      }n |      } |   ||      }L dj                  |      S # t
        $ r t        d      w xY w# t        $ r t        d      w xY w# t        $ r t        d
      w xY w# t
        t        f$ r t        d      w xY w)Nr   zsetTimeout\(function\(\){\s+var.*?f,\s*(?P<variable>\w+).*?:(?P<init>\S+)};.*?\('challenge-form'\);.*?;(?P<challenge>.*?a\.value)\s*=\s*\S+\.toFixed\(10\);zNThere was an issue extracting "jsfuckChallenge" from the Cloudflare challenge.z(;|)\s*k.=(?P<kJSFUCK>\S+);	challengekJSFUCKzFThere was an issue extracting "kJSFUCK" from the Cloudflare challenge.z\s*k\s*=\s*'(?P<kID>\S+)';kIDzBThere was an issue extracting "kID" from the Cloudflare challenge.z3<div id="{}(?P<id>\d+)">\s*(?P<jsfuck>[^<>]*)</div>jsfuckidkzFThere was an issue extracting "kValues" from the Cloudflare challenge.z${}.*?([+\-*/])=(.*?);(?=a\.value|{})variablerS   initr   zfunction(p)Elementrn   z{0:.10f})rq   searchDOTALL	MULTILINE	groupdictAttributeErrorr   SMgroup
IndexErrorcompileformatfinditerrf   rp   rs   groups)r!   rx   jschl_answerjsfuckChallenger   r   rkValuesmvalexpressionMatchoperr#   rz   r|   rl   r{   s                 r   challengeSolvez1ChallengeInterpreter.eval.<locals>.challengeSolve   s   L}"$))hII,	#
 )+   ii >P[@\^`^b^begeiei^ijGy,W]]9-EFGu))$A4HNNuUC	y

#Y#`#`ad#efA GZZ- H67ggh6GAGGDM 23H ,37+;OC( ,.;;7>>#J/#J/  ,,OK( of--%f-33C8-c!f5nSQRV>T8UU-of.EF $3;#? O#2#9#9#; j*$'2:}f'U$ J.+6s7K]\b+c(+9*+E(.y|=MNO( $$\22A " }*+{||} " y./wxxy
 " u./sttu '
3 y./wxxys1   AH H' %H? A0I H$'H<?II2)r   r=   submultruediv)r   r!   rx   r   r|   rZ   rl   r{   s       @@@@r   evalzChallengeInterpreter.eval\   sO     	
		X
	O,	$(J	3\ dF++r   )r'   r(   r)   rM   r   __classcell__)rN   s   @r   rI   rI   U   s    =
H,r   rI   )
__future__r   r   rq   operatorr   rb   
exceptionsr   r_   r   Addr=   Subr   Multr   Divr   Invertnegr   NodeVisitorr	   objectr-   rI   r+   r   r   <module>r      s    & 
 	   - #
 GGRVVGGRVVHHbffGGRZZJJ(3?? (4& FO,0 O,h  r   