1.suport emmc,2.Improve buffer performance.

This commit is contained in:
zhaoyifeng
2011-01-21 17:59:56 +08:00
parent 2b368afa99
commit 17c6f64a46
9 changed files with 2868 additions and 1866 deletions

View File

@@ -1,11 +1,9 @@
#
# linux/drivers/nand/Makefile
#
# $Id: Makefile,v 1.2.4.1 2010/07/14 02:28:12 Administrator Exp $
# $Id: Makefile,v 1.2 2010/12/27 08:46:52 Administrator Exp $
#
obj-$(CONFIG_MTD_NAND_RK29XX) += flash.o
obj-$(CONFIG_MTD_NAND_RK29XX) += ftl.o
obj-$(CONFIG_MTD_NAND_RK29XX) += rknand_base.o
obj-$(CONFIG_MTD_NAND_RK29XX) += flash.o ftl.o rknand_base.o emmc.o
obj-$(CONFIG_MTD_RKNAND_BUFFER) += rknand_buffer.o
#obj-$(CONFIG_MTD_UBI) += ubi/

View File

@@ -189,4 +189,13 @@ int FtlPageRead(int Index, int nSec, void *buf);
***************************************************************************/
char GetSNSectorInfo(char * pbuf);
extern int NandInit(void);
extern int NandRead(unsigned int Index, unsigned int nSec, void * buf) ;
extern int NandWriteImage(unsigned int Index, unsigned int nSec, void * buf);
extern int NandWrite(unsigned int Index, unsigned int nSec, void * buf) ;
extern int NandDeInit(void) ;
extern unsigned int NandGetCapacity(void);
extern void NandSetSysProtAddr(unsigned int SysImageWriteEndAdd);
#endif

733
drivers/mtd/rknand/emmc.uu Normal file
View File

