+
    iM"                         ^ RI t ^ RIt^ RIt^ RIHtHt ]P                  ! ]4      t]	! ]P                  .4      t ! R R4      t ! R R4      tR tRRRR	^R
^RRRRRR/R lltRR ltRR ltRR ltR# )    N)
url_helperutilc                   0   a  ] tR t^t o RtR tR tRtV tR# )MetadataLeafDecoderz.Decodes a leaf blob into something meaningful.c                    V'       g   R # VP                  4       pVP                  R4      '       d   VP                  R4      '       d   R# R # )F{}T)strip
startswithendswith)selftexts   &&?/usr/lib/python3/dist-packages/cloudinit/sources/helpers/ec2.py_maybe_json_object&MetadataLeafDecoder._maybe_json_object   s6    zz|??3DMM#$6$6    c                   V'       g   R #  \         P                  ! V4      pT P                  T4      '       d    \        P
                  ! T4      # TP                  R4      R8w  d   TP                  4       # T#   \         d    Tu # i ; i  \        \        3 d"   p\        P                  RTT4        Rp?LhRp?ii ; i) z6Field %s looked like a json object, but it was not: %sN
)r   decode_binaryUnicodeDecodeErrorr   jsonloads
ValueError	TypeErrorLOGwarningfind
splitlines)r   fieldblobes   &&& r   __call__MetadataLeafDecoder.__call__   s    	%%d+D ""4((zz$'' 99T?b ??$$ " 	K	 	* L s(   A8 B 8BBB=B88B= N)	__name__
__module____qualname____firstlineno____doc__r   r$   __static_attributes____classdictcell____classdict__s   @r   r   r      s     8 r   r   c                   <   a  ] tR t^6t o RR ltR tR tR tRtV t	R# )MetadataMaterializerNc                n    Wn         R V n        W n        W0n        Vf   \	        4       V n        R # W@n        R # N)_blob_md	_base_url_callerr   _leaf_decoder)r   r"   base_urlcallerleaf_decoders   &&&&&r   __init__MetadataMaterializer.__init__7   s/    
!!4!6D!-r   c                   / p. p\         P                  ! V4      pV'       g   W#3# R  pR pVP                  4        F  pVP                  4       pV! V4      pV'       d	   V'       g   K-  VR8X  d   K6  V! V4      '       d   Ws9  d   VP	                  V4       K]  K_  VP                  R^4      pTp	\        V4      ^8  d*   Vw  r\         P                  ! V
4      p
V
e   RV
,          p	TpWV&   K  	  W#3# )c                 8    V P                  R 4      '       d   R# R# )/TF)r   items   &r   has_children1MetadataMaterializer._parse.<locals>.has_childrenI   s    }}S!!r   c                 V    V P                  R 4      '       d   V P                  R 4      # V # )r@   )r   rstriprA   s   &r   get_name-MetadataMaterializer._parse.<locals>.get_nameO   s%    }}S!!{{3''Kr   zsecurity-credentials=z%s/openssh-key)r   r   r    r
   appendsplitlensafe_int)r   r"   leaveschildrenrC   rG   r!   
field_namecontentsresourceidentsub_contentss   &&          r   _parseMetadataMaterializer._parseA   s    !!$'%%		
 __&EKKME!%J
33E""-OOJ/ . !;;sA.%x=1$,4)U MM%0E(#3u#=%1
%-z"+ ', !!r   c                    V P                   e   V P                   # V P                  V P                  V P                  4      V n         V P                   # r3   )r5   _materializer4   r6   )r   s   &r   materialize MetadataMaterializer.materializel   s:    8888O$$TZZ@xxr   c                D   V P                  V4      w  r4/ pV F]  p\        P                  ! W&4      pVP                  R 4      '       g
   VR ,          pV P	                  V4      pV P                  W4      WV&   K_  	  / p	VP                  4        F?  w  r\        P                  ! W+4      pV P	                  V4      pV P                  W4      W&   KA  	  / pVP                  V4       V	P                  4        F+  p
W9   d   \        P                  RV4       K!  W,          W&   K-  	  V# )r@   z&Duplicate key found in results from %s)rU   r   combine_urlr   r7   rX   itemsr8   updatekeysr   r   )r   r"   r9   rN   rO   child_contentsc	child_url
child_blobleaf_contentsr!   rR   leaf_url	leaf_blobjoineds   &&&            r   rX   !MetadataMaterializer._materializer   s   ![[.A"..x;I%%c**S 	i0J $ 1 1* HN  %||~OE!--hAHX.I#'#5#5e#GM   . n%"'')EDhO - 4	 *
 r   )r6   r4   r7   r8   r5   r3   )
