Ë
    £ªðilš  ã                   ó¨  — d dl Z d dlZd dlZd dlmZ 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mZmZmZ d dlmZmZmZmZmZ d dl	mZmZmZ d dl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, d dl-m.Z. d dl/m0Z0m1Z1m2Z2m3Z3m4Z4  e jj                  e6«      Z7da8d„ Z9dddde'z  ddfd„Z:d4d„Z;d„ Z< G d„ d«      Z= G d„ de,«      Z> G d„ de+«      Z? G d„ d«      Z@ G d„ d e@«      ZA G d!„ d"e«      ZB G d#„ d$«      ZC G d%„ d&«      ZD ed'd(d)g«      ZE G d*„ d+«      ZF G d,„ d-«      ZG G d.„ d/«      ZH G d0„ d1«      ZI G d2„ d3«      ZJy)5é    N)Ú
namedtuple)ÚBytesIO)ÚAwsCredentialsÚAwsCredentialsProviderÚAwsSigningAlgorithmÚAwsSigningConfig)ÚClientBootstrapÚClientTlsContextÚDefaultHostResolverÚEventLoopGroupÚTlsContextOptions)ÚS3ClientÚS3RequestTlsModeÚS3RequestType)ÚUNSIGNED)Úurlsplit)ÚConfig)ÚNoCredentialsError)Ú	ArnParserÚInvalidArnException)ÚFULL_OBJECT_CHECKSUM_ARGSÚMB)ÚTransferNotDoneError)ÚBaseTransferFutureÚBaseTransferMeta)ÚTransferManager)ÚCallArgsÚOSUtilsÚcreate_nested_clientÚget_callbacksÚis_s3express_bucketc                 óœ   — t         €2t        j                  j                  | «      }	 |j	                  «        |a t         S # t
        $ r Y y w xY w©N)ÚCRT_S3_PROCESS_LOCKÚawscrtÚs3ÚCrossProcessLockÚacquireÚRuntimeError)ÚnameÚcrt_locks     úe/var/www/acinvestment.org/public_html/aci/backend/venv/lib/python3.12/site-packages/s3transfer/crt.pyÚacquire_crt_s3_process_lockr-   <   sS   € ô Ð"Ü—9‘9×-Ñ-¨dÓ3ˆð	Ø×ÑÔð 'ÐÜÐøô ò 	ñ ð		ús   §? ¿	AÁ
Aé   Tc           
      óR  — t        |«      }t        |«      }t        ||«      }	d}
|rt        j                  nt        j
                  }|�At        «       }|r|j                  |¬«       nd|_        t        |«      }|j                  «       }
t        |¬«      }t        |	| ||||
|d¬«      S )a�  
    :type region: str
    :param region: The region used for signing

    :type crt_credentials_provider:
        Optional[awscrt.auth.AwsCredentialsProvider]
    :param crt_credentials_provider: CRT AWS credentials provider
        to use to sign requests. If not set, requests will not be signed.

    :type num_threads: Optional[int]
    :param num_threads: Number of worker threads generated. Default
        is the number of processors in the machine.

    :type target_throughput: Optional[int]
    :param target_throughput: Throughput target in bytes per second.
        By default, CRT will automatically attempt to choose a target
        throughput that matches the system's maximum network throughput.
        Currently, if CRT is unable to determine the maximum network
        throughput, a fallback target throughput of ``1_250_000_000`` bytes
        per second (which translates to 10 gigabits per second, or 1.16
        gibibytes per second) is used. To set a specific target
        throughput, set a value for this parameter.

    :type part_size: Optional[int]
    :param part_size: Size, in Bytes, of parts that files will be downloaded
        or uploaded in.

    :type use_ssl: boolean
    :param use_ssl: Whether or not to use SSL.  By default, SSL is used.
        Note that not all services support non-ssl connections.

    :type verify: Optional[boolean/string]
    :param verify: Whether or not to verify SSL certificates.
        By default SSL certificates are verified.  You can provide the
        following values:

        * False - do not validate SSL certificates.  SSL will still be
            used (unless use_ssl is False), but SSL certificates
            will not be verified.
        * path/to/cert/bundle.pem - A filename of the CA cert bundle to
            use. Specify this argument if you want to use a custom CA cert
            bundle instead of the default one on your system.
    N)Úca_filepathF)Ú provided_throughput_target_bytesT)Ú	bootstrapÚregionÚcredential_providerÚ	part_sizeÚtls_modeÚtls_connection_optionsÚthroughput_target_gbpsÚenable_s3express)r   r   r	   r   ÚENABLEDÚDISABLEDr   Ú&override_default_trust_store_from_pathÚverify_peerr
   Únew_connection_optionsÚ_get_crt_throughput_target_gbpsr   )r3   Úcrt_credentials_providerÚnum_threadsÚtarget_throughputr5   Úuse_sslÚverifyÚevent_loop_groupÚhost_resolverr2   r7   r6   Útls_ctx_optionsÚclient_tls_optionÚtarget_gbpss                  r,   Úcreate_s3_crt_clientrJ   U   sÌ   € ôh & kÓ2ÐÜ'Ð(8Ó9€MÜÐ 0°-Ó@€IØ!Ðñ %,Ô× Ò Ô1A×1JÑ1Jð ð ÐÜ+Ó-ˆÙØ×BÑBØ"ð Cõ ð +0ˆOÔ'Ü,¨_Ó=ÐØ!2×!IÑ!IÓ!KÐÜ1Ø):ô€Kô ØØØ4ØØØ5Ø*Øô	ð 	ó    c                 ó¸   — | €9t         j                  j                  «       }t        j	                  d|«       |€d}n| dz  dz  }t        j	                  d|«       |S )Nz-Recommended CRT throughput target in gbps: %sg      $@r.   i Êš;z'Using CRT throughput target in gbps: %s)r%   r&   Ú&get_recommended_throughput_target_gbpsÚloggerÚdebug)r1   rI   s     r,   r?   r?   ª   s^   € Ø'Ð/Ü—i‘i×FÑFÓHˆÜ�‰Ø;¸[ô	
ð ÐØ‰Kð 7¸Ñ:¸]ÑJˆÜ
‡L�LÐ:¸KÔHØÐrK   c                 ó¬   — t         j                  }	 t        t        |j	                  d«      «      }t        |«      }|| k\  S # t        t        f$ r Y yw xY w)Nú.F)r%   Ú__version__ÚmapÚintÚsplitÚtupleÚ	TypeErrorÚ
ValueError)Úminimum_versionÚcrt_version_strÚcrt_version_intsÚcrt_version_tuples       r,   Ú_has_minimum_crt_versionr]   ¼   s\   € Ü×(Ñ(€OðÜœs O×$9Ñ$9¸#Ó$>Ó?ÐÜ!Ð"2Ó3Ðð  Ñ/Ð/øô ”zÐ"ò Ùðús   ’*A ÁAÁAc                   óà   — e Zd Zej                  Zej
                  Zej                  ZdZej                  Z	 dd„Z	d„ Z
d„ Z	 dd„Zdd„Zdd„Zdd	„Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zy)ÚCRTTransferManagerTNc                 óÞ   — |€t        «       | _        || _        t        || j                  |«      | _        |j
                  | _        g | _        t        j                  d«      | _
        d| _        y)aì  A transfer manager interface for Amazon S3 on CRT s3 client.

        :type crt_s3_client: awscrt.s3.S3Client
        :param crt_s3_client: The CRT s3 client, handling all the
            HTTP requests and functions under then hood

        :type crt_request_serializer: s3transfer.crt.BaseCRTRequestSerializer
        :param crt_request_serializer: Serializer, generates unsigned crt HTTP
            request.

        :type osutil: s3transfer.utils.OSUtils
        :param osutil: OSUtils object to use for os-related behavior when
            using with transfer manager.

        :type config: s3transfer.manager.TransferConfig
        :param config: The transfer configuration to be used when
            making CRT S3 client requests.
        Né€   r   )r   Ú_osutilÚ_crt_s3_clientÚS3ClientArgsCreatorÚ_s3_args_creatorÚtranslate_crt_exceptionÚ_crt_exception_translatorÚ_future_coordinatorsÚ	threadingÚ	SemaphoreÚ
