
    (i                         d dl mZmZmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZ d dlmZmZ d dlmZ d d	lmZmZmZ 	 	 ddeeef   dededee   def
dZy
)    )AnyDictOptional)ClientSessionClientTimeout)abi)URI)DEFAULT_HTTP_TIMEOUT)to_bytes_if_hexto_hex_if_bytes)MultipleFailedRequestsWeb3ValidationError)TxParams)AsyncCcipUrlValidatorasync_validate_ccip_url_hostvalidate_ccip_url_schemeNoffchain_lookup_payloadtransaction
allow_httpurl_validatorreturnc                 ~  K   t        | d         j                         }t        | d         j                         }|t        |d         j                         k7  rt        d      t               }| d   D ]  }t	        t        |      j                  dt        |            j                  dt        |                  }	 t        ||       t        |       d {    | ||       d {    	 d|v r.d|v r*|j                  |t        t              d	
       d {   }	n-|j                  |||dt        t              d	       d {   }	d|	j                  cxk  rdk  r+n n(|j                          d {    |	j!                          d|	j                  cxk  rdk  sn 6|	j#                          d {   }
d|
j%                         vr#|j                          d {    t        d      dj'                  t)        | d         t+        j,                  ddgt)        |
d         t)        | d         g      g      }|j                          d {    |c S  |j                          d {    t/        d      7 7 # t        $ r Y $w xY w7 ~7 S# t        $ r Y :w xY w7 67 7 7 _7 Dw)NsendercallDatatoz{Cannot handle OffchainLookup raised inside nested call. Returned `sender` value does not equal `to` address in transaction.urlsz{sender}z{data})r   F)timeoutallow_redirects)datar   )jsonr   r   i  i     i+  r   zVImproperly formatted response for offchain lookup HTTP request - missing 'data' field.    callbackFunctionbytes	extraDataz)Offchain lookup failed for supplied urls.)r   lowerr   r   r	   strreplacer   r   getr   r
   post	Exceptionstatuscloseraise_for_statusr    keysjoinr   r   encoder   )r   r   r   r   formatted_senderformatted_datasessionurlformatted_urlresponseresult#encoded_data_with_function_selectors               T/var/www/br/venv/lib/python3.12/site-packages/web3/utils/async_exception_handling.pyasync_handle_offchain_lookupr;   '   s     ''>x'HIOOQ$%<Z%HIOOQN?;t+<=CCEE!I
 	

 oG&v. A3HWZ%5!67WXs>23
	$]zJ.}===(#M222	3:#4!(!)*>?$) "- "  ")!"0<LM)*>?$)	 ". "  8??)c)--/!!%%'hoo,,}}&&--/!!%+ 
 /2hh   78J KL

g&'v7'(?(LM	/
+ mmo22CA3F --/
 !L
MMw >2" 		
  		 "
 ' "* 	 s   B<J=?JJJ,J	-J2,J"J-J"JJ"+J=<J2=A J==J5>)J='J7(A1J=J9J=6J;7J=J	J	JJ=JJ=J"J""	J/+J=.J//J=5J=7J=9J=;J=)FN)typingr   r   r   aiohttpr   r   eth_abir   
eth_typingr	   web3._utils.httpr
   web3._utils.type_conversionr   r   web3.exceptionsr   r   
web3.typesr   web3.utils.ccip_url_validationr   r   r   r'   boolr$   r;    r"   r:   <module>rG      s      59	TN!#s(^TNTN TN 12	TN
 TNr"   