
    MhH                     ,   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r
S SKrS SKrS SKJs  Jr  S SKJr  S SKJrJrJrJrJrJrJrJrJr  S SKJr  S r\R@                  " / SQS9S 5       r! " S S	5      r" " S
 S5      r# " S S5      r$g)    N)IS64)		DataFrameDatetimeIndexIndexNaTPeriodIndexSeries	Timedelta	Timestamp
date_rangec                 l    U R                  5        VVs0 s H  u  p[        U5      U_M     snn$ s  snnf )z
Sanitize dictionary for JSON by converting all keys to strings.

Parameters
----------
d : dict
    The dictionary to convert.

Returns
-------
cleaned_dict : dict
)itemsstr)dkvs      Q/var/www/html/env/lib/python3.13/site-packages/pandas/tests/io/json/test_ujson.py_clean_dictr       s,     #$''),)$!CFAI),,,s   0)Nsplitrecordsvaluesindex)paramsc                     U R                   $ N)param)requests    r   orientr   0   s     ==    c                      \ rS rSr\R
                  R                  \(       + SS9S 5       r\R
                  R                  SSS/5      S 5       r
\R
                  R                  S	/ S
Q5      S 5       rS rS rS r\R
                  R                  SSS/5      S 5       r\R
                  R                  S\R"                  \R"                  * /5      S 5       rS rS rS rS r\R
                  R                  S/ SQ5      S 5       rS r\R
                  R                  SSS/5      S  5       rS! rS" rS# rS$ rS% rS& r\R
                  R                  S'/ S(Q5      S) 5       r S* r!S+ r"\R
                  R                  S,/ S-Q5      S. 5       r#S/ r$S0 r%\R
                  R                  S1\&RN                  " 5       \&RN                  " S2S3S45      \&RN                  " S5S6S7S85      /5      S9 5       r(S: r)S; r*\R
                  R                  S<\+\,RZ                  " S=5      \,R\                  \,R^                  \,R^                  * /5      S> 5       r0S? r1S@ r2SA r3SB r4SC r5\R
                  R                  SD/ SEQ5      SF 5       r6\R
                  R                  SGSHSI/5      SJ 5       r7\R
                  R                  SK/ SLQ5      SM 5       r8\R
                  R                  SN/ SOQ5      SP 5       r9\R
                  R                  SQ/ SRQ5      SS 5       r:\R
                  R                  STSUSV/5      SW 5       r;SX r<SY r=SZ r>\R
                  R                  S[S\S]/5      S^ 5       r?\R
                  R                  S_S`Sa/5      Sb 5       r@\R
                  R                  Sc/ SdQ5      Se 5       rASf rB\R
                  R                  Sg/ ShQ5      Si 5       rCSj rDSk rESl rFSm rGSn rHSo rISprJgq)rTestUltraJSONTests7   z$not compliant on 32-bit, xref #15865)reasonc                    [         R                  " S5      n[        R                  " USS9n[        R                  " U5      nUS:X  d   e[         R                  " S5      n[        R                  " USS9nUS:X  d   e[        R                  " U5      nUS:X  d   e[         R                  " S	5      n[        R                  " USS9nUS
:X  d   e[        R                  " U5      nUS:X  d   e[         R                  " S5      n[        R                  " USS9nUS:X  d   e[        R                  " U5      nUS:X  d   e[         R                  " S5      n[        R                  " USS9nUS:X  d   e[        R                  " U5      nUS:X  d   e[         R                  " S5      n[        R                  " USS9nUS:X  d   e[        R                  " U5      nUS:X  d   e[         R                  " S5      n[        R                  " USS9nUS:X  d   e[        R                  " U5      nUS:X  d   e[         R                  " S5      n[        R                  " USS9nUS:X  d   e[        R                  " U5      nUS:X  d   eg )Nz	1337.1337   double_precisiong@z0.95   1.0      ?z0.94z0.9g?z1.95z2.0g       @z-1.95z-2.0g       z0.995   z0.9995   z0.99999999999999944)decimalDecimalujsonujson_dumpsujson_loadsselfsutencodeddecodeds       r   test_encode_decimal&TestUltraJSONTests.test_encode_decimal8   sG   ook*##C"=##G,)###oof%##C!<%##G,#~~oof%##C!<%##G,#~~oof%##C!<%##G,#~~oog&##C!<&   ##G,$oog&##C!<%##G,#~~ooh'##C!<%##G,#~~oo34##C"=%##G,#~~r   ensure_asciiTFc                 N   ^^ SmSnSnUU4S jnU" U5        U" USS9  U" USS9  g )Nz"A string \ /   
  	 </script> &z,"A string \\ \/ \b \f \n \r \t <\/script> &"z;"A string \\ \/ \b \f \n \r \t \u003c\/script\u003e \u0026"c                    > [         R                  " T4ST0UD6nX :X  d   eT[        R                  " U5      :X  d   eT[         R                  " U5      :X  d   eg )Nr9   r/   r0   jsonloadsr1   )expected_outputencode_kwargsoutputr9   string_inputs      r   helper@TestUltraJSONTests.test_encode_string_conversion.<locals>.helperx   sd    &&+7;HF ,,,4::f#55555#4#4V#<<<<r   F)encode_html_charsT )r3   r9   not_html_encodedhtml_encodedrC   rB   s    `   @r   test_encode_string_conversion0TestUltraJSONTests.test_encode_string_conversionp   s?    ARU 		= 	  	59 	|t4r   long_number)lZ:`7{ g#_tgԟpAc                 p    SU0n[         R                  " USS9n[         R                  " U5      nX$:X  d   eg )Nar%   r&   r/   r0   r1   )r3   rK   r4   r5   r6   s        r   test_double_long_numbers+TestUltraJSONTests.test_double_long_numbers   s:     K ##C"=##G,~~r   c                 h   [         R                  nS H  n[        R                  " X!5      (       d  M   [        R                  " X!5         [
        R                  " [
        R                  " S5      5      S:X  d   e[
        R                  " SSS9S:X  d   e S S S 5          g    g ! , (       d  f       N= f)N)zit_IT.UTF-8Italian_ItalygˇLz4.78Tprecise_floatgQ@)locale
LC_NUMERICtmcan_set_locale
set_localer/   r1   r0   )r3   lc_category
new_locales      r   test_encode_non_c_locale+TestUltraJSONTests.test_encode_non_c_locale   s    '' ;J  99]]:; ,,U->->w-GHGSSS ,,V4HDPPP <  ;;;s   	AB##
B1	c                 p    SS0n[         R                  " U5      n[         R                  " USS9nX:X  d   eg )NrM   g=
ףp=@TrS   rN   r2   s       r    test_decimal_decode_test_precise3TestUltraJSONTests.test_decimal_decode_test_precise   s7    Dk##C(##G4@~~r   c                    SnU[         R                  " [         R                  " U5      5      :X  d   eSnU[         R                  " [         R                  " U5      5      :X  d   eSnU[         R                  " [         R                  " U5      5      :X  d   eSn[        R                  " U[         R                  " [         R                  " U5      5      5      (       d   eg )NgWw'&l7g0.++gj7֖g?>ӡ)r/   r1   r0   npallclose)r3   nums     r   #test_encode_double_tiny_exponential6TestUltraJSONTests.test_encode_double_tiny_exponential   s    e''(9(9#(>????e''(9(9#(>????e''(9(9#(>????{{3 1 1%2C2CC2H IJJJJr   unicode_keykey1u   بنc                 l    US0nU[         R                  " [         R                  " U5      5      :X  d   eg )Nvalue1r/   r1   r0   )r3   rg   unicode_dicts      r   "test_encode_dict_with_unicode_keys5TestUltraJSONTests.test_encode_dict_with_unicode_keys   s0    #X.u001B1B<1PQQQQr   double_inputc                     [         R                  " U5      n[        US5      [        [        R                  " U5      S5      :X  d   e[        US5      [        [         R
                  " U5      S5      :X  d   eg N   )r/   r0   roundr=   r>   r1   )r3   ro   rA   s      r   test_encode_double_conversion0TestUltraJSONTests.test_encode_double_conversion   s`     ""<0\1%tzz&/A1)EEEE\1%u/@/@/H!)LLLLr   c                 D    Sn[         R                  " U5      nUS:X  d   eg )Nr*   r)   r/   r0   )r3   decimal_inputrA   s      r   test_encode_with_decimal+TestUltraJSONTests.test_encode_with_decimal   s#    ""=1r   c                     / ///S-  n[         R                  " U5      nU[        R                  " U5      :X  d   eU[         R                  " U5      :X  d   eg )N   r<   )r3   nested_inputrA   s      r   "test_encode_array_of_nested_arrays5TestUltraJSONTests.test_encode_array_of_nested_arrays   sQ    x"}""<0tzz&1111u008888r   c                     / SQS-  n[         R                  " U5      nU[        R                  " U5      :X  d   eU[         R                  " U5      :X  d   eg )N)cAT@r   r   r   
   r<   )r3   doubles_inputrA   s      r   test_encode_array_of_doubles/TestUltraJSONTests.test_encode_array_of_doubles   sL    LrQ""=1

6 2222 1 1& 9999r   c                 b   Sn[         R                  " USS9nU[        R                  " U5      :X  d   eU[         R                  " U5      :X  d   eS HZ  n[         R                  " XS9n[        X5      nU[        R                  " U5      :X  d   eU[         R                  " U5      :X  a  MZ   e   g )Ng )>@r%   r&   )r,   	   )r/   r0   r=   r>   r1   rs   )r3   ro   rA   r'   rounded_inputs        r   test_double_precision(TestUltraJSONTests.test_double_precision   s    )""<"Etzz&1111u008888 &&&|WF!,AM DJJv$6666 E$5$5f$==== !'r   invalid_val)r|   9Nc                     Sn[        U[        5      (       a  [        O[        nSn[        R
                  " X4S9   [        R                  " X!S9  S S S 5        g ! , (       d  f       g = f)NgF7ݚ>@zInvalid value '.*' for option 'double_precision', max is '15'|an integer is required \(got type |object cannot be interpreted as an integermatchr&   )
isinstanceint
ValueError	TypeErrorpytestraisesr/   r0   )r3   r   ro   expected_exceptionmsgs        r   test_invalid_double_precision0TestUltraJSONTests.test_invalid_double_precision   sP     /+5k3+G+GZY: 	
 ]]-9lI :99s   A
A&c                     Sn[         R                  " U5      nU[        R                  " U5      :X  d   eU[         R                  " U5      :X  d   eUS:X  d   eg )NzA string \ /   
  	z"A string \\ \/ \b \f \n \r \t"r<   )r3   rB   rA   s      r   test_encode_string_conversion21TestUltraJSONTests.test_encode_string_conversion2   sV    5""<0tzz&1111u008888BBBBr   unicode_inputu@   Räksmörgås اسامة بن محمد بن عوض بن لادن
   æ¥Ñc                     [         R                  " U5      n[         R                  " U5      nU[        R                  " U5      :X  d   eU[        R
                  " U5      :X  d   eg r   r/   r0   r1   r=   dumpsr>   )r3   r   encdecs       r   test_encode_unicode_conversion1TestUltraJSONTests.test_encode_unicode_conversion   sQ    
 .$djj////djjo%%%r   c                     Sn[         R                  " U5      n[         R                  " U5      nX:X  d   eU[        R                  " U5      :X  d   eg )N)r/   r0   r1   r=   r   )r3   escaped_inputr   r   s       r   test_encode_control_escaping/TestUltraJSONTests.test_encode_control_escaping  sJ    .$###djj////r   c                     Sn[         R                  " U5      n[         R                  " U5      nU[        R                  " U5      :X  d   eU[        R
                  " U5      :X  d   eg )Nu   ðr   )r3   surrogate_inputr   r   s       r   "test_encode_unicode_surrogate_pair5TestUltraJSONTests.test_encode_unicode_surrogate_pair  sT    ,0$djj1111djjo%%%r   c                     Sn[         R                  " U5      n[         R                  " U5      nU[        R                  " U5      :X  d   eU[        R
                  " U5      :X  d   eg )Nu   ð°TRAILINGNORMALr   r3   four_bytes_inputr   r   s       r   test_encode_unicode_4bytes_utf82TestUltraJSONTests.test_encode_unicode_4bytes_utf8  sW    ; 01$djj!12222djjo%%%r   c                     Sn[         R                  " U5      n[         R                  " U5      nU[        R                  " U5      :X  d   eU[        R
                  " U5      :X  d   eg )Nu   ó¿¿¿TRAILINGNORMALr   r   s       r   &test_encode_unicode_4bytes_utf8highest9TestUltraJSONTests.test_encode_unicode_4bytes_utf8highest  sW    ; 01$djj!12222djjo%%%r   c                     SnSn[         R                  " [        US9   [        R                  " U/5        S S S 5        g ! , (       d  f       g = f)Nu   ''zT'utf-8' codec can't encode character '\\udac0' in position 1: surrogates not allowedr   )r   r   UnicodeEncodeErrorr/   r0   )r3   stringr   s      r   test_encode_unicode_error,TestUltraJSONTests.test_encode_unicode_error&  s>    5 	 ]]-S9vh' :99s	   ?
Ac                     / ///n[         R                  " U5      nU[        R                  " U5      :X  d   eU[        R                  " U5      :X  d   eU[         R
                  " U5      :X  d   eg r   r/   r0   r=   r>   r   r1   )r3   arr_in_arr_inputrA   s      r   test_encode_array_in_array-TestUltraJSONTests.test_encode_array_in_array/  sg     TF8""#344::f#5555$455555#4#4V#<<<<r   	num_input)iz  i         c                     [         R                  " U5      nU[        R                  " U5      :X  d   eU[        R                  " U5      :X  d   eU[         R
                  " U5      :X  d   eg r   r   )r3   r   rA   s      r   test_encode_num_conversion-TestUltraJSONTests.test_encode_num_conversion7  s[     ""9-DJJv....I....E--f5555r   c                     / SQn[         R                  " U5      nU[        R                  " U5      :X  d   eU[         R                  " U5      :X  d   eg )N)r(   r+   r,      r<   )r3   
list_inputrA   s      r   test_encode_list_conversion.TestUltraJSONTests.test_encode_list_conversionE  sG    !
"":.TZZ////U..v6666r   c                     SSSSS.n[         R                  " U5      nU[        R                  " U5      :X  d   eU[         R                  " U5      :X  d   eg )Nr(   r+   r,   r   )k1k2k3k4r<   )r3   
dict_inputrA   s      r   test_encode_dict_conversion.TestUltraJSONTests.test_encode_dict_conversionL  sP    Qaq9
"":.TZZ////U..v6666r   builtin_value)NTFc                     [         R                  " U5      nU[        R                  " U5      :X  d   eU[        R                  " U5      :X  d   eU[         R
                  " U5      :X  d   eg r   r   )r3   r   rA   s      r   %test_encode_builtin_values_conversion8TestUltraJSONTests.test_encode_builtin_values_conversionS  sY    ""=1

6 2222M2222 1 1& 9999r   c                 n   [         R                   R                  [        R                  " 5       5      n[        R                  " USS9n[
        R                  " UR                  5       5      n[        U5      [        R                  " U5      :X  d   e[        U5      [        R                  " U5      :X  d   eg )Ns	date_unit)datetimefromtimestamptimer/   r0   calendartimegmutctimetupler   r=   r>   r1   )r3   datetime_inputrA   expecteds       r   test_encode_datetime_conversion2TestUltraJSONTests.test_encode_datetime_conversionZ  s    !**88E"">SA??>#>#>#@A8}

6 22228} 1 1& 9999r   c                    [         R                  R                  [        R                  " 5       5      n[        R
                  " USS9nUR                  UR                  UR                  SSS4n[        R                  " U5      n[        U5      [        R                  " U5      :X  d   e[        U5      [        R                  " U5      :X  d   eg )Nr   r   r   )r   dater   r   r/   r0   yearmonthdayr   r   r   r=   r>   r1   )r3   
date_inputrA   tupr   s        r   test_encode_date_conversion.TestUltraJSONTests.test_encode_date_conversionb  s    ]]00=
"":=
 0 0*..!QJ??3'8}

6 22228} 1 1& 9999r   testr(   r+   r,   r      r%   < c                 f    [         R                  " U5      nSUR                  5        S3nX2:X  d   eg )N"r/   r0   	isoformatr3   r   rA   r   s       r   !test_encode_time_conversion_basic4TestUltraJSONTests.test_encode_time_conversion_basicl  s6    
 ""4(t~~'(*!!!r   c                     [         R                  " SSSS[        R                  5      n[        R
                  " U5      nSUR                  5        S3nX2:X  d   eg Nr   r   r%   r   r   )r   r   pytzutcr/   r0   r   r   s       r    test_encode_time_conversion_pytz3TestUltraJSONTests.test_encode_time_conversion_pytzu  sN    }}RR:""4(t~~'(*!!!r   c                     [         R                  " SSSS[        R                  R	                  5       5      n[
        R                  " U5      nSUR                  5        S3nX2:X  d   eg r   )r   r   dateutiltztzutcr/   r0   r   r   s       r   $test_encode_time_conversion_dateutil7TestUltraJSONTests.test_encode_time_conversion_dateutil|  sW    }}RR1B1B1DE""4(t~~'(*!!!r   decoded_inputr   c                 F    [         R                  " U5      S:X  d   S5       eg )NnullzExpected nullrw   )r3   r  s     r   test_encode_as_null&TestUltraJSONTests.test_encode_as_null  s"       /69J?J9r   c           	         [         R                   " SSSSSSS5      n[        U5      R                  S5      n[        R                  " [        R
                  " USS	95      nX2R                  S
-  :X  d   e[        R                  " [        R
                  " USS	95      nX2R                  S-  :X  d   e[        R                  " [        R
                  " USS	95      nX2R                  S-  :X  d   e[        R                  " [        R
                  " USS	95      nX2R                  :X  d   eSn[        R                  " [        US9   [        R
                  " USS	9  S S S 5        g ! , (       d  f       g = f)N           r   iI nsr   r   i ʚ;msi@B us  z*Invalid value 'foo' for option 'date_unit'r   foo)
r   r   as_unitr/   r1   r0   _valuer   r   r   )r3   valstamp	roundtripr   s        r   test_datetime_units&TestUltraJSONTests.test_datetime_units  s$   aRR@#&&t,%%e&7&7s&KL	LLE1111%%e&7&7t&LM	LLE1111%%e&7&7t&LM	LLE1111%%e&7&7t&LM	LL(((:]]:S1cU3 211s   E""
E0c                     Sn[         R                  " USS9n[         R                  " U5      nU[        R                  " USS9:X  d   eU[        R
                  " U5      :X  d   eg )Nr   F)r9   r   )r3   	unencodedr   r   s       r   test_encode_to_utf8&TestUltraJSONTests.test_encode_to_utf8  sX    *		>$djj????djjo%%%r   c                     Sn[         R                  " U5      n[         R                  " [        U5      5      nX#:X  d   eg )Nz{"obj": 31337}r/   r1   r   )r3   r   dec1dec2s       r   test_decode_from_unicode+TestUltraJSONTests.test_decode_from_unicode  s6    (  /  ]!34||r   c                     " S S5      n " S S5      nU" 5       nU" 5       Ul         X3R                   l         [        R                  " [        SS9   [        R
                  " U5        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrSrSrg)8TestUltraJSONTests.test_encode_recursion_max.<locals>.O2i  r   rF   N__name__
__module____qualname____firstlineno__member__static_attributes__rF   r   r   O2r(        Fr   r0  c                       \ rS rSrSrSrg)8TestUltraJSONTests.test_encode_recursion_max.<locals>.O1i  r   rF   Nr)  rF   r   r   O1r3    r1  r   r4  Maximum recursion level reachedr   )r.  r   r   OverflowErrorr/   r0   )r3   r0  r4  r  s       r   test_encode_recursion_max,TestUltraJSONTests.test_encode_recursion_max  s_    	 		 	 !t&3#]]=0QRm, SRRs   A11
A?c                     SnSn[         R                  " [        US9   [        R                  " U5        S S S 5        g ! , (       d  f       g = f)Nzfdsa sda v9sa fdsaz0Unexpected character found when decoding 'false'r   r   r   r   r/   r1   )r3   	jibberishr   s      r   test_decode_jibberish(TestUltraJSONTests.test_decode_jibberish  s4    (	@]]:S1i( 211s	   >
Abroken_json)[{]}c                     Sn[         R                  " [        US9   [        R                  " U5        S S S 5        g ! , (       d  f       g = f)NzExpected object or valuer   r:  )r3   r>  r   s      r   test_decode_broken_json*TestUltraJSONTests.test_decode_broken_json  s1     )]]:S1k* 211	   <
A
too_big_charr?  r@  c                     [         R                  " [        SS9   [        R                  " US-  5        S S S 5        g ! , (       d  f       g = f)Nz#Reached object decoding depth limitr   i   r:  )r3   rG  s     r   test_decode_depth_too_big,TestUltraJSONTests.test_decode_depth_too_big  s1    ]]:-RSlk:; TSSs	   =
A
bad_string)z"TESTINGz
"TESTING\"trufanc                     Sn[         R                  " [        US9   [        R                  " U5        S S S 5        g ! , (       d  f       g = f)NzSUnexpected character found when decoding|Unmatched ''"' when when decoding 'string'r   r:  )r3   rK  r   s      r   test_decode_bad_string)TestUltraJSONTests.test_decode_bad_string  s6    : 	 ]]:S1j) 211rF  zbroken_json, err_msg))z{{1337:""}}z:Key name of object must be 'string' when decoding 'object')z
{{"key":"}z*Unmatched ''"' when when decoding 'string')z[[[truez8Unexpected character found when decoding array value (2)c                     [        S5       HO  n[        R                  " [        [        R
                  " U5      S9   [        R                  " U5        S S S 5        MQ     g ! , (       d  f       Mc  = f)Nr  r   )ranger   r   r   reescaper/   r1   )r3   r>  err_msg_s       r   test_decode_broken_json_leak/TestUltraJSONTests.test_decode_broken_json_leak  sG     tAz71CD!!+. ED DDs   A  
A/	invalid_dict)z{{{{31337}}}}z{{{{"key":}}}}z{{{{"key"}}}}c                     Sn[         R                  " [        US9   [        R                  " U5        S S S 5        g ! , (       d  f       g = f)Nz{Key name of object must be 'string' when decoding 'object'|No ':' found when decoding object value|Expected object or valuer   r:  )r3   rZ  r   s      r   test_decode_invalid_dict+TestUltraJSONTests.test_decode_invalid_dict  s6    ' 	
 ]]:S1l+ 211rF  numeric_int_as_str31337z-31337c                 N    [        U5      [        R                  " U5      :X  d   eg r   )r   r/   r1   )r3   r^  s     r   test_decode_numeric_int*TestUltraJSONTests.test_decode_numeric_int
  s$     %&%*;*;<N*OOOOr   c                    Sn[         R                  " U5      nU[        R                  " U5      :X  d   eU[        R                  " U5      :X  d   eU[         R
                  " U5      :X  d   eSn[         R                  " U5      nU[        R                  " U5      :X  d   eU[        R                  " U5      :X  d   eU[         R
                  " U5      :X  d   eS[         R                  " S5      :X  d   eg )Nz31337   1337 z"  \u0000\r\n "z   
 r   )r3   wrapped_inputrA   alone_inputs       r   test_encode_null_character-TestUltraJSONTests.test_encode_null_character  s    )""=1

6 2222M2222 1 1& 9999"";/djj0000K0000e//7777#u'8'8'IIIIr   c                 h    Sn[         R                  " U5      [        R                  " U5      :X  d   eg )Nz"31337 \u0000 31337"r/   r1   r=   r>   )r3   re  s     r   test_decode_null_character-TestUltraJSONTests.test_decode_null_character   s)    /  /4::m3LLLLr   c                     / SQn[         R                  " U5      nU[        R                  " U5      :X  d   eU[         R                  " U5      :X  d   eg )N)    rn  rn  rn  rn  rn  r<   r3   
long_inputrA   s      r    test_encode_list_long_conversion3TestUltraJSONTests.test_encode_list_long_conversion$  sK    

 "":.TZZ////U..v6666r   rp  rn  l    c                     [         R                  " U5      nU[        R                  " U5      :X  d   eU[        R                  " U5      :X  d   eU[         R
                  " U5      :X  d   eg r   r   ro  s      r   test_encode_long_conversion.TestUltraJSONTests.test_encode_long_conversion2  sY    "":.TZZ////J////U..v6666r   bigNum                    c                     [         R                  " U5      n[        U5      U:X  d   e[        R                  " [
        SS9   [         R                  " U5      U:X  d   e S S S 5        g ! , (       d  f       g = fNz#Value is too big|Value is too smallr   )r/   r0   r   r   r   r   r1   )r3   rv  encodings      r   #test_dumps_ints_larger_than_maxsize6TestUltraJSONTests.test_dumps_ints_larger_than_maxsize:  sa    $$V,6{h&&&]]7
 $$X.&888	
 
 
s   A((
A6int_exp)1337E40z1.337E40z1337E+9z	1.337e+40z1.337E-4c                 d    [         R                  " U5      [        R                  " U5      :X  d   eg r   rj  )r3   r~  s     r   test_decode_numeric_int_exp.TestUltraJSONTests.test_decode_numeric_int_expE  s&       )TZZ-@@@@r   c                     Sn[         R                  " [        US9   [        R                  " S 5        S S S 5        g ! , (       d  f       g = f)Nz/a bytes-like object is required, not 'NoneType'r   )r   r   r   r/   r1   r3   r   s     r   test_loads_non_str_bytes_raises2TestUltraJSONTests.test_loads_non_str_bytes_raisesK  s/    ?]]9C0d# 100rF  r  )l   M+ l        l        l    c                 N    SU S3n[         R                  " U5      S   U:X  d   eg )Nz{"id": rB  idr/   r1   )r3   r  docs      r   &test_decode_number_with_32bit_sign_bit9TestUltraJSONTests.test_decode_number_with_32bit_sign_bitP  s0     R   %d+s222r   c                     [        S5       H4  nSR                  5       nUS-  S-  S-  n[        R                  " U5        M6     g )Nr      å   r+   )rS  encoder/   r0   )r3   rW  baseescape_inputs       r   test_encode_big_escape)TestUltraJSONTests.test_encode_big_escapeW  s=    rA??$D$;-1Ll+ r   c                     [        S5       H;  nSR                  5       nSnX2S-  S-  S-  -   U-   n[        R                  " U5        M=     g )Nr   r     "r  r+   )rS  r  r/   r1   )r3   rW  r  quoter  s        r   test_decode_big_escape)TestUltraJSONTests.test_decode_big_escape^  sJ    rA??$DE 4K$$6$:;eCLl+ r   c                    ^ SS0m " U4S jS5      nU" 5       n[         R                  " U5      n[         R                  " U5      nUT:X  d   eg )Nkeyr   c                   "   > \ rS rSrU 4S jrSrg)1TestUltraJSONTests.test_to_dict.<locals>.DictTestij  c                    > T$ r   rF   )r3   r   s    r   toDict8TestUltraJSONTests.test_to_dict.<locals>.DictTest.toDictk  s    r   rF   N)r*  r+  r,  r-  r  r/  )r   s   r   DictTestr  j  s     r   r  rN   )r3   r  orA   r   r   s        @r   test_to_dictTestUltraJSONTests.test_to_dictg  sJ    EN	 	 J""1%'axxr   c           	      2  ^  " U4S jS5      mSn[         R                  " [        US9   [        R                  " T" S5      5        S S S 5        S[        R                  " T" S5      [
        S9:X  d   eS nS	[        R                  " T" S5      US9:X  d   eS
 n[         R                  " [        SS9   [        R                  " T" S5      US9  S S S 5        S n[        R                  " [        R                  " T" S5      US95      S:X  d   eS n[        R                  " [        R                  " [        R                  " SSS5      5      5      [        R                  " [        R                  " T" S5      US95      :X  d   eT" S5      T" S5      /n[        R                  " [        R                  " U[
        S95      [        R                  " [        R                  " U[
        S95      :X  d   eg ! , (       d  f       GN= f! , (       d  f       GN>= f)Nc                   D   > \ rS rSrSS jr\U 4S j5       rS\4S jrSr	g)	<TestUltraJSONTests.test_default_handler.<locals>._TestObjectiu  returnNc                     Xl         g r   r  )r3   r  s     r   __init__ETestUltraJSONTests.test_default_handler.<locals>._TestObject.__init__v  s    r   c                    > T" S5      $ )Nrecursive_attrrF   )r3   _TestObjects    r   r  KTestUltraJSONTests.test_default_handler.<locals>._TestObject.recursive_attry  s    "#344r   c                 ,    [        U R                  5      $ r   )r   r  r3   s    r   __str__DTestUltraJSONTests.test_default_handler.<locals>._TestObject.__str__}  s    488}$r   r  r  N)
r*  r+  r,  r-  r  propertyr  r   r  r/  )r  s   r   r  r  u  s(     5 5% %r   r  r5  r   r  z"foo")default_handlerc                     g)NfoobarrF   rW  s    r   
my_handler;TestUltraJSONTests.test_default_handler.<locals>.my_handler  s    r   z"foobar"c                     [        S5      e)NI raise for anything)r   r  s    r   my_handler_raisesBTestUltraJSONTests.test_default_handler.<locals>.my_handler_raises  s    233r   r  c                     g)N*   rF   r  s    r   my_int_handler?TestUltraJSONTests.test_default_handler.<locals>.my_int_handler  s    r   r  c                 2    [         R                   " SSS5      $ )Nr  r+   r,   )r   r  s    r   my_obj_handler?TestUltraJSONTests.test_default_handler.<locals>.my_obj_handler  s    $$T1a00r   r  r+   r,   bar)default)r   r   r6  r/   r0   r   r   r1   r   r=   r>   r   )r3   r   r  r  r  r  obj_listr  s          @r   test_default_handler'TestUltraJSONTests.test_default_handlert  s   		% 		% 0]]=4k%01 5%++K,>PSTTTT	 U..

 
 	
 
	4 ]]9,BCk%0BST D	 !!+e"4nU 	
	1   h//a;<
k%0.Q

 	
 
  &E(:;zz$**Xs;<@Q@Qh<A
 
 	
 
K 54 DCs   G54H5
H
Hc                      " S S5      nU" SSSSS9n[         R                  " [         R                  " U5      5      SSSS.:X  d   eg )	Nc                   $    \ rS rSrSS jrS rSrg):TestUltraJSONTests.test_encode_object.<locals>._TestObjecti  Nc                 4    Xl         X l        X0l        X@l        g r   rM   b_cr   )r3   rM   r  r  r   s        r   r  CTestUltraJSONTests.test_encode_object.<locals>._TestObject.__init__  s    r   c                     grq   rF   r  s    r   e<TestUltraJSONTests.test_encode_object.<locals>._TestObject.e  s    r   )r  rM   r  r   r  )r*  r+  r,  r-  r  r  r/  rF   r   r   r  r    s    r   r  r(   r+   r,   r   r  )rM   r  r   rk   )r3   r  test_objects      r   test_encode_object%TestUltraJSONTests.test_encode_object  sU    	 	 "AqA6  !2!2;!?@E
 
 	
 
r   c                 0    [         R                  S:X  d   eg )Nzpandas._libs.json)r/   r*  r  s    r   test_ujson__name__%TestUltraJSONTests.test_ujson__name__  s    ~~!4444r   rF   N)Kr*  r+  r,  r-  r   markskipifr   r7   parametrizerI   rO   r\   r_   re   rm   mathpirt   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   rb   
datetime64naninfr	  r  r  r$  r7  r<  rD  rI  rP  rX  r\  ra  rg  rk  rq  rt  r|  r  r  r  r  r  r  r  r  r  r/  rF   r   r   r!   r!   7   s   [[D)OP5 Q5n [[^dE];5 <52 [[X	K [[]VV,<=R >R [[477(+MM
9:> [[	
	J	JC [[	KMcd&	&0&&&(= [[	
6677 [[_.AB: C::: [[	(--1a0(--BF2ST"	"
"" [[#r}}U3RVVRVVbffWMKK4(&- ) [[	
++
 [[^c3Z8< 9< [[	
	*	* [[	

/
/
 [[	
,, [[w1PPJ M7 [[\,?AU+VW7 X7 [[X|'<=9 >9 [[NAA$
 [[U$KL3 M3,,4
l
&5r   r!   c                       \ rS rSr\R
                  R                  SSS/5      S 5       rS rS r	S r
S	 rS
 rS rS rS r\R
                  R                  S/ SQ5      S 5       rS rS rS rS rSrg)TestNumpyJSONTestsi  
bool_inputTFc                 z    [        U5      n[        R                  " [        R                  " U5      5      U:X  d   eg r   )boolr/   r1   r0   )r3   r  r  s      r   	test_boolTestNumpyJSONTests.test_bool  s0      !2!21!56!;;;r   c                     [         R                  " / SQ[        S9n[         R                  " [        R                  " [        R
                  " U5      5      [        S9n[        R                  " X5        g )N)TFTTFTFFdtype)rb   arrayr  r/   r1   r0   rW   assert_numpy_array_equal)r3   
bool_arrayrA   s      r   test_bool_array"TestNumpyJSONTests.test_bool_array  sL    XX@

 %++E,=,=j,IJRVW
##J7r   c                     [         R                  " U5      R                  nU" S5      nU" [        R                  " [        R
                  " U5      5      5      U:X  d   eg )Nr(   rb   r  typer/   r1   r0   r3   any_int_numpy_dtypeklassrd   s       r   test_intTestNumpyJSONTests.test_int  sI    ,-22AhU&&u'8'8'=>?3FFFr   c                     [         R                  " S[        S9nUR                  U5      n[         R                  " [
        R                  " [
        R                  " U5      5      US9n[        R                  " X45        g )Nd   r  )
rb   aranger   astyper  r/   r1   r0   rW   r  )r3   r  arr	arr_input
arr_outputs        r   test_int_array!TestNumpyJSONTests.test_int_array  s[    ii3'JJ23	XXe//	:;CV

 	##I:r   c                    US;   a!  [         (       d  [        R                  " S5        [        R                  " U5      R
                  nUS:X  a!  [        R                  " S5      R                  nO [        R                  " U5      R                  nU" [        R                  " [        R                  " U5      5      5      U:X  d   eg )N)int64uint64z-Cannot test 64-bit integer on 32-bit platformr  r  )r   r   skiprb   r  r  iinfomaxr/   r1   r0   r  s       r   test_int_maxTestNumpyJSONTests.test_int_max  s    "55ddKKGH,-22 (*((7#''C((./33CU&&u'8'8'=>?3FFFr   c                     [         R                  " U5      R                  nU" S5      nU" [        R                  " [        R
                  " U5      5      5      U:X  d   eg )NgJY8p@r  r3   float_numpy_dtyper  rd   s       r   
test_floatTestNumpyJSONTests.test_float  sI    *+00HoU&&u'8'8'=>?3FFFr   c           	          [         R                  " SSS[        S9nUR                  U5      n[         R                  " [
        R                  " [
        R                  " USS95      US9n[        R                  " X45        g )Ng      )@gףp=
7g@geX?r  r%   r&   )
rb   r  floatr   r  r/   r1   r0   rW   assert_almost_equal)r3   r  r  float_inputfloat_outputs        r   test_float_array#TestNumpyJSONTests.test_float_array  sa    iiffE:jj!23xxe//bQR#
 	{9r   c                    [         R                  " U5      R                  nU" [         R                  " U5      R                  S-  5      n[
        R                  " U" [        R                  " [        R                  " USS95      5      U5        g )Nr   r%   r&   )
rb   r  r  finfor  rW   r  r/   r1   r0   r  s       r   test_float_max!TestNumpyJSONTests.test_float_max  sg    *+00BHH./33b89
%##E$5$5cB$OPQSV	
r   c           	          [         R                  " S5      nUR                  S5      n[        R                  " [         R
                  " [        R                  " [        R                  " U5      5      5      U5        g )N`   )r+   r+   r+   r+   r,   r+   	rb   r  reshaperW   r  r  r/   r1   r0   r3   r  s     r   test_array_basic#TestNumpyJSONTests.test_array_basic  sP    iimkk,-
##HHU&&u'8'8'=>?	
r   shape))r   r   rr   rr   r   )r  r(   c           	          [         R                  " S5      nUR                  U5      n[        R                  " [         R
                  " [        R                  " [        R                  " U5      5      5      U5        g )Nr  r   )r3   r%  r  s      r   test_array_reshaped&TestNumpyJSONTests.test_array_reshaped  sO    iinkk% 
##HHU&&u'8'8'=>?	
r   c           
         S/ 0 0 / SSSS/SS0/	n[         R                  " U[        S9n[         R                  " [        R                  " [        R
                  " U5      5      [        S9n[        R                  " X25        g )NrM   r  g33333sX@r  r  r  r  )rb   r  objectr/   r1   r0   rW   r  )r3   arr_listr  results       r   test_array_list"TestNumpyJSONTests.test_array_list  sr    #JEN

 hhxv.%++E,=,=c,BC6R
##F0r   c                    [         R                  n[         R                  " SSSUS9nUR                  S5      n[         R                  " [
        R                  " [
        R                  " U5      5      US9n[        R                  " X#5        g )NgrhY@gX9vi@r(   r  r&  )
rb   float32r  r!  r  r/   r1   r0   rW   r  )r3   r  r  arr_outs       r   test_array_float#TestNumpyJSONTests.test_array_float&  sa    

ii!59kk)$((5,,U->->s-CDER
s,r   c                     [         R                  " S5      n[        R                  " [        US9   [
        R                  " [        R                  " S5      5        S S S 5        g ! , (       d  f       g = f)Nz>array(1) (numpy-scalar) is not JSON serializable at the momentr   r(   )	rT  rU  r   r   r   r/   r0   rb   r  r  s     r   test_0d_array TestNumpyJSONTests.test_0d_array/  sE    iiL
 ]]9C0bhhqk* 100   +A$$
A2c                     [         R                  " S5      n[        R                  " [        US9   [
        R                  " [        R                  " S5      5        S S S 5        g ! , (       d  f       g = f)Nz@1234.5.* \(numpy-scalar\) is not JSON serializable at the momentr   g     J@)	rT  compiler   r   r   r/   r0   rb   
longdoubler  s     r   test_array_long_double)TestNumpyJSONTests.test_array_long_double7  sF    jjP
 ]]9C0bmmF34 100r8  rF   N)r*  r+  r,  r-  r   r  r  r  r  r  r  r  r  r  r  r#  r(  r.  r3  r6  r<  r/  rF   r   r   r  r    s    [[\D%=9< :<8G;GG:

 [[W&EF
 G
1 -+5r   r  c                   
   \ rS rSrS rS rS rS rS rS r	\
R                  R                  S/ S	Q5      S
 5       r\
R                  R                  S/ S//5      S 5       r\
R                  R                  SSS/5      S 5       r\
R                  R                  SS S /5      S 5       rS rS r\
R                  R                  SS S /5      S 5       r\
R                  R                  S/ SQ5      \
R                  R                  SSS/5      S 5       5       rS  rS! rS" r\
R                  R                  S#\" S$S%9\" SS%9\" S&S'S'S(9\" S&S)S*S(9\" SS'S+9\" SS,9\" SSS-9\" SSSS.9\" S/S/S/S.9/	5      S0 5       rS1 rS2rg3)4TestPandasJSONTestsi?  c                    [         R                  n[        / SQ/ SQ/SS// SQUS9nUc  0 OSU0nUR                  U:H  R	                  5       (       d   e[
        R                  " [
        R                  " U40 UD65      nUR                  U:H  R	                  5       (       d   eUS:X  a  [        U5      n[        S0 UD6nO[        U5      nUS	:X  a  / S
QUl	        SS/Ul
        O&US:X  a
  SS/Ul
        OUS:X  a  UR                  5       nUR                  U:H  R	                  5       (       d   e[        R                  " XS5        g )Nr(   r+   r,   r   rr      rM   r  xyz)r   columnsr  r   r   r   )r   r(   r+   r   r(   r   r   rF   )rb   r  r   dtypesallr/   r1   r0   r   rH  r   	transposerW   assert_frame_equal)r3   r   r  dfr@   rA   r   s          r   test_dataframe"TestPandasJSONTests.test_dataframe@  s1   	"*#	
 %n8V2D		U"''))))""5#4#4R#I=#IJ		U"'')))) Wf%C%%Fv&F X"BJ1vBHy 1vBHwB		U"''))))
f)r   c                 t   [        / SQ/ SQ/SS// SQS9nX"R                  5       S.nUc  0 OSU0n[        R                  " [        R                  " U40 UD65      [        R                  " [        R                  " U40 UD65      S.n[        R                  " [        R                  " U40 UD65      U:X  d   eg )	NrA  rB  rM   r  rD  )r   rH  )df1df2r   )r   copyr/   r1   r0   )r3   r   rM  nestedkwargsexps         r   test_dataframe_nested)TestPandasJSONTests.test_dataframe_nestedb  s    	"3*o
 GGI.~Hf+= $$U%6%6r%DV%DE$$U%6%6r%DV%DE
   !2!26!DV!DELLLr   c                 *   [         R                  n[        / SQS/ SQUS9R                  5       nUR                  U:X  d   eUc  0 OSU0n[
        R                  " [
        R                  " U40 UD65      nUR                  U:X  d   eUS:X  a  [        U5      n[        S0 UD6nO[        U5      nUS;   a!  S Ul	        UR                  5       n/ SQUl
        OUS	;   a  S Ul	        / S
QUl
        UR                  U:X  d   e[        R                  " XS5        g )Nr   r|      (   2   <   seriesrC     r  r   r   r%   )namer   r  r   r   )Nr   )678r   1015)r   r   )r   r(   r+   r,   r   rr   rF   )rb   r  r	   sort_valuesr  r/   r1   r0   r   rb  r   rW   assert_series_equal)r3   r   r  r   r@   rA   r   s          r   test_seriesTestPandasJSONTests.test_seriesp  s   $&	

 +- 	
 ww%$n8V2D""5#4#4Q#H-#HIww%Wf%C]c]FF^F_$AF'')F6AG,,AF(AGww%
v)r   c                    [        / SQS/ SQS9R                  5       nX"R                  5       S.nUc  0 OSU0n[        R                  " [        R
                  " U40 UD65      [        R                  " [        R
                  " U40 UD65      S.n[        R                  " [        R
                  " U40 UD65      U:X  d   eg )NrZ  r_  r`  )rb  r   )s1s2r   )r	   rh  rS  r/   r1   r0   )r3   r   r   rT  rU  rV  s         r   test_series_nested&TestPandasJSONTests.test_series_nested  s    $8;O

+- 	
 *~Hf+= ##E$5$5a$B6$BC##E$5$5a$B6$BC
   !2!26!DV!DELLLr   c           	         [        / SQSS9n[        [        R                  " [        R                  " U5      5      SS9n[        R
                  " X5        [        [        R                  " [        R                  " USS95      5      n[        S0 UD6n[        R
                  " X5        UR                  UR                  :X  d   e[        R
                  " X5        UR                  UR                  :X  d   e[        [        R                  " [        R                  " USS95      SS9n[        R
                  " X5        [        [        R                  " [        R                  " USS95      SS9n[        R
                  " X5        [        [        R                  " [        R                  " USS95      SS9n[        R
                  " X5        g )	N)   -      b   +      r   )rb  r   )r   r   r   rF   )r   r/   r1   r0   rW   assert_index_equalr   rb  )r3   irA   r   s       r   
test_indexTestPandasJSONTests.test_index  s[   *9 u(():):1)=>WM
a(%++E,=,=a,PQR
a(vv$$$
a(vv$$$e//(CD7
 	a(e//)DEG
 	a(e//'BC'
 	a(r   c           	         Sn[        [        [        SSS95      S S9n[        R                  " X!S9n[        [
        R                  " [        R                  " U5      5      5      n[        R                  " X$5        [        [
        R                  R                  S5      R                  [        U5      5      US9n[        [        R                  " [        R                  " XQS95      5      nUR                  R                   R#                  [
        R$                  5      n[        U5      Ul        [        R&                  " XT5        g )	Nr  z1/1/2000r|   )periodsfreqr   r+   r   )r   listr   r/   r0   rb   r  r1   rW   rx  r	   randomdefault_rngstandard_normallenr   r   r   r  ri  )r3   r   rngr5   r6   ts
idx_valuess          r   test_datetime_index'TestPandasJSONTests.test_datetime_index  s    	 DJ!CD4P##C=):):7)C DE
c+BII))!,<<SXFcR**5+<+<R+UVW]]))00:
%j1
r+r   invalid_arr)z[31337,]z[,31337]z[]]z[,]c                     Sn[         R                  " [        US9   [        R                  " U5        S S S 5        g ! , (       d  f       g = f)Nz[Expected object or value|Trailing data|Unexpected character found when decoding array valuer   r:  )r3   r  r   s      r   test_decode_invalid_array-TestPandasJSONTests.test_decode_invalid_array  s7    C 	 ]]:S1k* 211rF  r  r   c                 N    U[         R                  " [        U5      5      :X  d   eg r   r!  r"  s     r   test_decode_array%TestPandasJSONTests.test_decode_array  s    e''C1111r   extreme_numrn  r   c                 N    U[         R                  " [        U5      5      :X  d   eg r   r!  )r3   r  s     r   test_decode_extreme_numbers/TestPandasJSONTests.test_decode_extreme_numbers  s     e//K0@AAAAr   too_extreme_numrw  rx  c                     [         R                  " [        SS9   [        R                  " U5        S S S 5        g ! , (       d  f       g = frz  r:  )r3   r  s     r   test_decode_too_extreme_numbers3TestPandasJSONTests.test_decode_too_extreme_numbers  s4    ]]7
 o.	
 
 
	   :
Ac                 <    0 [         R                  " S5      :X  d   eg )Nz{}
	 r  r  s    r   %test_decode_with_trailing_whitespaces9TestPandasJSONTests.test_decode_with_trailing_whitespaces  s    U&&y1111r   c                     [         R                  " [        SS9   [        R                  " S5        S S S 5        g ! , (       d  f       g = f)NzTrailing datar   z{}
	 ar:  r  s    r   )test_decode_with_trailing_non_whitespaces=TestPandasJSONTests.test_decode_with_trailing_non_whitespaces  s*    ]]:_=j) >==r  valuec                     [         R                  " [        SS9   [        R                  " U5        S S S 5        g ! , (       d  f       g = frz  r:  )r3   r  s     r   test_decode_array_with_big_int2TestPandasJSONTests.test_decode_array_with_big_int  s4    ]]7
 e$	
 
 
r  float_number)	g3ӭ?gRC?gB4?g
LO?g	j?g[_$?gk	?g}?5^I?g?signr   r(   c                 r    X!-  n[         R                  " U[        R                  " [	        U5      5      SS9  g )NgV瞯<)rtol)rW   r  r/   r1   r   )r3   r  r  s      r   test_decode_floating_point.TestPandasJSONTests.test_decode_floating_point  s1      	
%++C,=>U	
r   c                     [        5       n[        S5       H  nUR                  U5        M     [        R                  " U5        g )Ni )setrS  addr/   r0   )r3   r   rE  s      r   test_encode_big_set'TestPandasJSONTests.test_encode_big_set  s2    EvAEE!H  	!r   c                 L    S[         R                  " [        5       5      :X  d   eg )Nz[])r/   r0   r  r  s    r   test_encode_empty_set)TestPandasJSONTests.test_encode_empty_set  s    u((////r   c                     1 Skn[         R                  " U5      n[         R                  " U5      nU H
  nXA;   a  M
   e   g )N>	   r(   r+   r,   r   rr   rC  ra  r  r   rN   )r3   r   r   r   r   s        r   test_encode_set#TestPandasJSONTests.test_encode_set  s:    '"$A6M6 r   tdin  )days   rr   )hoursminutessecondsr|   r[  )r  nanoseconds)r  )microsecondsr  )millisecondsr  r  i  c                 d    [         R                  " USS9nSUR                  5        S3nX#:X  d   eg )NT)	iso_datesr   r   )r3   r  r-  r   s       r   test_encode_timedelta_iso-TestPandasJSONTests.test_encode_timedelta_iso&  s7      ""26r||~&a(!!!r   c                 Z    [        SS/SS9n[        US9nUR                  5       S:X  d   eg )Nz
2022-04-06z
2022-04-07Dr~  r  z{})r   r   to_json)r3   prM  s      r   test_encode_periodindex+TestPandasJSONTests.test_encode_periodindex;  s1    |43?Qzz|t###r   rF   N)r*  r+  r,  r-  rN  rW  rj  ro  rz  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r
   r  r  r/  rF   r   r   r?  r?  ?  s    *DM*@M)>," [[	
++ [[UR%M22 32 [[]-@BV,WXB YB [[.E7z0KL/ M/2* [[W%hZ&AB% C% [[
	
 [[Vb!W-
 .
0 [[32B15BB721-!$1!411!D3ScJ
	
""$r   r?  )%r   r   r-   r=   rU   r  rT  r   r  numpyrb   r   r   pandas._libs.json_libsr/   pandas.compatr   pandasr   r   r   r   r   r	   r
   r   r   pandas._testing_testingrW   r   fixturer   r!   r  r?  rF   r   r   <module>r     s          	      ! ! 
 
 
 -  8H
5 H
5Vz5 z5z@$ @$r   