_semaphoreÚ_id_counter)ÚselfÚcrt_s3_clientÚcrt_request_serializerÚosutilÚconfigs        r,   Ú__init__zCRTTransferManager.__init__Ï   sk   € ð* ˆ>Ü"›9ˆDŒLØ+ˆÔÜ 3Ø"Ø�L‰LØó!
ˆÔð #×:Ñ:ð 	Ô&ð %'ˆÔ!Ü#×-Ñ-¨cÓ2ˆŒàˆÕrK   c                 ó   — | S r#   © ©rm   s    r,   Ú	__enter__zCRTTransferManager.__enter__ô   s   € ØˆrK   c                 ó2   — d}|rd}| j                  |«       y )NFT©Ú	_shutdown)rm   Úexc_typeÚ	exc_valueÚargsÚcancels        r,   Ú__exit__zCRTTransferManager.__exit__÷   s   € ØˆÙØˆFØ�‰�vÕrK   c                 ó°   — |€i }|€i }| j                  || j                  «       | j                  |«       t        |||||¬«      }| j	                  d|«      S )N©ÚbucketÚkeyÚfileobjÚ
extra_argsÚsubscribersÚ
get_object)Ú_validate_all_known_argsÚALLOWED_DOWNLOAD_ARGSÚ_validate_if_bucket_supportedr   Ú_submit_transfer)rm   r�   r‚   rƒ   r„   r…   Úcallargss          r,   ÚdownloadzCRTTransferManager.downloadý   sl   € ð ÐØˆJØÐØˆKØ×%Ñ% j°$×2LÑ2LÔMØ×*Ñ*¨6Ô2ÜØØØØ!Ø#ô
ˆð ×$Ñ$ \°8Ó<Ð<rK   c                 óÒ   — |€i }|€i }| j                  || j                  «       | j                  |«       | j                  |«       t	        |||||¬«      }| j                  d|«      S )Nr€   Ú
put_object)r‡   ÚALLOWED_UPLOAD_ARGSr‰   Ú&_validate_checksum_algorithm_supportedr   rŠ   )rm   rƒ   r�   r‚   r„   r…   r‹   s          r,   ÚuploadzCRTTransferManager.upload  sx   € ØÐØˆJØÐØˆKØ×%Ñ% j°$×2JÑ2JÔKØ×*Ñ*¨6Ô2Ø×3Ñ3°JÔ?ÜØØØØ!Ø#ô
ˆð ×$Ñ$ \°8Ó<Ð<rK   c                 ó®   — |€i }|€i }| j                  || j                  «       | j                  |«       t        ||||¬«      }| j	                  d|«      S )N)r�   r‚   r„   r…   Údelete_object)r‡   ÚALLOWED_DELETE_ARGSr‰   r   rŠ   )rm   r�   r‚   r„   r…   r‹   s         r,   ÚdeletezCRTTransferManager.delete   sg   € ØÐØˆJØÐØˆKØ×%Ñ% j°$×2JÑ2JÔKØ×*Ñ*¨6Ô2ÜØØØ!Ø#ô	
ˆð ×$Ñ$ _°hÓ?Ð?rK   c                 ó&   — | j                  |«       y r#   rx   ©rm   r}   s     r,   ÚshutdownzCRTTransferManager.shutdown/  s   € Ø�‰�vÕrK   c                 ó¦   — | j                   rE| j                  j                  «       D ]'  \  }}|j                  |«      }|sŒt	        d|› d�«      ‚ y y )Nz'TransferManager methods do not support z+ resource. Use direct client calls instead.)Ú VALIDATE_SUPPORTED_BUCKET_VALUESÚ_UNSUPPORTED_BUCKET_PATTERNSÚitemsÚmatchrX   )rm   r�   ÚresourceÚpatternr�   s        r,   r‰   z0CRTTransferManager._validate_if_bucket_supported2  sg   € ð ×0Ò0Ø%)×%FÑ%F×%LÑ%LÓ%Nò Ñ!�˜'ØŸ™ fÓ-�ÚÜ$ØAÀ(Àð LEð Eóð ñð 1rK   c           	      óZ   — |D ]&  }||vsŒt        d|› ddj                  |«      › �«      ‚ y )NzInvalid extra_args key 'z', must be one of: z, )rX   Újoin)rm   ÚactualÚallowedÚkwargs       r,   r‡   z+CRTTransferManager._validate_all_known_args?  sF   € Øò 	ˆEØ˜GÒ#Ü Ø.¨u¨gð 6'Ø'+§y¡y°Ó'9Ð&:ð<óð ñ	rK   c                 óÌ   — |j                  d«      }|€y t        t        j                  j                  j
                  «      }|j                  «       |vrt        d|› d|› �«      ‚y )NÚChecksumAlgorithmzChecksumAlgorithm: z* not supported. Supported algorithms are: )ÚgetÚlistr%   r&   ÚS3ChecksumAlgorithmÚ__members__ÚupperrX   )rm   r„   Úchecksum_algorithmÚsupported_algorithmss       r,   r�   z9CRTTransferManager._validate_checksum_algorithm_supportedG  su   € Ø'Ÿ^™^Ð,?Ó@ÐØÐ%ØÜ#¤F§I¡I×$AÑ$A×$MÑ$MÓNÐØ×#Ñ#Ó%Ð-AÑAÜØ%Ð&8Ð%9ð :-Ø-AÐ,BðDóð ð BrK   c                 óh   — | j                   D ]#  }|j                  «       rŒ|j                  «        Œ% y r#   )rh   Údoner}   ©rm   Úcoordinators     r,   Ú_cancel_transfersz$CRTTransferManager._cancel_transfersR  s/   € Ø×4Ñ4ò 	%ˆKØ×#Ñ#Õ%Ø×"Ñ"Õ$ñ	%rK   c                 óF   — | j                   D ]  }|j                  «        Œ y r#   )rh   Úresultr°   s     r,   Ú_finish_transfersz$CRTTransferManager._finish_transfersW  s#   € Ø×4Ñ4ò 	!ˆKØ×ÑÕ ñ	!rK   c                 óF   — | j                   D ]  }|j                  «        Œ y r#   )rh   Ú%wait_until_on_done_callbacks_completer°   s     r,   Ú_wait_transfers_donez'CRTTransferManager._wait_transfers_done[  s%   € Ø×4Ñ4ò 	@ˆKØ×=Ñ=Õ?ñ	@rK   c                 óæ   — |r| j                  «        	 | j                  «        | j	                  «        y # t        $ r | j                  «        Y Œ,t        $ r Y Œ6w xY w# | j	                  «        w xY wr#   )r²   rµ   ÚKeyboardInterruptÚ	Exceptionr¸   r—   s     r,   ry   zCRTTransferManager._shutdown_  sg   € ÙØ×"Ñ"Ô$ð	(Ø×"Ñ"Ô$ð ×%Ñ%Õ'øô !ò 	%Ø×"Ñ"Ö$Üò 	Ùð	ûð ×%Ñ%Õ'ús-   ”5 µAÁA ÁAÁA ÁAÁA ÁA0c                 ó8   — | j                   j                  «        y r#   )rk   Úrelease©rm   Úkwargss     r,   Ú_release_semaphorez%CRTTransferManager._release_semaphorel  s   € Ø�‰×ÑÕ!rK   c                 óô  — | j                   g}t        | j                  | j                  ¬«      }t	        | j                  |«      |dœ}t        d	i |¤Ž}t        |«      }|j                  |«       	 | j                  j                  «        | j                  j                  |d«      } |«        | j                  j                  |||||«      }	 | j                  j                  d	i |	¤Ž}
|j                  |
«       | j$                  j                  |«       | xj                  dz  c_        |S # t         $ rC}|j#                  |d«       | j                  j                  |d|¬«      } ||¬«       Y d }~Œyd }~ww xY w)
N)Útransfer_idÚexception_translator)Úmetar±   ÚqueuedTr¯   )Úafter_subscribers)Úerroré   rt   )rÀ   ÚCRTTransferCoordinatorrl   rg   ÚCRTTransferMetaÚCRTTransferFutureÚAfterDoneHandlerÚappendrk   r(   re   Úget_crt_callbackÚget_make_request_argsrc   Úmake_requestÚset_s3_requestr»   Úset_exceptionrh   )rm   Úrequest_typeÚ	call_argsÚon_done_after_callsr±   Ú
componentsÚfutureÚ	afterdoneÚ	on_queuedÚcrt_callargsÚcrt_s3_requestÚeÚon_dones                r,   rŠ   z#CRTTransferManager._submit_transfero  su  € Ø#×6Ñ6Ð7ÐÜ,Ø×(Ñ(Ø!%×!?Ñ!?ô
ˆô
 $ D×$4Ñ$4°iÓ@Ø&ñ
