python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_winreg.cpython-311.opt-1.pyc

eXddlZddlZddlZddlZddlmZddlZddlmZm	Z	ej
ddgddlT	ejej
dd	zZn#eef$rdZYnwxYwejdd
Zedkrdnd
Zedkrdnd
ZdejfzZdezZdezZddefddefddefddefdgdefdgdefddefd d!d"zefd#d$d%zefd&d'efg
ZGd(d)ej Z!Gd*d+e!Z"ej#ed,Gd-d.e!Z$ej#ed/Gd0d1e!Z%e&d2krese'd3d4ej(dSdS)5N)
import_helper)machine
win32_editionwinregwin)required_on)*z--remoteAMD64TF)r
z Python Test Key [%d] - Delete Mez	SOFTWARE\zSOFTWARE\Classes\z	Int Value-zQword Valuelw*M	z
String ValzA string valueStringExpandzThe path is %path%zMulti-string)Lotsofstringvaluesz	Multi-nul)rrrzRaw Datasbinarydataz
Big Stringxi?z
Big Binaryxi@uJapanese 日本u	日本語cHeZdZdZdZdefdZdefdZd
dZ	d
dZ
dZd	S)BaseWinregTestscF|ttdSN)delete_treeHKEY_CURRENT_USER
test_key_nameselfs D/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_winreg.pysetUpzBaseWinregTests.setUp6s!	
*M:::::c	t||dt}n#t$rYdSwxYw		t|d}n#t$rYnwxYw|||9t|t
||dSNr)OpenKeyKEY_ALL_ACCESSOSErrorEnumKeyrCloseKey	DeleteKey)rrootsubkeyhkey	subsubkeys     r rzBaseWinregTests.delete_tree;s	4N;;DD			FF		.
#D!,,		




T9---
	.	$s
((>
A
Asub_keycxt|ttd||t}||jdk|||}t
D]\}}}t
||d||t|\}	}
}||	dd||
ddt|\}	}
}||	dd||
tt
dt|}t|	t||dn#t$rYnwxYwt|}
|	t|
|ddS#t$rYdSwxYw)N
Default valuerr
z"Not the correct number of sub keysz Not the correct number of valueszAIt appears the CloseKey() function does not close the actual key!zBIt appears the key.Close() function does not close the actual key!)SetValuerREG_SZ
assertTruehandle	test_data
SetValueExQueryInfoKeyassertEquallenintr)failr'Close)rroot_key	subkeystr	CreateKeykeyr/
value_name
value_data
value_typenkeysnvalues	since_modint_sub_keyint_keys              r _write_test_dataz BaseWinregTests._write_test_dataKs	=&/BBBi-00
a((()C++3<	G	G.J
Jw
Az:FFFF%1$5$5!w	#GHHH!%GHHH$0$9$9!w	#GHHH#i..;	=	=	=
'll	%%%II2
3
3
3
3			D	c((			!!!II7
8
8
8
8
8			DD	s$,$E
EE$F++
F98F9cXt|t}||dd||t}|||5}d}		t||}n#t$rYn(wxYw||t
vdd|dz}F||t
t
dt
D]G\}	}
}t||	\}}
|||
d||
|dH	dddn#1swxYwY|t|d}|||d		t|d|
d
n#t$rYnwxYw|dS)Nr1z+Registry didn't give back the correct valuerr
Tz&Didn't read back the correct test dataz'Didn't read the correct number of itemsz!Could not directly read the valuezRead subkey value wrongz2Was able to get a second key when I only have one!)
QueryValuerr9	EnumValuer'r6r:QueryValueExr=r(r<)rr>r?r%valrAr/indexdatarBrCrDread_valread_typs              r _read_test_datazBaseWinregTests._read_test_datatsh=11oF	H	H	Hgh
..
WS)
$
$	FE
"$We44DDE  !2D!IKKK	
"
UC	NNF
H
H
H7@
F
F2
J
%1':%F%F"(  :!DFFF  :!DFFFF	
F	F	F	F	F	F	F	F	F	F	F	F	F	F	F	F(	

3??9.GHHH	COOOIIJKKKK			D				sI
DA D 
A-*D,A--BDD D %F
FFct|tdt}t||dt}tD]\}}}t	||t|\}}	}
||dd||	dd|t||	t|||	dn#t$rYnwxYw|t|t	t|t}|	ddS#t$rYdSwxYw)Nrzsubkey not empty before deletez Deleting the key twice succeededzCould open the non-existent key)r%rr&r6DeleteValuer8r9r=r*r<r')rr>r?rAr/rBrCrDrErFrGs           r _delete_test_dataz!BaseWinregTests._delete_test_datasmh
q.AA#y!^<<3<	-	-.J
J,,,,$0$9$9!w	#CDDD!%EFFF

