+
    ¶¬‚jæ]  ã                   óâ  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHtHtHtHtHtHtHtHt ^ RIHtHt ^ RIt^ RIt^ RIHt ^RIHtH t H!t!H"t"H#t#H$t$ ^R	I%H&t& ^R
I'H(t( ^RI)H*t*H+t+H,t,H-t- ^RIH.t.H/t/ ]P`                  ! ]Pb                  ! 4       R7      t2R R lt3R R lt4R R lt5R R lt6R R lt7R R lt8R R lt9R R lt:R R lt;R  R! lt< ! R" R#4      t=R# )$z�Communicate with the service. Only the Communicate class should be used by
end-users. The other classes and functions are for internal use only.N)Únullcontext)ÚTextIOWrapper©ÚQueue)ÚAsyncGeneratorÚContextManagerÚDictÚ	GeneratorÚListÚOptionalÚTupleÚUnion)ÚescapeÚunescape)ÚLiteral)ÚDEFAULT_VOICEÚMP3_BITRATE_BPSÚSEC_MS_GEC_VERSIONÚTICKS_PER_SECONDÚWSS_HEADERSÚWSS_URL)Ú	TTSConfig)ÚDRM)ÚNoAudioReceivedÚUnexpectedResponseÚUnknownResponseÚWebSocketError)ÚCommunicateStateÚTTSChunk)Úcafilec          	      ó€   € V ^8„  d   QhR\         R\        R\        \        \         \         3,          \         3,          /# )é   ÚdataÚheader_lengthÚreturn)ÚbytesÚintr   r   )Úformats   "ÚQ/Users/cheyod/AIGC/DSH/.venv/lib/python3.14/site-packages/edge_tts/communicate.pyÚ__annotate__r)   2   s7   € ÷ .ñ .Ü
ð.Ü #ð.ä
Œ4””u�ÕœuÐ$Õ%ñ.ó    c                óÈ   € \        V \        4      '       g   \        R4      h/ pV RV P                  R4       F  pVP                  R^4      w  rEWRV&   K  	  W V^,           R 3# )zÛ
Returns the headers and data from the given data.

Args:
    data (bytes): The data to be parsed.
    header_length (int): The length of the header.

Returns:
    tuple: The headers and data to be used in the request.
zdata must be bytesNs   
ó   :)Ú
isinstancer%   Ú	TypeErrorÚsplit)r"   r#   ÚheadersÚlineÚkeyÚvalues   &&    r(   Úget_headers_and_datar4   2   so   € ô �dœE×"Ò"ÜÐ,Ó-Ð-à€GØ�^�mÐ$×*Ñ*¨7Ö3ˆØ—Z‘Z  aÓ(‰
ˆØ�‹ñ 4ð ˜¨Õ*Ð,Ð-Ð-Ð-r*   c                óR   € V ^8„  d   QhR\         \        \        3,          R\        /# )r!   Ústringr$   )r   Ústrr%   )r'   s   "r(   r)   r)   J   s#   € ÷ ñ ¬5´´e°Õ+<ð Äñ r*   c                ó~  € \        V \        4      '       d   V P                  R4      p \        V \        4      '       g   \	        R4      h\        V 4      p\        V4       FK  w  r#\        V4      p^ Tu;8:  d   ^8:  g)   M ^Tu;8:  d   ^8:  g   M ^Tu;8:  d
   ^8:  g   KC  M KG  RW&   KM  	  RP                  V4      # )a/  
The service does not support a couple character ranges.
Most important being the vertical tab character which is
commonly present in OCR-ed PDFs. Not doing this will
result in an error from the service.

Args:
    string (str or bytes): The string to be cleaned.

Returns:
    str: The cleaned string.
úutf-8zstring must be str or bytesÚ Ú )	r-   r%   Údecoder7   r.   ÚlistÚ	enumerateÚordÚjoin)r6   ÚcharsÚidxÚcharÚcodes   &    r(   Úremove_incompatible_charactersrE   J   s˜   € ô �&œ%× Ò Ø—‘˜wÓ'ˆÜ�fœc×"Ò"ÜÐ5Ó6Ð6ä˜F“|€Eä˜uÖ%‰	ˆÜ˜“IˆØ�ŽN˜ŽN  dÖ 0¨bÖ 0°b¸DÖ6FÀB×6FÒ6FØˆE‹Jñ &ð
 �7‰7�5‹>Ðr*   c                ó$   € V ^8„  d   QhR\         /# ©r!   r$   ©r7   )r'   s   "r(   r)   r)   f   s   € ÷ ñ ”Cñ r*   c                 ó@   € \         P                  ! 4       P                  # )zJ
Returns a UUID without dashes.

Returns:
    str: A UUID without dashes.
)ÚuuidÚuuid4Úhex© r*   r(   Ú
connect_idrN   f   s   € ô �:Š:‹<×ÑÐr*   c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r!   ÚtextÚlimitr$   ©r%   r&   )r'   s   "r(   r)   r)   p   s!   € ÷ ñ ´5ð Äð Ìñ r*   c                ó`   € V P                  R^ V4      pV^ 8  d   V P                  R^ V4      pV# )aã  
Finds the index of the rightmost preferred split character (newline or space)
within the initial `limit` bytes of the text.