ˆ
ô #Ñ0 ZÑ0ˆÜ$ [Ó1ˆ	Ø×"Ñ" 9Ô-ð	7Ø�O‰O×#Ñ#Ô%Ø×-Ñ-×>Ñ>Ø˜óˆIñ ŒKØ×0Ñ0×FÑFØØØØØ#óˆLð >˜T×0Ñ0×=Ñ=ÑMÀÑMˆNð ×&Ñ& ~Ô6Ø×!Ñ!×(Ñ(¨Ô5à×Ò˜AÑÕØˆøô ò 	Ø×%Ñ% a¨Ô.Ø×+Ñ+×<Ñ<Ø˜Ð2Eð =ó ˆGñ ˜!×Òûð	ús   Á0A8D+ Ä+	E7Ä49E2Å2E7©NN©F)Ú__name__Ú
__module__Ú__qualname__r   rˆ   r�   r”   rš   r›   rr   rv   r~   rŒ   r‘   r•   r˜   r‰   r‡   r�   r²   rµ   r¸   ry   rÀ   rŠ   rt   rK   r,   r_   r_   Æ   s™   „ Ø+×AÑAÐØ)×=Ñ=ÐØ)×=Ñ=Ðà'+Ð$à#2×#OÑ#OÐ ð JNó#òJòð BFó=ó$=ó"@óòòò	ò%ò
!ò@ó(ò"ó'rK   r_   c                   óH   — e Zd ZdZdd„Zed„ «       Zed„ «       Zed„ «       Zy)rÊ   z*Holds metadata about the CRTTransferFutureNc                 ó.   — || _         || _        i | _        y r#   )Ú_transfer_idÚ
_call_argsÚ_user_context)rm   rÂ   rÔ   s      r,   rr   zCRTTransferMeta.__init__œ  s   € Ø'ˆÔØ#ˆŒØˆÕrK   c                 ó   — | j                   S r#   )ræ   ru   s    r,   rÔ   zCRTTransferMeta.call_args¡  s   € à�‰ÐrK   c                 ó   — | j                   S r#   )rå   ru   s    r,   rÂ   zCRTTransferMeta.transfer_id¥  s   € à× Ñ Ð rK   c                 ó   — | j                   S r#   )rç   ru   s    r,   Úuser_contextzCRTTransferMeta.user_context©  s   € à×!Ñ!Ð!rK   rÞ   )	rà   rá   râ   Ú__doc__rr   ÚpropertyrÔ   rÂ   rë   rt   rK   r,   rÊ   rÊ   ™  sF   „ Ù4ó ð
 ñó ðð ñ!ó ð!ð ñ"ó ñ"rK   rÊ   c                   ó>   — e Zd Zdd„Zed„ «       Zd„ Zd	d„Zd„ Zd„ Z	y)
rË   Nc                 óB   — || _         |€t        «       | _         || _        y)aZ  The future associated to a submitted transfer request via CRT S3 client

        :type meta: s3transfer.crt.CRTTransferMeta
        :param meta: The metadata associated to the transfer future.

        :type coordinator: s3transfer.crt.CRTTransferCoordinator
        :param coordinator: The coordinator associated to the transfer future.
        N)Ú_metarÊ   Ú_coordinator)rm   rÄ   r±   s      r,   rr   zCRTTransferFuture.__init__¯  s"   € ð ˆŒ