#y!!!	c9%%%II89999			D			(M***	(M22CII788888			DD	s$8%C
C+*C+*E
EEc|||||||||dSr)rJrTrW)rr>r?s   r 	_test_allzBaseWinregTests._test_allsJh	222Xy111x33333r"c@t||dt5}||jdkdddn#1swxYwYt	||dt5}||jdkddddS#1swxYwYdS)Nr)rAr/reservedaccess)CreateKeyExr&r4r5	OpenKeyEx)rrAr/ckeyokeys     r _test_named_argsz BaseWinregTests._test_named_argss'
S'A .000	.37OODK1,---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.3!,...	.15OODK1,---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.s#AAA'BBBN)r/)__name__
__module____qualname__r!rr@rJr%rTrWrYrar"r rr4s;;;
    4=#,((((R3<W&&&&P<4444
.....r"rceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
Ze
jedkdd
ZdZdZdZdZdZdS)LocalWinregTestscp|t|tddS)Nu
日本-subkey)rYrrs r test_registry_worksz$LocalWinregTests.test_registry_workss0()))(/:::::r"cd}|t|d}|t||tdS)Nc0t||dtSr$)r]r&rAr/s  r <lambda>zILocalWinregTests.test_registry_works_extended_functions.<locals>.<lambda>s;sGQ#O#Or")r@c0t||dtSr$)r^KEY_READrls  r rmzILocalWinregTests.test_registry_works_extended_functions.<locals>.<lambda>s9S'1h#G#Gr")r%)rJrrTrW)rckeokes   r &test_registry_works_extended_functionsz7LocalWinregTests.test_registry_works_extended_functionssdPO/3???GG.<<<011111r"cz|tttttdSr)rarrr*rs r test_named_argumentsz%LocalWinregTests.test_named_argumentss2/???	#]33333r"ctdt}||jd|||jddSr$)ConnectRegistryHKEY_LOCAL_MACHINEassertNotEqualr5r=r9rhs  r ,test_connect_registry_to_local_machine_worksz=LocalWinregTests.test_connect_registry_to_local_machine_workssUD"455AHa(((				1%%%%%r"cBd}|t|dS)Nc,tdtS)Nabcdefghijkl)rvrrer"r rmzCLocalWinregTests.test_nonexistent_remote_registry.<locals>.<lambda>s/.:KLLr")assertRaisesr')rconnects  r  test_nonexistent_remote_registryz1LocalWinregTests.test_nonexistent_remote_registrys&LL'7+++++r"ctd}|t|t||tjddzdS)Nz
%windir%\testwindirz\test)ExpandEnvironmentStringsr9typestrosenviron)rrs  r testExpandEnvironmentStringsz-LocalWinregTests.testExpandEnvironmentStringssT$%566a#&&&BJx08;<<<<<r"c	tdt5}||jdt#1swxYwYdS#t$r||jdYdSwxYwr$)rvrwrxr5r'r9rys  r test_context_managerz%LocalWinregTests.test_context_managers	* '9::
a##AHa000










	*	*	*QXq))))))	*s)A#:>A>A%A0/A0c
d
G
fddtj}|}|	ttt
dz5}t
dD]M}t|\}}}t
|D](}t||}	t||	d)N	dddn#1swxYwYd
|
ttt
dzttt
dS#d
|
ttt
dzttt
wxYw)NFceZdZfdZdS)>LocalWinregTests.test_changing_value.<locals>.VeryActiveThreadcttt5}d}d}s"|rdn|}|}t|dt|"ddddS#1swxYwYdS)NTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrchanging_value)r@rrr2r3)rrA	use_shortlong_stringsdones     r runzBLocalWinregTests.test_changing_value.<locals>.VeryActiveThread.runs0-@@CC $I"*K"C#,=CC+(1M	 &6BBB#CCCCCCCCCCCCCCCCCCCs)AAAN)rbrcrdr)rsr VeryActiveThreadrs5
C
C
C
C
C
C
Cr"rz\changing_valueirT)	threadingThreadstartr@rrranger8rMrLjoinr*)rrthreadrA_num_subkeys
num_valuestinamers          @r test_changing_valuez$LocalWinregTests.test_changing_values	C	C	C	C	C	C	Cy/	C	C	C"!##	8,();;==
1@Ct11A1=c1B1B.KQ":..11(a00"3Q000011
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1DKKMMM'7I)IJJJ'77777DKKMMM'7I)IJJJ'7777s1DAC9DC		DC	
DAE.c	d}	ttt5}t||tdt|\}}}t
|ddddn#1swxYwYttdt|ftttdS#ttdt|ftttwxYw)Nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrr\)	r@rrr2r3r8r(r*r)rrrArrrs      r 
test_long_keyzLocalWinregTests.test_long_keys	8,m<<
 dFC000-9#->->*ZQ
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

