
    Bfj                     $   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 d dl
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dl Z!d dl"m#Z#  ej$        e%          Z& G d de!j'        j(                  Z) G d de          Z* G d	 d
e*e          Z+ G d de          Z, G d de*e          Z- G d de          Z. G d de.e          Z/ G d de          Z0 G d de          Z1 G d de          Z2 G d de          Z3dS )    N)InvalidIMDSEndpointErrorMetadataRetrievalError) DEFAULT_METADATA_SERVICE_TIMEOUTMETADATA_BASE_URLRETRYABLE_HTTP_ERRORS	ArnParserBadIMDSRequestErrorClientErrorContainerMetadataFetcherHTTPClientErrorIdentityCacheIMDSFetcherIMDSRegionProviderInstanceMetadataFetcherInstanceMetadataRegionFetcherReadTimeoutErrorS3ExpressIdentityCacheS3ExpressIdentityResolverS3RegionRedirectorS3RegionRedirectorv2get_environ_proxiesosresolve_imds_endpoint_mode)asynccontextmanagerc                   4     e Zd Z fdZed             Z xZS )_RefCountedSessionc                 V     t                      j        |i | d| _        d | _        d S )Nr   )super__init___RefCountedSession__ref_count_RefCountedSession__lock)selfargskwargs	__class__s      `/home/panchajanya/Development/work/volatility3/lib/python3.11/site-packages/aiobotocore/utils.pyr   z_RefCountedSession.__init__+   s2    $)&)))    c                  K   | j         st          j                    | _         | j         4 d {V  | xj        dz  c_        	 | j        dk    r|                                  d {V  n# t
          $ r | xj        dz  c_         w xY wd d d           d {V  n# 1 d {V swxY w Y   	 | W V  | j         4 d {V  | j        dk    r|                     d d d            d {V  | xj        dz  c_        d d d           d {V  d S # 1 d {V swxY w Y   d S # | j         4 d {V  | j        dk    r|                     d d d            d {V  | xj        dz  c_        d d d           d {V  w # 1 d {V swxY w Y   w xY w)N   )r!   asyncioLockr    
__aenter__BaseException	__aexit__)r"   s    r&   acquirez_RefCountedSession.acquire0   s{     { 	)!,..DK ; 	 	 	 	 	 	 	 	!#q((//+++++++++      A%  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 		&JJJJ{ & & & & & & & &#q((..tT:::::::::  A%  	& & & & & & & & & & & & & & & & & & & & & & & & & & & & & &t{ & & & & & & & &#q((..tT:::::::::  A%  	& & & & & & & & & & & & & & & & & & & & & & & & & & & &sk   B%A'&B'BB
B"%B"*D <9D
DDF)9E4"F4
E>>FE>F)__name__
__module____qualname__r   r   r/   __classcell__r%   s   @r&   r   r   *   sT            
 & & & & & & &r'   r   c                   N    e Zd ZededdddfdZd ZddZd Zd Z	d Z
	 dd
ZdS )AioIMDSFetcherr)   Nc                    || _         || _        |i }|                     ||          | _        || _        |t
          j                                        }|                    dd          	                                dk    | _
        |                    d          | _        || _        |p't          | j         t          | j                            | _        d S )NAWS_EC2_METADATA_DISABLEDfalsetrueec2_metadata_v1_disabled)timeoutproxies)_timeout_num_attempts_select_base_url	_base_url_configr   environcopygetlower	_disabled_imds_v1_disabled_user_agentr   r   _session)r"   r<   num_attemptsbase_urlenv
user_agentconfigsessions           r&   r   zAioIMDSFetcher.__init__K   s      )>F..x@@;*//##CGG/99??AAVK 	 "(,F!G!G% 
#5M'77$
 $
 $
r'   c           
      F  K   |                                   |                     | j                  }d| j        i}|                     |           t
          j                            d||          }| j        	                                4 d {V }t          | j                  D ]V}	 |                    |                                           d {V }|j        dk    r!|j         d {V c cd d d           d {V  S |j        dv r d d d           d {V  d S |j        dv rt!          |          # t"          $ r Y  d d d           d {V  d S t$          $ r(}t&                              d||d	           Y d }~d }~wt*          $ rj}|j                            d
          }|rt1          |dd           dk    s"t3          t1          |dd                     dk    rt5          ||           d }~ww xY w	 d d d           d {V  n# 1 d {V swxY w Y   d S )Nz$x-aws-ec2-metadata-token-ttl-secondsPUTmethodurlheaders   )i  i  i  )i  OCaught retryable HTTP exception while making metadata service request to %s: %sTexc_infoerrorerrno   os_errorzDomain name not found)endpointr[   )_assert_enabled_construct_url_TOKEN_PATH
_TOKEN_TTL_add_user_agentbotocore
awsrequest
AWSRequestrJ   r/   ranger?   sendpreparestatus_codetextr	   r   r   loggerdebugr   r$   rE   getattrstrr   )	r"   rU   rV   requestrP   iresponseer[   s	            r&   _fetch_metadata_tokenz$AioIMDSFetcher._fetch_metadata_tokeni   s     !!$"2332DO
 	W%%%%00c7 1 
 
 =((** 	 	 	 	 	 	 	g4-..  %,\\'//2C2C%D%DDDDDDDH+s22%-]22222222	 	 	 	 	 	 	 	 	 	 	 	 	 	 "-@@#	 	 	 	 	 	 	 	 	 	 	 	 	 	 "-771'::: 8'      4	 	 	 	 	 	 	 	 	 	 	 	 	 	 -   LL4!% !         ' 
 
 
HLL11E#E7D99Q>>wuj$??@@23 3 71MMMM
'	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	@ tsn   H)AD8-H	D8HD87H8
G:H	G: F>HG:A%G55G::H
HHc           	      8  K   |                                   |s|                                  || j        }|                     |          }i }|||d<   |                     |           | j                                        4 d {V }t          | j                  D ]}	 t          j
                            d||          }|                    |                                           d {V }	 ||	          }
t          j        |
          r|
 d {V }
|
s|	c cd d d           d {V  S # t           $ r(}t"                              d||d           Y d }~d }~ww xY w	 d d d           d {V  n# 1 d {V swxY w Y   |                                 )Nzx-aws-ec2-metadata-tokenGETrS   rX   TrY   )r`   _assert_v1_enabled_default_retryra   rd   rJ   r/   rh   r?   re   rf   rg   ri   rj   inspectisawaitabler   rm   rn   _RETRIES_EXCEEDED_ERROR_CLS)r"   url_path
retry_functokenrU   rV   rP   rr   rq   rs   should_retryrt   s               r&   _get_requestzAioIMDSFetcher._get_request   s      	&##%%%,J!!(++27G./W%%%=((** 	 	 	 	 	 	 	g4-..  &1<<$#w =  G &-\\'//2C2C%D%DDDDDDDH#-:h#7#7L*<88 :-9'9'9'9'9'9'9' ('	 	 	 	 	 	 	 	 	 	 	 	 	 	(,   LL4!% !        	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	* ..000sC   E7 A9D/E7.E7/
E!9EE7E!!E77
FFc                 r   K   |                      |           d {V p|                     |           d {V S N_is_non_ok_response	_is_emptyr"   rs   s     r&   ry   zAioIMDSFetcher._default_retry   e      --
 
 
 
 
 
 
 
 ,>>(++++++++	,r'   c                 `   K   |j         dk    r |                     |dd           d {V  dS dS )NrW   znon-200Tlog_bodyF)rk   _log_imds_responser   s     r&   r   z"AioIMDSFetcher._is_non_ok_response   sK      3&&))(I)MMMMMMMMM4ur'   c                 d   K   |j          d {V s |                     |dd           d {V  dS dS )Nzno bodyTr   F)contentr   r   s     r&   r   zAioIMDSFetcher._is_empty   sZ      %%%%%%% 	))(I)MMMMMMMMM4ur'   Fc                    K   d}||j         |j        g}|r%|dz  }|                    |j         d {V            t	          j        |g|R   d S )NzHMetadata service returned %s response with status code of %s for url: %sz, content body: %s)rk   rU   appendr   rm   rn   )r"   rs   reason_to_logr   	statementlogger_argss         r&   r   z!AioIMDSFetcher._log_imds_response   s}      1 	 %h&:HLI 	7--IX%5555555666Y-------r'   r   )F)r0   r1   r2   r   r   r   ru   r   ry   r   r   r    r'   r&   r6   r6   J   s         1"
 
 
 