Øˆ<Ü(Ó*ˆDŒJØ'ˆÕrK   c                 ó   — | j                   S r#   )rð   ru   s    r,   rÄ   zCRTTransferFuture.meta½  s   € à�z‰zÐrK   c                 ó6   — | j                   j                  «       S r#   )rñ   r¯   ru   s    r,   r¯   zCRTTransferFuture.doneÁ  s   € Ø× Ñ ×%Ñ%Ó'Ð'rK   c                 ó:   — | j                   j                  |«       y r#   )rñ   r´   ©rm   Útimeouts     r,   r´   zCRTTransferFuture.resultÄ  s   € Ø×Ñ× Ñ  Õ)rK   c                 ó8   — | j                   j                  «        y r#   )rñ   r}   ru   s    r,   r}   zCRTTransferFuture.cancelÇ  s   € Ø×Ñ× Ñ Õ"rK   c                 ót   — | j                  «       st        d«      ‚| j                  j                  |d¬«       y)z!Sets the exception on the future.z?set_exception can only be called once the transfer is complete.T)ÚoverrideN)r¯   r   rñ   rÒ   ©rm   Ú	exceptions     r,   rÒ   zCRTTransferFuture.set_exceptionÊ  s8   € à�y‰yŒ{Ü&ðóð ð 	×Ñ×'Ñ'¨	¸DÐ'ÕArK   rÞ   r#   )
rà   rá   râ   rr   rí   rÄ   r¯   r´   r}   rÒ   rt   rK   r,   rË   rË   ®  s0   „ ó(ð ñó ðò(ó*ò#óBrK   rË   c                   ó   — e Zd Zd„ Zd„ Zy)ÚBaseCRTRequestSerializerc                 ó   — t        d«      ‚)al  Serialize CRT HTTP requests.

        :type transfer_type: string
        :param transfer_type: the type of transfer made,
            e.g 'put_object', 'get_object', 'delete_object'

        :type future: s3transfer.crt.CRTTransferFuture

        :rtype: awscrt.http.HttpRequest
        :returns: An unsigned HTTP request to be used for the CRT S3 client
        zserialize_http_request()©ÚNotImplementedError)rm   Útransfer_typer×   s      r,   Úserialize_http_requestz/BaseCRTRequestSerializer.serialize_http_requestÕ  s   € ô "Ð"<Ó=Ð=rK   c                 ó   — t        d«      ‚)Nztranslate_crt_exception()rÿ   rú   s     r,   rf   z0BaseCRTRequestSerializer.translate_crt_exceptionã  s   € Ü!Ð"=Ó>Ð>rK   N)rà   rá   râ   r  rf   rt   rK   r,   rý   rý   Ô  s   „ ò>ó?rK   rý   c                   óV   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zy)ÚBotocoreCRTRequestSerializerNc                 ó0  — || _         |€i }| j                  ||«       t        |fi |¤Ž| _        | j                  j                  j
                  j                  d| j                  «       | j                  j                  j
                  j                  d| j                  «       | j                  j                  j
                  j                  d| j                  «       | j                  j                  j
                  j                  d| j                  «       y)aÂ  Serialize CRT HTTP request using botocore logic
        It also takes into account configuration from both the session
        and any keyword arguments that could be passed to
        `Session.create_client()` when serializing the request.

        :type session: botocore.session.Session

        :type client_kwargs: Optional[Dict[str, str]])
        :param client_kwargs: The kwargs for the botocore
            s3 client initialization.
        Nzrequest-created.s3.*zafter-call.s3.*zbefore-send.s3.*zbefore-call.s3.*)Ú_sessionÚ_resolve_client_configr   Ú_clientrÄ   ÚeventsÚregisterÚ_capture_http_requestÚ+_change_response_to_serialized_http_requestÚ_make_fake_http_responseÚ_remove_checksum_context)rm   ÚsessionÚclient_kwargss      r,   rr   z%BotocoreCRTRequestSerializer.__init__è  sá   € ð  ˆŒØÐ ØˆMØ×#Ñ# G¨]Ô;Ü+¨GÑE°}ÑEˆŒØ�‰×Ñ× Ñ ×)Ñ)Ø" D×$>Ñ$>ô	
ð 	�‰×Ñ× Ñ ×)Ñ)Ø˜t×OÑOô	
ð 	�‰×Ñ× Ñ ×)Ñ)Ø × =Ñ =ô	
ð 	�‰×Ñ× Ñ ×)Ñ)Ø × =Ñ =õ	
rK   c                 ó´   — d }|j                  «       r|j                  «       }d|v r|d   }t        t        ¬«      }|r|j                  |«      }||d<   d|d<   y )Nrq   )Úsignature_versionr&   Úservice_name)Úget_default_client_configr   r   Úmerge)rm   r  r  Úuser_provided_configÚclient_configs        r,   r  z3BotocoreCRTRequestSerializer._resolve_client_config  sg   € Ø#ÐØ×,Ñ,Ô.Ø#*×#DÑ#DÓ#FÐ Ø�}Ñ$Ø#0°Ñ#:Ð ä´Ô:ˆÙØ0×6Ñ6°}ÓEˆMØ"/ˆ�hÑØ(,ˆ�nÒ%rK   c                 óø  — t        |j                  «      }|j                  }|j                  r|› d|j                  › �}g }|j                  j                  «       D ]F  \  }}t        |t        «      r|j                  ||f«       Œ*|j                  |t        |d«      f«       ŒH t        j                  j                  |«      }t        j                  j                  |j                  |||j                  ¬«      }|S )Nú?zutf-8)ÚmethodÚpathÚheadersÚbody_stream)r   Úurlr  Úqueryr  rœ   Ú
isinstanceÚstrrÍ   r%   ÚhttpÚHttpHeadersÚHttpRequestr  Úbody)	rm   Úaws_requestÚ	url_partsÚcrt_pathÚheaders_listr*   ÚvalueÚcrt_headersÚcrt_requests	            r,   Ú_crt_request_from_aws_requestz:BotocoreCRTRequestSerializer._crt_request_from_aws_request  sã   € Ü˜[Ÿ_™_Ó-ˆ	Ø—>‘>ˆØ�?Š?Ø"˜ 1 Y§_¡_Ð$5Ð6ˆHØˆØ&×.Ñ.×4Ñ4Ó6ò 	A‰KˆD�%Ü˜%¤Ô%Ø×#Ñ# T¨5 MÕ2à×#Ñ# T¬3¨u°gÓ+>Ð$?Õ@ð		Aô —k‘k×-Ñ-¨lÓ;ˆä—k‘k×-Ñ-Ø×%Ñ%ØØØ#×(Ñ(ð	 .ó 
ˆð ÐrK   c                 ó2  — | j                  |«      }|j                  j                  d«      €;t        |j                  «      }|j                  j                  d|j                  «       |j                  j                  d«      �|j                  j                  d«       |j                  j                  d«      €(|j                  €|j                  j                  dd«       |j                  j                  d«      �|j                  j                  d«       |S )NÚhostzContent-MD5zContent-LengthÚ0zTransfer-Encoding)
r.  r  r§   r   r  ÚsetÚnetlocÚremover&  Úadd)rm   Úbotocore_http_requestr-  r(  s       r,   Ú_convert_to_crt_http_requestz9BotocoreCRTRequestSerializer._convert_to_crt_http_request)  sô   € à×8Ñ8Ð9NÓOˆØ×Ñ×"Ñ" 6Ó*Ð2ä Ð!6×!:Ñ!:Ó;ˆIØ×Ñ×#Ñ# F¨I×,<Ñ,<Ô=Ø×Ñ×"Ñ" =Ó1Ð=Ø×Ñ×&Ñ& }Ô5ð ×Ñ×"Ñ"Ð#3Ó4Ð<Ø$×)Ñ)Ð1Ø×#Ñ#×'Ñ'Ð(8¸#Ô>ð ×Ñ×"Ñ"Ð#6Ó7ÐCØ×Ñ×&Ñ&Ð':Ô;àÐrK   c                 ó"   — ||j                   d<   y )NÚhttp_request)Úcontext©rm   Úrequestr¿   s      r,   r  z2BotocoreCRTRequestSerializer._capture_http_requestG  s   € Ø*1ˆ�‰˜Ò'rK   c                 ó4   — |d   }|j                  «       |d<   y )Nr9  ÚHTTPRequest)Úprepare)rm   r:  Úparsedr¿   r<  s        r,   r  zHBotocoreCRTRequestSerializer._change_response_to_serialized_http_requestJ  s   € ð ˜.Ñ)ˆØ '§¡Ó 1ˆˆ}ÒrK   c                 óX   — t         j                  j                  d di t        d«      «      S )NéÈ   rK   )ÚbotocoreÚ
awsrequestÚAWSResponseÚFakeRawResponser;  s      r,   r  z5BotocoreCRTRequestSerializer._make_fake_http_responseP  s,   € Ü×"Ñ"×.Ñ.ØØØÜ˜CÓ ó	
ð 	
rK   c                 ó‚   —  t        | j                  |«      d|j                  |j                  dœ|j                  ¤Žd   S )N)ÚBucketÚKeyr>  rt   )Úgetattrr	  r�   r‚   r„   )rm   Úclient_methodrÔ   s      r,   Ú_get_botocore_http_requestz7BotocoreCRTRequestSerializer._get_botocore_http_requestX  sF   € Ø3Œw�t—|‘| ]Ó3ð 
Ø×#Ñ#¨¯©ñ
Ø:C×:NÑ:Nñ
à
ñð 	rK   c                 ót   — | j                  ||j                  j                  «      }| j                  |«      }|S r#   )rL  rÄ   rÔ   r7  )rm   r  r×   r6  r-  s        r,   r  z3BotocoreCRTRequestSerializer.serialize_http_request]  s;   € Ø $× ?Ñ ?Ø˜6Ÿ;™;×0Ñ0ó!
Ðð ×7Ñ7Ð8MÓNˆØÐrK   c                 ón   — t        |t        j                  j                  «      r| j	                  |«      S y r#   )r!  r%   r&   ÚS3ResponseErrorÚ _translate_crt_s3_response_errorrú   s     r,   rf   z4BotocoreCRTRequestSerializer.translate_crt_exceptiond  s*   € Ü�i¤§¡×!:Ñ!:Ô;Ø×8Ñ8¸ÓCÐCàrK   c                 óP  — |j                   }|dk  ry |j                  D ��ci c]  \  }}||“Œ
 }}}|j                  }|�<| j                  j                  j
                  }|j                  |«      j                  }nd }t        j                  j                  |«      ||j                  dœ}	| j                  j                  j                  |	|¬«      }