'M43H)I)IJJJ'77777
'M43H)I)IJJJ'7777s/B;;A%B;%A))B;,A)-B;;ADc	ttdnG#t$r:}|jtjtjfvr|dd}~wwxYwttddS)NrzMaccess denied to registry key (are you running in a non-interactive session?)r)rMHKEY_PERFORMANCE_DATAr'errnoEPERMEACCESskipTestrN)res  r test_dynamic_keyz!LocalWinregTests.test_dynamic_key(s	+Q////			w5;555

PQQQ		
	*B/////s
A5AA)rzRequires Windows XPc	ttt5}||jddddn#1swxYwYttt}||jd|t5t|dddn#1swxYwY|t5t|dddn#1swxYwY|t5t|dddn#1swxYwY|t5tttdddn#1swxYwYtttdS#tttwxYwr$)
r@rrrxr5r%rNotImplementedErrorDisableReflectionKeyEnableReflectionKeyQueryReflectionKeyDeleteKeyExr*)rckrAs   r test_reflection_unsupportedz,LocalWinregTests.test_reflection_unsupported6s	8,m<<
2##BIq111
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2+];;C
A...""#677
*
*$S)))
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*""#677
)
)#C(((
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)""#677
(
("3'''
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(""#677
>
>-}===
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
'77777I'7777sF/AF/AF/AAF/B:.F/:B>>F/B>F/C;/F/;C??F/C?F/ D<0F/<EF/EF/!F<F/FF/FF//GcD	ttt5}||jdt|ddtddddn#1swxYwYtttdS#tttwxYw)Nr	test_name)r@rrrxr5r7	REG_DWORDr*rrs  r test_setvalueex_value_rangez,LocalWinregTests.test_setvalueex_value_rangeJs
	8,m<<
I##BIq1112{D)ZHHH
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
'77777I'7777s.B4ABA  B#A $BBc	*	ttt5}|t5t|ddtdt|ddtddddn#1swxYwY|tt|d|tt|ddddn#1swxYwYtttdS#tttwxYw)Ntest_name_dwordtest_name_qword)r@rrr
OverflowErrorr7r	REG_QWORDFileNotFoundErrorrNr*rs  r "test_setvalueex_negative_one_checkz3LocalWinregTests.test_setvalueex_negative_one_checkVs		8,m<<
Z&&}55KKr#4dIrJJJr#4dIrJJJKKKKKKKKKKKKKKK!!"3\2GXYYY!!"3\2GXYYY
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
'77777I'7777sRC6C1A4(C4A8	8C;A8	<ACC6CC6CC66Dc	ttt5}||jdd}t|ddt|t|d\}}||t|||dddn#1swxYwYtttdS#tttwxYw)Nrrr)
r@rrrxr5r7rrNr9r*rrtest_valret_valret_types     r test_queryvalueex_return_valuez/LocalWinregTests.test_queryvalueex_return_valuegs

		8,m<<
4##BIq111%2{D)XFFF$0[$A$A!  9555  (333

4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
'77777I'7777/C	A:B"C	"B&&C	)B&*C		C%c	ttt5}||jdd}t|ddt|t|d\}}||t|||dddn#1swxYwYtttdS#tttwxYw)Nrr)
r@rrrxr5r7
REG_BINARYrNr9r*rs     r #test_setvalueex_crash_with_none_argz4LocalWinregTests.test_setvalueex_crash_with_none_argws
		8,m<<
4##BIq1112{Az8DDD$0[$A$A!  :666  (333

4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
'77777I'7777rc	ttt5}||jdd}t|ddt|t|d\}}||t||ddddn#1swxYwYtttdS#tttwxYw)NrzA string with a nullrzA string)
r@rrrxr5r7r3rNr9r*rs     r  test_read_string_containing_nullz1LocalWinregTests.test_read_string_containing_nulls
		8,m<<
6##BIq11152{Avx@@@$0[$A$A!  6222  *555