@@ -0,0 +1,733 @@
begin 644 emmc.o
M?T5,1@$!`0````````````$`*``!```````````````\4@``````!30`````
M`"@`$``-`.@PG^7P0"WI`%"@X0%@H.$00(/B#P"3Z%303>)`<(WB#<"@X0\`
MA^@/`+3H#P"LZ`\`M.@/`*SH#P"TZ`\`K.@/`)3H#P",Z`P`E>E3&./G#,"5
MY0,[H.'2!^+G(B^@X0(`@.(C.Z#A7,WCYV7`C.)(P(;E`S&"X0$P@^(3,*#A
M$S&@X5`0C>*C-*#A+#"&Y0XPU>4T,(;E#3#5Y3@PAN4,,)7E`R`#XM,QXN<"
M(8'@`S&!X!`@$N50,!/ED@,#X!`PAN4`,)7E4SWBYT`PAN4(,)7E4S;@YT0P
MQN4(,)7E(SJ@X;`SQN%4T(WB\("]Z```````()#E`#"@XU(FY^=]+H+BMB'!
MX0`@D.52)./G&"#!Y03`D.4#(-#E#"2"X1P@@>4'(-#E("#!Y0P@D.4A(,'E
M"R#0Y2(@P>6Z(-#A(R#!Y0@@D.4B)*#A)"#!Y0@@D.4F,,'E)2#!Y;X@T.$H
M(,'E#""0Y2HPP>4B-*#A*3#!Y0\PT.4K,,'E'O\OX>PPG^7P0"WI`%"@X1!`
M@^(!8*#A#P"3Z%303>)`<(WB#<"@X0\`A^@/`+3H#P"LZ`\`M.@/`*SH#P"T
MZ`\`K.@/`)3H#P",Z`PPE>4C/[#A#```&@P`E>E3&./G`SN@X=('XN<B+Z#A
M`@"`XB,[H.$#,8+A`3"#XA,PH.$3,:#AHS2@X0<``.H!`%/C!@``&@@PE>6V
M(-7A/S`#X@,X@N$!,(/B`S6@X2PPAN4,,)7E4!"-X@,@`^+3,>+G`B&!X`,Q
M@>`0(!+E4#`3Y9(#`^`0,(;E"#"5Y5,VX.=$,,;E"#"5Y2,ZH.&P,\;A5-"-
MXO"`O>A0````"#"?Y0P@D^4(((/E'O\OX0`````(,)_E,""3Y2P@@^4>_R_A
M``````@PG^54()/E4""#Y1[_+^$`````"#"?Y50@D^50((/E'O\OX0````#W
M0"WI``!0XP`PH.,$,(WER`"?!<C`GP4'```*`0!0X\`PGQ7``)\%P,"?!6PP
MDQ4``),5`,"@$0$,@!)(,)SE!#"-Y00PG>4$,!/B(0``&@-0$>(A0:#A`5"@
M$P-@`>($4(7@$`!5XPH``(H$``#J`'"0Y0-Q@N<!,(/B2'"<Y01PC>4$`%/A
M`@``*@1PG>4$`!?C]?__"@0`5>$-``":!#"=Y00P$^(!"J`3`Q#!`P``D`4"
M```*!P``ZC#,H.$!P,3G!@!3X0-`@N"#P:#A`3"#XOC__SH``*#C_H"]Z`!!
M(1``0"$0``````"!(1``@"$0<T`MZ0!04.(`,*#C!#"-Y=A`GP4$```*`0!5
MX]`PGQ700)\%;#"3%0!`DQ5`,)3E!#"-Y00PG>4$,)WE`0@3XQ(```JH,)_E
M)""@XR1@E.62-2/@`6C&XP$HH.,D8(3E1""$Y2`PD^4``%/C````"C/_+^%X
M,)_E)""@XY(U(^`=,-/E``!3XP%HAA,D8(05!#"=Y00`$^,$,*`31#"$%00P
MG>4(`!/C"#"@$T0PA!4$,)WE`@H3XP0```H``%7C`3@`XP-0H`$"6Z`3)%"$
MY00PG>4!`!/C4#"4%0$PH!-$,(05!#"=Y00PG>5\@+WH`$`A$```````@"$0
M``"@X[[__^H!`*#CO/__Z@(`H..Z___J`@"@X[C__^H"`%#C`0"@`Q[_+P$`
M`*"#`0"@DQ[_+^$(T$WB`#"@XP$`H.,$,(WE"-"-XA[_+^$``*#C'O\OX10P
MG^4D(*#CDC`CX```H.,$,)/E`#"!Y1[_+^$`````"-!-XEPPG^4`(*#C``!0
MXP0@C>4D((+B`<"@XY(P(N!$,)\%'<#"Y2`0@N4#```*`0!0XVPPDQ4P,)\%
M`#"3%20@D^4``*#C!""-Y00@G>4!*(+C!""-Y00@G>4D((/E"-"-XA[_+^$`
M`````$`A$`"`(1!@,)_E)!"@XPC03>(``%#C`""@XY$P(>`$((WE2#"?!1C`
M@>(@(('E!2#,Y0,```H!`%#C;#"3%3`PGP4`,),5)""3Y0``H.,$((WE!""=
MY0$HPN,$((WE!""=Y20@@^4(T(WB'O\OX0``````0"$0`(`A$```H.,>_R_A
M,#"?Y5X?H..P"-/AO"_3X;$PD^$"`%#A`@"@,0(`4.,"`*`S`P!0X0,`H#$!
M`(#B<`#_YA[_+^$`````,#"?Y;`HT^$``%+A!P``"KPOT^$``%+A!```"EXO
MH..R,)/A``!3X`$`H!,>_R_A``"@XQ[_+^$``````@!0XP````H6``"*7#"?
MY7@@D^4``%+A`#"@`P<```KT()/E``!2X0$PH`,#```*<#&3Y0``4^$*```:
M`C"@XR@@G^5\$*#CD2,CX'`P@^($`-/E``!0XP$@H`,``*`3!"##!1[_+^$$
M`*#C'O\OX0```````*#C'O\OX0``4N-P0"WI)0``"@(`4.,`0*`!#0``"B$`
M`(J(P)_E>$"<Y0``5.$`0*`#!P``"O1`G.4``%3A`4"@`P,```IPP9SE``!<
MX14``!H"0*#C6,"?Y7Q0H..5Q"S@-$"<Y00`4N$.``"*`5""X`0`5>$+``"*
M#$"<Y010W.6$`!3C`$"@$PE`H`,``%7C`0>@`W"`O0@1%*#A#^"@X53PG.5P
M@+WH!`"@XW"`O>@`````<```````4N-P0"WI*0``"@(`4.,`0*`!#0``"B4`
M`(J8P)_E>$"<Y0``5.$`0*`#!P``"O1`G.4``%3A`4"@`P,```IPP9SE``!<
MX1D``!H"0*#C:,"?Y7Q0H..5Q"S@-$"<Y00`4N$2``"*`5""X`0`5>$/``"*
M'$#<Y0``5.,!"*`3<("]&`Q`G.4$4-SEA``4XP!`H!,)0*`#``!5XP$'H`-P
M@+T($12@X0_@H.%8\)SE<("]Z`0`H.-P@+WH`````'`````/`"WI$-"-XA[_
M+^$>_R_A'O\OX0$`H.,>_R_A0#"?Y0#`H.$00"WI`4"@X^0AT^4!`%+C`""@
M@^0APX4@,)_EY`'3Y0$0@.*``:#A`""#X'L/@N+L08+EZ,&"Y>01P^40@+WH
M`````![_+^$>_R_A0#"?Y0#`H.$00"WI`$"@X_@AT^4!`%+C`""@@_@APX4@
M,)_E^`'3Y0$0@.*``:#A`""#X`(,@N(`0H+E_,&"Y?@1P^40@+WH`````![_
M+^$>_R_A'O\OX1[_+^$0,)_E^A^@XQ!`+>D,`I/E_O__ZQ"`O>@`````'O\O
MX1[_+^$>_R_A'O\OX1@PG^4``%#C$""?Y;PPD^4#/(,3`SS#`[PP@N4>_R_A
M`(``]0,`4.,`\9^7)P``ZL0)``#<"0``!`H``#0*``",,)_E8""3Y0(HH.$B
M**#A%2B"XP4``.IT,)_E8""3Y?\FPN,/*,+C52:"XP4H@N-@((/E9""3Y0\@
MPN,)``#J3#"?Y6`@D^4"**#A(BB@X54D@N-5*(+C8""#Y60@D^4/(,+C!2""
MXV0@@^4>_R_A'#"?Y6`@D^4"**#A(BB@X6`@@^5D()/E#R#"XV0@@^4>_R_A
M`(``]0,`4.,`\9^7'@``ZG@*``"8"@``N`H``-`*``!H()_E5#"2Y?\\P^/P
M,,/C4#"#XP$Y@^-4,(+E'O\OX4@PG^5@()/E/R7"XQ4E@N,_*,+C%2B"XV`@
M@^4>_R_A*""?Y6`PDN7_-L/C#SC#XV`P@N4>_R_A$""?Y6`PDN7_-L/C#SC#
MXV`P@N4>_R_A`(``]0,`4.,`\9^7)P``Z@@+```<"P``0`L``'@+``",,)_E
M5""3Y0(HH.$B**#A`P``ZG@PG^54()/E<B#_YA4E@N,5*(+C5""#Y5@@D^4/
M(,+C"P``ZE0PG^54()/E#R+"XP4B@N,_)<+C%26"XS\HPN,5*(+C5""#Y5@@
MD^4/(,+C!2*"XU@@@^4>_R_A'#"?Y50@D^4"**#A(BB@X50@@^58()/E#R#"
MXU@@@^4>_R_A`(``]0$`4.,`(*`3`2"@`P`PH.$#`%'C``"@$P$``@(``%#C
M$$`MZ18``!H``%'C%```"@(`4>,$```*`P!1XP0```H!`%'C#@``&@(``.H!
M`*#C````Z@(`H.,``%/C`0``&O[__^L$``#J``!2XP$```K^___K````ZO[_
M_^L!`*#C$("]Z```H.,0@+WH`@!1XW!`+>D`4*#A!0``"@,`4>,'```*`0!1
MXP0`H!-P@+T8`0``Z@%`H.,"``#J`$"@XP```.H!2*#C!0"@X?[__^L``%7C
M(#"?!00```H!`%7C&#"?%1@PGP5L,),5`#"3%0``H.,80(/E<("]Z`!`(1``
M`````(`A$`$`H.,>_R_A`0"@XQ[_+^$>_R_A`0"@XQ[_+^$00"WI_O__ZP$`
MH.,0@+WH"#"?Y50@D^50((/E'O\OX0`````8,)_E'R``XJ`"H.$!P*#C`!&3
MYQPB@>$`(8/G'O\OX6P``/48,)_E'R``XJ`"H.$!P*#C`!&3YQPBP>$`(8/G
M'O\OX6P``/4``*#C'O\OX1`PG^7Z'Z#C$$`MZ0P"D^7^___K$("]Z``````0
M0"WI$$"?Y1``G^40$I3E_O__ZQ`"E.40@+WH``````````#^___J]22@XU`P
MG^400"WI4!"2Y05`H.,#&\'C4!""Y00@D^4@((+C!""#Y0`@D^4@(,+C`""#
MY0```.K^___K`4!4XA@`G^7[__\J##"?Y0`@D^4@((+C!""#Y1"`O>@`P`/U
ML&5F!G!`+>D`4%#B+5"@`P(```H!`%7C+E"@`R]0H!/U1*#C`2"@XQ]0!>(@
M`)_E<#"4Y1)5H.$#,(7A<#"$Y?[__^MP,)3E!5##X7!0A.5P@+WH^-:C``=`
M+>D@X)_E`,"@XQP0G^4,(*#A##"@X3D`H.,`X(WE!,"-Y?[__^L.@+WH$P``
M```````<,)_E`1"@XQ!`+>EL,)/E(`"3Y?[__^L``.#AH`^@X1"`O>@`````
M\$$MZ1A0W>4!@*#A`V"@X0``5>,"<*#A`Q&@X=Q`G^4J```:;'"4Y0@`H.$"
M(*#C"H*(XO[__^LH@(?E;#"4Y2@PD^4``%/C`!"@$PX``!H&``#JJ!"?Y24A
M`..D`)_E_O__ZZ``G^4F$0#C!0``ZHP0G^43+J#CB`"?Y?[__^N$`)_E,1$`
MX_[__^ML0)_E!F&@X6PPE.4L8(/E;#"4Y20@D^4@`)/E_O__ZVP@E.4&,*#A
M`A"@X2``DN4H()+E_O__ZP``X.&@#Z#A\(&]Z&R`E.4"`*#A`2"@XPIRA^+^
M___K*'"(Y6PPE.4H,)/E``!3XP$0H!/C__\:U/__Z@````"@````&````#X`
M``#^___J_O__ZO[__^H``%+C$$`MZ0!`H.$````*_O__ZP0`H.$0@+WH_O__
MZM`0H./^___J_O__ZG-`+>D``%#C`#"@XP%@H.$$,(WEO$"?!00```H!`%#C
MM#"?%;1`GP5L,),5`$"3%?I?H.,```#J_O__ZRPPE.4!`*#C!#"-Y00PG>4`
M`%/C`@``N@``5>,$```:&P``Z@``5>,!4$7B\O__&A<``.H``%;C!&"-!0$P
MH!,$,(T5!#"=Y?I?H.,0,(3E4#"?Y2PPA.4```#J_O__ZRPPE.4!`*#C!#"-
MY00PG>4``%/C`P``N@``5>,``*`3!```&@(``.H``%7C`5!%XO'__QH!"J#C
M?("]Z`!`(1```````(`A$``@((!P0"WI`$!1X@!0H.$3```:6#"?Y20@H./Z
M'X'BDC`BX!A`@N4,`I/E_O__ZX`;"^,`8*#A_O__ZP8`H.$`8%'B`6"@$X`;
M"^/^___K``"&X#\`4.,!``":`0J@XW"`O>@%`*#A!!"@X7!`O>BI___J````
M`/-!+>D`8%#B`#"@XP%0H.$$,(WEC$&?!00```H!`%;CA#&?%81!GP5L,),5
M`$"3%70QG^4``%7C!`"@`PQRD^56```*!@"@X0`0H..4___K``!0XU$``!H'
M`*#A^A^@X_[__^N`&POC`'"@X?[__^L'`*#A`(!1X@&`H!.`&POC_O__ZP`0
MB.`'`*#A/P!1XS\0H"/^___K!1"@X0!PH.'^___K!P"@X0!P4>(!<*`3!1"@
MX?[__^L`<(?@`0!7XP`PH`,!,`<2``!3X_XQ`.,!<(<2`P!7X?J/H),!``":
M+0``ZO[__^LL,)3E`0"@XP0PC>4$,)WE``!3XP(``+H``%CC!```&B,``.H`
M`%CC`8!(XO+__QH?``#J`0!7XP`PH`.G<*`1!#"-!01PC149#E7C`#"@@_I?
MH.,$,)V5"#"$Y6@PG^4L,(3E````ZO[__^LL,)3E`0"@XP0PC>4$,)WE``!3
MXP(``+H``%7C"0``"@,``.H``%7C`5!%XO+__QH$``#J!@"@X0$0H.,(T(WB
M\$&]Z$'__^H!"J#C"-"-XO"!O>@`0"$0``````"`(1``(""`<$`MZ0!0H.$!
M0*#AC?__ZP``4.,D(*`#"#"?!9(U)0`80(4%<("]Z`````#S02WI]$"?Y0!0
MH.$*`*#C`#"@XP0PC>4,@I3E_O__ZP4`H.'^___K``!5X]!`GP4#```*`0!5
MXVPPE!7$0)\%`$"3%0,PH./Z?Z#C`#"$Y0```.K^___K`#"4Y0$`H.,$,(WE
M!&"=Y0-@%N("```:``!7XP0``!H>``#J``!7XP%P1^+R__\:&@``ZG@PG^4(
M`*#A^A^@XTPPA.488(3E#&"$Y?[__^L9,*#C``!5XY,``^```*#C_S3#XV0P
MA.4`,.#C1#"$Y01@C>4$,)WE`CN#XP0PC>4$,)T%`3"#`P0PC04$,)WE)#"$
MY1`PH.,`,(3E````Z@$*H./\@;WH``````!`(1``@"$0$``/,*@QG^7W12WI
MI`&?Y?@1T^4`(*#C!""-Y0$`4>,``(/E^"'#A0@@@^4,((/E$""#Y1@@@^4<
M(,/E`""@XVPQG^5P09_E<*&?Y?C!T^4!$(SBC,&@X0P`@^!Q$._F`LR`X@$`
M4>/\08#E`"*`Y0(`H.,$`(/E1`&?Y?@1P^44P(/E^"'#A20`@^4L((/E,""#
MY30@@^4\((/E0"##Y0`@H.,(,9_E&$&?Y?C!T^4!$(SBC,&@X0P`@^!Q$._F
M`LR`X@$`4>/\08#E`"*`Y6P`D^4XP(/E`L"@X_@1P^4HP(/E`!"0Y0``H.-0
M((/E`$"@X50@@^4`8*#A2!"#Y?@APX58((/E8""#Y60@P^4#(*#CF#"?Y0)0
MH.$#<*#A^,'3Y0&`C.(<PJ#A#!"#X`+,@>+\H8'E``*!Y?B!P^5<P(/E3""#
MY14``.H"`%3C^A^@XQ(``!H,`I?E_O__ZX`;"^,`@*#A_O__ZP@`H.$`@%'B
M`8"@$X`;"^/^___K`1"@XP`PB.`$`*#A/P!3XP8``(K^___K!`"@X?[__^L`
M8(WE`5!5X@%`A.+F__\:_H6]Z```````0"$09P```'$`````@"$0;````+0P
MG^7P3RWIL$"?Y0\`D^@4T$WB`%"@XZ1@G^4-P*#A#7"@X06`H.$!H*#C>I^$
MXG"PA.('`*SH(^B@X;(PS.``X,SE?#"@XP`0H.-L(*#CDP4`X.0QU.4!4(7B
M`0!3X^2!Q(7D,=3E"`"`X@``B^`!X(/B@S&@X0/`A.`#,(G@!#"#XNAQC.4%
M<(?B[*&,Y>3AQ.4(,`;E!(!&Y?[__^L#`%7C`##@XWPPAN3D__\:_O__ZQ30
MC>+PC[WHL`````````!X````$$`MZ0!`H.$```#J_O__ZP``5.,(`)_E`4!$
MXOK__QH0@+WHL&5F!O[__^IS0"WI``!0XP`PH.,$,(WE5%"?!00```H!`%#C
M3#"?%4Q0GP5L,),5`%"3%0!`H.-`8)_E!0``ZO[__^L!`*#C_O__ZP8`5.$!
M"Z`#!0``"D@PE>4!0(3B!#"-Y00`G>4"#!#B\___&GR`O>@`0"$0``````"`
M(1!!0@\`\$\MZ0!04.(DT$WB`Z"@X0%@H.$`,*#C%""-Y1PPC>5,<)WE4("=
MY91'GP4$```*`0!5XXPWGQ6,1Y\%;#"3%0!`DQ4!*1;B$""-Y1L``!I(,)3E
M'#"-Y1PPG>4$`!/C%@``&@`PE.40EP+C'#"-Y1PPG>4",(/C'#"-Y1PPG>4`
M,(3E````ZO[__^L`,)3E`0"@XQPPC>4<,)WE`@`3XP(``!H``%GC!```&KT!
M`.H``%GC`9!)XO+__QJY`0#J`@H6XP4```I(,)3E'#"-Y1PPG>4"#!/C`0N@
M$[8!`!HL,)3E'#"-Y1PPG>4``%/CK`$`NLPVG^4D(*#CDC4CX!B0@^($(-GE
M``!2XP4```H8$)/E!0"@X2W^_^L``%#CI0$`&@0`R>4"/!;B##"-Y8````H`
M`%?C!`"@`YX!``H./`;B!@Q3XSX``!H``%7C>":?!0,```IT-I_E`0!5XW`F
MG^4#(*`1``!5XP`PH.,(((WE&#"-Y426GP58%I\%!@``"@$`5>,X-I\5.):?
M!4@6GP5L,),5`)"3%0$<B1(#L!?B`;"@$R>QB^`@`%OC"[&@D0`PH),#``":
M!0``Z@,@F.<$,(/B`""!Y0L`4^'Z__\:5```ZNCEG^4DP*#C"S"@X04`H.$(
M(*#AG.4LX`C@G>4$X(WE`>"@XP#@C>4`X*#C$(",Y0RPC.4(X(SE_O__ZP``
M4.-#```*`#"9Y0`0H..<)9_E&#"-Y1@PG>4@,(/C&#"-Y1@PG>4`,(GE;#"2
MY38``.H``%7C?,6?!0,```IX-9_E`0!5XW3%G^4#P*`1``!5XP`PH.,8,(WE
M3)6?!00```H!`%7C1#6?%425GP5L,),5`)"3%0,@%^(G,:#A`2"@$P,@@N`0
M`%+C(0``FAP5G^4D(*#C``!5XP``H..2%2+@"`""Y1"`@N4,,(+E$"6?!00`
M``H!`%7C;""1%00EGP4`()(5`2R"$@4`H.$($*#A`+"@XP`8C>C^___K"P!0
MX0L```H`,)GE"Q"@X1@PC>48,)WE(#"#XQ@PC>48,)WE`#")Y:0TG^5L,)/E
M(`"3Y?[__^M(,)WE'#"$Y2!PA.44()WE`C'&XP$XP^,0EP+C`C&#XR@@A.4L
M,(3E````ZO[__^LL,)3E`0"@XQPPC>4<,)WE``!3XP(``+H``%GC!0``&@D!
M`.H``%GC`9!)XO+__QH%`0#J_O__ZT0PE.4!`*#C'#"-Y1PPG>4$`!/C^/__
M"A`PG>4``%/C!#"@XT0PA.4;```*2#"4Y1PPC>4<,)WE!``3XQ8``!H`,)3E
M^I^@XQPPC>4<,)WE`C"#XQPPC>4<,)WE`#"$Y0```.K^___K`#"4Y0$`H.,<
M,(WE'#"=Y0(`$^,"```:``!9XP0``!KA``#J``!9XP&02>+R__\:W0``ZD0P
ME.4<,(WE'#"=Y0$,$^,E```*`##@XT0PA.4`,)3E'#"-Y1PPG>4@`!/CTP``
M"@YL!N(&#%;C!0"@`04`H!$!$*`#`!"@$_[__^L<,)WE^E^@XR`PP^,<,(WE
M'#"=Y0(P@^,<,(WE'#"=Y0`PA.4```#J_O__ZP`PE.4!`*#C'#"-Y1PPG>4"
M`!/C`@``&@``5>.Y```:M@``Z@``5>,!4$7B\O__&K(``.H,()WE``!2XP$`
M`!I]``#J_O__ZT0@E.4(,`+C`0"@XQP@C>4<()WE`S`"X```4^/V__\*#CP&
MX@8,4^,(,*#C1#"$Y1D``!H`,)3E'#"-Y1PPG>4@`!/C!P``"@4`H.$!$*#C
M_O__ZQPPG>4@,,/C'#"-Y1PPG>4`,(3E1#"4Y1PPC>4<,)WE@``3XV$``!H<
M,)WE`@D3XUP``!H%`*#A@/[_ZP``4.-4```*BP``Z@`PE.4<,(WE'#"=Y2``
M$^,'```*!0"@X0`0H./^___K'#"=Y2`PP^,<,(WE'#"=Y0`PA.5$()3E@#(*
MXQP@C>4<()WE`S`"X```4^,[```*'#"=Y0(*$^,I```*]#&?Y?I_H.,L,(3E
M````ZO[__^LL,)3E`0"@XQPPC>4<,)WE``!3XP(``+H``%?C!0``&F$``.H`
M`%?C`7!'XO+__QI=``#J_O__ZT0PE.4!`*#C'#"-Y1PPG>4,,`/B#`!3X_?_
M_QI$,(3E`CJ@XT0PA.4".D/B'#"-Y0,`5>$<,)WE`GR@XP([@^,<,(WE'#"=
M!0`P@P$<,(T%'#"=Y20PA.49``#J'#"=Y0()$^,#```*/S`&X@X`4^,0```:
M!P``ZAPPG>4"#!/C@'"@$PX``!H<,)WE@``3XPH``!H%``#J!Q"@X0@@H.$%
M`*#A(OG_ZP!PH.$$``#J`'"@XP(``.H!?*#C````ZD!PH.-$,)3E``!7XQPP
MC>4`,.#C1#"$Y2D``!H!"!;C`P``"@4`H.$8_O_K``!0XR0``!I6,^#G``!:
MXP`PH`,!,`,2``!3XPH```J``!;C,#"4%3`PE`4`,(H5-#"4%0`PB@4$,(H5
M.#"4%0@PBA4\,)05##"*%50PG^4D(*#CDC4EX!@PE>49#E/C#```FAPPG>5`
M`!/C$`"@$PD``!H<,)WE`@`3XP@`H!,$```*!```Z@$*H.,"``#J(`"@XP``
M`.H'`*#A)-"-XO"/O>@`0"$0``````"`(1``````````````````02$0`($A
M$$Q!`(`"`%#C\$$MZ1A`G>4<P)WE(%"=Y0````H8``"*9&"?Y7APEN4``%?A
M`&"@`P<```KT<);E``!7X0%@H`,#```*<&&6Y0``5N$,```:`F"@XS!PG^5\
M@*#CF'8FX'1@UN4``%;C`0>@`_"!O0@80(WE',"-Y2!0C>7P0;WH_O__Z@0`
MH./P@;WH`````!!`+>D8T$WB&#"-X@!`H.-`$)_E!""@X01`(^4`0(WE!$"-
MY0A`C>7^___K(`!0XQ!`C04%```*``!0XP@`4!,!```*$`!0XP```!H``*#C
M&-"-XA"`O>A,00$`^#"?Y?!!+>D`8*#A>""3Y1C03>(``%+A`""@`P@```KT
M()/E``!2X0$@H`,$```*<#&3Y0``4^$$`*`3+0``&@(@H..T$)_E?("@XP`P
MH.,4<(WB`T"@X0-0H.&8$BC@%#"-Y1`PC>6`@(CBL"#8X08`H.%-$0#C!S"@
MX0!0C>4"**#A!%"-Y0A0C>7^___K``!0XP<``!H4,)WE`@03XP((H!,,```:
M`@43XP``H!,!`*`#"```ZB``4.,04(T%!0``"A``4.,(`%`3`@``&@%`A.(#
M`%3CX___&@`P4.(!,*`3`P!4XP`PH!,``%/C`T"@X0$`H!,8T(WB\(&]Z```
M``#P3RWI`6"@X;`1G^5\@*#C+-!-X@!`H.$H<(WB`5"@XY@0*.`4((WE&#"-
MY0*<H.,4,)WE`""@XXB`B.($("?E@S2@X1PPC>44P)WE`:!%X@$`7.,*```:
M&,"=Y00`H.%8%P+C!B"@X0<PH.$`D(WE`!*-Z?[__^L`L%#B&P``&C\``.H<
MP)WE!`"@X5D7`N,&(*#A!S"@X0`2C>@8P)WE","-Y?[__^L`L%#B#P``&@L@
MH.$$`*#A!S"@X0`1G^4`L(WE"V"@X02PC>4(L(WE_O__ZR``4.,`L*#A(&"-
M!0I0H`$&`*`!)0``&B@``.I``%OC!`"@`00```H!#%OC#```&@0`H.$`,*#C
M(#"-Y6+__^L``%#C'```&@`0F.4$`*#A?1Y!XO[__^L``%#C%P``&@T``.H@
M`%OC!```&@0`H.%L___K``!0XP<```H.``#J$`!;XP@`6Q,`L*`#"E"@`0L`
MH`$)```*!```Z@$PA>($`%/C`@``"@-0H.&P___J"E"@X0``H.,```#J"E"@
MX0#`6^(!P*`3`P!5XP#`H!,``%SC#%"@X0&PH!,``%#C"P"@`2S0C>+PC[WH
M`````$Q!`0#P3RWI`6"@X=01G^5\@*#C+-!-X@!`H.$H<(WB`5"@XY@0*.`4
M((WE&#"-Y0*<H.,4,)WE`""@XXB`B.($("?E@S2@X1PPC>44P)WE`:!%X@$`
M7.,*```:&,"=Y00`H.%1$P+C!B"@X0<PH.$`D(WE`!*-Z?[__^L`L%#B'0``
M&D@``.H<P)WE!`"@X5(3`N,&(*#A!S"@X0`2C>@8P)WE","-Y?[__^L`L%#B
M$0``&L@`@.(+8*#A_O__ZPL@H.$$`*#A!S"@X1@1G^4`L(WE!+"-Y0BPC>7^
M___K(`!0XP"PH.$@8(T%"E"@`08`H`$L```:+P``Z@(,6^,`$)@%`#"@`P0`
MH`$@,(T%#0``"@$,6^.``%L3`#"@$P$PH`,$```:!`"@X>K^_^L``%#C`@``
M"AX``.I``%OC!@``&@`0F.4$`*#A?1Y!XO[__^L``%#C%P``&@T``.H@`%OC
M!```&@0`H.'Q_O_K``!0XP<```H.``#J$`!;XP@`6Q,#L*`!"E"@`0L`H`$)
M```*!```Z@$PA>($`%/C`@``"@-0H.&G___J"E"@X0``H.,```#J"E"@X0#`
M6^(!P*`3`P!5XP#`H!,``%SC#%"@X0&PH!,``%#C"P"@`2S0C>+PC[WH````
M`$Q!`0!8PI_E\$\MZ0.@H.%X,)SE/-!-X@!`H.$!@*#A``!3X0)PH.$`4*`#
M!P``"O0PG.4``%/A`5"@`P,```IP,9SE``!3X8$``!H"4*#C`6!XX@!@H#,`
M`%?C`#"@$P$P!@(``%/C>0``&@``6.,T,(WE`P``"@@`H.'^___K$`!0XW(`
M`,H'`*#A_O__ZQ``4.-N``#*Q#&?Y7P@H..2-2/@C3#3Y0``4^,!```*``!6
MXV8``!JD,9_E?""@XY(U(^"X.M/A@``3XP')H`-@```*$&"-XB0@H.,`$*#C
M!@"@X?[__^L``%KC!3"@$P$PH`-\(*#C`I"&XA`PS>5<,9_EDC4CX(TPT^4`
M`%/C#```"@@`H.'^___K`+"@X0<`H.'^___K"!"@X0NP@.`)`*#A`;#&Y?[_
M_^L)`*#A!Q"@X00``.H'`*#A_O__ZP<0H.$!`,;E"0"@X?[__^L!(-;E-'"-
MX@0`H.%0$0+C`B""X@<PH.$`P*#C","-Y0#`C>4$P(WE_O__ZP#`4.(P```:
M`>#6Y0P@H.$$`*#A:A<"XP<PH.$"P([B$."-X@3`C>4`P(WE"."-Y?[__^L`
MP%#B(P``&C0PG>4!!!/C"P``"@0`H.$',*#A4!$"XP(LH.,(P(WE`,"-Y03`
MC>7^___K``!0XP#`H!$!P*`#%```ZEC@G^4$`*#A?$"@XPC`C>4`P(WE!S"@
MX93E)>`$P(WE4!$"XP'`H.,"+*#CC<#%Y?[__^L`P%#B!0``&@``6N,TP)T5
M`L0L$MS,X!<```#J!,"@XPP`H.$\T(WB\(^]Z`````#P3RWI'-!-X@#`H.,8
M0(WB0+"=Y0!PH.$"@*#A`Z"@X0&8H.$,8*#A`U"@XP3`).5W$0+C"2"@X00P
MH.$'`*#A`&"-Y0%01>($8(WE"&"-Y?[__^L``%#C#0``&A0PG>4@`!/C"@``
M"D3`G>4'`*#A2."=Y0@0H.$*(*#A"S"@X0#`C>5,P)WE!."-Y0C`C>7^___K
M.``0XP`PH`,!,*`3``!5XP`PH-,!,`/"``!3X][__QH<T(WB\(^]Z/!/+>D4
MT$WB`'"@X0%@H.$XH)WE`E"@X3R0G>4#@*#A0+"=Y0-`H.,(,*#A!P"@X080
MH.$%(*#A`*"-Y0%`1.(`"HWI_O__ZS@`$.,`,*`#`3"@$P``5.,`,*#3`3`#
MP@``4^/O__\:%-"-XO"/O>CP02WIN"#0X5C03>(`P*#C6&"-X@!`H.%W$0+C
M`BB@X03`)N4&,*#A``"0Y110C>((P(WE`,"-Y03`C>7^___K`'!0XMP``!H'
M$*#A"""@XP4`H.'^___K``"4Y0<@H.$&,*#A<Q,"XPC`H.,(4(WE!,"-Y0#`
MC>7^___K``!0X\T``!H%@*#A!3"@X04@H.$'P-/E`!#2YP#`PN<!`(#B!`!0
MXP<0P^4!,$/B]___&@<PU>4/,`/B`0!3XP(PH`,%```*`@!3XP,PH`,"```*
M``!3XP$P@P(`,*`32#"$Y20@H.,``)3EU#*?Y9(P(^`$,)/E``!3XP0`4Q,`
MP*`3`<"@`U````H!`%/C3@``F@8PU>4$`!/C2P``"K@@U.%48(WB=Q$"XP8P
MH.$(P(WE`BB@X0#`C>4$P(WE_O__ZP#`4.)````:``"4Y481`N,"(*#C!C"@
MX0C`C>4`P(WE!,"-Y?[__^L``%#C-@``&@``E.4"$*#C_O__ZP#`4.(Q```:
MN"#4X7<1`N,``)3E!C"@X0C`C>4"**#A`,"-Y03`C>7^___K`'!0XB8``!H`
M`)3E!C"@X7,3`N,'(*#A","@XP3`C>4`P(WE%,"-X@C`C>7^___K``!0XPPP
ME`4!,(,###"$!1<```JX(-3A=Q$"XP``E.4&,*#A"'"-Y0(HH.$`<(WE!'"-
MY?[__^L`P%#B#```&@``E.4,(*#A!C"@X481`N,`P(WE!,"-Y0C`C>7^___K
M``!0XP(``!H``)3E`1"@X_[__^M(,)3E`0!3XU@``)H48(WB`!"@XT`@H.,&
M`*#A_O__ZP``E.5&$P+C3"&?Y50PC>)`P*#C"&"-Y03`C>4`P(WE_O__ZP``
M4.-(```:!3"@X3\0T^4`(-;G`!#&YP$`@.(@`%#C/R##Y0$P0^+W__\:,C#5
MY0(`$^,\```*+S#5Y0\@`^(!`%+C.```&@$`4^,V```:(Q#5Y0(0$>(S```:
M/R""X@8`H.'^___K``"4Y483`N/$()_E5#"-XD#`H.,(8(WE!,"-Y0#`C>7^
M___K``!0XR4``!H_(-CE`##6YP`@QN<!`(#B(`!0XS\PR.4!@$CB]___&B\P
MU>4/(`/B`0!2XQD``!KP,`/B\`!3XQ8```HP,-7E#R`#X@\`4N,2```*\#`#
MXO``4^,/```*,3#5Y0\@`^(/`%+C"P``"O`P`^+P`%/C"```"H!;"^,``)3E
M!1"@X?[__^L``%#C$%"$!0PPE`4",(,###"$!5C0C>+P@;WH`````/'__P#Q
M__^`\$\MZ0`PH.,LT$WB`$"@X2A@C>(#4*#A`W"@X00P)N4``)3E!Q"@X6D@
M`N/D,Y_EP`"-Z`APC>4,<(WE_O__ZP``4.,9```:)#"=Y0``4^,L``"JP".?
MY<`3G^4"`%/A`0!3$02PH`,J```*`R&"X@,1@>("`%/A`0!3$0BPH`,D```*
M`,"4Y7P0H..0(Y_E,5"@XP()H..1+"S@Y%",Y0#`E.61+"+@Z#""Y;L``.H@
M`%#C:&.?Y0`@E.4)```:?#"@XR!PC>4R$*#CDV(BX.00@N4`()3EDV(FX.@`
MAN4""J#CK0``ZGPPH.,T$*#CDV(BX.00@N4`()3EDV(FX.@`AN6E``#J`5"%
MXO\/5>/"__\:`0``ZO\/5>,*```:`!"4Y7P@H./T,I_E-@"@XY(Q(>#D`('E
M`!"4Y9(Q(^``(*#CZ""#Y;```.H`P*#C$&"-X@``E.4,(*#APA$"XP8PH.$0
MP(WE%,"-Y1C`C>4<P(WE`,"-Y03`C>4(P(WE_O__ZP!04.()```*`!"4Y7P@
MH..(,I_E-P"@XY(Q(>#D`('E`!"4Y9(Q(^#H4(/EE@``Z@8`H.$$$*#ANO3_
MZURBG^4D@(WB7I^@XP``E.5#$0+C!2"@X0@PH.$`4(WE!%"-Y0A0C>7^___K
M,&*?Y0``4.,+```*`""4Y7PPH.,X$*#CDV(BX.00@N4!$('B`""4Y9-B(N#H
M`(+E`""4Y9-B(N!*``#JMG+=X;`XVN$'`%/AY/__"KP_VN$'`%/AX?__"KDP
MFN$'`%/A70``&MW__^H`()3E?#"@XSH0H..38B+@.@``Z@H`H.$$$*#AL/3_
MZQ`PE.7`'07C``"4Y0,`4>$#$*`A$!"$Y?[__^L``%#C`""4%7PPH!,[$*`3
MDV(B$"H``!H``)3E"2"@X7`1G^4(,*#A`%"-Y010C>4(4(WE_O__ZP``4.,`
M()05?#"@$SP0H!.38B(0'```&@``E.50$0+C`BR@XP@PH.$`4(WE!%"-Y0A0
MC>7^___K``!0XP`@E!5\,*`3/1"@$Y-B(A`.```:``"4Y0<0H.%J(0+C!3"@
MX0"`C>4$4(WE"%"-Y0Q0C>7^___K``!0XP@```H`()3E?#"@XSX0H..38B+@
MY!""Y0`@E.638B;@Z`"&Y2D``.HD,)WE%%#$Y0($$^,!,*`3%3#$%0,``!H`
M,*#C!`"@X14PQ.4G_O_K!#"4Y0NP@^$$L(3E&P``Z@`0E.5\(*#C=#"?Y37`
MH..2,2'@Y,"!Y0`0E.62,2/@Z`"#Y1$``.H'F*#A$*"-XKAPQ.')$0+C``"4
MY0D@H.$*,*#A$%"-Y110C>484(WE'%"-Y0!0C>4$4(WE"%"-Y?[__^L``%#C
MD?__&I7__^HLT(WB\(^]Z`"`_T``@/_`@(#_P`````!'(0$`\$<MZ0`PH.,H
MT$WB`$"@X2APC>(#8*#A`U"@X00P)^4``)3E!1"@X6D@`N-X,Y_E`'"-Y010
MC>4(4(WE#%"-Y?[__^L``%#C!0``&B0PG>4``%/C&```JO\/5N,D```:&```
MZB``4.-`8Y_E`""4Y0D``!I\,*#C(%"-Y2$0H..38B+@Y!""Y0`@E.638B;@
MZ`"&Y0(*H..E``#J?#"@XR,0H..38B+@Y!""Y0`@E.638B;@Z`"&Y9T``.H!
M8(;B_P]6X]7__QH`$)3E?""@X]@RG^4E`*#CDC$AX.0`@>4`$)3EDC$CX``@
MH./H((/EJP``ZA!@C>(``)3EPA$"XP4@H.$&,*#A$%"-Y110C>484(WE'%"-
MY0!0C>4$4(WE"%"-Y?[__^L``%#C!0``"@`0E.5\(*#C<#*?Y2;`H..2,2'@
M?P``Z@8`H.$$$*#ARO/_ZU2BG^4D@(WB7I^@XP``E.5#$0+C!2"@X0@PH.$`
M4(WE!%"-Y0A0C>7^___K*&*?Y0``4.,+```*`""4Y7PPH.,G$*#CDV(BX.00
M@N4!$('B`""4Y9-B(N#H`(+E`""4Y9-B(N!*``#JMG+=X;`XVN$'`%/AY/__
M"KP_VN$'`%/AX?__"KDPFN$'`%/A70``&MW__^H`()3E?#"@XRD0H..38B+@
M.@``Z@H`H.$$$*#AP//_ZQ`PE.7`'07C``"4Y0,`4>$#$*`A$!"$Y?[__^L`
M`%#C`""4%7PPH!,J$*`3DV(B$"H``!H``)3E"2"@X6@1G^4(,*#A`%"-Y010
MC>4(4(WE_O__ZP``4.,`()05?#"@$RL0H!.38B(0'```&@``E.50$0+C`BR@
MXP@PH.$`4(WE!%"-Y0A0C>7^___K``!0XP`@E!5\,*`3+!"@$Y-B(A`.```:
M``"4Y0<0H.%J(0+C!3"@X0"`C>4$4(WE"%"-Y0Q0C>7^___K``!0XP@```H`
M()3E?#"@XRT0H..38B+@Y!""Y0`@E.638B;@Z`"&Y2D``.HD,)WE%%#$Y0($
M$^,!,*`3%3#$%0,``!H`,*#C!`"@X14PQ.4W_?_K!#"4Y1`P@^,$,(3E&P``
MZ@`0E.5\(*#C;#"?Y23`H..2,2'@Y,"!Y0`0E.62,2/@Z`"#Y1$``.H'F*#A
M$*"-XKAPQ.')$0+C``"4Y0D@H.$*,*#A$%"-Y110C>484(WE'%"-Y0!0C>4$
M4(WE"%"-Y?[__^L``%#CD?__&I7__^HHT(WB\(>]Z`"`_P``````1R$!`/!/
M+>D`,*#C--!-X@!`H.$P<(WB`U"@X0-@H.$$,"?E``"4Y4$0`N,P)Y_E!S"@
MX0!@C>4$8(WE"&"-Y?[__^L``%#C&P``&BPPG>4``%/C+@``J@@GG^4(%Y_E
M`@!3X0$`4Q%`,*`#%#"-!2L```H!(8+B`1&!X@(`4^$!`%,1@""@`Q0@C04D
M```*`,"4Y7P0H./0)I_E05"@XP()H..1+"S@Y%",Y0#`E.61+"+@Z#""Y9X!
M`.H@`%#CJ%:?Y0`@E.4)```:?#"@XRA@C>5"$*#CDU(BX.00@N4`()3EDU(E
MX.@`A>4""J#CD`$`ZGPPH.-$$*#CDU(BX.00@N4`()3EDU(EX.@`A>6(`0#J
M`5"%XOH.5>/`__\:`0``ZOH.5>,*```:`!"4Y7P@H.,T-I_E1@"@XY(Q(>#D
M`('E`!"4Y9(Q(^``(*#CZ""#Y8`!`.H`P*#C&&"-X@``E.4,(*#APA$"XP8P
MH.$8P(WE',"-Y2#`C>4DP(WE`,"-Y03`C>4(P(WE_O__Z]A5G^4`P%#B`""4
M%7PPH!-'$*`3DU(B$#P``!J\+]7A7C^@X["HU>$L@(WBLS"5X4,1`N,"`%KA
M`J"@,1C@G>4"`%KC`J"@,QP`G>4#`%KA`Z"@,2`@G>4!H(KB)#"=Y5Z6X^<`
MN*#A>J#_YA^=B>(E(,3E+KB+X0IXH.$A,,3E)\#$Y0V0B>(JP,3E7N3CY[:1
MQ.$@G*#A'+"$Y2`(H.$FD,3E(YR@X2``Q.4B#*#A*Y#$Y2(`Q.4B"*#A&.#$
MY2(DH.$C`,3E)"#$Y2,HH.$``)3E(S2@X2@@Q.4'(*#A*3#$Y0@PH.$(P(WE
M`,"-Y03`C>7^___K`,!0X@@```H`()3E?#"@XT@0H..34B+@Y!""Y0`@E.63
M4B7@Z,"%Y2D!`.JXH,3AR1$"XP``E.4'(*#A!C"@X0C`C>48P(WE',"-Y2#`
MC>4DP(WE`,"-Y03`C>7^___K``!0XP`@E!5\,*`321"@$Y-2(A`K```:!@"@
MX000H.$R\O_K$#"4Y5`6!.,``)3E`P!1X0,0H"$0$(3E_O__ZP#`4.(`()05
M?#"@$TH0H!.34B(0U___&@``E.4'(*#A)!2?Y0@PH.$(P(WE`,"-Y03`C>7^
M___K`,!0X@`@E!5\,*`32Q"@$Y-2(A#)__\:``"4Y0@PH.%0$0+C`BR@XPC`
MC>4`P(WE!,"-Y?[__^L``%#C"```"@`@E.5\,*#C3!"@XY-2(N#D$(+E`""4
MY9-2)>#H`(7EY0``ZBP@G>44`,3E`B02X@$PH!,5,,05T0``&D@PE.45(,3E
M:`!3XR@@C>7,``":``"4Y4@3`N,H,(WB`LR@XX5?A>($P(WE"%"-Y0#`C>7^
M___K``!0X\$``!I,4Y_EA6^%XO8RU>4#-*#A:#"$Y>IRU>7K$M7EU"#6Y0=X
MH.'I,M7E`7R'X0)PA^$#=)?A+'"$%<0PUN4#`!/C*```"BB`C>(``)3E"!.?
MY0@PH.$$(Y_E`,"@XPC`C>4`P(WE!,"-Y?[__^L``%#C'```&BC`G>6`P!SB
M&0``&K@@U.$(,*#A``"4Y4T1`.,(P(WE`BB@X0#`C>4$P(WE_O__ZP``4.,.
M```:*#"=Y8``$^,+```:Q##6Y0``E.4"`!/C@(L+$\"-!0,($*#A_O__ZP``
M4.,0@(0%##"4!0(P@P,,,(0%``"4Y20PH.-<@I_E!)"@XY.`(^`$$)/E``!1
MXPD`41%^```*`P!1XR\``!K^___K`'!0XGD``!HHH(WB5>"@XU4`X.,:XL7E
M%.+%Y5,7`N,6XL7E!R"@X1L"Q>4*,*#A%0+%Y0C`H.,7`L7EA8^(X@3@QN49
M`L7E``"4Y03`C>4`P(WE"("-Y?[__^L$<,;E"C"@X11RQ>4'(*#A%7+%Y4X3
M`N,6<L7E%W+%Y1ERQ>4:<L7E&W+%Y0``E.4$D(WE"("-Y0"0C>7^___K%#+5
MY:H`4^,&```:%3+5Y54`4^,"<*`#`@``&BL``.H"`%'C)P``&@``E.4"$*#C
M_O__ZP!@4.)%```:;*&?Y2B`C>):,*#C4Q<"XQ<RQ>4&(*#A%#+%Y01PH.,5
M,L7E%C+%Y0@PH.$``)3E`'"-Y8`$C>G^___K%&+%Y0@PH.$58L7E!B"@X19B
MQ>5.$P+C%V+%Y0``E.4$<(WE`'"-Y0B@C>7^___K%#+5Y:4`4^,!<*`#!0``
M"@``E.4!$*#C_O__ZR(``.H!`%'C(```"@<DH.$H4(WB[2>"XP``E.4#*(+C
MO!"?Y04PH.$`P*#C","-Y0#`C>4$P(WE_O__ZP``4.,2```:*,"=Y8#`'.(/
M```:N"#4X04PH.$``)3E31$`XPC`C>4"**#A`,"-Y03`C>7^___K``!0XP0`
M`!HH,)WE@``3XPPPE`4!,(,###"$!00PE.44()WE`C"#X00PA.4(``#J`!"4
MY7P@H.,H,)_E1<"@XY(Q(>#DP('E`!"4Y9(Q(^#H`(/E--"-XO"/O>@`@/]`
M`(#_@("`_X``````1R$!`$8A`0```;D#%`(``/!%+>F$T$WB`$"@XQ"@C>(`
M8*#A!!"@X6P@H.,*`*#A?$"-Y?[__^L$,Y_E?%"@XQ1`C>4&`*#A$&"-Y0$0
MH..5-B7@Z$"%Y>1`A>7^___K`$!0XNA`A142,*`3>@``&@8`H.'($*#C_O__
MZP!`4.+H0(45$S"@$W,``!KZ#Z#C!'"@X?[__^L$(*#A!#"@X08`H.&!'*#C
M`$"-Y01`C>4(0(WE_O__ZP!`4.(L```:9`"@XWR`C>+^___K!@"@X4@1`N.J
M(0#C"#"@X0A`C>4`0(WE!$"-Y?[__^L`0%#B(@``&@0@H.$(,*#A!@"@X440
M`N,`0(WE!$"-Y0A`C>7^___K`$!0XA```!I\()WE!S(2XM(=X.<!,*`3`0`3
MX0,```K_),+C_R#"XP``4N-&```:`2`AX@(`$^%#```:`0!1XQ``C0(#```*
M/P``ZB``5.,"```:"@"@X?[__^LZ``#JZ$"%Y10PH.,V``#J(`!4X^A`A147
M,*`3,@``&@8`H.%%$`+C!R"@X0@PH.$`<(WE!'"-Y0APC>7^___K`$!0XA``
M`!I\()WE!S(2XM(=X.<!,*`3`0`3X0,```K_),+C_R#"XP``4N,?```:`2`A
MX@(`$^$<```:`0!1XQ``C0(9```:#@``ZB``5./H0(45%C"@$Q,``!H'(*#A
M"#"@X08`H.%W$0+C`'"-Y01PC>4(<(WE_O__ZP!`4.("```:"@"@X?[__^L'
M``#J(`!4X^A`A145,*`3`@``&@H`H.'^___K````ZN0PA>444)WE``!5XP@`
M`!H&`*#A_O__ZP8`H.$!$*#C_O__ZP8`H.$%$*#A_O__ZRD``.H"`!7C'%`%
MX@8```H``%7C8%"-!0`PH!-<4(T%8#"-%5PPC14*``#J``!5XX0PGQ5<,(T5
M@#"?%6`PC144,)WEX``3XVPPGQ5<,(T5:#"?%6`PC140$)WE`#"@XUP@G^4"
M`%'C"@``&@@`DN4!`'#C!P``&@(`4^,%```:$!"-XFP@H.,X`)_E`$"@X_[_
M_^L$``#J`3"#XGP@@N(#`%/C[O__&@!`H.,$`*#AA-"-XO"%O>@`````````
M``````!P````<`$```<`4N-_0"WI!`"@@Q,``(IR(._F``!1XP@@@@,8,(WB
M@B&"$0``D.4`P*#C-!"?Y7(@[Q8$P"/E","-Y0(DH.$`P(WE.R:"XP3`C>4#
M*(+C_O__ZP``4.,4`)T%T`/@!QS0C>(`@+WH1B$!````4>-_0"WI!!"@$P`0
MH`,"`%+C`#"@XP$0@0,4,(WE`0``"@,`4N,"$($#`22@X0``D.4[)H+C+!"?
MY0$H@N,4,(WB`,"@XPC`C>4`P(WE!,"-Y?[__^L``%#C%`"=!=`#X`<<T(WB
M`("]Z$8A`0`'`%'C?T`MZ00`H(,0``"*"""!XQ@PC>(``)#E`,"@XW(@[^8$
MP"/E+!"?Y0(DH.$(P(WE.R:"XP#`C>4#*(+C!,"-Y?[__^L``%#C%`"=!=`#
MX`<<T(WB`("]Z$8A`0"K]?_J``!0X_!!+>DPT$WB`%"1Y2T```H"`%7C````
M"A\``(I\.9_E>""3Y04`4N$`,*`#!P``"O0@D^4%`%+A`3"@`P,```IP,9/E
M!0!3X1,``!H",*#C#P!0XP#QGY<5``#J1$$``!!!``"@00``V$$``#A#``!P
M1```!$8``.1'```$2```+$@``,!'``!42```>$@``+A(``!D20``"$D```D`
M4.,!```*!P!0XP,``!H`,*#C!#"!Y01`H.,U`@#J"`!0X_O__QKX___J`@!5
MXPX```KW__^*#```ZL`XG^5X()/E!0!2X0!`H`,+```*]""3Y04`4N$!0*`#
M!P``"G`QD^4%`%/A&P(`&@(``.H%`*#AE_[_ZP("`.H"0*#C!0"@X0`0H./^
M___K?#"@XVQ8G^4`$*#CDP0$X&P@H.,$`(7@!%"%X'@`@.+^___K<""%X@`P
MH.,`$.#C`T"@X7@0A>4$,,+E"@(`ZC`HG^5\`*#CD",CX'0PT^4``%/C_P$`
M"@PPD>4%`*#A"""1Y0`P4^(!,*`3!!"1Y<3X_^O@`0#J^">?Y7P`H..0(R/@
M=##3Y0``4^/Q`0`*`&"@XRQ@C>5X,)+E!$"1Y04`4^$'```*]#"2Y04`4^$!
M8(8"`P``"G`QDN4%`%/AL?__&@)@H.,$`*#A_O__ZQ``4..L___*F#>?Y7R`
MH..8-BC@N#K8X8``$^/;`0`*B("(X@4PV.4``%/CTP$`"A1PC>(4(*#C`!"@
MXP<`H.'^___K!`"@X0(PH.,4,,WE_O__ZP00H.$L8(WB%0#-Y0(`A^+^___K
M%2#=Y04`H.%0$0+C`B""X@8PH.$`P*#C","-Y0#`C>4$P(WE_O__ZP!`4.+`
M`0`:%<#=Y00@H.$%`*#A:A<"XP8PH.$"P(SB"'"-Y03`C>4`P(WE_O__ZP!`
M4.*T`0`:+#"=Y0$$$^,6`0`:!4#(Y04`H.$&,*#A4!$"XP(LH.,(0(WE`$"-
MY01`C>7^___K`$!0XBQ`G04@`0`*I`$`ZI@FG^5\$*#CD2,CX'0PT^4``%/C
MF0$`"G@PDN4%`%/A`""@`P<```KT,)+E!0!3X0$@H`,#```*<#&2Y04`4^%;
M__\:`B"@XU`VG^5\$*#CD3(CX(AP@^(%0-?E``!4XXL!``JX*M/A@``2XX4!
M``JP*-/A,&"-X@#`H.,%`*#A",`FY=$0@>("**#A!C"@X0C`C>4`P(WE!,"-
MY?[__^L`0%#B>@$`&B@PG>4"!!/C=P$`"@4`H.%0$0+C`2"@XP8PH.$(0(WE
M","@XP!`C>4$0(WE+,"-Y?[__^L`0%#B:P$`&@0@H.$%`*#A:A<"XP8PH.$!
MP*#C!,"-Y0#`C>4LP(WB","-Y?[__^L`0%#B7P$`&B@PG>4!!!/CP0``&@4`
MH.$&,*#A4!$"XP(LH.,%0,?ER@``ZF`EG^5\`*#CD",CX'0PT^4``%/C2P$`
M"G@PDN4$<)'E!0!3X0!@H`,'```*]#"2Y04`4^$!8*`#`P``"G`QDN4%`%/A
M#/__&@)@H.,'`*#A`$"@XRA`C>7^___K$`!0XP7__\K\-)_E?""@XY(V)N"X
M.M;A@``3XS0!``J-,-;E!`!3X3,!``JP*-;A*&"-X@4`H.%-$0#C!C"@X0A`
MC>4"**#A`$"-Y01`C>7^___K`$!0XB@!`!HH,)WE`@03XR4!`!H4@(WB!!"@
MX10@H.,(`*#A_O__ZP<`H.$$,*#C%##-Y?[__^L'$*#A%0#-Y0(`B.+^___K
M%2#=Y04`H.%0$0+C`B""X@8PH.$(0(WE`$"-Y01`C>7^___K`$!0X@T!`!H5
MP-WE!""@X04`H.%J%P+C!C"@X0+`C.((@(WE!,"-Y0#`C>7^___K`$!0X@$!
M`!HH,)WE`003XV,``!H%`*#A!C"@X5`1`N,"+*#C"$"-Y0!`C>4$0(WE_O__
MZP!`4.(H0)T%`D0D`FT```KQ``#JS".?Y7P`H..0(R/@=##3Y0``4^/F```*
M>#"2Y01PD>4%`%/A`&"@`P<```KT,)+E!0!3X0%@H`,#```*<#&2Y04`4^&G
M_O\:`F"@XP<`H.$`0*#C*$"-Y?[__^L0`%#CH/[_RF@SG^5\(*#CDC8FX+@Z
MUN&``!/CSP``"HTPUN4$`%/AS@``"K`HUN$H8(WB!0"@X4T1`.,&,*#A"$"-
MY0(HH.$`0(WE!$"-Y?[__^L`0%#BPP``&B@PG>4"!!/CP```"A2`C>($$*#A
M%""@XP@`H.'^___K!P"@X11`S>7^___K!Q"@X14`S>4"`(CB_O__ZQ4@W>4%
M`*#A4!$"XP(@@N(&,*#A"$"-Y0!`C>4$0(WE_O__ZP!`4.*I```:%<#=Y00@
MH.$%`*#A:A<"XP8PH.$"P(SB"("-Y03`C>4`P(WE_O__ZP!`4.*=```:*#"=
MY0$$$^,*```*!0"@X08PH.%0$0+C`BR@XPA`C>4`0(WE!$"-Y?[__^L`0%#B
MD```&HX``.H%`*#A!C"@X5`1`N,"+*#C"$"-Y0!`C>4$0(WE_O__ZP!`4.*%
M```:*$"=Y=1,X.>"``#J$"*?Y7P0H..1(R/@=##3Y0``4^-W```*!0"@X<#S
M_^M=``#J["&?Y7P`H..0(R/@="#3Y0``4N.D,),5!P``&AH``.K,(9_E?`"@
MXY`C(^!T(-/E``!2XQ0```J4,)/E`$"@XP0P@>5G``#JI"&?Y7P`H..0(R/@
M=##3Y0``4^,!,*`3!#"!!00P@159```*5@``ZGPAG^5\`*#CD",CX'0@T^4`
M`%+CX#"3%>O__QH$(('E3P``ZE@QG^4$()'E>!"3Y04`4>$`,*`#!P``"O00
MD^4%`%'A`3"@`P,```IP,9/E!0!3X0_^_QH",*#C`1"@XPX``.H8,9_E!""1
MY7@0D^4%`%'A`#"@`P<```KT$)/E!0!1X0$PH`,#```*<#&3Y04`4^'__?\:
M`C"@XP`0H./@`)_E?,"@XYP#(.#^___K%```ZL@PG^4&`)'I>`"3Y04`4.$`
M,*`#!P``"O0`D^4%`%#A`3"@`P,```IP,9/E!0!3X>O]_QH",*#CE`"?Y7S`
MH.,`$%'B`1"@$W(@[^:<`R#@_O__ZP!`H.$9``#J;#"?Y000D>5X()/E!0!2
MX0`PH`,'```*]""3Y04`4N$!,*`#`P``"G`QD^4%`%/AU/W_&@(PH.,X()_E
M?`"@XY`C(.#^___KZO__Z@!`H.,$``#J`4>@XP(``.H!2:#C````Z@%`H.,$
M`*#A,-"-XO"!O>@`````>````/!`+>D<T$WB!%"-XA0@H.,`$*#C!0"@X?[_
M_^L($I_E``"@XP1"G^7^___K`!*?Y10$A.7^___K%`24Y?[__^OP$9_E``"@
MX_[__^O^___K%`24Y?[__^OZ'Z#C#`*$Y?[__^L`$*#AS`&?Y?[__^O(,9_E
MR`&?Y0$9H.,`(*#C;#"$Y?[__^ML,)3E&`2$Y0`PD^4``%/C"P#@`V````K^
M___K_O__ZY@QG^68`9_EO""3Y0,LPN.\((/E_O__Z_[__^L*`*#C@!&?Y0`@
MH./^___K``!0XVPPE+4P(-.U'R#`MS`@P[5-``"Z;#"4Y0@@H.-8$9_E"F"@
MXS``T^4!`(#C,`##Y6P`E.4Q`(#B_O__ZVPPE.4$$*#C(&"#Y6PPE.4@`)/E
M_O__ZP``4.,[```:;#"4Y1@1G^4@`)/E_O__ZP``4.,U``"Z;#"4Y0)PH.,`
M(9_E)""#Y>@`G^7^___K!1"@X0``H.,$<(WE_O__ZP``5N,``%`3`$"@X00`
M``H`$*#AT`"?Y0%@1N+^___K\/__Z@``4.,``.`3'P``&@<`H.&`8)_E_O__
MZP40H.$+`*#C!'"-Y0A`C>7^___K"#"=Y90`G^4#$*#AZ#2&Y?[__^L!/*#C
M!1"@X>@TAN4'`*#C!'"-Y0A`C>7^___K"#"=Y6@`G^4#$*#A$#*&Y?[__^L%
M$*#A#@"@X^Q$AN4$<(WE"$"-Y?[__^L$`*#A'-"-XO"`O>@3``````````!L
MW`)V````@````!@$````P"$0`(``];!E9@8`````D@``````````P2$0EP``
M`*,```#`````W0````>Q`8&PL`"$``````>Q`8&PL%^$``````````"PJQ2`
M]````+"PL("``0``L*L4@'@"``"PL+"`C`(``+"PL("@`@``L+"P@+0"``"P
ML+"`R`(``*L'L8"\`P``J@.Q@+@$``"PL+"`P`0``+"PL(#(!```L+"P@-`$
M``"PL+"`V`0``+"PL(#P!```L+`!@`@%``"PL+"`$`4``+"PL(`P!0``L+`!
M@*0%``"PL`&`&`8``+"PL(`@!@``L+"P@%P&``"PL+"`F`8``+"PL(`,!P``
ML+"P@!0'``"PL*J`R`<``+"PJH","```L`^Q@)@(``"PL+"`G`@``+"PL("@
M"```L+"P@*@(``"PL*B`]`@``+"PL(#X"```L+"P@/P(``"PL*B`2`D``+"P
ML(!,"0``L+"P@%`)``"PL+"`5`D``+"PL(!8"0``L+"H@'0)``"PL+"`>`D`
M`+"PL(!\"0``L+"P@(`)``"PL+"`A`D``+"PL("H"0``L+"P@%P*``"PL+"`
M[`H``+"PL("@"P``L+"H@"P,``"PL*J`J`P``+"PL("P#```L+"P@+@,``"P
ML+"`O`P``+"PL(#$#```L+"H@-0,``"PL+"`Z`P``+"PL(`,#0``L+"P@#`-
M``"PL+"`.`T``+"PJ(!4#0``L+"H@'@-``"PL+"`?`T``+"PJ(#@#0``L+"J
M@#0.````````:`X``+"PJ("0#@``L+"L@*`/``"PL+"`I`\``+"PL("H#P``
ML+"P@*P/``"PL*B`R`\``+"PL(#,#P``L+"P@-0/``"PL+"`V`\``*H#L8#`
M$```L+"J@#01``"L`[&`[!(``+"PJH`8$P``K`.Q@"@4```,````\!4``+"O
M!("X%@``L+"H@.`6``"PL+"`Y!8``*H#L8!@%P``L*\(@$@?``"PL*R`U!\`
M`+"H!8`P(```L*P%@#0A``"PKPJ`_"(``+"O"H#H)```L*\.@$PG``"PKP:`
M""@``+"O!(!X*```L*P5@$@L``"PKPJ`=#```+"N"8`L-```L*\,@*P[``!?
MA""`]#X``*H/L8!@/P``J@^Q@-`_``"J#[&`,$```+"PL(`T0```L*P+@.!)
M``"PJP:`"@```&0```#H`P``$"<```H````*````#`````T````/````%```
M`!D````>````(P```"@````M````,@```#<````\````1@```%`````*````
M9````.@#```0)P``"@````H````,````#0````\````4````&0```!X````C
M````*````"T````R````-P```#P```!&````4````%-$4$%-7T1-05-T87)T
M``!31$,P`%-$0S$`4T1#,@``57-E<D-A<%-I>F4Z(#!X)7@*`&5M;6,`)7,N
M+B5D("`@<G5N(&1M85]M87!?<VEN9VQE(&9A:6PA(2$A"@!D<FEV97)S+VUT
M9"]R:VYA;F0O14U-0R]H=U]31%!L871!9&%P="YC`%-$0S``4T1#,0!31$,R
M`&AC;&M?96UM8P!%;6UC0G5S7VMH>B`]("5D"@!E34U#`')E=')Y(#H@)7@*
M`$5-34-?26YI="!";V]T0V%P4VEZ93H@,'@E>`H`14U-0U]);FET(%5S97)#
M87!3:7IE.B`P>"5X"@!R:S(Y+61M82UE34U#``!'0T,Z("A'3E4I(#0N-"XP
M`$$J````865A8FD``2`````%-RU!``8*!T$(`1($%`$5`1<#&`$9`1H"'@0`
M+G-Y;71A8@`N<W1R=&%B`"YS:'-T<G1A8@`N<F5L+G1E>'0`+G)E;"YD871A
M`"YB<W,`+D%232YE>'1A8@`N<F5L+D%232YE>&ED>``N<F]D871A`"YR;V1A
M=&$N<W1R,2XQ`"YC;VUM96YT`"Y!4DTN871T<FEB=71E<P``````````````
M```````````````````````````````````````````?`````0````8`````
M````-````$Q,``````````````0`````````&P````D``````````````&1R
M``!H"@``#@````$````$````"````"D````!`````P````````"`3```!```
M````````````!``````````E````"0``````````````S'P```@````.````
M`P````0````(````+P````@````#`````````(1,``#P!``````````````$
M`````````#0````!`````@````````"$3```&```````````````!```````
M``!#`````0``<((`````````G$P``#@#```!``````````0`````````/P``
M``D``````````````-1\``!8`P``#@````<````$````"````$X````!````
M`@````````#43P``P```````````````!`````````!6`````0```#(`````
M````E%```.L```````````````$````!````90````$``````````````']1
M```2```````````````!`````````&X````#``!P``````````"140``*P``
M`````````````0`````````1`````P``````````````O%$``'X`````````
M``````$``````````0````(``````````````+Q4```0%0``#P```-D````$
M````$`````D````#``````````````#,:0``F`@``````````````0``````
M`````````````````````````0``````````````!`#Q_P``````````````
M``,``0`````````````````#``,``````````````````P`%``@`````````
M]`````(``0`7``````````````````$`&@```/`````````````!````````
M``````````,`!@`````````````````#``<`'0```/0```",`````@`!`!<`
M``#T`````````````0`K````@`$``/@````"``$`%P```(`!```````````!
M`!H```!T`@```````````0`Y````>`(``!0````"``$`%P```'@"````````
M```!`!H```"(`@```````````0!*````C`(``!0````"``$`%P```(P"````
M```````!`!H```"<`@```````````0!;````H`(``!0````"``$`%P```*`"
M```````````!`!H```"P`@```````````0`7````M`(```````````$`&@``
M`,0"```````````!`&P```#(`@``]`````(``0`7````R`(```````````$`
M&@```*@#```````````!`'P```"\`P``_`````(``0`7````O`,`````````
M``$`&@```*P$```````````!`(H```"X!```"`````(``0`7````N`0`````
M``````$`DP```,`$```(`````@`!`!<```#`!````````````0`7````R`0`
M``````````$`%P```-`$```````````!`!<```#8!````````````0`7````
M\`0```````````$`%P````@%```````````!`!<````0!0```````````0`:
M````+`4```````````$`%P```#`%```````````!`!H```"8!0``````````
M`0`7````I`4```````````$`&@````P&```````````!`!<````8!@``````
M`````0`7````(`8```````````$`&@```%@&```````````!`!<```!<!@``
M`````````0`:````E`8```````````$`%P```)@&```````````!`!H````(
M!P```````````0`7````#`<```````````$`%P```!0'```````````!`!H`
M``#`!P```````````0`7````R`<```````````$`&@```(0(```````````!
M`!<```","````````````0`7````F`@```````````$`%P```)P(````````
M```!`!<```"@"````````````0`7````J`@```````````$`&@```/`(````
M```````!`!<```#T"````````````0`7````^`@```````````$`%P```/P(
M```````````!`!H```!$"0```````````0`7````2`D```````````$`%P``
M`$P)```````````!`!<```!0"0```````````0`7````5`D```````````$`
M%P```%@)```````````!`!H```!P"0```````````0`7````=`D`````````
M``$`%P```'@)```````````!`!<```!\"0```````````0`7````@`D`````
M``````$`%P```(0)```````````!`!H```"D"0```````````0`7````J`D`
M``````````$`&@```+0)```````````!`!<```#$"0```````````0`:````
M6`H```````````$`%P```%P*```````````!`!H```!H"@```````````0`7
M````>`H```````````$`&@```.@*```````````!`!<```#L"@``````````
M`0`:````^`H```````````$`%P````@+```````````!`!H```"<"P``````
M`````0`7````H`L```````````$`%P```"P,```````````!`!H```"<#```
M`````````0`7````J`P```````````$`%P```+`,```````````!`!<```"X
M#````````````0`7````O`P```````````$`G````,0,```0`````@`!`!<`
M``#$#````````````0"P````U`P``!0````"``$`%P```-0,```````````!
M`!H```#D#````````````0`7````Z`P```````````$`&@````@-````````
M```!`!<````,#0```````````0`:````+`T```````````$`%P```#`-````
M```````!`!<````X#0```````````0`:````4`T```````````$`%P```%0-
M```````````!`!H```!P#0```````````0`7````>`T```````````$`%P``
M`'P-```````````!`!H```#8#0```````````0`7````X`T```````````$`
M&@```#`.```````````!`!<````T#@```````````0`:````8`X`````````
M``$`%P```&@.```````````!`!H```",#@```````````0`7````D`X`````
M``````$`&@```)`/```````````!`!<```"@#P```````````0`7````I`\`
M``````````$`%P```*@/```````````!`!<```"L#P```````````0`7````
MR`\```````````$`%P```,P/```````````!`!<```#4#P```````````0#'
M````V`\``.@````"``$`%P```-@/```````````!`!H```"P$```````````
M`0`7````P!````````````$`&@```#`1```````````!`-4````T$0``N`$`
M``(``0`7````-!$```````````$`&@```-P2```````````!`!<```#L$@``
M`````````0`:````%!,```````````$`%P```!@3```````````!`!H````8
M%````````````0`7````*!0```````````$`&@```-@5```````````!`!<`
M``#P%0```````````0`:````K!8```````````$`%P```+@6```````````!
M`!H```#<%@```````````0`7````X!8```````````$`X0```.06``!\````
M`@`!`!<```#D%@```````````0`:````4!<```````````$`%P```&`7````
M```````!`!H````D'P```````````0`7````2!\```````````$`&@```-`?
M```````````!`.\```#4'P``7`````(``0`7````U!\```````````$`&@``
M`"P@```````````!```!```P(```!`$```(``0`7````,"````````````$`
M&@```#`A```````````!`!<!```T(0``R`$```(``0`7````-"$`````````
M``$`&@```/0B```````````!`"0!``#\(@``[`$```(``0`7````_"(`````
M``````$`&@```.`D```````````!`#`!``#H)```9`(```(``0`7````Z"0`
M``````````$`&@```$@G```````````!`!<```!,)P```````````0`7````
M""@```````````$`/0$``'@H``#0`P```@`!`!<```!X*````````````0`:
M````/"P```````````$`%P```$@L```````````!`!H```!@,```````````
M`0`7````=#````````````$`&@```"`T```````````!`!<````L-```````
M`````0`:````C#L```````````$`4`$``*P[``!(`P```@`!`!<```"L.P``
M`````````0`:````X#X```````````$`%P```/0^```````````!`!H```!<
M/P```````````0`7````8#\```````````$`&@```,P_```````````!`!<`
M``#0/P```````````0`:````+$````````````$`%P```#!````````````!
M`!<````T0````````````0`:````E$````````````$`%P```-1`````````
M```!`!H```#820```````````0`7````X$D```````````$`&@````Q,````
M```````!``````````````````,`"0!>`0```````!`````!``D`&@``````
M```````````)`&H!```0````0`````$`"0!V`0``4````!`````!``D`@@$`
M`&````!``````0`)`(X!``"@````#P````$`"0"=`0``L`````\````!``D`
M`````````````````P`*`*D!````````!`````$``P`:````````````````
M``,`O@$``.0!```!`````0`%`,4!``#H`0``$`````$`!0#,`0``^`$```$`
M```!``4`TP$``/P!```0`````0`%``````````````````,`"P``````````
M```````#``P`V@$`````````````$````/$!``"T`@``%````!(``0#^`0``
MR`0```@````2``$`!P(``-`$```(````$@`!`!`"``#8!```&````!(``0`B
M`@``\`0``!@````2``$`-0(```@%```(````$@`!`$X"```0!0``(````!(`
M`0!B`@``,`4``'0````2``$`=`(``*0%``!T````$@`!`(<"```8!@``"```
M`!(``0"8`@``(`8``#P````2``$`I0(``%P&```\````$@`!`+("``"8!@``
M=````!(``0"[`@``#`<```@````2``$`Q0(``!0'``"T````$@`!`,X"``#(
M!P``Q````!(``0#8`@``C`@```P````2``$`Y0(``)@(```$````$@`!`/4"
M``"<"```!````!(``0`#`P``H`@```@````2``$`$`,``*@(``!,````$@`!
M`"(#``#T"```!````!(``0`U`P``^`@```0````2``$`2`,``/P(``!,````
M$@`!`%H#``!("0``!````!(``0!I`P``3`D```0````2``$`>`,``%`)```$
M````$@`!`(D#``!4"0``!````!(``0":`P`````````````0````J`,``%@)
M```<````$@`!`+D#``!T"0``!````!(``0#,`P``>`D```0````2``$`WP,`
M`'P)```$````$@`!`/`#``"`"0``!````!(``0`$!```A`D``"0````2``$`
M%`0``*@)``"T````$@`!`",$``!<"@``D````!(``0`R!```[`H``+0````2
M``$`000``*`+``",````$@`!`%<$```L#```?````!(``0!K!```J`P```@`
M```2``$`@00``+`,```(````$@`!`)4$``"X#```!````!(``0"H!```O`P`
M``@````2``$`O00``.@,```D````$@`!`,H$```,#0``)````!(``0#9!```
M,`T```@````2``$`Y00``#@-```<````$@`!`.\$``!4#0``)````!(``0#_
M!``````````````0````!@4``'@-```$````$@`!`!,%`````````````!``
M```:!0``?`T``&0````2``$`*@4`````````````$````#D%``#@#0``5```
M`!(``0!(!0``-`X``#0````2``$`6@4`````````````$````&\%````````
M`````!````"&!0``:`X``"@````2``$`E`4`````````````$````*(%``"0
M#@``$`$``!(``0"Q!0`````````````0````P04`````````````$````,<%
M`````````````!````#:!0`````````````0````ZP4``*`/```$````$@`!
M`/@%`````````````!````#_!0``I`\```0````2``$`#`8`````````````
M$````!,&``"H#P``!````!(``0`@!@`````````````0````)P8``*P/```<
M````$@`!`#0&`````````````!`````[!@``R`\```0````2``$`1@8`````
M````````$````$P&``#,#P``"````!(``0!9!@`````````````0````8P8`
M`-0/```$````$@`!`&\&`````````````!````!X!@`````````````0````
MB08``,`0``!T````$@`!`)H&``#L$@``+````!(``0"M!@``&!,``!`!```2
M``$`P08``"@4``#(`0``$@`!`,H&``#P%0``R````!(``0#3!@``N!8``"@`
M```2``$`W@8``.`6```$````$@`!`.D&`````````````!````#]!@``8!<`
M`.@'```2``$`#`<``$@?``",````$@`!`!@'``!,)P``O````!(``0`M!P``
M""@``'`````2``$`/P<``$@L```L!```$@`!`$D'``!T,```N`,``!(``0!3
M!P``+#0``(`'```2``$`7`<``/0^``!L````$@`!`&L'``!@/P``<````!(`
M`0!_!P``T#\``&`````2``$`EP<``#!````$````$@`!`*@'```T0```K`D`
M`!(``0"S!P``X$D``&P"```2``$`O0<`````````````$````,4'````````
M`````!````#2!P`````````````0````W0<`````````````$````.H'````
M`````````!````#X!P`````````````0````"0@`````````````$````!D(
M`````````````!`````R"```[`0```0````1``4`/`@```````!L````$0`%
M`$4(``!P````=`$``!$`!0!0"```%`(````"```1``4`6P@``&P````$````
M$0`%`&4(```8!```T````!$`!0!M"```Z`0```0````1``4`>0@``!`"```$
M````$0`%`(4(```4!```!````!$`!0"-"```#`(```0````1``4``&5M;6,N
M8P!?34U#7T1E8V]D94-31``D80`D9`!?4T1?1&5C;V1E0TE$`%]31%]$96-O
M9&5#4T0`7U-$0S!$34%#86QL8F%C:P!?4T1#,41-04-A;&QB86-K`%]31$,R
M1$U!0V%L;&)A8VL`7U)E861296UA:6Y$871A`%]31$-)4U1(86YD;&4`7U-$
M0S!)4U0`7U-$0S%)4U0`<FLR.5]E;6UC7VEN=&5R<G5P=`!R:S(Y7V5-34-?
M9&UA7V-O;7!L971E`%]#;VYT<F]L0VQO8VL`7T-H86YG949R97$`7U=A:71#
M87)D0G5S>0!?1&%T845R<F]R2&%N9&QE`%]297-P;VYS951I;65O=71(86YD
M;&4`7U-$34U#7U=R:71E`%]31$U-0U]296%D`%]3971087-S=V]R9`!?4T1?
M4W=I=&-H1G5N8W1I;VX`7TED96YT:69Y0V%R9`!#+C(P."XQ-S$R,`!#+C(P
M.2XQ-S$R,0!#+C(T."XQ-S0Y-`!#+C(T.2XQ-S0Y-0!?7V9U;F-?7RXR,C8W
M-P!#+C4W-2XQ.38S-P!R:S(Y7V1M85]E34U#7V-L:65N=`!N375T97@`9TUU
M=&5X`&Y%=F5N=`!G179E;G0`7U]A96%B:5]U;G=I;F1?8W!P7W!R,`!E34U#
M8V%L;&)A8VL`7U-$0S))4U0`14U-0U])4U(`4T1#7TES0V%R9$ED5F%L:60`
M4T1#7TES0V%R9%!R97-E;F-E`%-$0U])<T-A<F17<FET95!R;W1E8W1E9`!3
M1$-?1V5T2&]S=$)U<U=I9'1H`%-$0U]%;F%B;&539&EO26YT`%-$0U]$:7-A
M8FQE4V1I;TEN=`!31$-?0V]N=')O;%!O=V5R`%]'96YE<F%T95)#00!?27-2
M0T%5<V%B;&4`4T1-7T]P96X`4T1-7T-L;W-E`%-$35]296%D`%-$35]7<FET
M90!31$]!35]0<FEN=&8`4T1/04U?4')I;G1F06QL`%-$3T%-7U-E;F1-<V<`
M4T1/04U?1V5T37-G`%-$3T%-7T-R96%T94UU=&5X`%-$3T%-7U)E<75E<W1-
M=71E>`!31$]!35]296QE87-E375T97@`4T1/04U?0W)E871E179E;G0`4T1/
M04U?4V5T179E;G0`4T1/04U?1V5T179E;G0`4T1004U?1FQU<VA#86-H90!3
M1%!!35]#;&5A;D-A8VAE`%]?865A8FE?=6ED:78`4T1004U?1V5T04A"1G)E
M<0!31%!!35]31$-#;&M%;F%B;&4`4T1004U?4V5T36UC0VQK1&EV`%-$4$%-
M7TE.5$-296=)4U(`4T1004U?24Y40T5N86)L94E240!E34U#7V-H86YG96UO
M9&4`24]-55A397131$U-0S(`24]-55A397131$U-0S$`24]-55A397131$U-
M0S``4T1004U?24]-55A?4V5T4T10;W)T`%-$0U]3971(;W-T0G5S5VED=&@`
M4T1004U?24]-55A?4'=R16Y'4$E/`%-$4$%-7TE/35587T1E=$=024\`4T10
M04U?0V]N=')O;%!O=V5R`%-$4$%-7TES0V%R9%!R97-E;F-E`%-#55)S=$UO
M9'5L90!30U55;G)S=$UO9'5L90!30U5396Q31$-L:P!'971-;6-#3$L`16UM
M8T=E=$-A<&%C:71Y`'!R:6YT:P!31$]!35]-96UC<'D`;65M8W!Y`$5-34-?
M4&]W97)297-E=`!?7V-O;G-T7W5D96QA>0!31%!!35]31$-297-E=`!R:S(Y
M7V5M;6-?:6YT7W)E9P!R97%U97-T7W1H<F5A9&5D7VER<0!?7V%E86)I7W5N
M=VEN9%]C<'!?<'(Q`%-$4$%-7T1-05-T;W``<FLR.5]D;6%?8W1R;`!31%!!
M35]$34%3=&%R=`!D;6%?8V%C:&5?;6%I;G0`7U]B=6<`<FLR.5]D;6%?9&5V
M8V]N9FEG`')K,CE?9&UA7V5N<75E=64`4T1/04U?4W1R8V%T`'-T<F-A=`!3
M1$]!35]3=')L96X`<W1R;&5N`%-$3T%-7TUE;6-M<`!M96UC;7``4T1/04U?
M365M<V5T`&UE;7-E=`!31$]!35]&<F5E`&MF<F5E`%-$3T%-7TUA;&QO8P!?
M7VMM86QL;V,`4T1/04U?1&5L87D`7U]U9&5L87D`7U]A96%B:5]U:61I=FUO
M9`!31$-?0V]N=')O;$-L;V-K`%-$0U]5<&1A=&5#87)D1G)E<0!31$-?4F5S
M971#;VYT<F]L;&5R`%-$0U]);FET`%-$35]);FET`$125D1E;&%Y37,`1%)6
M1&5L87E5<P!R:TYA;F1?8V]N9%]R97-C:&5D`%-$0U]"=7-297%U97-T`%-$
M35]396YD0VUD`%])9&5N=&EF>5]396YD07!P0VUD`%])9&5N=&EF>5]396YD
M0VUD`%-$,C!?26YI=`!31#%87TEN:70`34U#7TEN:70`34U#7U-W:71C:$)O
M;W0`34U#7U-E=$)O;W1"=7-7:61T:`!-34-?06-C97-S0F]O=%!A<G1I=&EO
M;@!31$-?5V%I=$-A<F1"=7-Y`%-$35])3T-T<FP`14U-0U]);FET`&-L:U]G
M970`8VQK7W-E=%]R871E`&-L:U]E;F%B;&4`8VQK7V=E=%]R871E`%]?87)M
M7VEO<F5M87``<FLR.5]D;6%?<F5Q=65S=`!R:S(Y7V1M85]C;VYF:6<`<FLR
M.5]D;6%?<V5T7V)U9F9D;VYE7V9N`&=%;6UC4&%R=`!G4T1#26YF;P!G4T1-
M1')I=F5R`'5N8V%C:&5B=68`94U-0U]H;W-T`&5-34EN9F\`0F]O=$-A<%-I
M>F4`57-E<D-A<%-I>F4`16UM8T-L:P!%;6UC0G5S7VAZ`/`````"R```=`(`
M``+(``"(`@```@0``)P"```"!```L`(```($``#$`@```@0``+`#```"!```
ML`0```($```L!0```@0``)@%```"!```#`8```($``!8!@```@0``)0&```"
M!```"`<```($``#`!P```@0``,0'```"!```A`@```($``"("````@0``/`(
M```"!```1`D```($``!H"0``'/8``'`)```"!```M`D```("``"X"0```@(`
M`+P)```"`@``P`D```("``!H"@```@(``&P*```"`@``<`H```("``!T"@``
M`@(``/@*```"`@``_`H```("````"P```@(```0+```"`@````P``!S_```0
M#```'/X``!@,```<_0``;`P``!P``0"@#````@0``,@,```<W```Y`P```($
M``!(#0``'/8``%`-```"!```9`T``!P+`0!P#0```@0``'0-```"T```>`T`
M`!T-`0"T#0``'`\!`!P.```<#P$`6`X``!P2`0!@#@```M```&0.```"9```
M?`X``!P5`0",#@```@0``,0.```<%P$`\`X``!P+`0`,#P``'`L!`!@/```<
M&`$`.`\``!P9`0!0#P``'!H!`'`/```<%P$`D`\```($``"4#P```L@``)@/
M```"T```G`\```+0``"@#P``'1P!`*0/```='@$`J`\``!T@`0"\#P``'"(!
M`,@/```=)`$`T`\``!TF`0#4#P``'2@!`!`0```<)P$`<!```!PG`0"T$```
M`@0``.@0```<]@``]!```!PI`0`($0``'/8``#`1```"!```E!$``!SV``"@
M$0``'"D!`+01```<]@``R!$``!SV``#4$0``'"D!`.@1```<]@``&!(``!PG
M`0"$$@``'"<!`.`2```"!```%!,```($```T$P``'"<!`#P3```<$`$`;!,`
M`!PG`0"\$P``'/8``!@4```"!```@!4``!SV``",%0``'"D!`*`5```<]@``
MN!4``!P``0#`%0``'"P!`-@5```"!```X!4```+0``#D%0```M```.P5```"
MT```C!8``!PA`0"@%@``'"T!`*P6```"R```L!8```($``"T%@```@0``,06
M```<#P$`X!8``!TH`0`<%P``'#$!`"07```<)P$`5!<```($``#H%P``'"<!
M`'`9```<%@$`4!H``!P6`0"(&@``'!4!`+@:```<)P$`\!H``!PG`0!8&P``
M'"<!`-@;```<%`$`!!P``!PG`0!,'```'"<!`*`<```<%`$`"!T``!P4`0!8
M'0``'"<!`)`=```<)P$`*!\```($```P'P```@\``#0?```"%0``.!\```(2
M``#$'P``'3(!`-`?```"!```_!\``!PR`0"\(```'#(!`#`A```"!```J"$`
M`!PR`0#8(0``'#(!``0B```<,@$`7"(``!PK`0#T(@```@0``'`C```<,@$`
MH",``!PR`0"T(P``'"<!`-0C```<,@$`2"0``!PK`0#@)````@0``&`E```<
M'0$`<"4``!P=`0#()0``'"$!`/PE```<'0$`""8``!P=`0`<)@``'!L!`#`F
M```<'0$`0"8``!P;`0!L)@``'#(!`*`F```<,@$`U"8``!PR`0`8)P``'#(!
M`$@G```"!```G"<``!PR`0#<)P``'#(!`$PH```<,@$`M"@``!PR`0#,*```
M'"$!`/`H```<,@$`M"D``!PR`0#<*0``'#(!`/`I```<`0$`'"H``!PR`0!,
M*@``'#(!`(0J```<,@$`K"H``!PR`0#`*@``'`$!`.`J```<(0$`!"L``!PR
M`0!L*P``'"$!`)`K```<,@$`'"P``!PK`0`\+````@0``(0L```<-`$`R"T`
M`!PU`0`P+@``'#4!`-0N```<*P$`#"\``!PU`0!$+P``'#4!`(`O```<-`$`
M2#```!PU`0!L,````@0``+0P```<-`$`F#$``!PU`0#P,0``'#4!`)0R```<
M*P$`S#(``!PU`0`$,P``'#4!`$`S```<-`$`"#0``!PU`0`D-````@0``&@T
M```<-0$`M#4``!PU`0"L-@``'#4!``PW```<-0$`3#<``!PK`0"$-P``'#4!
M`+PW```<-0$`.#@``!PR`0"L.```'#(!`.0X```<,@$`%#D``!PK`0!8.0``
M'`$!`+0Y```<,@$`]#D``!PR`0`H.@``'`$!`&PZ```<,@$`G#H``!PR`0"X
M.@``'`$!`/0Z```<,@$`+#L``!PR`0"8.P```@0``*@[```"!```T#L``!PA
M`0#X.P``'`$!`!0\```<*P$`,#P``!PG`0!0/```'#4!`&0\```<)P$`A#P`
M`!PU`0"L/```'#4!``@]```<-@$`2#T``!PU`0#$/0``'#4!`-0]```<-P$`
M\#T``!PX`0`,/@``'"P!`!@^```<`0$`)#X``!PJ`0"X/@``'`P!`.`^```"
M!```Y#X```*G``#H/@```J0``.P^```"!```\#X```($``!$/P``'#(!`+0_
M```<,@$`%$```!PR`0"40````@(``)A````"`@``G$````("``"@0````@(`
M`*1````"`@``J$````("``"L0````@(``+!````"`@``M$````("``"X0```
M`@(``+Q````"`@``P$````("``#$0````@(``,A````"`@``S$````("``#0
M0````@(``%Q!```<*@$`@$$``!PA`0`L0@``'!T!`'!"```<(0$`@$(``!P=
M`0"40@``'!L!`+Q"```<,@$`[$(``!PR`0`D0P``'#(!`-1#```<,@$`$$0`
M`!PR`0!`1```'#(!`,A$```<'0$`'$4``!PR`0!$10``'"$!`%1%```<'0$`
M9$4``!P;`0"(10``'#(!`+A%```<,@$`[$4``!PR`0!<1@``'!T!`+!&```<
M,@$`V$8``!PA`0#D1@``'!T!`/1&```<&P$`&$<``!PR`0!(1P``'#(!`'Q'
M```<,@$`J$<``!PR`0``20``'#D!`%A)```<.@$`J$D``!P[`0#820```@0`
M`-Q)```"!```^$D``!PB`0`(2@``'#\!`!1*```<0`$`'$H``!Q!`0`H2@``
M'#\!`"Q*```<00$`-$H``!Q"`0!`2@``'/8``$Q*```<"P$`9$H``!Q#`0"`
M2@``'`X!`(1*```<$0$`G$H``!P/`0"@2@``'"X!`+!*```<1`$`\$H``!P-
M`0`(2P``'$4!`"!+```<1@$`0$L``!P/`0!02P``'#T!`'!+```<"P$`C$L`
M`!SF``"@2P``'#T!`+1+```<"P$`T$L``!P]`0#D2P``'`L!`/Q+```</0$`
M#$P```+0```03````@0``!A,```"T```'$P```+0```@3````@0``#!,```"
M`P``-$P```+0```X3````F8``$!,```"T```1$P```+0``!(3````M``````
M```"T````````"H"`````````-D```@````J`@``$````"H"```8````*@(`
M`"`````J`@``*````"H"```P````*@(``#@````J`@``0````"H"``!(````
M*@(``%`````J`@``6````"H"``!@````*@(``&@````J`@``<````"H"``!X
M````*@(``(`````J`@``B````"H"``"0````*@(``)@````J`@``H````"H"
M``"H````*@(``+`````J`@``N````"H"``#`````*@(``,@````J`@``T```
M`"H"``#8````*@(``.`````J`@``Z````"H"``#P````*@(``/@````J`@``
M``$``"H"```(`0``*@(``!`!```J`@``&`$``"H"```@`0``*@(``"@!```J
M`@``,`$``"H"```X`0``*@(``$`!```J`@``2`$``"H"``!0`0``*@(``%@!
M```J`@``8`$``"H"``!H`0``*@(``'`!```J`@``>`$``"H"``"``0``*@(`
M`(@!```J`@``D`$``"H"``"8`0``*@(``*`!```J`@``J`$``"H"``"P`0``
M*@(``+@!```J`@``P`$``"H"``#(`0``*@(``-`!```J`@``V`$``"H"``#@
M`0``*@(``.@!```J`@``\`$``"H"``#X`0``*@(``/@!````$P$`_`$``"H(
M`````@``*@(```@"```J`@``$`(``"H"```8`@``*@(``"`"```J`@``*`(`
M`"H"```P`@``*@(``#@"```J`@``0`(``"H"``!(`@``*@(``%`"```J`@``
M6`(``"H"``!@`@``*@(``&@"```J`@``<`(``"H"``!T`@``*@@``'@"```J
M`@``@`(``"H"``"(`@``*@(``)`"```J`@``F`(``"H"``"@`@``*@(``*@"
M```J`@``L`(``"H"``"X`@``*@(``,`"```J`@``R`(``"H"``#0`@``*@(`
M`-@"```J`@``X`(``"H"``#H`@``*@(``/`"```J`@``^`(``"H"`````P``
M*@(```@#```J`@``$`,``"H"```8`P``*@(``"`#```J`@``*`,``"H"```P
'`P``*@(`````
`
end

View File

@@ -12,154 +12,517 @@ Revision: 1.00
********************************************************************************/
#ifndef _EPPHAL_H
#define _EPPHAL_H
#define read_XDATA32(address) (*((uint32 volatile*)(address)))
#define write_XDATA32(address, value) (*((uint32 volatile*)(address)) = value)
#define read_XDATA32(address) (*((uint32 volatile*)(address)))
#define write_XDATA32(address, value) (*((uint32 volatile*)(address)) = value)
typedef enum _CLK_GATE
{
/* SCU CLK GATE 0 CON */
CLK_GATE_CORE = 0,
CLK_GATE_CORE_APB,
CLK_GATE_CORE_ATB,
CLK_GATE_CPU_AXI,
CLK_GATE_CPU_AXI2,
CLK_GATE_CPU_AHB,
CLK_GATE_CPU_MATRIX1_AHB,
CLK_GATE_CPU_APB,
CLK_GATE_CPU_ATB,
CLK_GATE_DMA0,
CLK_GATE_DMA1,
CLK_GATE_GIC,
CLK_GATE_IMEM,
CLK_GATE_EBROM = 14,
CLK_GATE_I2S0,
CLK_GATE_I2S1,
CLK_GATE_SPDIF,
CLK_GATE_DDR_PHY,
CLK_GATE_DDR_REG,
CLK_GATE_DDR_CPU,
CLK_GATE_EFUSE,
CLK_GATE_TZPC,
CLK_GATE_TIMER0,
CLK_GATE_GPIO0,
CLK_GATE_UART0,
CLK_GATE_I2C0,
CLK_GATE_DEBUG,
CLK_GATE_TPIU,
CLK_GATE_RTC,
CLK_GATE_PMU,
CLK_GATE_GRF,
/* SCU CLK GATE 1 CON */
CLK_GATE_PEIRPH_AXI = 32,
CLK_GATE_PEIRPH_AHB,
CLK_GATE_PEIRPH_APB,
CLK_GATE_EMEM,
CLK_GATE_USB,
CLK_GATE_DMA2,
CLK_GATE_DDR_PERIPH,
CLK_GATE_PERIPH,
/* FIXME */
CLK_GATE_SMC_AXI,
CLK_GATE_SMC,
CLK_GATE_MAC_AHB = 43,
CLK_GATE_MAC_PHY,
CLK_GATE_MAC_TX,
CLK_GATE_MAC_RX,
CLK_GATE_HIF,
CLK_GATE_NANDC,
CLK_GATE_HSADC_AHB,
CLK_GATE_HSADC,
CLK_GATE_SDMMC0_AHB,
CLK_GATE_SDMMC0,
CLK_GATE_SDMMC1_AHB,
CLK_GATE_SDMMC1,
CLK_GATE_EMMC_AHB,
CLK_GATE_EMMC,
CLK_GATE_USBOTG0,
CLK_GATE_USBPHY0,
CLK_GATE_USBOTG1,
CLK_GATE_USBPHY1,
CLK_GATE_UHOST_AHB,
CLK_GATE_UHOST,
CLK_GATE_PID_FILTER,
/* SCU CLK GATE 2 CON */
CLK_GATE_UART1 = 64,
CLK_GATE_UART2,
CLK_GATE_UART3,
CLK_GATE_TIMER1,
CLK_GATE_TIMER2,
CLK_GATE_TIMER3,
CLK_GATE_GPIO1,
CLK_GATE_GPIO2,
CLK_GATE_GPIO3,
CLK_GATE_GPIO4,
CLK_GATE_GPIO5,
CLK_GATE_GPIO6,
CLK_GATE_I2C1,
CLK_GATE_I2C2,
CLK_GATE_I2C3,
CLK_GATE_SPI0,
CLK_GATE_SPI1,
CLK_GATE_VIP_SLAVE = 82,
CLK_GATE_WDT,
CLK_GATE_SARADC,
CLK_GATE_PWM,
CLK_GATE_VIP_BUS,
CLK_GATE_VIP_MATRIX,
CLK_GATE_VIP,
CLK_GATE_VIP_INPUT,
CLK_GATE_JTAG,
/* CRU CLK GATE 3 CON */
CLK_GATE_LCDC_AXI = 96,
CLK_GATE_DDR_LCDC_AXI,
CLK_GATE_LCDC_AHB,
CLK_GATE_LCDC,
CLK_GATE_IPP_AXI,
CLK_GATE_IPP_AHB,
CLK_GATE_EBOOK_AHB,
CLK_GATE_EBOOK,
CLK_GATE_DISPLAY_MATRIX_AXI,
CLK_GATE_DISPLAY_MATRIX_AHB,
CLK_GAET_VEPU_AXI,
CLK_GATE_DDR_VEDU_AXI,
CLK_GATE_VDPU_AXI,
CLK_GATE_DDR_VDPU_AXI,
CLK_GATE_GPU,
CLK_GATE_GPU_AXI,
CLK_GATE_DDR_GPU_AXI,
CLK_GATE_GPU_AHB,
CLK_GATE_VEPU_AHB,
CLK_GATE_VDPU_AHB,
CLK_GATE_CPU_VCODEC_AHB,
CLK_GATE_CPU_DISPLAY_AHB,
CLK_GATE_MAX
}eCLK_GATE;
#define USB_OTG_INT_CH (1<<8)
//1<>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD>
#ifndef DRIVERS_INTC
//INTC Registers
typedef volatile struct tagINTC_STRUCT
{
uint32 IRQ_INTEN_L;
uint32 IRQ_INTEN_H;
uint32 IRQ_INTMASK_L;
uint32 IRQ_INTMASK_H;
uint32 IRQ_INTFORCE_L;
uint32 IRQ_INTFORCE_H;
uint32 IRQ_RAWSTATUS_L;
uint32 IRQ_RAWSTATUS_H;
uint32 IRQ_STATUS_L;
uint32 IRQ_STATUS_H;
uint32 IRQ_MASKSTATUS_L;
uint32 IRQ_MASKSTATUS_H;
uint32 IRQ_FINALSTATUS_L;
uint32 IRQ_FINALSTATUS_H;
uint32 RESERVED1[(0xc0-0x38)/4];
uint32 FIQ_INTEN;
uint32 FIQ_INTMASK;
uint32 FIQ_INTFORCE;
uint32 FIQ_RAWSTATUS;
uint32 FIQ_STATUS;
uint32 FIQ_FINALSTATUS;
uint32 IRQ_PLEVEL;
uint32 RESERVED2[(0xe8-0xdc)/4];
uint32 IRQ_PN_OFFSET[40];
uint32 RESERVED3[(0x3f8-0x188)/4];
uint32 AHB_ICTL_COMP_VERSION;
uint32 ICTL_COMP_TYPE;
} INTC_REG, *pINTC_REG;
//INTC Registers
typedef volatile struct tagGICD_REG
{
uint32 ICDDCR ; //0x000
uint32 ICDICTR ; //0x004
uint32 ICDIIDR ; //0x008
uint32 RESERVED0[29] ;
uint32 ICDISR[4] ; // 0x080
uint32 RESERVED1[28] ;
uint32 ICDISER[4] ; // 0x100
uint32 RESERVED2[28] ;
uint32 ICDICER[4] ; //0x180
uint32 RESERVED3[28] ;
uint32 ICDISPR[4] ; //0x200
uint32 RESERVED4[28] ;
uint32 ICDICPR[4] ; //0x280
uint32 RESERVED5[28] ;
uint32 ICDIABR[4] ; //0x300
uint32 RESERVED6[60] ;
uint32 ICDIPR_SGI[4] ; // 0x400
uint32 ICDIPR_PPI[4] ; // 0x410
uint32 ICDIPR_SPI[18] ; //0x420
uint32 RESERVED57[486] ;
uint32 ICDICFR[7] ; //0xc00
uint32 RESERVED8[185] ;
uint32 ICDSGIR ; //0xf00
}GICD_REG, *pGICD_REG;
typedef volatile struct tagGICC_REG
{
uint32 ICCICR ; //0x00
uint32 ICCPMR ; //0x04
uint32 ICCBPR ; //0x08
uint32 ICCIAR ; //0x0c
uint32 ICCEOIR ; //0x10
uint32 ICCRPR ; //0x14
uint32 ICCHPIR ; //0x18
uint32 ICCABPR ; //0x1c
uint32 RESERVED0[55];
uint32 ICCIIDR ; //0xfc
}GICC_REG, *pGICC_REG;
//SCU Registers
typedef volatile struct tagSCU_STRUCT
{
uint32 SCU_APLL_CON;
uint32 SCU_DPLL_CON;
uint32 SCU_CPLL_CON;
uint32 SCU_MODE_CON;
uint32 SCU_PMU_CON;
uint32 SCU_CLKSEL0_CON;
uint32 SCU_CLESEL1_CON;
uint32 SCU_CLKGATE0_CON;
uint32 SCU_CLKGATE1_CON;
uint32 SCU_CLKGATE2_CON;
uint32 SCU_SOFTRST_CON;
uint32 SCU_CHIPCFG_CON;
uint32 SCU_CPUPD;
} SCU_REG, *pSCU_REG;
//REG FILE registers
typedef volatile struct tagREG_FILE
{
uint32 CPU_APB_REG0;
uint32 CPU_APB_REG1;
uint32 CPU_APB_REG2;
uint32 CPU_APB_REG3;
uint32 CPU_APB_REG4;
uint32 CPU_APB_REG5;
uint32 CPU_APB_REG6;
uint32 CPU_APB_REG7;
uint32 IOMUX_A_CON;
uint32 IOMUX_B_CON;
uint32 GPIO0_AB_PU_CON;
uint32 GPIO0_CD_PU_CON;
uint32 GPIO1_AB_PU_CON;
uint32 GPIO1_CD_PU_CON;
uint32 OTGPHY_CON0;
uint32 OTGPHY_CON1;
} REG_FILE, *pREG_FILE;
/********************************************************************
** <20><EFBFBD><E1B9B9><EFBFBD><EFBFBD> *
********************************************************************/
//GRF Registers
typedef volatile struct tagGRF_REG
{
uint32 CPU_APB_REG0;
uint32 CPU_APB_REG1;
uint32 CPU_APB_REG2;
uint32 CPU_APB_REG3;
uint32 CPU_APB_REG4;
uint32 CPU_APB_REG5;
uint32 CPU_APB_REG6;
uint32 CPU_APB_REG7;
uint32 IOMUX_A_CON;
uint32 IOMUX_B_CON;
uint32 GPIO0_AB_PU_CON;
uint32 GPIO0_CD_PU_CON;
uint32 GPIO1_AB_PU_CON;
uint32 GPIO1_CD_PU_CON;
uint32 OTGPHY_CON0;
uint32 OTGPHY_CON1;
}GRF_REG, *pGRF_REG,*pAPB_REG;
//GPIO Registers
typedef volatile struct tagGPIO_STRUCT
{
uint32 GPIO_SWPORTA_DR;
uint32 GPIO_SWPORTA_DDR;
uint32 RESERVED1;
uint32 GPIO_SWPORTB_DR;
uint32 GPIO_SWPORTB_DDR;
uint32 RESERVED2;
uint32 GPIO_SWPORTC_DR;
uint32 GPIO_SWPORTC_DDR;
uint32 RESERVED3;
uint32 GPIO_SWPORTD_DR;
uint32 GPIO_SWPORTD_DDR;
uint32 RESERVED4;
uint32 GPIO_INTEN;
uint32 GPIO_INTMASK;
uint32 GPIO_INTTYPE_LEVEL;
uint32 GPIO_INT_POLARITY;
uint32 GPIO_INT_STATUS;
uint32 GPIO_INT_RAWSTATUS;
uint32 GPIO_DEBOUNCE;
uint32 GPIO_PORTS_EOI;
uint32 GPIO_EXT_PORTA;
uint32 GPIO_EXT_PORTB;
uint32 GPIO_EXT_PORTC;
uint32 GPIO_EXT_PORTD;
uint32 GPIO_LS_SYNC;
}GPIO_REG,*pGPIO_REG;
//SCU Registers
typedef volatile struct tagCRU_REG
{
uint32 CRU_APLL_CON;//[3];//0:arm 1:ddr 2:codec
uint32 CRU_DPLL_CON;
uint32 CRU_CPLL_CON;
uint32 CRU_PPLL_CON;
uint32 CRU_MODE_CON;
uint32 CRU_CLKSEL0_CON;
uint32 CRU_CLKSEL1_CON;
uint32 CRU_CLKSEL2_CON;
uint32 CRU_CLKSEL3_CON;
uint32 CRU_CLKSEL4_CON;
uint32 CRU_CLKSEL5_CON;
uint32 CRU_CLKSEL6_CON;
uint32 CRU_CLKSEL7_CON;
uint32 CRU_CLKSEL8_CON;
uint32 CRU_CLKSEL9_CON;
uint32 CRU_CLKSEL10_CON;
uint32 CRU_CLKSEL11_CON;
uint32 CRU_CLKSEL12_CON;
uint32 CRU_CLKSEL13_CON;
uint32 CRU_CLKSEL14_CON;
uint32 CRU_CLKSEL15_CON;
uint32 CRU_CLKSEL16_CON;
uint32 CRU_CLKSEL17_CON;
uint32 CRU_CLKGATE0_CON;
uint32 CRU_CLKGATE1_CON;
uint32 CRU_CLKGATE2_CON;
uint32 CRU_CLKGATE3_CON;
uint32 CRU_SOFTRST0_CON;
uint32 CRU_SOFTRST1_CON;
uint32 CRU_SOFTRST2_CON;
}CRU_REG,*pCRU_REG;
//SDMMC0
typedef enum
{
IOMUX_SDMMC_1BIT = 0,
IOMUX_SDMMC_4BIT, //default
IOMUX_SDMMC_8BIT,
IOMUX_SDMMC_OTHER
}eIOMUX_SDMMC;
typedef enum _IRQ_NUM
{
INT_SGI0 ,
INT_SGI1 ,
INT_SGI2 ,
INT_SGI3 ,
INT_SGI4 ,
INT_SGI5 ,
INT_SGI6 ,
INT_SGI7 ,
INT_SGI8 ,
INT_SGI9 ,
INT_SGI10 ,
INT_SGI11 ,
INT_SGI12 ,
INT_SGI13 ,
INT_SGI14 ,
INT_SGI15 ,
INT_PPI0 ,
INT_PPI1 ,
INT_PPI2 ,
INT_PPI3 ,
INT_PPI4 ,
INT_PPI5 ,
INT_PPI6 ,
INT_PPI7 ,
INT_PPI8 ,
INT_PPI9 ,
INT_PPI10 ,
INT_PPI11 ,
INT_PPI12 ,
INT_PPI13 ,
INT_PPI14 ,
INT_PPI15 ,
#endif
INT_DMAC0_0 ,
INT_DMAC0_1 ,
INT_DMAC0_2 ,
INT_DMAC0_3 ,
INT_DMAC2_0 ,
INT_DMAC2_1 ,
INT_DMAC2_2 ,
INT_DMAC2_3 ,
INT_DMAC2_4 ,
INT_GPU ,
INT_VEPU ,
INT_VDPU ,
INT_VIP ,
INT_LCDC ,
INT_IPP ,
INT_EBC ,
INT_USB_OTG0 ,
INT_USB_OTG1 ,
INT_USB_Host ,
INT_MAC ,
INT_HIF0 ,
INT_HIF1 ,
INT_HSADC_TSI ,
INT_SDMMC ,
INT_SDIO ,
INT_eMMC ,
INT_SARADC ,
INT_NandC ,
INT_NandCRDY ,
INT_SMC ,
INT_PID_FILTER ,
INT_I2S_PCM_8CH ,
INT_I2S_PCM_2CH ,
INT_SPDIF ,
INT_UART0 ,
INT_UART1 ,
INT_UART2 ,
INT_UART3 ,
INT_SPI0 ,
INT_SPI1 ,
INT_I2C0 ,
INT_I2C1 ,
INT_I2C2 ,
INT_I2C3 ,
INT_TIMER0 ,
INT_TIMER1 ,
INT_TIMER2 ,
INT_TIMER3 ,
INT_PWM0 ,
INT_PWM1 ,
INT_PWM2 ,
INT_PWM3 ,
INT_WDT ,
INT_RTC ,
INT_PMU ,
INT_GPIO0 ,
INT_GPIO1 ,
INT_GPIO2 ,
INT_GPIO3 ,
INT_GPIO4 ,
INT_GPIO5 ,
INT_GPIO6 ,
INT_USB_AHB_ARB ,
INT_PERI_AHB_ARB,
INT_A8IRQ0 ,
INT_A8IRQ1 ,
INT_A8IRQ2 ,
INT_A8IRQ3 ,
INT_MAXNUM
}eINT_NUM;
//1ȫ<31>ֱ<EFBFBD><D6B1><EFBFBD>
#undef EXT
#ifdef IN_EPPHAL
#define EXT
#else
#define EXT extern
#endif
typedef enum _CRU_RST
{
//cru_rst_con0
CRU_RST_ARMCORE = 0,
CRU_RST_CPUSUBSYS_INT1AXI,
CRU_RST_CPUSUBSYS_INT1AHB,
CRU_RST_CPUSUBSYS_INT1APB,
CRU_RST_CPUSUBSYS_INT1ATB,
CRU_RST_CPUSUBSYS_INT2,
CRU_RST_DMA0,
CRU_RST_DMA1,
CRU_RST_GIC,
CRU_RST_INMEM,
CRU_RST_TZPC=11,
CRU_RST_ROM,
CRU_RST_I2S0,
CRU_RST_I2S1,
CRU_RST_SPDIF,
CRU_RST_UART0,
CRU_RST_RTC,
CRU_RST_DDRPHY,
CRU_RST_DDRDLL_B0,
CRU_RST_DDRDLL_B1,
CRU_RST_DDRDLL_B2,
CRU_RST_DDRDLL_B3,
CRU_RST_DDRDLL_CMD,
CRU_RST_DDR_CON,
CRU_RST_ARMCORE_DEBUG,
CRU_RST_DAP_DBG,
CRU_RST_CPU_VODEC_A2A,
CRU_RST_CPU_DISPLAY_A2A,
CRU_RST_DAP_SYS,
//1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// cru_softrst1_con
CRU_RST_PERIPH_INT1_AXI=32,
CRU_RST_PERIPH_INT1_AHB,
CRU_RST_PERIPH_INT1_APB,
CRU_RST_PERIPH_EMEM=36,
CRU_RST_PERIPH_USB,
CRU_RST_DMA2,
CRU_RST_MAC,
CRU_RST_HIF,
CRU_RST_NANDC,
CRU_RST_SMC,
CRU_RST_RESERVED1,
CRU_RST_LSADC,
CRU_RST_SDMMC0,
CRU_RST_SDMMC1,
CRU_RST_EMMC,
CRU_RST_USBOTG0_AHB,
CRU_RST_USBPHY0,
CRU_RST_USBOTG0_CON,
CRU_RST_USBOTG1_AHB,
CRU_RST_USBPHY1,
CRU_RST_USBOTG1_CON,
CRU_RST_UHOST,
CRU_RST_VIP,
CRU_RST_VIP_AHB,
CRU_RST_SPI0,
CRU_RST_SPI1,
CRU_RST_SARADC,
CRU_RST_UART1,
CRU_RST_UART2,
CRU_RST_UART3,
CRU_RST_PWM,
//CRU_SOFTRST2_CON
CRU_RST_DISPLAY_AXI=64,
CRU_RST_DISPLAY_AHB,
CRU_RST_LCDC,
CRU_RST_IPP,
CRU_RST_EBOOK,
CRU_RST_RESERVED2,
CRU_RST_RESERVED3,
CRU_RST_GPU,
CRU_RST_DDR_REG,
CRU_RST_DDR_CPU,
CRU_RST_PERIPH_CPU_AXI,
CRU_RST_DDR_PERIPH,
CRU_RST_DDR_LCDC,
CRU_RST_RESERVED4,
CRU_RST_RESERVED5,
CRU_RST_DDR_VCODEC,
CRU_RST_DDR_GPU,
CRU_RST_PID_FILTER,
CRU_RST_VCODEC_AXI,
CRU_RST_VCODEC_AHB,
CRU_RST_TIMER0,
CRU_RST_TIMER1,
CRU_RST_TIMER2,
CRU_RST_TIMER3,
CRU_RST_MAX
}eCRU_RST;
//GRF Registers
typedef volatile struct tagGRF_REG
{
uint32 GRF_GPIO0_DIR;
uint32 GRF_GPIO1_DIR;
uint32 GRF_GPIO2_DIR;
uint32 GRF_GPIO3_DIR;
uint32 GRF_GPIO4_DIR;
uint32 GRF_GPIO5_DIR;
uint32 GRF_GPIO0_DO;
uint32 GRF_GPIO1_DO;
uint32 GRF_GPIO2_DO;
uint32 GRF_GPIO3_DO;
uint32 GRF_GPIO4_DO;
uint32 GRF_GPIO5_DO;
uint32 GRF_GPIO0_EN;
uint32 GRF_GPIO1_EN;
uint32 GRF_GPIO2_EN;
uint32 GRF_GPIO3_EN;
uint32 GRF_GPIO4_EN;
uint32 GRF_GPIO5_EN;
uint32 GRF_GPIO0L_IOMUX;
uint32 GRF_GPIO0H_IOMUX;
uint32 GRF_GPIO1L_IOMUX;
uint32 GRF_GPIO1H_IOMUX;
uint32 GRF_GPIO2L_IOMUX;
uint32 GRF_GPIO2H_IOMUX;
uint32 GRF_GPIO3L_IOMUX;
uint32 GRF_GPIO3H_IOMUX;
uint32 GRF_GPIO4L_IOMUX;
uint32 GRF_GPIO4H_IOMUX;
uint32 GRF_GPIO5L_IOMUX;
uint32 GRF_GPIO5H_IOMUX;
uint32 GRF_GPIO0_PULL1;
uint32 GRF_GPIO1_PULL1;
uint32 GRF_GPIO2_PULL1;
uint32 GRF_GPIO3_PULL1;
uint32 GRF_GPIO4_PULL1;
uint32 GRF_GPIO5_PULL1;
uint32 GRF_GPIO6_PULL1;
uint32 GRF_UOC0_CON0;
uint32 GRF_UOC1_CON0;
uint32 GRF_USB_CON;
uint32 GRF_CPU_CON0;
uint32 GRF_CPU_CON1;
uint32 GRF_CPU_STATUS;
uint32 GRF_MEM_CON;
uint32 GRF_MEM_STATUS0;
uint32 GRF_MEM_STATUS1;
uint32 GRF_MEM_STATUS2;
uint32 GRF_SOC_CON0;
uint32 GRF_SOC_CON1;
uint32 GRF_SOC_CON2;
uint32 GRF_SOC_CON3;
uint32 GRF_SOC_CON4;
uint32 GRF_OS_REG0;
uint32 GRF_OS_REG1;
uint32 GRF_OS_REG2;
uint32 GRF_OS_REG3;
}GRF_REG, *pGRF_REG,*pAPB_REG, *pREG_FILE;
//TIMER Registers
typedef volatile struct tagTIMER_STRUCT
{
uint32 TIMER_LOAD_COUNT;
uint32 TIMER_CURR_VALUE;
uint32 TIMER_CTRL_REG;
uint32 TIMER_EOI;
uint32 TIMER_INT_STATUS;
}TIMER_REG,*pTIMER_REG;
typedef volatile struct tagPMU_REG
{
uint32 PMU_WAKEUP_EN0;
uint32 PMU_WAKEUP_EN1;
uint32 PMU_WAKEUP_EN2;
uint32 reserved1;
uint32 PMU_PG_CON;
uint32 PMU_MISC_CON;
uint32 PMU_PLL_CNT;
uint32 PMU_PD_ST;
uint32 PMU_INT_ST;
}PMU_REG,*pPMU_REG;
typedef struct tagSCU_CLK_INFO
{
uint32 armFreq; //ARM PLL FREQ
uint32 dspFreq; //DSP PLL FREQ
uint32 AuxFreq; //AUX PLL FREQ
uint32 ahbDiv;
uint32 apbDiv;
uint32 armFreqLast;
}SCU_CLK_INFO,*pSCU_CLK_INFO;
#define g_cruReg ((pCRU_REG)RK29_CRU_BASE)
extern void EnableIRQ(void);
extern void DisableIRQ(void);
extern void EnableOtgIntr(void);
extern void DisableOtgIntr(void);
extern void InterruptInit(void);
#endif

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -19,10 +19,17 @@ Revision: 1.00
#include <linux/string.h>
#include <linux/sched.h>
#include <linux/delay.h>
//#include <asm/arch-rockchip/hardware.h>
#include <linux/irq.h>
#include <mach/board.h>
#include <mach/gpio.h>
#include <asm/dma.h>
#include <mach/rk29-dma-pl330.h>
#include "typedef.h"
#include <mach/rk29_iomap.h>
#include <mach/iomux.h>
#include <linux/interrupt.h>
#include "epphal.h"
//#include "epphal.h"
#ifndef TRUE
#define TRUE 1

View File

@@ -26,6 +26,7 @@ extern int rknand_queue_read(int Index, int nSec, void *buf);
extern int rknand_queue_write(int Index, int nSec, void *buf,int mode);
extern int rknand_buffer_init(void);
extern void rknand_buffer_shutdown(void);
extern void rknand_buffer_sync(void);
#define DRIVER_NAME "rk29xxnand"
const char rknand_base_version[] = "rknand_base.c version: 4.20 20101118";
@@ -268,7 +269,7 @@ static int rk28xxnand_read(struct mtd_info *mtd, loff_t from, size_t len,
if(sector)
{
{
ret = FtlRead(2,LBA, sector, buf);
ret = NandRead(LBA, sector, buf);
}
}
rknand_release_device();
@@ -290,11 +291,11 @@ static int rk28xxnand_write(struct mtd_info *mtd, loff_t from, size_t len,
if(LBA < SysImageWriteEndAdd)//0x4E000)
{
printk(">>> FtlWriteImage: LBA=0x%08X sector=%d\n",LBA, sector);
ret = FtlWriteImage(LBA&0xFFFFFFE0, sector, (void *)buf);// LBA align to 32
ret = NandWriteImage(LBA&0xFFFFFFE0, sector, (void *)buf);// LBA align to 32
}
else
{
ret = FtlWrite(2,LBA, sector, (void *)buf);
ret = NandWrite(LBA, sector, (void *)buf);
}
}
rknand_release_device();
@@ -356,6 +357,9 @@ static int rk28xxnand_erase(struct mtd_info *mtd, struct erase_info *instr)
static void rk28xxnand_sync(struct mtd_info *mtd)
{
NAND_DEBUG(NAND_DEBUG_LEVEL0,"rk28xxnand_sync: \n");
#ifdef CONFIG_MTD_RKNAND_BUFFER
rknand_buffer_sync();
#endif
}
static int rk28xxnand_init(struct rknand_info *nand_info)
@@ -371,17 +375,13 @@ static int rk28xxnand_init(struct rknand_info *nand_info)
rknand->pFlashCallBack = NULL;
init_waitqueue_head(&rknand->wq);
NAND_DEBUG(NAND_DEBUG_LEVEL0,"FTLInit ...: \n");
#ifdef PAGE_REMAP
if(FTLInit())
#else
if(FTLInit_WithoutPageRemap())
#endif
if(NandInit())
{
NAND_DEBUG(NAND_DEBUG_LEVEL0,"FTLInit Error: \n");
return -ENXIO;
}
NAND_DEBUG(NAND_DEBUG_LEVEL0,"FTLInit OK: \n");
mtd->size = (uint64_t)FtlGetCapacity(0xFF)*0x200;
mtd->size = (uint64_t)NandGetCapacity()*0x200;
//readflash modify rk28_partition_info
NAND_DEBUG(NAND_DEBUG_LEVEL0,"mtd->size: 0x%012llx\n",mtd->size);
@@ -550,7 +550,7 @@ static int rknand_probe(struct platform_device *pdev)
}
}
FtlSetSysProtAddr(SysImageWriteEndAdd);
NandSetSysProtAddr(SysImageWriteEndAdd);
dev_set_drvdata(&pdev->dev, nand_info);
return 0;
@@ -601,7 +601,8 @@ static int rknand_resume(struct platform_device *pdev)
void rknand_shutdown(struct platform_device *pdev)
{
#ifdef CONFIG_MTD_RKNAND_BUFFER
NAND_DEBUG(NAND_DEBUG_LEVEL0,"rknand_shutdown...\n");
//NAND_DEBUG(NAND_DEBUG_LEVEL0,"rknand_shutdown...\n");
printk("rknand_shutdown...\n");
gpNandInfo->rknand.rknand_schedule_enable = 0;
rknand_buffer_shutdown();
#else
@@ -611,12 +612,12 @@ void rknand_shutdown(struct platform_device *pdev)
if (nand_info->state == FL_READY)
{
nand_info->state = FL_UNVALID;
FtlClose();
NandDeInit();
rknand_release_device();
}
else
{
nand_info->pFlashCallBack = FtlClose;
nand_info->pFlashCallBack = NandDeInit;
}
#endif
}
@@ -626,7 +627,7 @@ static struct platform_driver rknand_driver = {
//.remove = rknand_remove,
.suspend = rknand_suspend,
.resume = rknand_resume,
// .shutdown = rknand_shutdown, // FIXME: temporarily disable by huangtao
.shutdown = rknand_shutdown,
.driver = {
.name = DRIVER_NAME,
.owner = THIS_MODULE,
@@ -705,12 +706,12 @@ static int rknand_sys_shutdown(struct sys_device *dev)
{
//rknand_get_device(FL_UNVALID);
nand_info->state = FL_UNVALID;
FtlClose();
NandDeInit();
rknand_release_device();
}
else
{//flash not ready,use call back
nand_info->pFlashCallBack = FtlClose;
nand_info->pFlashCallBack = NandDeInit;
}
return 0;
}

469
drivers/mtd/rknand/rknand_buffer.uu Executable file → Normal file
View File

@@ -1,5 +1,5 @@
begin 644 rknand_buffer.o
M?T5,1@$!`0````````````$`*``!``````````````!$(@``````!30`````
M?T5,1@$!`0````````````$`*``!``````````````!($@``````!30`````
M`"@`$``-`"`PG^4"%:#C'""?Y1@0@^4!`(+@"""#Y0P`@^40((/E%!"#Y1[_
M+^'X_W\``````#0PG^4$`)#E$""3Y0$`@.`"`%#A``!B@!@`@X4,P).5"!"3
ME0P@8I`8((.5`B!AD`(`@)`4`(/E'O\OX?C_?P!<,)_E&!"3Y0``4>$(``"Z
@@ -11,284 +11,193 @@ MH""?Y0!0H.'^___KF$"?Y9@0G^44()3E`&"%X`8`H.'^___K&""4Y800G^4`
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
M,*#C4!"?Y00P@.3^___K!`"@X?[__^M``)_E0!"?Y4`@G^5`,)_E_O__ZP$*
M<.,`0*#A````BO[__^LL,)_E``!4XP``X`,``*`33$"#Y1"`O>@`````%`"`
M`$C@@`````````"``+@```"[````^/]_```````$````!```````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````L+"P@#````"PL+"`<````+"PL(#8````L+"P@/@```"PL+"`*`$`
M`+"PL(`L`0``L+"J@/P!``"PL+"`%`(``+"PJ("$`@``L*\$@!P'``"PL*J`
MJ`<``+"PL("X!P``L+"N@'@(``"PL*J`V`@``%^$!H`H"@``L+"N@!@,``!?
MA`2`K`X``+"PJH!4#P``L+"H@')K;F%N9%]B=69F97(N8R!V97)S:6]N.B`T
M+C(P(#(P,3`Q,3$X```E<PH`1G)E95-I>F4@(#T@,'@E>`H`06QI9VY3:7IE
M("`](#!X)7@*`&)U9B!D871A('-I>F4@(#T@,'@E>`H`5W)I=&4@8V]U;G0@
M(#T@,'@E>`H`4F5A9"!C;W5N="`@/2`P>"5X"@!&<F5E(&-O=6YT("`](#!X
M)7@*`')K;F%N9%]B=69F97)?=&AR96%D(')U;B$A(0H`<FMN86YD7V)U9F9E
M<E]T:')E860@97AI="$A(0H`)7,`<FMN86YD7V)U9F9E<@``1T-#.B`H1TY5
M*2`T+C0N,`!!*@```&%E86)I``$@````!3<M00`&"@=!"`$2!!0!%0$7`Q@!
M&0$:`AX$`"YS>6UT86(`+G-T<G1A8@`N<VAS=')T86(`+G)E;"YT97AT`"YR
M96PN9&%T80`N8G-S`"Y!4DTN97AT86(`+G)E;"Y!4DTN97AI9'@`+G)O9&%T
M80`N<F]D871A+G-T<C$N,0`N8V]M;65N=``N05)-+F%T=')I8G5T97,`````
M`````````````````````````````````````````````````!\````!````
M!@`````````T````Y`\`````````````!``````````;````"0``````````
M````Q"X``+`#```.`````0````0````(````*0````$````#`````````!@0
M```,```````````````$`````````"4````)``````````````!T,@``$```
M``X````#````!`````@````O````"`````,``````````"````#P@```````
M```````0````````-`````$````"```````````@```````````````````!
M`````````$,````!``!P@@``````````(```F`````$`````````!```````
M```_````"0``````````````A#(``*`````.````!P````0````(````3@``
M``$````"`````````)@@```H```````````````$`````````%8````!````
M,@````````#`(```R0```````````````0````$```!E`````0``````````
M````B2$``!(```````````````$`````````;@````,``'```````````)LA
M```K```````````````!`````````!$````#``````````````#&(0``?@``
M`````````````0`````````!`````@``````````````Q"0``%`&```/````
M-`````0````0````"0````,``````````````!0K``"N`P`````````````!
M```````````````````````````````!```````````````$`/'_````````
M`````````P`!``````````````````,``P`````````````````#``4`$0``
M```````````````!`!0````H`````````````0`````````````````#``8`
M`````````````````P`'`!$````P`````````````0`4````;```````````
M``$`$0```'`````````````!`!0```#4`````````````0`1````V```````
M``````$`%````/0````````````!`!$```#X`````````````0`1````*`$`
M``````````$`$0```"P!```````````!`!0```#8`0```````````0`7````
M_`$``!@````"``$`$0```/P!```````````!`!0````0`@```````````0`M
M````%`(``'`````"``$`$0```!0"```````````!`$4```"$`@``F`0```(`
M`0`1````A`(```````````$`%`````0'```````````!`!$````<!P``````
M`````0`4````I`<```````````$`$0```*@'```````````!`!0```"T!P``
M`````````0`1````N`<```````````$`%````'0(```````````!`!$```!X
M"````````````0`4````U`@```````````$`$0```-@(```````````!`!0`
M```<"@```````````0`1````*`H```````````$`%````!0,```````````!
M`!$````8#````````````0`4````H`X```````````$`$0```*P.````````
M```!`!0````\#P```````````0`1````5`\```````````$`%````,0/````
M```````!``````````````````,`"0`````````````````#``H`%```````
M```````````#`%H```!(X(````````$`!0!E````2."````````!``4`````
M`````````````P`+``````````````````,`#`!Q`````````#`````2``$`
MB```````````````$````)\````P````0````!(``0"T````<````&@````2
M``$`R@```-@````@````$@`!`.4```#X````,````!(``0#U````*`$```0`
M```2``$`"`$``"P!``#0````$@`!`!P!`````````````!`````D`0``````
M```````0````+@$`````````````$````#8!`````````````!`````_`0``
M```````````0````30$`````````````$````%L!`````````````!````!B
M`0`````````````0````<P$`````````````$````(@!`````````````!``
M``"1`0`````````````0````I0$`````````````$````*X!````````````
M`!````#"`0`````````````0````TP$`````````````$````.\!````````
M`````!````#X`0``'`<``(P````2``$`$@(``*@'```0````$@`!`"D"````
M`````````!`````V`@``N`<``,`````2``$`20(`````````````$````%`"
M``!X"```8````!(``0!G`@``V`@``%`!```2``$`>P(`````````````$```
M`(("`````````````!````"1`@`````````````0````F`(`````````````
M$````*H"`````````````!````#``@``*`H``/`!```2``$`TP(`````````
M````$````.,"```8#```E`(``!(``0#U`@`````````````0````#0,`````
M````````$````",#``"L#@``J````!(``0`[`P`````````````0````10,`
M`%0/``"0````$@`!`%@#`````````````!````!G`P```````"<````1``D`
M?0,````````,````$0`#`(T#``````````"``!$`!0"?`P````"``$C@```1
M``4``')K;F%N9%]B=69F97(N8P`D80`D9`!R:VYA;F1?8G5F9F5R7W=A:V5?
M=7``9&]?<FMN86YD7W%U975E7W)E<75E<W0`<FMN86YD7V)U9F9E<E]T:')E
M860`7U]K97DN-S$Y.0!?7VME>2XQ-C`R-`!R:VYA;F1?8G5F9F5R7VUE;5]I
M;FET`%]?865A8FE?=6YW:6YD7V-P<%]P<C``<FMN86YD7V)U9F9E<E]M96U?
M:6X`<FMN86YD7V)U9F9E<E]M96U?;W5T`')K;F%N9%]B=69F97)?9V5T7VUE
M;5]S:7IE`')K;F%N9%]Q=65U95]I;@!R:VYA;F1?8G5F9F5R7W-Y;F,`<FM.
M86YD7W!R;V-?8G5F<F5A9`!S<')I;G1F`%]?=V%K95]U<`!&=&Q296%D`$9T
M;%=R:71E`$9T;%=R:71E26UA9V4`<V5T7W5S97)?;FEC90!P<FEN=&L`<')E
M96UP=%]S8VAE9'5L90!M<VQE97!?:6YT97)R=7!T:6)L90!S8VAE9'5L90!W
M86ET7V9O<E]C;VUP;&5T:6]N`&-O;7!L971E`&MT:')E861?<VAO=6QD7W-T
M;W``;7-E8W-?=&]?:FEF9FEE<P!W86ET7V9O<E]C;VUP;&5T:6]N7W1I;65O
M=70`1G1L0VQO<V4`<FMN86YD7W%U975E7V-O;F1?<F5S8VAE9`!R:VYA;F1?
M8G5F9F5R7W-H=71D;W=N`&MT:')E861?<W1O<`!R:VYA;F1?<F5A9%]B=69F
M97(`;65M8W!Y`')K;F%N9%]P<F5?<F5A9%]B=69F97(`<FMN86YD7V=E=%]F
M<F5E7W)E<0!M96US970`861D7W=A:71?<75E=64`;7-L965P`')E;6]V95]W
M86ET7W%U975E`&1E9F%U;'1?=V%K95]F=6YC=&EO;@!R:VYA;F1?<75E=65?
M=W)I=&4`=V%K95]U<%]P<F]C97-S`')K;F%N9%]Q=65U95]R96%D`'1R>5]W
M86ET7V9O<E]C;VUP;&5T:6]N`%]?:6YI=%]W86ET<75E=65?:&5A9`!R:VYA
M;F1?8G5F9F5R7V1A=&%?:6YI=`!?7VUE;7IE<F\`<FMN86YD7V)U9F9E<E]I
M;FET`&MT:')E861?8W)E871E`')K;F%N9%]B=69F97)?=F5R<VEO;@!R:VYA
M;F1?;W!S7V1O;F4`9W)K;F%N9%]Q=65U95]B=68`9W)K;F%N9%]B=69F97(`
M```H`````@0``"P````"!```;`````($``#4`````@0``/0````"!```/`$`
M`!P\``!4`0``'#P``&@!```</```C`$``!P\``"@`0``'#P``+0!```</```
MR`$``!P\``#8`0```BX``-P!```"+0``X`$```($``#D`0```BX``.@!```"
M+@``[`$```(N``#P`0```BX``/0!```"+@``^`$```(N```,`@``'3T``!`"
M```"!```3`(``!P^``!@`@``'#\``'@"```<0```H`(``!Q!``"H`@``'$(`
M`$`#```<0P``9`,``!Q$``!L`P``'$4``*`#```<0P``V`,``!Q!```0!```
M'$$``"P$```<1```-`0``!Q&``"0!```'$,``%@%```<0P``C`4``!Q'``"8
M!0``'$<``*0%```<2```V`4``!Q#``#@!0``'$(``.@%```<20``]`4``!Q*
M``#`!@``'$L``.P&```<0P``]`8``!Q'```$!P```BX```@'```"!```%`<`
M``(#```8!P```BX``'@'```<0P``D`<``!Q'``"D!P```@0``+`'```=3@``
MM`<```($``!<"```'%```'0(```"!```R`@``!Q/``#4"````@0```0)```<
M4P``C`D``!PW``"\"0``'$,``.`)```<0P``]`D``!Q4``#\"0``'%4```@*
M```<5@``'`H```($```@"@```E<``"0*```"!```2`H``!Q9``#X"@``'$,`
M`!`+```<4```3`L``!Q#``!4"P``'%(``*0+```<4```"`P``!Q#```4#```
M`@0``$P,```<60``A`P``!Q1``#0#```'$,``.`,```<6P````T``!P^```@
M#0``'$\``$`-```<0P``2`T``!Q'``!0#0``'%(``(@-```<7```\`T``!Q#
M``#\#0``'%D```0.```<1@``,`X``!Q/``"0#@``'$,``*`.```"!```I`X`
M``(#``"H#@```@0``+@.```<7@``/`\```($``!`#P```@0``$0/```"!```
M2`\```($``!,#P```@0``%`/```"!```7`\``!Q=``!H#P``'%P``'P/```<
M7```A`\``!Q'``"8#P``'&```*@/```<60``Q`\```(#``#(#P```@0``,P/
M```"!```T`\```(8``#4#P```@0``-@/```"+@``W`\```(N``#@#P```@0`
M``0````"8@``"`````)B````````*@(`````````-0``"````"H"```0````
M*@(``!@````J`@``(````"H"```H````*@(``#`````J`@``.````"H"``!`
M````*@(``$@````J`@``4````"H"``!8````*@(``&`````J`@``:````"H"
J``!P````*@(``'@````J`@``@````"H"``"(````*@(``)`````J`@``
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
M````"O[__^L-,*#AP`&?Y7]=P^/^___K/U#%XP"@4.(6```*"`"@X0<0H.$&
M(*#A_O__ZX``#/$$,)7E`3"#X@0PA>4(`*#A!Q"@X08@H.'^___K@``(\00P
ME>4!,$/B!#"%Y0`PE>4"`!/C````"O[__^M8`9_E_O__ZU```.K^___K`$"@
MX8``#/$$,)7E`3"#X@0PA>404(WB#("`Y1!P@.4!,*#C2`"`Z"01G^4,H"7E
M!`"%XO[__^L,,9_E&%"$Y2@@D^4``%+C,$"#!2Q`@P4P(),5%$""%0`@H.,P
M0(,5Y#"?Y10@A.4H()/E`2""XB@@@^6```CQ#2"@X7\]PN,_,,/C!""3Y0$@
M0N($((/E`#"3Y0(`$^,````*_O__ZZ10G^5,`)7E_O__ZP0`C>+^___K@``,
M\0T@H.%_/<+C/S##XP0@D^4!((+B!""#Y08@H.$(`*#A!Q"@X?[__^M`,)7E
M`""@XP``4^-(0(4%1$"%!4@PE1440(,52#"?Y4A`A144((3E0""3Y0$@@N)`
M((/E@``(\0T@H.%_/<+C/S##XP0@D^4!($+B!""#Y0`PD^4"`!/C````"O[_
M_^L``*#C%-"-XO"%O>CX_W\``````$C@@`!P0"WIA`"?Y4@0#N/^___K?#"?
MY7P@G^4(,`/E'#"#X@(`4^'[__\:;#"?Y4A`#N-H$)_E`@6@XV10G^4`(*#C
M`,"!X!@`@^4$((/G4$"#XC0@@^4,P(/E`LN@XR@@@^5(4(/E1$"#Y20@@^4X
M((/E0,"#Y3P@@^4L((/E,""#Y0@0@^40$(/E%`"#Y7"`O>@``(``9`"``$C@
M@`#X_W\``````"S@@``00"WI9$"?Y?[__^M@`)_E8!"?Y?[__^L$`*#A`#"@
MXU`0G^4$,(#D_O__ZP0`H.'^___K0`"?Y4`0G^5`()_E0#"?Y?[__^L!"G#C
M`$"@X0```(K^___K+#"?Y0``5.,``.`#``"@$TQ`@^40@+WH`````!0`@`!(
MX(``````````@`"[````O@```/C_?P``````!`````0`````````````````
M````````````````````````````````````````````````````````````
M``````"PL+"`,````+"PL(!P````L+"P@-@```"PL+"`^````+"PL(`H`0``
ML+"P@"P!``"PL*J`_`$``+"PL(`4`@``L+"H@(`"``"O![&`Q`8``+"PJH!0
M!P``L+"P@&`'``"PL*Z`(`@``+"PJH"`"```7X0&@-`)``"PL*Z`P`L``%^$
M!(!0#@``L+"J@/@.``"PL*B`<FMN86YD7V)U9F9E<BYC('9E<G-I;VXZ(#0N
M,C`@,C`Q,#$Q,3@``"5S"@!&<F5E4VEZ92`@/2`P>"5L>`H`06QI9VY3:7IE
M("`](#!X)6QX"@!B=68@9&%T82!S:7IE("`](#!X)6QX"@!7<FET92!C;W5N
M="`@/2`P>"5X"@!296%D(&-O=6YT("`](#!X)7@*`$9R964@8V]U;G0@(#T@
M,'@E>`H`<FMN86YD7V)U9F9E<E]T:')E860@<G5N(2$A"@!R:VYA;F1?8G5F
M9F5R7W1H<F5A9"!E>&ET(2$A"@`E<P!R:VYA;F1?8G5F9F5R``!'0T,Z("A'
M3E4I(#0N-"XP`$$J````865A8FD``2`````%-RU!``8*!T$(`1($%`$5`1<#
M&`$9`1H"'@0`+G-Y;71A8@`N<W1R=&%B`"YS:'-T<G1A8@`N<F5L+G1E>'0`
M+G)E;"YD871A`"YB<W,`+D%232YE>'1A8@`N<F5L+D%232YE>&ED>``N<F]D
M871A`"YR;V1A=&$N<W1R,2XQ`"YC;VUM96YT`"Y!4DTN871T<FEB=71E<P``
M`````````````````````````````````````````````````````!\````!
M````!@`````````T````B`\`````````````!``````````;````"0``````
M````````M!X``+`#```.`````0````0````(````*0````$````#````````
M`+P/```,```````````````$`````````"4````)``````````````!D(@``
M$`````X````#````!`````@````O````"`````,``````````!````#P@```
M```````````0````````-`````$````"```````````0````````````````
M```!`````````$,````!``!P@@``````````$```F`````$`````````!```
M```````_````"0``````````````="(``*`````.````!P````0````(````
M3@````$````"`````````)@0```H```````````````$`````````%8````!
M````,@````````#`$```S````````````````0````$```!E`````0``````
M````````C!$``!(```````````````$`````````;@````,``'``````````
M`)X1```K```````````````!`````````!$````#``````````````#)$0``
M?@```````````````0`````````!`````@``````````````R!0``$`&```/
M````-`````0````0````"0````,```````````````@;``"L`P``````````
M```!```````````````````````````````!```````````````$`/'_````
M`````````````P`!``````````````````,``P`````````````````#``4`
M$0`````````````````!`!0````H`````````````0`````````````````#
M``8``````````````````P`'`!$````P`````````````0`4````;```````
M``````$`$0```'`````````````!`!0```#4`````````````0`1````V```
M``````````$`%````/0````````````!`!$```#X`````````````0`1````
M*`$```````````$`$0```"P!```````````!`!0```#8`0```````````0`7
M````_`$``!@````"``$`$0```/P!```````````!`!0````0`@``````````
M`0`M````%`(``&P````"``$`$0```!0"```````````!`$4```"``@``1`0`
M``(``0`1````@`(```````````$`%````*P&```````````!`!$```#$!@``
M`````````0`4````3`<```````````$`$0```%`'```````````!`!0```!<
M!P```````````0`1````8`<```````````$`%````!P(```````````!`!$`
M```@"````````````0`4````?`@```````````$`$0```(`(```````````!
M`!0```#$"0```````````0`1````T`D```````````$`%````+P+````````
M```!`!$```#`"P```````````0`4````1`X```````````$`$0```%`.````
M```````!`!0```#@#@```````````0`1````^`X```````````$`%````&@/
M```````````!``````````````````,`"0`````````````````#``H`%```
M```````````````#`%H```!(X(````````$`!0!E````2."````````!``4`
M`````````````````P`+``````````````````,`#`!Q`````````#`````2
M``$`B```````````````$````)\````P````0````!(``0"T````<````&@`
M```2``$`R@```-@````@````$@`!`.4```#X````,````!(``0#U````*`$`
M``0````2``$`"`$``"P!``#0````$@`!`!P!`````````````!`````D`0``
M```````````0````+@$`````````````$````#<!`````````````!````!!
M`0`````````````0````4`$`````````````$````%X!`````````````!``
M``!E`0`````````````0````=@$`````````````$````(L!````````````
M`!````"4`0`````````````0````J`$`````````````$````+$!````````
M`````!````#%`0`````````````0````U@$`````````````$````/(!````
M`````````!````#]`0``Q`8``(P````2``$`%P(``%`'```0````$@`!`"X"
M`````````````!`````[`@``8`<``,`````2``$`3@(`````````````$```
M`%4"```@"```8````!(``0!L`@``@`@``%`!```2``$`@`(`````````````
M$````(<"`````````````!````"6`@`````````````0````J`(`````````
M````$````+X"``#0"0``\`$``!(``0#1`@`````````````0````X0(``,`+
M``"0`@``$@`!`/,"`````````````!`````+`P`````````````0````(0,`
M`%`.``"H````$@`!`#D#`````````````!````!#`P``^`X``)`````2``$`
M5@,`````````````$````&4#````````)P```!$`"0![`P````````P````1
M``,`BP,``````````(``$0`%`)T#`````(``2.```!$`!0``<FMN86YD7V)U
M9F9E<BYC`"1A`"1D`')K;F%N9%]B=69F97)?=V%K95]U<`!D;U]R:VYA;F1?
M<75E=65?<F5Q=65S=`!R:VYA;F1?8G5F9F5R7W1H<F5A9`!?7VME>2XW,3DY
M`%]?:V5Y+C$V,#$T`')K;F%N9%]B=69F97)?;65M7VEN:70`7U]A96%B:5]U
M;G=I;F1?8W!P7W!R,`!R:VYA;F1?8G5F9F5R7VUE;5]I;@!R:VYA;F1?8G5F
M9F5R7VUE;5]O=70`<FMN86YD7V)U9F9E<E]G971?;65M7W-I>F4`<FMN86YD
M7W%U975E7VEN`')K;F%N9%]B=69F97)?<WEN8P!R:TYA;F1?<')O8U]B=69R
M96%D`'-P<FEN=&8`7U]W86ME7W5P`$YA;F1296%D`$YA;F17<FET90!.86YD
M5W)I=&5);6%G90!S971?=7-E<E]N:6-E`'!R:6YT:P!P<F5E;7!T7W-C:&5D
M=6QE`&US;&5E<%]I;G1E<G)U<'1I8FQE`'-C:&5D=6QE`'=A:71?9F]R7V-O
M;7!L971I;VX`8V]M<&QE=&4`:W1H<F5A9%]S:&]U;&1?<W1O<`!M<V5C<U]T
M;U]J:69F:65S`'=A:71?9F]R7V-O;7!L971I;VY?=&EM96]U=`!.86YD1&5)
M;FET`')K;F%N9%]Q=65U95]C;VYD7W)E<V-H960`<FMN86YD7V)U9F9E<E]S
M:'5T9&]W;@!K=&AR96%D7W-T;W``<FMN86YD7W)E861?8G5F9F5R`&UE;6-P
M>0!R:VYA;F1?<')E7W)E861?8G5F9F5R`')K;F%N9%]G971?9G)E95]R97$`
M;65M<V5T`&%D9%]W86ET7W%U975E`')E;6]V95]W86ET7W%U975E`&1E9F%U
M;'1?=V%K95]F=6YC=&EO;@!R:VYA;F1?<75E=65?=W)I=&4`=V%K95]U<%]P
M<F]C97-S`')K;F%N9%]Q=65U95]R96%D`'1R>5]W86ET7V9O<E]C;VUP;&5T
M:6]N`%]?:6YI=%]W86ET<75E=65?:&5A9`!R:VYA;F1?8G5F9F5R7V1A=&%?
M:6YI=`!?7VUE;7IE<F\`<FMN86YD7V)U9F9E<E]I;FET`&MT:')E861?8W)E
M871E`')K;F%N9%]B=69F97)?=F5R<VEO;@!R:VYA;F1?;W!S7V1O;F4`9W)K
M;F%N9%]Q=65U95]B=68`9W)K;F%N9%]B=69F97(`*`````($```L`````@0`
M`&P````"!```U`````($``#T`````@0``#P!```</```5`$``!P\``!H`0``
M'#P``(P!```</```H`$``!P\``"T`0``'#P``,@!```</```V`$```(N``#<
M`0```BT``.`!```"!```Y`$```(N``#H`0```BX``.P!```"+@``\`$```(N
M``#T`0```BX``/@!```"+@``#`(``!T]```0`@```@0``$@"```</@``7`(`
M`!P_``!T`@``'$```)@"```<00``H`(``!Q"```H`P``'$,``$0#```<1```
M3`,``!Q%``"``P``'$,``+`#```<00``Z`,``!Q!``#\`P``'$0```0$```<
M1@``7`0``!Q#```4!0``'$,``#P%```<1P``2`4``!Q'``!0!0``'$@``(0%
M```<0P``C`4``!Q"``"4!0``'$D``*`%```<2@``;`8``!Q+``"8!@``'$,`
M`*`&```<1P``K`8```(N``"P!@```@0``+P&```"`P``P`8```(N```@!P``
M'$,``#@'```<1P``3`<```($``!8!P``'4X``%P'```"!```!`@``!Q0```<
M"````@0``'`(```<3P``?`@```($``"L"```'%,``#0)```<-P``9`D``!Q#
M``"("0``'$,``)P)```<5```I`D``!Q$``"P"0``'%4``,0)```"!```R`D`
M``)6``#,"0```@0``/`)```<6```H`H``!Q#``"X"@``'%```/0*```<0P``
M_`H``!Q2``!,"P``'%```+`+```<0P``O`L```($``#T"P``'%@``"P,```<
M40``>`P``!Q#``"(#```'%H``*0,```</@``Q`P``!Q/``#D#```'$,``.P,
M```<1P``]`P``!Q2```L#0``'%L``)0-```<0P``H`T``!Q8``"H#0``'$8`
M`-0-```<3P``-`X``!Q#``!$#@```@0``$@.```"`P``3`X```($``!<#@``
M'%T``.`.```"!```Y`X```($``#H#@```@0``.P.```"!```\`X```($``#T
M#@```@0````/```<7```#`\``!Q;```@#P``'%L``"@/```<1P``/`\``!Q?
M``!,#P``'%@``&@/```"`P``;`\```($``!P#P```@0``'0/```"&```>`\`
M``($``!\#P```BX``(`/```"+@``A`\```($```$`````F$```@````"80``
M`````"H"`````````#4```@````J`@``$````"H"```8````*@(``"`````J
M`@``*````"H"```P````*@(``#@````J`@``0````"H"``!(````*@(``%``
M```J`@``6````"H"``!@````*@(``&@````J`@``<````"H"``!X````*@(`
9`(`````J`@``B````"H"``"0````*@(`````
`
end