|
j                  di «      j                  d«      }| j                  j                  j!                  |«      } ||
|¬«      S c c}}w )Ni-  )r  Ústatus_coder&  )ÚshapeÚErrorÚCode)Úoperation_name)rR  r  rV  r	  rÄ   Úservice_modelÚoperation_modelÚoutput_shaperC  rD  ÚHeadersDictr&  Ú_response_parserÚparser§   Ú
exceptionsÚ	from_code)rm   Ús3_response_errorrR  ÚkÚvr  rV  rW  rS  Úresponse_dictÚparsed_responseÚ
error_codeÚerror_classs                r,   rP  z=BotocoreCRTRequestSerializer._translate_crt_s3_response_errorj  s  € Ø'×3Ñ3ˆØ˜Òð à$5×$=Ñ$=×>™D˜A˜q�1�a‘4Ð>ˆÑ>Ø*×9Ñ9ˆØÐ%Ø ŸL™L×-Ñ-×;Ñ;ˆMØ!×1Ñ1°.ÓA×NÑN‰EàˆEô  ×*Ñ*×6Ñ6°wÓ?Ø&Ø%×*Ñ*ñ
ˆð
 Ÿ,™,×7Ñ7×=Ñ=Ø ð >ó 
ˆð %×(Ñ(¨°"Ó5×9Ñ9¸&ÓAˆ
Ø—l‘l×-Ñ-×7Ñ7¸
ÓCˆÙ˜?¸>ÔJÐJùó' ?s   ¢D"c                 ó8   — |j                  di «      }d|v r|d= y y )Nr:  Úchecksum)r§   )rm   Úparamsr¿   Úrequest_contexts       r,   r  z5BotocoreCRTRequestSerializer._remove_checksum_context†  s'   € Ø Ÿ*™* Y°Ó3ˆØ˜Ñ(Ø 
Ñ+ð )rK   r#   )rà   rá   râ   rr   r  r.  r7  r  r  r  rL  r  rf   rP  r  rt   rK   r,   r  r  ç  s?   „ ó
ò<-òò,ò<2ò2ò
òò
òòKó8,rK   r  c                   ó   — e Zd Zdd„Zy)rF  Nc              #   ó>   K  — 	 | j                  |«      }|sy |–— Œ­wr#   )Úread)rm   ÚamtÚdecode_contentÚchunks       r,   ÚstreamzFakeRawResponse.stream�  s&   è ø€ ØØ—I‘I˜c“NˆEÙØØŠKð	 ùs   ‚)i   N)rà   rá   râ   rp  rt   rK   r,   rF  rF  Œ  s   „ ôrK   rF  c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚBotocoreCRTCredentialsWrapperc                 ó   — || _         y r#   )Ú_resolved_credentials)rm   Úresolved_botocore_credentialss     r,   rr   z&BotocoreCRTCredentialsWrapper.__init__–  s
   € Ø%BˆÕ"rK   c                 ó”   — | j                  «       j                  «       }t        |j                  |j                  |j
                  «      S r#   )Ú_get_credentialsÚget_frozen_credentialsr   Ú
access_keyÚ
secret_keyÚtoken)rm   Úcredentialss     r,   Ú__call__z&BotocoreCRTCredentialsWrapper.__call__™  s?   € Ø×+Ñ+Ó-×DÑDÓFˆÜØ×"Ñ" K×$:Ñ$:¸K×<MÑ<Mó
ð 	
rK   c                 ó,   — t        j                  | «      S r#   )r   Únew_delegateru   s    r,   Úto_crt_credentials_providerz9BotocoreCRTCredentialsWrapper.to_crt_credentials_providerŸ  s   € Ü%×2Ñ2°4Ó8Ð8rK   c                 óF   — | j                   €
t        «       ‚| j                   S r#   )rt  r   ru   s    r,   rw  z.BotocoreCRTCredentialsWrapper._get_credentials¢  s#   € Ø×%Ñ%Ð-Ü$Ó&Ð&Ø×)Ñ)Ð)rK   N)rà   rá   râ   rr   r}  r€  rw  rt   rK   r,   rr  rr  •  s   „ òCò
ò9ó*rK   rr  c                   ó`   — e Zd ZdZ	 dd„Zed„ «       Zd„ Zdd„Zdd„Z	d„ Z
dd	„Zd
„ Zd„ Zd„ Zy)rÉ   z-A helper class for managing CRTTransferFutureNc                 ó®   — || _         || _        || _        t        j                  «       | _        d | _        d | _        t        j                  «       | _	        y r#   )
rÂ   Ú_exception_translatorÚ_s3_requestri   ÚLockÚ_lockÚ
_exceptionÚ_crt_futureÚEventÚ_done_event)rm   rÂ   Ú
s3_requestrÃ   s       r,   rr   zCRTTransferCoordinator.__init__«  sH   € ð 'ˆÔØ%9ˆÔ"Ø%ˆÔÜ—^‘^Ó%ˆŒ
ØˆŒØˆÔÜ$Ÿ?™?Ó,ˆÕrK   c                 ó   — | j                   S r#   )r…  ru   s    r,   rŒ  z!CRTTransferCoordinator.s3_request¶  s   € à×ÑÐrK   c                 ó8   — | j                   j                  «        y r#   )r‹  r2  ru   s    r,   Úset_done_callbacks_completez2CRTTransferCoordinator.set_done_callbacks_completeº  s   € Ø×Ñ×ÑÕrK   c                 ó:   — | j                   j                  |«       y r#   )r‹  Úwaitrõ   s     r,   r·   z<CRTTransferCoordinator.wait_until_on_done_callbacks_complete½  s   € Ø×Ñ×Ñ˜gÕ&rK   c                 óx   — | j                   5  | j                  «       r|r|| _        d d d «       y # 1 sw Y   y xY wr#   )r‡  r¯   rˆ  )rm   rû   rù   s      r,   rÒ   z$CRTTransferCoordinator.set_exceptionÀ  s0   € Ø�Z‰Zñ 	,Ø—9‘9”;¡(Ø"+�”÷	,÷ 	,ñ 	,ús   �0°9c                 óR   — | j                   r| j                   j                  «        y y r#   )r…  r}   ru   s    r,   r}   zCRTTransferCoordinator.cancelÅ  s"   € Ø×ÒØ×Ñ×#Ñ#Õ%ð rK   c                 ó|  — | j                   r| j                   ‚	 | j                  j                  |«       | j                  rd | _        y y # t        $ r- | j	                  «        | j                  j                  |«       ‚ t
        $ r}| j                  |«       Y d }~Œhd }~ww xY w# | j                  rd | _        w w xY wr#   )rˆ  r‰  r´   rº   r}   r»   Úhandle_exceptionr…  )rm   rö   rÜ   s      r,   r´   zCRTTransferCoordinator.resultÉ  s¨   € Ø�?Š?Ø—/‘/Ð!ð
	(Ø×Ñ×#Ñ# GÔ,ð ×ÒØ#'�Õ ð  øô !ò 	Ø�K‰KŒMØ×Ñ×#Ñ# GÔ,ØÜò 	%Ø×!Ñ! !×$Ñ$ûð	%ûð ×ÒØ#'�Õ ð  ús)   šA
 Á
=B"ÂBÂB% ÂB"Â"B% Â%B;c                 óª   — d }| j                   r	 | j                  |«      }|�||‚|‚# t        $ r!}t        j                  d|¬«       Y d }~Œ,d }~ww xY w)NzUnable to translate exception.)Úexc_info)r„  r»   rN   rO   )rm   ÚexcÚtranslated_excrÜ   s       r,   r•  z'CRTTransferCoordinator.handle_exceptionØ  sb   € ØˆØ×%Ò%ðØ!%×!;Ñ!;¸CÓ!@�ð Ð%Ø  cÐ)àˆIøô ò ô —‘Ð=È�ÔJÜûð	ús   �( ¨	A±AÁAc                 óP   — | j                   €y| j                   j                  «       S )NF)r‰  r¯   ru   s    r,   r¯   zCRTTransferCoordinator.doneç  s&   € Ø×ÑÐ#ØØ×Ñ×$Ñ$Ó&Ð&rK   c                 óH   — || _         | j                   j                  | _        y r#   )r…  Úfinished_futurer‰  )rm   rŒ  s     r,   rÑ   z%CRTTransferCoordinator.set_s3_requestì  s   € Ø%ˆÔØ×+Ñ+×;Ñ;ˆÕrK   )NNNr#   rß   )rà   rá   râ   rì   rr   rí   rŒ  r�  r·   rÒ   r}   r´   r•  r¯   rÑ   rt   rK   r,   rÉ   rÉ   ¨  sM   „ Ù7ð GKó	-ð ñ ó ð òó'ó,ò
&ó(òò'ó
<rK   rÉ   ÚCRTConfigParameterr*   Úmin_versionc                   ó`   — e Zd Zd edd«      iZdd„Zd„ Zd„ Zd„ Zd	„ Z		 	 dd
„Z
d„ Zd„ Zd„ Zy)rd   Úmax_active_connections_overrideÚmax_request_concurrency)r   é   r   Nc                 ó.   — || _         || _        || _        y r#   )Ú_request_serializerÚ	_os_utilsÚ_config)rm   ro   Úos_utilsrq   s       r,   rr   zS3ClientArgsCreator.__init__û  s   € Ø#9ˆÔ Ø!ˆŒØˆ�rK   c                 ó¾  — | j                   j                  | j                   j                  dœ}| j                   j                  d«      | j                   j                  u rd |d<   | j                   j                  d«      | j                   j                  u rd |d<   t        | d|› �«      r#|j                   t        | d|› �«      «       «       | j                  |«       |S )N)r5   r   Úmultipart_chunksizer5   r¡  r   Ú_get_crt_options_)	r¦  r©  r¡  Úget_deep_attrÚUNSET_DEFAULTÚhasattrÚupdaterJ  Ú$_remove_param_if_not_min_crt_version)rm   rÓ   Ú
crt_configs      r,   Ú _get_crt_transfer_config_optionsz4S3ClientArgsCreator._get_crt_transfer_config_options   sÖ   € àŸ™×9Ñ9Ø/3¯|©|×/SÑ/Sñ
ˆ
ð �L‰L×&Ñ&Ð'<Ó=Ø�|‰|×)Ñ)ñ*ð '+ˆJ�{Ñ#à�L‰L×&Ñ&Ð'@ÓAØ�|‰|×)Ñ)ñ*ð =AˆJÐ8Ñ9ä�4Ð,¨\¨NÐ;Ô<Ø×ÑØA”˜Ð 1°,°Ð@ÓAÓCôð 	×1Ñ1°*Ô=ØÐrK   c                 ó2   — d| j                   j                  iS )NÚmultipart_upload_threshold)r¦  Úmultipart_thresholdru   s    r,   Ú_get_crt_options_put_objectz/S3ClientArgsCreator._get_crt_options_put_object  s   € Ø,¨d¯l©l×.NÑ.NÐOÐOrK   c           
      óÔ  — g }|D ]×  }|| j                   vrŒ| j                   |   }t        |j                  «      rŒ7| j                  j	                  |j
                  «      | j                  j                  urUdj                  d„ |j                  D «       «      }t        j                  d|j
                  › d|› d|j
                  › d�«       |j                  |«       ŒÙ |D ]  }||= Œ y )NrQ   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr#   )r"  )Ú.0Úis     r,   ú	<genexpr>zKS3ClientArgsCreator._remove_param_if_not_min_crt_version.<locals>.<genexpr>*  s   è ø€ Ò&I°!¤s¨1§vÑ&Iùs   ‚zTransfer config parameter z requires minimum CRT version: z. z! will not be used in the request.)Ú_CRT_ARG_TO_CONFIG_PARAMr]   rž  r¦  r«  r*   r¬  r¡   rN   ÚwarningrÍ   )rm   r°  Ú	to_removeÚrequest_argÚparamÚmin_ver_strs         r,   r¯  z8S3ClientArgsCreator._remove_param_if_not_min_crt_version  sì   € Øˆ	Ø%ò 	*ˆKØ $×"?Ñ"?Ñ?ØØ×1Ñ1°+Ñ>ˆEÜ'¨×(9Ñ(9Ô:Øð —‘×*Ñ*¨5¯:©:Ó6Ø—|‘|×1Ñ1ñ2ð "Ÿh™hÑ&I°u×7HÑ7HÔ&IÓI�Ü—‘Ø0°·±°ð =5Ø5@°MÀØ—z‘z�lÐ"CðEôð
 ×Ñ˜[Õ)ð%	*ð& %ò 	(ˆKØ˜;Ñ'ñ	(rK   c                 óR   — t        | d|› �| j                  «      } |||||g |¬«      S )NÚ_get_make_request_args_©rÓ   rÔ   r±   r×   Úon_done_before_callsrÕ   )rJ  Ú_default_get_make_request_args)rm   rÓ   rÔ   r±   r×   rÕ   Úrequest_args_handlers          r,   rÏ   z)S3ClientArgsCreator.get_make_request_args4  sF   € ô  'ØØ% l ^Ð4Ø×/Ñ/ó 
Ðñ
 $Ø%ØØ#ØØ!#Ø 3ô
ð 	
rK   c                 ó   ‡‡‡‡— ˆˆˆˆfd„}|S )Nc                  ó†   •— g }‰�|‰z  }|t        ‰‰«      z  }‰�|‰z  }|D ]  }‰dk(  r || d   ¬«       Œ || i |¤Ž Œ y )NÚprogressr   )Úbytes_transferred)r    )r|   r¿   Úcallbacks_listÚcallbackrÆ   Úbefore_subscribersÚcallback_typer×   s       €€€€r,   Úinvoke_all_callbackszBS3ClientArgsCreator.get_crt_callback.<locals>.invoke_all_callbacksL  sm   ø€ ØˆNØ!Ð-ØÐ"4Ñ4�Øœm¨F°MÓBÑBˆNØ Ð,ØÐ"3Ñ3�Ø*ò .�ð ! JÒ.Ù¨t°A©wÖ7á˜dÐ- fÓ-ñ.rK   rt   )rm   r×   rÎ  rÍ  rÆ   rÏ  s    ```` r,   rÎ   z$S3ClientArgsCreator.get_crt_callbackE  s   û€ ÷	.ð  $Ð#rK   c                 óÜ  ‡— d }t        ‰j                  t        «      r7‰j                  }| j                  j	                  |«      }|‰j
                  d<   n‰j                  ‰j
                  d<   d }	t        ˆfd„t        D «       «      sˆ‰j
                  j                  dd«      j                  «       }