6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
'77777I'7777rN)rbrcrdrirrrtr{rrrrrrunittest
skipUnlessWIN_VERrrrrrrrer"r rgrgs(;;;
2
2
2444&&&,,,===
***888@888
0
0
0X6)+@AA88BA8&
8
8
8888"888 88888888r"rgzSkipping remote registry testsceZdZdZdS)RemoteWinregTestscdttt}||dSr)rvREMOTE_NAMErrY)r
remote_keys  r test_remote_registry_worksz,RemoteWinregTests.test_remote_registry_workss*$[2CDD
z"""""r"N)rbrcrdrrer"r rrs######r"rzx64 specific registry testsceZdZdZejedvddZeje	ddZ
eje	ddZdZd	S)
Win64WinregTestsc|ttttttddS)Nr)rAr/r\r[)rarrrr&rs r rtz%Win64WinregTests.test_named_argumentssD/???)=)A	7	7	7	7	7	7r")WindowsCoreHeadless	IoTEdgeOSz)APIs not available on WindowsCoreHeadlesscrttd5}|t||t||t
||t|ddddS#1swxYwYdS)NSoftware)r%rwr4rassertIsNonerr)rrAs  r test_reflection_functionsz*Win64WinregTests.test_reflection_functionss'
4
4	5OO.s334441#667772377888OO.s33444	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5sB	B,,B03B0zOS doesn't support reflectioncl	tttdttz5}||jdtttdttz5}||jddddn#1swxYwYt|ddtdd}|
t|dddn#1swxYwYtttdttz5}||jd|
dt|dt|ddtddddn#1swxYwYtttdttz5}|
dt|ddddn#1swxYwYt!tttddS#t!tttdwxYw)Nrr32KEYcTtttdttzSr$)r%rtest_reflect_key_nameroKEY_WOW64_64KEYrer"r rmz2Win64WinregTests.test_reflection.<locals>.<lambda>s"G,=,A1,4,F%H%Hr"64KEY)r]rrr&KEY_WOW64_32KEYrxr5r%r7r3rr'rr9rLror)rcreated_keyrA	open_fails    r test_reflectionz Win64WinregTests.test_reflections$	,.0Eq+o=??
6BM##K$6:::.0Eq+o=??7BE''
A666777777777777777
;Avw???HH	!!'9555#
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6(*,A1'/9;;
8>A##CJ222  *S"*=*=>>>3Avw777

8
8
8
8
8
8
8
8
8
8
8
8
8
8
8*,A1!O355
?8;  *S"*=*=>>>
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
)+@'
,
,
,
,
,K)+@'
,
,
,
,s)HAC%0BC%B	C%B	 9C%H%C))H,C)-,HAE=1H=FHF,H1%G"H"G&&H)G&*H#H3c	tttdttz5}t|}|t|t|	|t||t|dddn#1swxYwYd}|t|tttdttz5}||jddddn#1swxYwYt%tttddS#t%tttdwxYw)NrcTtttdttzSr$)r^rrrorrer"r rmz:Win64WinregTests.test_disable_reflection.<locals>.<lambda>s"	*;*?*2_*D!F!Fr")r]rrr&rrr9rboolassertFalserr4rr'r^rorxr5r)rrdisabledrrAs     r test_disable_reflectionz(Win64WinregTests.test_disable_reflections	,.0Eq+o=??	
ABM-k::  h666  ***$[111 2; ? ?@@@	
A	
A	
A	
A	
A	
A	
A	
A	
A	
A	
A	
A	
A	
A	
AFFI
gy111,.CQ#o577
3:=##CJ222
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
)+@'
,
,
,
,
,K)+@'
,
,
,
,sT)EA>B5)E5B99E<B9=A
ED/#E/D33E6D37E#Fc|t5}ttdddddS#1swxYwYdS)Nsome_value_that_does_not_exist)rrrLHKEY_CLASSES_ROOT)rctxs  r test_exception_numbersz'Win64WinregTests.test_exception_numberss


0
1
1	LS(*JKKK	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	Ls>AAN)
rbrcrdrtrskipIfrrrHAS_REFLECTIONrrrrer"r rrs777X_]]__(LLNyzz55{z5X)HII),),JI),VX)HII,,JI,:LLLLLr"r__main__z)Remote registry calls can be tested usingz('test_winreg.py --remote \\machine_name'))rsysrrtest.supportrrplatformrr
import_modulerargvrPr
IndexError
ValueErrorgetwindowsversionr
WIN64_MACHINErgetpid
test_key_baserrrrr3
REG_EXPAND_SZREG_MULTI_SZrr6TestCaserrgrrrrbprintmainrer"r <module>rs.&&&&&&++++++++
H5'::::(38>>*55a78KKJKKK #

!
!"1"
%		W,,%
!6))u3ibikk^C
},
-
=byI(yI&vF*}M888|L&&&|L'zJc7mvFdElzJV,
	R.R.R.R.R.h'R.R.R.jF8F8F8F8F8F8F8F8R["BCC#######DC#]$ABB_L_L_L_L_L_L_LCB_LDz<
9:	<	<	<HMOOOOO	s(A$$	A0/A0