r'   r(   r)   r*   r<   rU   rY   rX   r,   r-   r.   s   @r   r1   r1   6   s     .)"V r   r1   c                     VP                   V 9  # )z/Returns False if cause.code is in status_codes.)code)status_codescauses   &&r   skip_retry_on_codesrm      s    ::\))r   ssl_detailstimeoutretries
headers_cbheaders_redactexception_cbc          
          \         P                  ! W4      p\         P                  ! VR 4      pRp	 V'       g    \        P                  ! \        \
        4      p\         P                  ! VVVVVVVR7      p
V
P                  p	V	#   \         P                   d=   pTP                  \
        9  d   \        P                  ! \        RT4        Rp?T	# Rp?i\         d!    \        P                  ! \        RT4        T	# i ; i)z	user-datar   )rn   ro   rp   rs   rq   rr   z$Failed fetching userdata from url %sN)r   r\   	functoolspartialrm   SKIP_USERDATA_CODESread_file_or_urlrQ   UrlErrorrj   r   logexcr   	Exception)api_versionmetadata_addressrn   ro   rp   rq   rr   rs   ud_url	user_dataresponser#   s   &&$$$$$$    r   get_instance_userdatar      s     ##$4BF##FK8FII %,,#%8L ..#%!)
 %%	   M66,,KKCVL   IC?HIs$   AB C=1CC=C=<C=c           
        a
a \         P                  ! W!V 4      p\        P                  ! \         P                  VVVVVV	R 7      oVV
3R lp S! V4      p\        VP                  WVR7      pVP                  4       p\        V\        4      '       g   / pV#   \         d"    \        P                  ! \        RY4       / u # i ; i))rn   ro   rp   rq   rr   rs   c                    <  S! V 4      P                   #   \        P                   d9   pS'       d   S! T4      '       g   h \        P	                  R T 4        Rp?R# Rp?ii ; i)z&Skipped retrieval of the content of %sNz	(skipped))rQ   r   ry   r   r   )urlr#   r:   retrieval_exception_ignore_cbs   & r   mcaller'_get_instance_metadata.<locals>.mcaller   sQ    
	##;'''"" 	#14Q77DcJ"	#s    A"A AA")r;   zFailed fetching %s from url %s)r   r\   ru   rv   rx   r1   rQ   rY   
isinstancedictr{   r   rz   r   )treer|   r}   rn   ro   rp   r;   rq   rr   rs   r   md_urlr   r   materializermdr:   s   &&&&&&&&&&f     @r   _get_instance_metadatar      s     ##$44HF##%!F#&>+v\
 %%'"t%%B	 C94H	s   A	B )CCc
                 .    \        R V VVVVVVVVV	R7      # )z
meta-data/)r   r|   r}   rn   ro   rp   r;   rr   rq   rs   r   r   )
r|   r}   rn   ro   rp   r;   rq   rr   rs   r   s
   &&&&&&&&&&r   get_instance_metadatar      s2     ")!%!&C r   c	                 ,    \        R V VVVVVVVVR7
      # )zdynamic/instance-identity)
r   r|   r}   rn   ro   rp   r;   rr   rq   rs   r   )	r|   r}   rn   ro   rp   r;   rq   rr   rs   s	   &&&&&&&&&r   get_instance_identityr     s/     "()!%! r   )latesthttp://169.254.169.254)
r   r   N   r   NNNNN)	r   r   Nr   r   NNNN)ru   r   logging	cloudinitr   r   	getLoggerr'   r   	frozenset	NOT_FOUNDrw   r   r1   rm   r   r   r   r   r&   r   r   <module>r      s       &!!5!5 67  FQ Qh*
% 	%
 % % % % %P0f:r   