t        j                  j                  t        j                  j                  |
   t        j                  j                  j                  ¬«      }	d‰j
                  d<   | j!                  |‰||||¬	«      }||d
<   |	|d<   | j"                  � |j%                  | j'                  |«      «       |S )NÚContentLengthÚBodyc              3   ó:   •K  — | ]  }|‰j                   v –— Œ y ­wr#   )r„   )r¸  Úchecksum_argrÔ   s     €r,   rº  zHS3ClientArgsCreator._get_make_request_args_put_object.<locals>.<genexpr>p  s$   øè ø€ ò 
àð ˜I×0Ñ0Ô0ñ
ùs   ƒr¦   ÚCRC32)Ú	algorithmÚlocationzoverride-to-be-removedÚ
ContentMD5rÃ  Úsend_filepathÚchecksum_config)r!  rƒ   r"  r¥  Úget_file_sizer„   Úanyr   Úpopr«   r%   r&   ÚS3ChecksumConfigr©   ÚS3ChecksumLocationÚTRAILERrÅ  r¦  r®  r±  )rm   rÓ   rÔ   r±   r×   rÄ  rÕ   rÙ  Údata_lenrÚ  r¬   Úmake_request_argss     `         r,   Ú!_get_make_request_args_put_objectz5S3ClientArgsCreator._get_make_request_args_put_object^  sd  ø€ ð ˆÜ�i×'Ñ'¬Ô-Ø%×-Ñ-ˆMØ—~‘~×3Ñ3°MÓBˆHØ4<ˆI× Ñ  Ò1à+4×+<Ñ+<ˆI× Ñ  Ñ(àˆÜó 
ä 9ô
ô 
ð "+×!5Ñ!5×!9Ñ!9Ø# Wó"ç‰e‹gð ô %Ÿi™i×8Ñ8Ü Ÿ)™)×7Ñ7Ð8JÑKÜŸ™×5Ñ5×=Ñ=ð 9ó ˆOð .Fˆ	×Ñ˜\Ñ*à ×?Ñ?Ø%ØØ#ØØ!5Ø 3ð @ó 
Ðð .;Ð˜/Ñ*Ø/>ÐÐ+Ñ,Ø�<‰<Ð#Ø×$Ñ$Ø×5Ñ5°lÓCôð !Ð rK   c                 óî  — d }d }t         j                  j                  d¬«      }	t        |j                  t
        «      rO|j                  }