This helps find a natural word or sentence boundary for splitting, prioritizing
newlines over spaces.

Args:
    text (bytes): The byte string to search within.
    limit (int): The maximum index (exclusive) to search up to.

Returns:
    int: The index of the last found newline or space within the limit,
         or -1 if neither is found in that range.
ó   
ó    )Úrfind)rP   rQ   Úsplit_ats   && r(   Ú(_find_last_newline_or_space_within_limitrX   p   s4   € ð" �z‰z˜%  EÓ*€Hà�!„|Ø—:‘:˜d A uÓ-ˆØ€Or*   c                ó0   € V ^8„  d   QhR\         R\        /# )r!   Útext_segmentr$   rR   )r'   s   "r(   r)   r)   ˆ   s   € ÷ ñ ¬eð ¼ñ r*   c                óŽ   € \        V 4      pV^ 8”  d    V RV P                  R4       V# V#   \         d    T^,          p K7  i ; i)a×  
Finds the rightmost possible byte index such that the
segment `text_segment[:index]` is a valid UTF-8 sequence.

This prevents splitting in the middle of a multi-byte UTF-8 character.

Args:
    text_segment (bytes): The byte segment being considered for splitting.

Returns:
    int: The index of the safe split point. Returns 0 if no valid split
         point is found (e.g., if the first byte is part of a multi-byte
         sequence longer than the limit allows).
Nr9   )Úlenr<   ÚUnicodeDecodeError)rZ   rW   s   & r(   Ú_find_safe_utf8_split_pointr^   ˆ   sU   € ô �<Ó €HØ
�QŒ,ð	Ø˜˜(Ð#×*Ñ*¨7Ô3àˆOð
 €Oøô	 "ô 	à˜�M‹Hð	ús   ”, ¬AÁAc                ó<   € V ^8„  d   QhR\         R\        R\        /# )r!   rP   rW   r$   rR   )r'   s   "r(   r)   r)   ¤   s!   € ÷ ñ ¬Uð ¼cð Äcñ r*   c                óŠ   € V^ 8”  d<   RV RV 9   d2   V P                  R^ V4      pV P                  RW!4      R8w  d    V# TpKB  V# )aq  
Adjusts a proposed split point backward to prevent splitting inside an XML entity.

For example, if `text` is `b"this &amp; that"` and `split_at` falls between
`&` and `;`, this function moves `split_at` to the index before `&`.

Args:
    text (bytes): The text segment being considered.
    split_at (int): The proposed split point index, determined by whitespace
                    or UTF-8 safety.

Returns:
    int: The adjusted split point index. It will be moved to the '&'
         if an unterminated entity is detected right before the original `split_at`.
         Otherwise, the original `split_at` is returned.
ó   &Nó   ;éÿÿÿÿ)ÚrindexÚfind)rP   rW   Úampersand_indexs   && r(   Ú"_adjust_split_point_for_xml_entityrg   ¤   sS   € ð" �QŒ,˜4 4¨	¨ ?Ô2ØŸ+™+ d¨A¨xÓ8ˆà�9‰9�T˜?Ó5¸Ô;àð
 €Oð #Šà€Or*   c          	      óz   € V ^8„  d   QhR\         \        \        3,          R\        R\        \        RR3,          /# )r!   rP   Úbyte_lengthr$   N)r   r7   r%   r&   r	   )r'   s   "r(   r)   r)   Â   s>   € ÷ Bñ BÜ
””U�
Õ
ðBÜ*-ðBäŒu�d˜DÐ Õ!ñBr*   c              #  óî  "  € \        V \        4      '       d   V P                  R4      p \        V \        4      '       g   \	        R4      hV^ 8:  d   \        R4      h\        V 4      V8”  di   \        W4      pV^ 8  d   \        V 4      p\        W4      pV^ 8  d   \        R4      hV RV P                  4       pV'       d   Vx € Y^ 8”  d   TM^R p Kx  V P                  4       pV'       d   Vx € R# R# 5i)a¼  
Splits text into chunks, each not exceeding a maximum byte length.

This function prioritizes splitting at natural boundaries (newlines, spaces)
while ensuring that:
1. No chunk exceeds `byte_length` bytes.
2. Chunks do not end with an incomplete UTF-8 multi-byte character.
3. Chunks do not split XML entities (like `&amp;`) in the middle.

Args:
    text (str or bytes): The input text. If str, it's encoded to UTF-8.
    byte_length (int): The maximum allowed byte length for any yielded chunk.
                       Must be positive.

Yields:
    bytes: Text chunks (UTF-8 encoded, stripped of leading/trailing whitespace)
           that conform to the byte length and integrity constraints.

Raises:
    TypeError: If `text` is not str or bytes.
    ValueError: If `byte_length` is not positive, or if a split point
                cannot be determined (e.g., due to extremely small byte_length
                relative to character/entity sizes).
r9   ztext must be str or bytesz"byte_length must be greater than 0zTMaximum byte length is too small or invalid text structure near '&' or invalid UTF-8N)r-   r7   Úencoder%   r.   Ú
ValueErrorr\   rX   r^   rg   Ústrip)rP   ri   rW   ÚchunkÚremaining_chunks   &&   r(   Úsplit_text_by_byte_lengthrp   Â   sì   é € ô6 �$œ×ÒØ�{‰{˜7Ó#ˆÜ�dœE×"Ò"ÜÐ3Ó4Ð4à�aÔÜÐ=Ó>Ð>ä
ˆd‹)�kÔ
!ä;¸DÓNˆà�aŒ<ä2°4Ó8ˆHô 6°dÓEˆà�aŒ<ô ðCóð ð �Y�h�×%Ñ%Ó'ˆßØŠKð ¨1¤‘H°!Ð5Ð6Šð —j‘j“l€OßØÔñ ùs   ‚B?C5Ã*C5Ã-C5c                ó^   € V ^8„  d   QhR\         R\        \        \        3,          R\        /# )r!   ÚtcÚescaped_textr$   )r   r   r7   r%   )r'   s   "r(   r)   r)     s*   € ÷ ñ Œyð ¬¬c´5¨jÕ(9ð ¼cñ r*   c                óÄ   € \        V\        4      '       d   VP                  R4      pRV P                   RV P                   RV P
                   RV P                   RV R2# )zß
Creates a SSML string from the given parameters.

Args:
    tc (TTSConfig): The TTS configuration.
    escaped_text (str or bytes): The escaped text. If bytes, it must be UTF-8 encoded.

Returns:
    str: The SSML string.
r9   z_<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='en-US'><voice name='z'><prosody pitch='z' rate='z
' volume='z'>z</prosody></voice></speak>)r-   r%   r<   ÚvoiceÚpitchÚrateÚvolume)rr   rs   s   &&r(   Úmkssmlry     sg   € ô �,¤×&Ò&Ø#×*Ñ*¨7Ó3ˆð	ØŸ™�zð "ØŸ8™8˜* H¨R¯W©W¨I°ZÀÇ	Á	¸{È"Øˆ.ð	ð		ðr*   c                ó$   € V ^8„  d   QhR\         /# rG   rH   )r'   s   "r(   r)   r)      s   € ÷ ñ œñ r*   c                 óV   € \         P                  ! R\         P                  ! 4       4      # )zW
Return Javascript-style date string.

Returns:
    str: Javascript-style date string.
z:%a %b %d %Y %H:%M:%S GMT+0000 (Coordinated Universal Time))ÚtimeÚstrftimeÚgmtimerM   r*   r(   Údate_to_stringr      s    € ô �=Š=ØDÄdÇkÂkÃmóð r*   c                óH   € V ^8„  d   QhR\         R\         R\         R\         /# )r!   Ú
request_idÚ	timestampÚssmlr$   rH   )r'   s   "r(   r)   r)   0  s(   € ÷ ñ ¤sð ´sð Ä#ð Ì#ñ r*   c                ó   € RV  RV RV 2# )z|
Returns the headers and data to be used in the request.

Returns:
    str: The headers and data to be used in the request.
zX-RequestId:z1
Content-Type:application/ssml+xml
X-Timestamp:zZ
Path:ssml

rM   )r�   r‚   rƒ   s   &&&r(   Ússml_headers_plus_datar…   0  s)   € ð �z�lð #à �kð "àˆ&ð		ðr*   c                   óæ   a € ] tR tRt o Rt]3RRRRRRRR	R
RRRR^
R^</V 3R lR llltV 3R lR ltV 3R lR ltV 3R lR lt	V 3R lR lt
R V 3R lR lltV 3R lR ltR V 3R lR lltRtV tR# )!ÚCommunicateiA  z
Communicate with the service.
rw   z+0%rx   rv   z+0HzÚboundaryÚSentenceBoundaryÚ	connectorNÚproxyÚconnect_timeoutÚreceive_timeoutc                ó¸   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ RS[ RS[R,          RS[S[P                  ,          RS[S[ ,          R	S[S[,          R
S[S[,          /
# )r!   rP   ru   rw   rx   rv   rˆ   rŠ   r‹   rŒ   r�   ©ÚWordBoundaryr‰   )r7   r   r   ÚaiohttpÚBaseConnectorr&   )r'   Ú__classdict__s   "€r(   r)   ÚCommunicate.__annotate__G  sŒ   ø€ ÷ 9
ñ 9
áð9
ñ ð9
ñ
 ð9
ñ ð9
ñ ð9
ñ Ð<Õ=ð9
ñ ™G×1Ñ1Õ2ð9
ñ ™�}ð9
ñ "¡#�ð9
ñ "¡#�ñ9
r*   c               óZ  € \        W#WEV4      V n        \        V\        4      '       g   \	        R 4      h\        \        \        V4      4      R4      V n        Ve"   \        V\        4      '       g   \	        R4      hW€n	        \        V	\        4      '       g   \	        R4      h\        V
\        4      '       g   \	        R4      h\        P                  ! RRV	V
R7      V n        Ve,   \        V\        P                  4      '       g   \	        R4      hWpn        RR	R
^ R^ RRR^ R^ /V n        R# )ztext must be stri   Nzproxy must be strzconnect_timeout must be intzreceive_timeout must be int)ÚtotalÚconnectÚsock_connectÚ	sock_readz'connector must be aiohttp.BaseConnectorÚpartial_textr*   Úoffset_compensationÚlast_duration_offsetÚstream_was_calledFÚchunk_audio_bytesÚcumulative_audio_bytes)r   Ú
tts_configr-   r7   r.   rp   r   rE   Útextsr‹   r&   r‘   ÚClientTimeoutÚsession_timeoutr’   rŠ   Ústate)ÚselfrP   ru   rw   rx   rv   rˆ   rŠ   r‹   rŒ   r�   s   &&&$$$$$$$$r(   Ú__init__ÚCommunicate.__init__G  s  € ô $ E°ÀÓIˆŒô ˜$¤×$Ò$ÜÐ.Ó/Ð/ô /ÜÔ1°$Ó7Ó8Øó
ˆŒ
ð Ò¤Z°´s×%;Ò%;ÜÐ/Ó0Ð0Ø$)Œ
ô ˜/¬3×/Ò/ÜÐ9Ó:Ð:Ü˜/¬3×/Ò/ÜÐ9Ó:Ð:Ü&×4Ò4ØØØ(Ø%ô	 
ˆÔð Ò ¬°I¼w×?TÑ?T×)UÒ)UÜÐEÓFÐFØ:CŒð ˜CØ! 1Ø" AØ Ø Ø$ að(
ˆŽ
r*   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r!   r"   r$   )r%   r   )r'   r“   s   "€r(   r)   r”   ‚  s   ø€ ÷ Cñ C¡Uð C©xñ Cr*   c                ón  € \         P                  ! V4      R ,           FŠ  pVR,          pVR9   dc   VR,          R,          V P                  R,          ,           pVR,          R,          pRVRVRVR	\        VR,          R	,          R
,          4      /u # VR9   d   K~  \	        RV 24      h	  \        R4      h)ÚMetadataÚTypeÚDataÚOffsetr›   ÚDurationÚtypeÚoffsetÚdurationrP   ÚTextzUnknown metadata type: zNo WordBoundary metadata foundr�   )Ú
SessionEnd)ÚjsonÚloadsr¤   r   r   r   )r¥   r"   Úmeta_objÚ	meta_typeÚcurrent_offsetÚcurrent_durations   &&    r(   Ú__parse_metadataÚCommunicate.__parse_metadata‚  sÄ   € ÜŸ
š
 4Ó(¨×4Ð4ˆHØ  Õ(ˆIØÐ@Ô@à˜VÕ$ XÕ.°·±Ð<QÕ1RÕRð ð $,¨FÕ#3°JÕ#?Ð à˜IØ˜nØÐ 0ØœH X¨fÕ%5°fÕ%=¸fÕ%EÓFð	ò ð ˜OÔ+ÙÜ!Ð$;¸I¸;Ð"GÓHÐHñ 5ô  !Ð!AÓBÐBr*   c                ó   <€ V ^8„  d   QhRR/# ©r!   r$   NrM   )r'   r“   s   "€r(   r)   r”   •  s   ø€ ÷ ,ñ , Tñ ,r*   c                óþ   € V P                   R;;,          V P                   R,          ,          uu&   V P                   R,          ^,          \        ,          \        ,          V P                   R&   ^ V P                   R&   R# )a¯  Update inter-chunk offset_compensation from cumulative CBR audio bytes.

The output format is audio-24khz-48kbitrate-mono-mp3 (48 kbps CBR).
For any CBR stream the byte-to-tick conversion is exact integer
arithmetic:  ticks = total_bytes * 8 * 10_000_000 // 48_000.

This replaces the previous metadata-based accumulation which drifted
on long texts due to variable AI silence and Microsoft's integer
overflow in reported offsets.
rŸ   rž   r›   N)r¤   r   r   )r¥   s   &r(   Ú__compensate_offsetÚCommunicate.__compensate_offset•  sj   € ð 	�
‰
Ð+×,°·
±
Ð;NÕ0OÕOÓ,à�J‰JÐ/Õ0Øõäõô õð 	�
‰
Ð(Ñ)ð +,ˆ�
‰
Ð&Ó'r*   c                ó4   <€ V ^8„  d   QhRS[ S[R3,          /# r½   ©r   r   )r'   r“   s   "€r(   r)   r”   ©  s    ø€ ÷ Kñ K¡©x¸¨~Õ >ñ Kr*   c               óT  a a"  € R  V V3R llpR V V3R llpRp\         P                  ! S P                  RS P                  R7      ;_uu_4       GRj  x€L
 qDP	                  \
         R\        4        R	\        P                  ! 4        R
\         2^S P                  \        P                  ! \        4      \        R7      ;_uu_4       GRj  x€L
 oV! 4       G Rj  x€L
  V! 4       G Rj  x€L
  S  Rj  x€L
  pVP                  \         P                  P                   8X  d»   VP"                  P%                  R4      p\'        WfP)                  R4      4      w  rxVP+                  RR4      p	V	R8X  d=   S P-                  V4      p
V
5x € V
R,          V
R,          ,           S P.                  R&   K¿  V	R8X  d   S P1                  4         EMØV	R%9  d   \3        R4      hKí  VP                  \         P                  P4                  8X  EdB   \7        VP"                  4      ^8  d   \9        R4      h\:        P=                  VP"                  R,          R4      pV\7        VP"                  4      8”  d   \9        R4      h\'        VP"                  V4      w  rxVP+                  R4      R8w  d   \9        R4      hVP+                  RR4      pVR&9  d   \9        R4      hVf   \7        V4      ^ 8X  d   EKü  \9        R4      h\7        V4      ^ 8X  d   \9        R4      hRpS P.                  R;;,          \7        V4      ,          uu&   R R!R"V/5x € EKX  VP                  \         P                  P>                  8X  g   EK„  \A        VP"                  '       d   VP"                  4      hR#4      hV'       g   \C        R$4      hRRR4      GRj  x€L
  RRR4      GRj  x€L
  R#  EL… EL EL ELö ELîEDðLG L(  + GRj  x€L 
 '       g   i     L?; i L6  + GRj  x€L 
 '       g   i     R# ; i5i)'c                ó   € V ^8„  d   QhRR/# r½   rM   )r'   s   "r(   r)   Ú*Communicate.__stream.<locals>.__annotate__ª  s   € ÷ 	ñ 	¨Dñ 	r*   c            	   “  óÌ   <"  € SP                   P                  R8H  p V '       d   RMRpV '       g   RMRpSP                  R\        4        RV RV R24      G Rj  x€L
  R#  L5i)	z)Sends the command request to the service.r�   ÚtrueÚfalsezX-Timestamp:z–
Content-Type:application/json; charset=utf-8
Path:speech.config

{"context":{"synthesis":{"audio":{"metadataoptions":{"sentenceBoundaryEnabled":"z","wordBoundaryEnabled":"z9"},"outputFormat":"audio-24khz-48kbitrate-mono-mp3"}}}}
N)r    rˆ   Úsend_strr   )Úword_boundaryÚwdÚsqr¥   Ú	websockets      €€r(   Úsend_command_requestÚ2Communicate.__stream.<locals>.send_command_requestª  sm   øé € à ŸO™O×4Ñ4¸ÑFˆMß(‘¨gˆBß,‘°'ˆBØ×$Ñ$Øœ~Ó/Ð0ð 1.ð /1¨TÐ1JÈ2È$ð Oð	ó	÷ 	ô 	ùs   ƒ-A$±*A$ÁA"ÁA$c                ó   € V ^8„  d   QhRR/# r½   rM   )r'   s   "r(   r)   rÅ   º  s   € ÷ 	ñ 	¨ñ 	r*   c               “  óÆ   <"  € SP                  \        \        4       \        4       \	        S P
                  S P                  R,          4      4      4      G Rj  x€L
  R#  L5i)z&Sends the SSML request to the service.rš   N)rÉ   r…   rN   r   ry   r    r¤   )r¥   rÍ   s   €€r(   Úsend_ssml_requestÚ/Communicate.__stream.<locals>.send_ssml_requestº  sL   øé € à×$Ñ$Ü&Ü“LÜ"Ó$ÜØŸ™ØŸ
™
 >Õ2óóó	÷ 	ô 	ùs   ƒAA!ÁAÁA!FT)rŠ   Ú	trust_envÚtimeoutNz&ConnectionId=z&Sec-MS-GEC=z&Sec-MS-GEC-Version=)Úcompressr‹   r0   Ússlr9   s   

s   Paths   audio.metadatar°   r±   rœ   s   turn.endzUnknown path receivedzBWe received a binary message, but it is missing the header length.:Nr!   NÚbigz9The header length is greater than the length of the data.s   audioz3Received binary message, but the path is not audio.s   Content-Typez=Received binary message, but with an unexpected Content-Type.z<Received binary message with no Content-Type, but with data.z:Received binary message, but it is missing the audio data.rž   r¯   Úaudior"   zUnknown errorzFNo audio was received. Please verify that your parameters are correct.)s   responses
   turn.start)s
   audio/mpegN)"r‘   ÚClientSessionrŠ   r£   Ú
ws_connectr   rN   r   Úgenerate_sec_ms_gecr   r‹   Úheaders_with_muidr   Ú_SSL_CTXr¯   Ú	WSMsgTypeÚTEXTr"   rk   r4   re   ÚgetÚ_Communicate__parse_metadatar¤   Ú_Communicate__compensate_offsetr   ÚBINARYr\   r   r&   Ú
from_bytesÚERRORr   r   )r¥   rÎ   rÒ   Úaudio_was_receivedÚsessionÚreceivedÚencoded_dataÚ
parametersr"   ÚpathÚparsed_metadatar#   Úcontent_typerÍ   s   f            @r(   Ú__streamÚCommunicate.__stream©  s´  ùé € ÷	ñ 	÷ 	ñ 	ð  #Ðô ×(Ò(Ø—n‘nØØ×(Ñ(÷
÷ 
õ 
ð ×(Ñ(Üˆi�~¤j£l ^Øœ3×2Ò2Ó4Ð5Ø"Ô#5Ð"6ð8ð Ø—*‘*Ü×)Ò)¬+Ó6Üð )÷ 
÷ 
ô 
ð Ù&Ó(×(Ð(á#Ó%×%Ð%á"+÷ Qð Q�hØ—=‘=¤G×$5Ñ$5×$:Ñ$:Ô:Ø*2¯-©-×*>Ñ*>¸wÓ*G�LÜ';Ø$×&7Ñ&7¸Ó&Dó(Ñ$�Jð &Ÿ>™>¨'°4Ó8�DØÐ0Ô0à*.×*?Ñ*?ÀÓ*E˜Ø-Ó-ð ,¨HÕ5¸È
Õ8SÕSð Ÿ
™
Ð#9Ó:ð  Ô,ð ×0Ñ0Ô2ÚØÐ%AÔAÜ-Ð.EÓFÐFñ Bà—]‘]¤g×&7Ñ&7×&>Ñ&>Õ>ä˜8Ÿ=™=Ó)¨AÔ-Ü0Ø`óð ô
 %(§N¡N°8·=±=ÀÕ3DÀeÓ$L�MØ$¤s¨8¯=©=Ó'9Ô9Ü0ØWóð ô
 (<Ø Ÿ™ }ó(Ñ$�Jð
 "—~‘~ gÓ.°(Ô:Ü0ØQóð ð $.§>¡>°/À4Ó#H�LØ#Ð+@Ô@Ü0Ø[óð ð
 $Ò+Ü˜t›9¨œ>Ú$ô 1ØZóð ô
 ˜4“y A”~Ü0ØXóð ð
 *.Ð&Ø—J‘JÐ2×3´s¸4³yÕ@Ó3Ø! 7¨F°DÐ9Ö9Ø—]‘]¤g×&7Ñ&7×&=Ñ&=×=Ü(Ø)1¯¯¨˜Ÿ™óð Ø<Kóð ÷ &Ü%Ø\óð ÷C
÷ 
÷	
÷ 
ô 
ò
ò )â%òQ¢)÷
÷ 
÷ 
ò 
ú÷	
÷ 
÷ 
ó 
üsò   „AP(ÁOÁP(ÁA6PÃOÃPÃO-	ÃOÃO-	Ã,O"Ã-O-	Ã3O(
Ã7O%Ã8O(
Ã;I6O-	Í74O-	Î,O-	Î7PÏO+ÏPÏP(ÏP	ÏP(ÏPÏO-	Ï"O-	Ï%O(
Ï(O-	Ï+PÏ-PÏ3O6Ï4
PÏ?PÐPÐ	P(ÐP%	ÐPÐ
P%	ÐP%	Ð	P(c                ó4   <€ V ^8„  d   QhRS[ S[R3,          /# r½   rÂ   )r'   r“   s   "€r(   r)   r”   6  s   ø€ ÷ "ñ "á	™ $˜Õ	'ñ"r*   c               ó  "  € V P                   R,          '       d   \        R4      hRV P                   R&   V P                   F?  V P                   R&   ^ V P                   R&    V P                  4         Rj  x€L
  pV5x € K  	  R#  LDKJ    \        P
                   df   pTP                  R8w  d   h \        P                  ! T4       ^ T P                   R&   T P                  4         Rj  x€L 
  pT5x € K  D Rp?K¿  Rp?ii ; i5i)a=  
Streams audio and metadata from the service.

Raises:
    NoAudioReceived: If no audio is received from the service.
    UnexpectedResponse: If the response from the service is unexpected.
    UnknownResponse: If the response from the service is unknown.
    WebSocketError: If there is an error with the websocket.
r�   zstream can only be called once.Trš   rž   Ni“  )	r¤   ÚRuntimeErrorr¡   Ú_Communicate__streamr‘   ÚClientResponseErrorÚstatusr   Úhandle_client_response_error)r¥   ÚmessageÚes   &  r(   ÚstreamÚCommunicate.stream6  sß   é € ð �:‰:Ð)×*Ô*ÜÐ@ÓAÐAØ*.ˆ�
‰
Ð&Ñ'ð +/¯*¬*ˆD�J‰J�~Ñ&Ø./ˆD�J‰JÐ*Ñ+ð
"Ø%)§]¡]¤_÷ "ð "˜'Ø!•Mó	 +5ñ"¢_øä×.Ñ.ô "Ø—8‘8˜s”?Øä×0Ò0°Ô3Ø23�—
‘
Ð.Ñ/Ø%)§]¡]¤_÷ "ñ "˜'Ø!•Mö &5ûð"üss   ‚AD	Á"BÁ2B	Á6BÁ7B	Á:	BÂD	ÂB	Â	BÂ
D	ÂDÂ!ADÃ(C:Ã,C/
Ã-C:Ã1
DÃ;D	ÄDÄD	c                óf   <€ V ^8„  d   QhRS[ S[S[3,          RS[S[ S[S[3,          ,          RR/# ©r!   Úaudio_fnameÚmetadata_fnamer$   N©r   r7   r%   r   )r'   r“   s   "€r(   r)   r”   W  s@   ø€ ÷ )ñ )á™3¡˜:Õ&ð)ñ !¡¡s©E zÕ!2Õ3ð)ð 
ñ	)r*   c           	   ƒ  ó$  "  € Ve   \        VRRR7      M	\        4       pT;_uu_ 4        \        VR4      ;_uu_ 4       pV P                  4         Rj  x€L
  pVR,          R8X  d   VP                  VR,          4       K2  \	        V\
        4      '       g   KJ  VR,          R
9   g   KZ  \        P                  ! WS4       VP                  R	4       Kƒ   L~D RRR4       M  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i5i)z5
Save the audio and metadata to the specified files.
NÚwr9   )ÚencodingÚwbr¯   rÙ   r"   Ú
r�   )Úopenr   rú   Úwriter-   r   r´   Údump)r¥   rþ   rÿ   ÚmetadatarÙ   rø   s   &&&   r(   ÚsaveÚCommunicate.saveW  sÁ   é € ð Ò)ô � ¨wÕ7ä“ð 	÷
 ŠX”t˜K¨×.Ô.°%Ø!%§¡¤÷ )ð )�gØ˜6•? gÔ-Ø—K‘K ¨¥Ö0Ü ¬-×8Ô8¸WÀV½_ð Qö >ô —I’I˜gÔ0Ø—N‘N 4Ö(ñ)¡÷ /×.×.Ð.ú�X�X�XŠXüsc   ‚'D©C<¾C	ÁC
ÁCÁC
Á=C	ÂC	Â))C	ÃC
ÃC	Ã	C<ÃC/Ã*C<Ã2
DÃ<D	Ä	Dc                ó6   <€ V ^8„  d   QhRS[ S[RR3,          /# r½   )r	   r   )r'   r“   s   "€r(   r)   r”   o  s    ø€ ÷ ñ ™Y¡x°°tÐ';Õ<ñ r*   c              #  ó  a "  € R V 3R llp\        4       p\        P                  P                  4       ;_uu_ 4       pVP	                  W4        VP                  4       pVf   MVx € K  RRR4       R#   + '       g   i     R# ; i5i)z-Synchronous interface for async stream methodc                ó(   € V ^8„  d   QhR\         RR/# )r!   Úqueuer$   Nr   )r'   s   "r(   r)   Ú-Communicate.stream_sync.<locals>.__annotate__r  s   € ÷ 		ñ 		¤Uð 		¨tñ 		r*   c                 óÀ   <a € R  V V3R llp\         P                  ! 4       p\         P                  ! V4       VP                  V! 4       4       VP	                  4        R# )c                ó   € V ^8„  d   QhRR/# r½   rM   )r'   s   "r(   r)   ÚHCommunicate.stream_sync.<locals>.fetch_async_items.<locals>.__annotate__s  s   € ÷  ñ   Tñ  r*   c               “   ó’   <"  € SP                  4         R j  x€L
  p SP                  V 4       K   LDSP                  R 4       R # 5i©N)rú   Úput)Úitemr  r¥   s    €€r(   Ú	get_itemsÚECommunicate.stream_sync.<locals>.fetch_async_items.<locals>.get_itemss  s8   øé € Ø"&§+¡+¤-÷ $ð $˜$Ø—I‘I˜d–Oñ$ -à—	‘	˜$–ùs   ƒA”3˜1™3œA±3³AN)ÚasyncioÚnew_event_loopÚset_event_loopÚrun_until_completeÚclose)r  r  Úloopr¥   s   f  €r(   Úfetch_async_itemsÚ2Communicate.stream_sync.<locals>.fetch_async_itemsr  sD   ù€ ÷ ñ  ô
 ×)Ò)Ó+ˆDÜ×"Ò" 4Ô(Ø×#Ñ#¡I£KÔ0Ø�J‰JŽLr*   N)r   Ú
concurrentÚfuturesÚThreadPoolExecutorÚsubmitrá   )r¥   r   r  Úexecutorr  s   f    r(   Ústream_syncÚCommunicate.stream_synco  sf   øé € ÷		ð 		ô “wˆä×Ñ×2Ñ2×4Ô4¸Ø�O‰OÐ-Ô5àØ—y‘y“{�Ø’<ØØ”
÷ 5×4×4Ò4üs   ƒ:B	½.A5Á+
B	Á5B	Â 	B	c                óf   <€ V ^8„  d   QhRS[ S[S[3,          RS[S[ S[S[3,          ,          RR/# rý   r   )r'   r“   s   "€r(   r)   r”   ˆ  s@   ø€ ÷ 
ñ 
á™3¡˜:Õ&ð
ñ !¡¡s©E zÕ!2Õ3ð
ð 
ñ	
r*   c           	     ó
  € \         P                  P                  4       ;_uu_ 4       pVP                  \        P
                  V P                  W4      4      pVP                  4        RRR4       R#   + '       g   i     R# ; i)z,Synchronous interface for async save method.N)r"  r#  r$  r%  r  Úrunr
  Úresult)r¥   rþ   rÿ   r&  Úfutures   &&&  r(   Ú	save_syncÚCommunicate.save_syncˆ  sU   € ô ×Ñ×2Ñ2×4Ô4¸Ø—_‘_Ü—‘˜TŸY™Y {ÓCóˆFð �M‰MŒO÷	 5×4×4Ò4ús   §A A1Á1B	)rŠ   r‹   r£   r¤   r¡   r    r  )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r¦   râ   rã   rô   rú   r
  r'  r.  Ú__static_attributes__Ú__classdictcell__)r“   s   @r(   r‡   r‡   A  s½   ø‡ € ñð #ñ9
ð
 ð9
ð ð9
ð ð9
ð ASð9
ð 6:ð9
ð  $ð9
ð *,ð9
ð *,÷9
ó 9
÷vCð C÷&,ð ,÷(Kð K÷Z"ð "÷B)ò )÷0ð ÷2
÷ 
ð 
r*   r‡   )>r4  r  Úconcurrent.futuresr"  r´   r×   r|   rJ   Ú
contextlibr   Úior   r  r   Útypingr   r   r   r	   r
   r   r   r   Úxml.sax.saxutilsr   r   r‘   ÚcertifiÚtyping_extensionsr   Ú	constantsr   r   r   r   r   r   Údata_classesr   Údrmr   Ú
exceptionsr   r   r   r   r   r   Úcreate_default_contextÚwhererÞ   r4   rE   rN   rX   r^   rg   rp   ry   r   r…   r‡   rM   r*   r(   Ú<module>rD     s¼   ðñIó Û Û Û 
Û Û Ý "Ý Ý ÷	÷ 	ó 	÷ .ã Û Ý %÷÷ õ $Ý ÷ó ÷ /à×%Ò%¨W¯]ª]«_Ô=€õ.õ0õ8õõ0õ8õ<BõJõ2õ ÷"Qó Qr*   