<, , ,\!1 !1 !1 !1F, , ,
     16. . . . . .r'   r6   c                   6    e Zd Zd ZddZddZd Zd Zd ZdS )	AioInstanceMetadataFetcherc                 T  K   	 |                                   d {V }|                     |           d {V }|                     ||           d {V }|                     |          r7||d         |d         |d         |d         d}|                     |           |S d|v rd|v rt
                              d|           i S # | j        $ r# t
                              d	| j                   Y n6t          $ r*}t
                              d
|j
                   Y d }~nd }~ww xY wi S )NAccessKeyIdSecretAccessKeyToken
Expiration)	role_name
access_key
secret_keyr   expiry_timeCodeMessagez7Error response received when retrievingcredentials: %s.\Max number of attempts exceeded (%s) when attempting to retrieve data from metadata service.zBad IMDS request: %s)ru   _get_iam_role_get_credentials_contains_all_credential_fields_evaluate_expirationrm   rn   r|   r?   r	   rq   )r"   r   r   credentialsrt   s        r&   retrieve_iam_role_credentialsz8AioInstanceMetadataFetcher.retrieve_iam_role_credentials   s     	<4466666666E"0077777777I $ 5 5i G GGGGGGGK33K@@ !*"-m"<"-.?"@(1#.|#<  ))+666""[((Y+-E-ELL+#  
 	/ 	 	 	LLE"    
 # 	< 	< 	<LL/;;;;;;;;	<	s$   BC !$C *D%2	D%; D  D%Nc                 l   K   |                      | j        | j        |           d {V j         d {V S Nr}   r~   r   )r   	_URL_PATH_needs_retry_for_role_namerl   )r"   r   s     r&   r   z(AioInstanceMetadataFetcher._get_iam_role   sr      ##: $        
       	r'   c                    K   |                      | j        |z   | j        |           d {V }t          j        |j         d {V           S r   )r   r   _needs_retry_for_credentialsjsonloadsrl   )r"   r   r   rs       r&   r   z+AioInstanceMetadataFetcher._get_credentials  sq      ##^i/8 $ 
 
 
 
 
 
 
 

 z,,,,,,'''r'   c                    K   	 t          j        |j         d {V            dS # t          $ r  |                     |d           d {V  Y dS w xY w)NFzinvalid jsonT)r   r   rl   
ValueErrorr   r   s     r&   _is_invalid_jsonz+AioInstanceMetadataFetcher._is_invalid_json  s~      	JX]******+++5 	 	 	))(NCCCCCCCCC44	s   % &AAc                 r   K   |                      |           d {V p|                     |           d {V S r   r   r   s     r&   r   z5AioInstanceMetadataFetcher._needs_retry_for_role_name  r   r'   c                    K   |                      |           d {V p5|                     |           d {V p|                     |           d {V S r   )r   r   r   r   s     r&   r   z7AioInstanceMetadataFetcher._needs_retry_for_credentials  s|      **844444444 5^^H--------5**844444444	
r'   r   )	r0   r1   r2   r   r   r   r   r   r   r   r'   r&   r   r      sy          B   ( ( ( (  , , ,

 
 
 
 
r'   r   c                        e Zd Zd Zd Zd ZdS )AioIMDSRegionProviderc                 >   K   |                                   d{V }|S )z#Provide the region value from IMDS.N)_get_instance_metadata_region)r"   instance_regions     r&   providezAioIMDSRegionProvider.provide"  s/       $ B B D DDDDDDDr'   c                 f   K   |                                  }|                                 d {V }|S r   )_get_fetcherretrieve_region)r"   fetcherregions      r&   r   z3AioIMDSRegionProvider._get_instance_metadata_region'  s?      ##%%..00000000r'   c                 ^   | j                             d          }| j                             d          }| j                             d          t          | j                   | j                             d          d}t          ||| j        | j                                         |          }|S )Nmetadata_service_timeoutmetadata_service_num_attemptsec2_metadata_service_endpointr;   )r   "ec2_metadata_service_endpoint_moder;   )r<   rK   rM   rN   rO   )rJ   get_config_variabler    AioInstanceMetadataRegionFetcher_environrN   )r"   metadata_timeoutmetadata_num_attemptsimds_configr   s        r&   _create_fetcherz%AioIMDSRegionProvider._create_fetcher,  s    =<<&
 
 !% A A+!
 !
 .2]-N-N/. . 3M3 3 )-(I(I*) )

 

 3$.}//11
 
 
 r'   N)r0   r1   r2   r   r   r   r   r'   r&   r   r   !  sA          
  
    r'   r   c                       e Zd Zd Zd ZdS )r   c                    K   	 |                                   d {V }|S # | j        $ r# t                              d| j                   Y nw xY wd S )Nr   )_get_regionr|   rm   rn   r?   )r"   r   s     r&   r   z0AioInstanceMetadataRegionFetcher.retrieve_regionK  s      	++--------FM/ 	 	 	LLE"    	 ts     *AAc                    K   |                                   d {V }|                     | j        | j        |           d {V }|j         d {V }|d d         }|S )Nr   )ru   r   r   ry   rl   )r"   r   rs   availability_zoner   s        r&   r   z,AioInstanceMetadataRegionFetcher._get_regionW  s      0022222222**^* + 
 
 
 
 
 
 
 

 #+-//////"3B3'r'   N)r0   r1   r2   r   r   r   r'   r&   r   r   H  s2        
 
 
	 	 	 	 	r'   r   c                       e Zd Zd ZdS )AioIdentityCachec                    K    | j         di |} |             d {V }| j                            ||| j        dd          }|S )N-   
   )metadatarefresh_usingrT   advisory_timeoutmandatory_timeoutr   )build_refresh_callback_credential_clscreate_from_metadataMETHOD)r"   r$   callbackr   credential_entrys        r&   get_credentialsz AioIdentityCache.get_credentialsd  ss      .4.8888!######/DD";  E 
 
  r'   N)r0   r1   r2   r   r   r'   r&   r   r   c  s#        
  
  
  
  
 r'   r   c                   X     e Zd Z ej        d           fd            Zd Zd Z xZS )AioS3ExpressIdentityCached   )maxsizec                 l    t          j        t                                          |                    S N)bucket)r*   create_taskr   r   )r"   r   r%   s     r&   r   z*AioS3ExpressIdentityCache._get_credentialsr  s)    "577#:#:&#:#I#IJJJr'   c                 >   K   |                      |           d {V S r   )r   )r"   r   s     r&   r   z)AioS3ExpressIdentityCache.get_credentialsv  s1      
 **&*999999999r'   c                       fd}|S )Nc                     K   j                                        d {V } | d         }                    |d         d          }|d         |d         |d         |d	S )
NBucketCredentialsr   T)isor   r   SessionToken)r   r   r   r   )_clientcreate_session_serialize_if_needed)rs   creds
expirationr   r"   s      r&   	refresherzCAioS3ExpressIdentityCache.build_refresh_callback.<locals>.refresher~  s      !\888GGGGGGGGH]+E22l# 3  J $M2#$56~.)	  r'   r   )r"   r   r   s   `` r&   r   z0AioS3ExpressIdentityCache.build_refresh_callback}  s*    	 	 	 	 	 	 r'   )	r0   r1   r2   	functools	lru_cacher   r   r   r3   r4   s   @r&   r   r   q  sv        Y%%%K K K K &%K: : :      r'   r   c                         e Zd Zd fd	Z xZS )AioS3ExpressIdentityResolverNc                     t                                          |||           |t          | j        |          }|| _        d S r   )r   r   r   r   _cache)r"   clientcredential_clscacher%   s       r&   r   z%AioS3ExpressIdentityResolver.__init__  s@    777=-dlNKKEr'   r   )r0   r1   r2   r   r3   r4   s   @r&   r   r     s=                 r'   r   c                       e Zd Zd Zd ZdS )AioS3RegionRedirectorv2c           	        K   |dS |                     di                                di           }t          j        |                     d                    rt                              d           dS |                     d          rt                              d           dS |d                              d	i           }|                     d
          }|d                              di           }|dv o
|j        dk    }	|dv o"|j        dk    od|                     di           v }
|dk    od|v }|d         duo|d         j        dv }|dk    }t          |	|||
|g          sdS |d         d         d         }|d                              d          }|                     ||           d{V }|#t                              d|d|d           dS t                              d|d|d|d           || j	        |<   | j
        j        }|                    ||d         d         d         |d                    d{V }|                     |d         |j                  |d<   d|d         d         d<   |j                             d           }|N|                    |          }|\  }}||d         d!<   i |d                              d"i           ||d         d"<   dS )#a  
        An S3 request sent to the wrong region will return an error that
        contains the endpoint the request should be sent to. This handler
        will add the redirect information to the signing context and then
        redirect the request.
        Ncontexts3_redirectr   zBS3 request was previously for an Accesspoint ARN, not redirecting.
redirected6S3 request was previously redirected, not redirecting.r)   Errorr   ResponseMetadata301400
HeadObject
HeadBucketx-amz-bucket-regionHTTPHeadersAuthorizationHeaderMalformedRegionr   i-  i.  i3  PermanentRedirectclient_region S3 client configured for region  but the bucket S is not in that region and the proper region could not be automatically determined. is in region b; Please configure the proper region to avoid multiple unnecessary redirects and signing attempts.params)operation_model	call_argsrequest_contextrU   TauthSchemes	auth_typesigning)rE   r   is_arnrm   rn   namerk   anyget_bucket_regionr   r   _ruleset_resolverconstruct_endpointset_request_urlrU   
propertiesauth_schemes_to_signing_ctx)r"   request_dictrs   	operationr$   redirect_ctxr[   
error_coderesponse_metadatais_special_head_objectis_special_head_bucketis_wrong_signing_regionis_redirect_statusis_permanent_redirectr   r  
new_regionep_resolverep_infoauth_schemes	auth_infor#  signing_contexts                          r&   redirect_from_errorz+AioS3RegionRedirectorv2.redirect_from_error  s       F#''	266::="MML,,X6677 	LL   FL)) 	LLH   F,,YYv&&
$QKOO,>CC .(KY^|-K 	 .( 8,.8% $$]B778 	 88NX=N 	  &a[4 ):

:) !+.A A&'%&"
 
 		 Fi(7A$Y/33ODD11&(CCCCCCCC
LLL 0=}}fffF  
 F }}fffjjj2	
 	
 	
 )F l4#66%"9-m<XF(3 7 
 
 
 
 
 
 
 

 #22
 
U @DY.|<)--m<<##??MMI)2&I3<L#K02y)--i<<2!2L#I. qr'   c                   K   |d         }|d         d         }d|v r|d         S |                     di                                dd          }||S 	 | j                            |           d{V }|d         d         }n*# t          $ r}|j        d         d         }Y d}~nd}~ww xY w|                     dd          }|S )	a-  
        There are multiple potential sources for the new region to redirect to,
        but they aren't all universally available for use. This will try to
        find region from response elements, but will fall back to calling
        HEAD on the bucket if all else fails.
        :param bucket: The bucket to find the region for. This is necessary if
            the region is not available in the error response.
        :param response: A response representing a service request that failed
            due to incorrect region configuration.
        r)   r  r  r  r  r  Nr   rE   r   head_bucketr
   rs   r"   r   rs   service_responseresponse_headersr   rV   rt   s           r&   r(  z)AioS3RegionRedirectorv2.get_bucket_region
  s	      $A;+,>?N $444#$9:: "%%gr2266xFFM	D!\55V5DDDDDDDDH12=AGG 	D 	D 	Dj!34]CGGGGGG	D 2D99   /B 
B+B&&B+Nr0   r1   r2   r>  r(  r   r'   r&   r  r    s6        p p pd    r'   r  c                       e Zd Zd Zd ZdS )AioS3RegionRedirectorc           	        K   |d S |                      |                    di                     rt                              d           d S |                    di                               d          rt                              d           d S |d                             di           }|                    d          }|d                             di           }|d	v o
|j        d
k    }|d	v o"|j        dk    od|                    di           v }	|dk    od|v }
|d         d uo|d         j        dv }|dk    }t          ||
||	|g          sd S |d         d         d         }|d                             d          }|                     ||           d {V }|#t                              d|d|d           d S t                              d|d|d|d           | j        	                    d|          }|d         }|||d}||d         d<   || j
        |<   |                     ||d                    d|d         d<   dS )Nr  z=S3 request was previously to an accesspoint, not redirecting.s3_redirectedr
  r)   r  r   r  r  r  r  r  r  r  r  r   r  r  r$  r   r  r  r  r  r  r  s3endpoint_url)r   r   r_   T)_is_s3_accesspointrE   rm   rn   r&  rk   r'  r(  _endpoint_resolverresolver   r+  )r"   r.  rs   r/  r$   r[   r1  r2  r3  r4  r5  r6  r7  r   r  r8  r_   r=  s                     r&   r>  z)AioS3RegionRedirector.redirect_from_error-  s       F""<#3#3Ir#B#BCC 	LLO   FIr**..?? 	LLH   F,,YYv&&
$QKOO,>CC .(KY^|-K 	 .( 8,.8% $$]B778 	 88NX=N 	  &a[4 ):

:) !+.A A&'%&"
 
 		 Fi(3H=$Y/33ODD11&(CCCCCCCC
LLL 0=}}fffF  
 F }}fffjjj2	
 	
 	
 *224DDN+ ! 
 

 .=Y	*-F\<	+BCCC37Y0 qr'   c                   K   |d         }|d         d         }d|v r|d         S |                     di                                dd           }||S 	 | j                            |           d {V }|d         d         }n*# t          $ r}|j        d         d         }Y d }~nd }~ww xY w|                     dd           }|S )Nr)   r  r  r  r  r  r   r@  rB  s           r&   r(  z'AioS3RegionRedirector.get_bucket_region  s     #A;+,>?N $444#$9:: "%%gr2266xFFM	D!\55V5DDDDDDDDH12=AGG 	D 	D 	Dj!34]CGGGGGG	D 2D99rE  NrF  r   r'   r&   rH  rH  ,  s6        Y Y Yv    r'   rH  c                   @    e Zd Zdej        fdZddZd ZddZd Z	dS )AioContainerMetadataFetcherNc                 P    |t          | j                  }|| _        || _        d S )N)r<   )r   TIMEOUT_SECONDSrJ   _sleep)r"   rP   sleeps      r&   r   z$AioContainerMetadataFetcher.__init__  s.     ?(1EFFFGr'   c                 h   K   |                      |           |                     ||           d {V S r   )_validate_allowed_url_retrieve_credentials)r"   full_urlrV   s      r&   retrieve_full_uriz-AioContainerMetadataFetcher.retrieve_full_uri  sB      ""8,,,//'BBBBBBBBBr'   c                 f   K   |                      |          }|                     |           d{V S )zRetrieve JSON metadata from container metadata.

        :type relative_uri: str
        :param relative_uri: A relative URI, e.g "/foo/bar?id=123"

        :return: The parsed JSON response.

        N)rZ  rY  )r"   relative_urirZ  s      r&   retrieve_uriz(AioContainerMetadataFetcher.retrieve_uri  s?       ==..//999999999r'   c                 T  K   ddi}||                     |           d}	 	 |                     ||| j                   d {V S # t          $ rX}t                              d|d           |                     | j                   d {V  |dz  }|| j        k    r Y d }~nd }~ww xY w)NAcceptzapplication/jsonr   TzAReceived error when attempting to retrieve container metadata: %srY   r)   )	update_get_responserT  r   rm   rn   rU  
SLEEP_TIMERETRY_ATTEMPTS)r"   rZ  extra_headersrV   attemptsrt   s         r&   rY  z1AioContainerMetadataFetcher._retrieve_credentials  s     /0$NN=)))	!//gt';         * 
 
 
-!	     kk$/222222222At222 32222
	s   !A 
B&AB!!B&c                   K   	 | j                                         4 d {V }t          j        j        } |d||          }|                    |                                           d {V }|j         d {V                     d          }|j	        dk    rt          d|j	         d|           	 t          j        |          cd d d           d {V  S # t          $ r/ d}	t                              d	|	|           t          |	          w xY w# 1 d {V swxY w Y   d S # t           $ r}
d
|
 }	t          |	          d }
~
ww xY w)Nrw   rS   zutf-8rW   zReceived non 200 response z from container metadata: )	error_msgz>Unable to parse JSON returned from container metadata servicesz%s:%sz?Received error when attempting to retrieve container metadata: )rJ   r/   re   rf   rg   ri   rj   r   decoderk   r   r   r   r   rm   rn   r   )r"   rZ  rV   r<   rP   rg   rq   rs   response_textrh  rt   s              r&   rb  z)AioContainerMetadataFetcher._get_response  st     	>},,.. F F F F F F F'%0;
$* h   ")goo.?.?!@!@@@@@@@'/'7!7!7!7!7!7!7 ? ? H H'3..0H9M H H8EH H   F:m44!F F F F F F F F F F F F F F" " F F F `ILL)]CCC09EEEEF#F F F F F F F F F F F F F F F F, % 	> 	> 	>+'(+ +  )9====	>sM   D, BD7C
D, 9DD
D##D, &D#'D, ,
E6EEr   )
r0   r1   r2   r*   rV  r   r[  r^  rY  rb  r   r'   r&   rR  rR    sy        '-   C C C C
: 
: 
:   ,> > > > >r'   rR  )4r*   r   rz   r   loggingbotocore.awsrequestre   botocore.exceptionsr   r   botocore.utilsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   aiobotocore.httpsessionaiobotocoreaiobotocore._helpersr   	getLoggerr0   rm   httpsessionAIOHTTPSessionr   r6   r   r   r   r   r   r   r  rH  rR  r   r'   r&   <module>ru     s                                                                  0     4 4 4 4 4 4		8	$	$& & & & &0? & & &@L. L. L. L. L.[ L. L. L.^E
 E
 E
 E
 E
1H E
 E
 E
P$ $ $ $ $. $ $ $N    1  6         }           02H   :    #<   R R R R R2 R R Rjq q q q q. q q qhL> L> L> L> L>": L> L> L> L> L>r'   