| j                  j                  |
«      }|j                  t        ||
|| j                  «      «       nt        |j                  «      }| j                  ||||||¬«      }||d<   ||d<   |	|d<   | j                  � |j                  | j                  |«      «       |S )NT)Úvalidate_responserÃ  Úrecv_filepathÚon_bodyrÚ  )r%   r&   rÞ  r!  rƒ   r"  r¥  Úget_temp_filenamerÍ   ÚRenameTempFileHandlerÚOnBodyFileObjWriterrÅ  r¦  r®  r±  )rm   rÓ   rÔ   r±   r×   rÄ  rÕ   ræ  rç  rÚ  Úfinal_filepathrâ  s               r,   Ú!_get_make_request_args_get_objectz5S3ClientArgsCreator._get_make_request_args_get_object‘  s  € ð ˆØˆÜ Ÿ)™)×4Ñ4ÀtÐ4ÓLˆÜ�i×'Ñ'¬Ô-Ø&×.Ñ.ˆNØ ŸN™N×<Ñ<¸^ÓLˆMØ ×'Ñ'Ü%Ø °ÀÇÁóõô *¨)×*;Ñ*;Ó<ˆGà ×?Ñ?Ø%ØØ#ØØ!5Ø 3ð @ó 
Ðð .;Ð˜/Ñ*Ø'.Ð˜)Ñ$Ø/>ÐÐ+Ñ,Ø�<‰<Ð#Ø×$Ñ$Ø×5Ñ5°lÓCôð !Ð rK   c                 ó€  — | j                   j                  ||«      t        t        |j	                  «       t        j
                  «      | j                  |d||«      | j                  |d«      dœ}|d   t        j
                  k(  r*dj                  d„ |j                  d«      D «       «      |d<   t        «       }|j                  |j                  «      x}	r4|	d	   dk(  r,t        t        j                  d
dd¬«      |d<   |	d   |_        |S t        |j                  «      rt        t        j                   dd¬«      |d<   |S )Nr¯   rÉ  )r<  ÚtyperÝ   Úon_progressrî  Ú c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr#   )Útitle)r¸  Úxs     r,   rº  zES3ClientArgsCreator._default_get_make_request_args.<locals>.<genexpr>Ò  s   è ø€ ò :Ø�—‘—	ñ:ùs   ‚Ú_rV  r3   Ú*F)rÖ  r3   Úuse_double_uri_encodeÚshould_normalize_uri_pathÚsigning_configÚresource_name)rÖ  rö  r÷  )r¤  r  rJ  r   r«   ÚDEFAULTrÎ   r¡   rU   Ú_S3ArnParamHandlerÚ
handle_arnr�   r   r   ÚV4_ASYMMETRICr!   ÚV4_S3EXPRESS)
rm   rÓ   rÔ   r±   r×   rÄ  rÕ   râ  Úarn_handlerÚaccesspoint_arn_detailss
             r,   rÅ  z2S3ClientArgsCreator._default_get_make_request_args¹  s`  € ð ×/Ñ/×FÑFØ˜fóô Ü˜|×1Ñ1Ó3´]×5JÑ5Jóð ×,Ñ,Ø˜Ð 4Ð6Ióð  ×0Ñ0°¸ÓDñ
Ðð ˜VÑ$¬×(=Ñ(=Ò=Ø24·'±'ñ :Ø#/×#5Ñ#5°cÓ#:ô:ó 3ÐÐ.Ñ/ô )Ó*ˆà'2×'=Ñ'=¸i×>NÑ>NÓ'OÐOÐ#ÐOØ% hÑ/°2Ò5ô
 3CÜ-×;Ñ;ØØ&+Ø*/ô	3ÐÐ.Ñ/ð  7°ÑGˆIÔð !Ð ô ! ×!1Ñ!1Ô2ô 3CÜ-×:Ñ:Ø&+Ø*/ô3ÐÐ.Ñ/ð
 !Ð rK   r#   rÞ   )rà   rá   râ   r�  r»  rr   r±  rµ  r¯  rÏ   rÎ   rã  rì  rÅ  rt   rK   r,   rd   rd   ô  sR   „ à)Ñ+=Ø% zó,
ð Ðóò
ò2Pò(ò0
ð*  Øó$ò21!òf&!óP4!rK   rd   c                   ó   — e Zd Zd„ Zd„ Zy)ré  c                 ó<   — || _         || _        || _        || _        y r#   )rñ   Ú_final_filenameÚ_temp_filenamerb   )rm   r±   Úfinal_filenameÚtemp_filenamerp   s        r,   rr   zRenameTempFileHandler.__init__ñ  s!   € Ø'ˆÔØ-ˆÔØ+ˆÔØˆ�rK   c                 ól  — |d   }|r&| j                   j                  | j                  «       y 	 | j                   j                  | j                  | j                  «       y # t
        $ rJ}| j                   j                  | j                  «       | j                  j                  |«       Y d }~y d }~ww xY w)NrÇ   )rb   Úremove_filer  Úrename_filer  r»   rñ   rÒ   )rm   r¿   rÇ   rÜ   s       r,   r}  zRenameTempFileHandler.__call__÷  s�   € Ø�w‘ˆÙØ�L‰L×$Ñ$ T×%8Ñ%8Õ9ð3Ø—‘×(Ñ(Ø×'Ñ'¨×)=Ñ)=õøô ò 3Ø—‘×(Ñ(¨×)<Ñ)<Ô=à×!Ñ!×/Ñ/°×2Ñ2ûð3ús   ¯0A  Á 	B3Á)A B.Â.B3N©rà   rá   râ   rr   r}  rt   rK   r,   ré  ré  ð  s   „ òó3rK   ré  c                   ó   — e Zd Zd„ Zd„ Zy)rÌ   c                 ó   — || _         y r#   )rñ   r°   s     r,   rr   zAfterDoneHandler.__init__  s
   € Ø'ˆÕrK   c                 ó8   — | j                   j                  «        y r#   )rñ   r�  r¾   s     r,   r}  zAfterDoneHandler.__call__
  s   € Ø×Ñ×5Ñ5Õ7rK   Nr
  rt   rK   r,   rÌ   rÌ     s   „ ò(ó8rK   rÌ   c                   ó   — e Zd Zd„ Zd„ Zy)rê  c                 ó   — || _         y r#   )Ú_fileobj)rm   rƒ   s     r,   rr   zOnBodyFileObjWriter.__init__  s	   € Øˆ�rK   c                 ó:   — | j                   j                  |«       y r#   )r  Úwrite)rm   ro  r¿   s      r,   r}  zOnBodyFileObjWriter.__call__  s   € Ø�‰×Ñ˜EÕ"rK   Nr
  rt   rK   r,   rê  rê    s   „ ò ó#rK   rê  c                   óL   — e Zd ZdZ ej
                  d«      Zd„ Zd„ Zd„ Z	d„ Z
y)rû  a  Partial port of S3ArnParamHandler from botocore.

    This is used to make a determination on MRAP accesspoints for signing
    purposes. This should be safe to remove once we properly integrate auth
    resolution from Botocore into the CRT transfer integration.
    zA^(?P<resource_type>accesspoint|outpost)[/:](?P<resource_name>.+)$c                 ó"   — t        «       | _        y r#   )r   Ú_arn_parserru   s    r,   rr   z_S3ArnParamHandler.__init__"  s   € Ü$›;ˆÕrK   c                 ó@   — | j                  |«      }|€y |d   dk(  r|S y )NÚresource_typeÚaccesspoint)Ú_get_arn_details_from_bucket©rm   r�   Úarn_detailss      r,   rü  z_S3ArnParamHandler.handle_arn%  s3   € Ø×7Ñ7¸Ó?ˆØÐØØ�Ñ'¨=Ò8ØÐð 9rK   c                 ó~   — 	 | j                   j                  |«      }| j                  |«       |S # t        $ r Y y w xY wr#   )r  Ú	parse_arnÚ_add_resource_type_and_namer   r  s      r,   r  z/_S3ArnParamHandler._get_arn_details_from_bucket,  sF   € ð	Ø×*Ñ*×4Ñ4°VÓ<ˆKØ×,Ñ,¨[Ô9ØÐøÜ"ò 	ØØð	ús   ‚-0 °	<»<c                 ó–   — | j                   j                  |d   «      }|r)|j                  d«      |d<   |j                  d«      |d<   y y )Nrž   r  rù  )Ú_RESOURCE_REGEXr�   Úgroup)rm   r  r�   s      r,   r  z._S3ArnParamHandler._add_resource_type_and_name5  sK   € Ø×$Ñ$×*Ñ*¨;°zÑ+BÓCˆÙØ+0¯;©;°Ó+GˆK˜Ñ(Ø+0¯;©;°Ó+GˆK˜Ò(ð rK   N)rà   rá   râ   rì   ÚreÚcompiler   rr   rü  r  r  rt   rK   r,   rû  rû    s1   „ ñð !�b—j‘jØLó€Oò'òòóHrK   rû  r#   )KÚloggingr"  ri   Úcollectionsr   Úior   Úawscrt.httpr%   Ú	awscrt.s3Úbotocore.awsrequestrC  Úbotocore.sessionÚawscrt.authr   r   r   r   Ú	awscrt.ior	   r
   r   r   r   r   r   r   r   Úbotocore.compatr   Úbotocore.configr   Úbotocore.exceptionsr   Úbotocore.utilsr   r   Ús3transfer.constantsr   r   Ús3transfer.exceptionsr   Ús3transfer.futuresr   r   Ús3transfer.managerr   Ús3transfer.utilsr   r   r   r    r!   Ú	getLoggerrà   rN   r$   r-   rJ   r?   r]   r_   rÊ   rË   rý   r  rF  rr  rÉ   r�  rd   ré  rÌ   rê  rû  rt   rK   r,   ú<module>r7     s_  ðó Û 	Û Ý "Ý ã Û Û Û ÷ó ÷õ ÷ @Ñ ?Ý Ý $Ý "Ý 2ß 9ç >Ý 6ß CÝ .÷õ ð 
ˆ×	Ñ	˜8Ó	$€àÐ òð6 "ØØØ�"‰fØØóRójò$0÷Pñ Pôf"Ð&ô "ô*#BÐ*ô #B÷L?ñ ?ô&b,Ð#;ô b,ôJ�gô ÷*ñ *÷&F<ñ F<ñR  Ð 4°v¸}Ð6MÓNÐ ÷y!ñ y!÷x3ñ 3÷,8ñ 8÷#ñ #÷#Hò #HrK   