author | Ting Li <ting.li@amlogic.com> | 2016-01-21 06:06:03 (GMT) |
---|---|---|
committer | Ting Li <ting.li@amlogic.com> | 2016-01-26 12:16:39 (GMT) |
commit | 4802906ca4a5c2fc472038856d0f12da759faab6 (patch) | |
tree | 116a995160883b42be9d9eb8e02f370621a2654f | |
parent | fed0bf6faab2ca608d317b1818cb7fce4e1f628f (diff) | |
download | OTAUpgrade2-4802906ca4a5c2fc472038856d0f12da759faab6.zip OTAUpgrade2-4802906ca4a5c2fc472038856d0f12da759faab6.tar.gz OTAUpgrade2-4802906ca4a5c2fc472038856d0f12da759faab6.tar.bz2 |
pd#118388 fix bug of backup&restore file copys
Change-Id: Idee80f9d34fc2637a1c825e2a15d67851db7b972
-rw-r--r--[-rwxr-xr-x] | libs/libotaupdate.jar | 257 | ||||
-rw-r--r--[-rwxr-xr-x] | res/values-zh-rCN/strings.xml | 8 | ||||
-rw-r--r--[-rwxr-xr-x] | res/values/strings.xml | 6 | ||||
-rw-r--r--[-rwxr-xr-x] | src/com/droidlogic/otaupgrade/BackupActivity.java | 48 | ||||
-rw-r--r-- | src/com/droidlogic/otaupgrade/LoaderReceiver.java | 4 | ||||
-rw-r--r-- | src/com/droidlogic/otaupgrade/MainActivity.java | 11 | ||||
-rw-r--r-- | src/com/droidlogic/otaupgrade/PrefUtils.java | 34 |
7 files changed, 212 insertions, 156 deletions
diff --git a/libs/libotaupdate.jar b/libs/libotaupdate.jar index 0e29656..0aeb237 100755..100644 --- a/libs/libotaupdate.jar +++ b/libs/libotaupdate.jar @@ -1,81 +1,56 @@ -PK +PK P\= nK-pǭ4>LuC`n$2}WUT
5N
Ha)mw8k -6 +6 RVClE+JQ #r>Y+JZ9C&I̕KWŻi6LUr˹kFT-KBd`-.Mmv,ᨠZN騝: jfߔH /q0&2 ۧ2F0t5Ue"gTfE15!{ʠJ2u#oqq63A8,V%Cc4k}kaCt_(R1(.J-lXva&=3e\ FkarF]5\gg'}),&<[3Ǝl-i̊~$83UXF<ɘqЋLcQƤ8`:ܕ{ d6hTKe+^cG*beDv#nS{*2V JE by$㱰[%^Qz!SҚ'\Wm_۲^A*{w?UV^;ONnh?Vr.cVۚHϠ XpWB&Dyt=P>(!Eyq>d}(剕h:bI%2FO&0(O KOi_k{wCL;\ZMHp"`-nqƛX.4G"_bˤpʁFunHM{>uCK_aW1s!uu.l1RgI9ybTbؗp֫Z<F=V,Ǡ} +{SXKQHZc^c]mBۃn7PaP~1<bvVm,uuoOu+!y!v+v% q0U3؆鐏xMїg8h=HyO; MW\-͉p=3G>_}P<`ƛ 'Cz_pM_p/xm_p
~s
/PKF - -N.%>\ 0դTp@^5JBI2 -J$-U,˭l'I*WLG)pVCh;5>2 `L"2K0ԩ /֥*m$ӆˈYɤ+rSJU4a.dr~9H,K+$¸uDxjC3kk:keXOXQj61h%-QKUp;%҇d\&sfYOvFúJWj@n -㢾&j8e>hcNKVUE,V'}mlK"٦TL`TfBfEJӐkj.%)O%}`:6U'*`rZ,u5}ttVщdbĬKb2XŒE -Vq8 ܠFiw4 -n&N-̄dCcJ%iRfCLܘLj)+1DW9BFw{p/3 iZֲS| --ѡF^av!)5[[|Ño22-G|Ȧ"]cV,=Wvk)0˻P[LkɒW2'T<)"R4Tzg#"Z*GBmV -J%p-U8 <yR -^f2JXވ͐28=c{S7|>1`5jVC-
=-Ë# 1i9SO1`[(au}?Vf_`ќВZ*:[Kp]rZKښ -)xA~e_Uc-AfGyy87|x]Wq>ĚVr$,q~YOhy-h -h]iLUcSGHua{٪DnV-'v~gj+!'_xO& "XpwzyN}BE>lU:/{xF֢0dmLnXWc=3r19|f
_W]˯=YY|7,ۆ2Eeb&{{G19:0:حbNCtQ|?G^QÂ.88a&LEݨގKZmnBacX
*9ВQ2Oo 2pqPF8j+dTfnCcc/gc3K+mBR?s|DNLBuc,ز㚭^~ -،sLL3O[2ɢWND]gW".m -z+_Vc420錽,Q֣sg#'zrJ4đٸޝ#g4sйrdƻI$ı]}6NNNu"%nܵV+i]x<xawuA맃.z}+WӅH^=sޙz'ӫh7kphKx,*D1:շkQ\åx.L6lnڎU~wD7vws
^+[9l<~wì -HGxr -r|)/ -t㕗͢P?qRpaU廲*(oJ*_..CubS܅wNQWXfnG^OwxCc -Q*j< -1 ɱAD`pY"\-*jT#~[1f@eh#b(Ӫq
>"fӸ| bn&u^TnC?}#>3~l -[bC;*гI똟n^,>SD6JU6IRUHNr+ӫTK_%U(JŨ*/%jK"~M̨<lCxLQ_E&~jbZʣA_<hc⁝Md,{W},9z -.iathALK>:Fj?<E]־3Lr(G8O7cVSXOf$p9r&E !Yt˦3> @xw -[!wDCuzIbZM;E?ɩ"JZ_d"17:h"t<ִ/i>8ԅI_ҿ`Mu~rSijhfO"ిI_#Gr -Iy@ZUg#xÓa4|'P> -°?^!"_̗|_)2 ƁR>18Wm0IY*k:xE4Gi6Q-g
>*t Pv7F -ĕWaJ:.M~Cߥ}h/MƹeFBA'&xA/ |A? -DóE:p{HUawE0VU,h1GMQ!Wz&`Tˡ1`d2IEpԠ?jɤa]?H)ϐ -bğP]zDP 2HIio,^
Ffa,)e(`05o*B:sH8PR -3L+Eio;U Vek -09qDTX1Oga کUCyD2kHH
ka&fYsja&>]C$F>4W!Q,As0=So5Tu#G
>Ыʘ~ɩ&PC&N5:A_2<T
Y8E@H0T3Q![aKd8 rб{Hcz>R}XX8ө]"ujAq,8g'9Tu*;'jBAc -oSTyJDž{<NȺs
#MP2\9'B --j6Q(/J\b:Q2&]
9 -xȉWd:MIo8]K^uNb0:NSH
m!.MFO -$X&n.pa/+/WTTaٔ0(.P)x֙<z3U\P)Z Y&u5j֦|iWj:+d`ox\Ai$Y9^@x?Bo
E>X/EdTəxwKx X(6Cm$E1Py MpV$4?5Fa
rc>1\Sgo}]%YnKޣ:E|pʖ#F"d-8< gId g@JV=i@my$$'ctQS6 -ah)H=aǵ^w<u0]-^yf.*s -=K>gN_ "@m||~y -Q%D_p778Fo:5Ko_I[|}};}y>cHK~^þ_a1}}c
}l;U}DDMtIoYKz-"{dz_-þSVcz;Z8 yO#@RTޥFh!~ƭ3@0?9H&;GcgwnrASD<豈&Ϧd8脆 -wcS6_>?u`*MkZvt&QHm
HԷV'9Td-ֈ1z5SF.-Q՚,XNriRUTfuu+NH(OvG)5ZMM(KyϨ .2}dȷgzRKкhL|-NU,וTnB5/ݙ7іyh[!d\eJ'qhRZ.iR{Ws=5Hv$_kܮ{p..ޡ|Lw~=s]rvP0A -ì_Gn"W
v՛PgvNBv%O uf
{9ʥ7cSMPDޜDP6$F;j -M)>ޠ@rm'`9\u.۫j@7m/kԵȱ+mϩ6{ԑ1ۃ,/Di*uu3fy@F۞&}*UV6e^Upv
TF,Ph$wc^=ER؏ߣWPQ
2
_J\+:P":Fp
ُ0%?'&fV6SrK:?'Ɠwl9-|%MA ?I!ww`to՝okoHYܓI1V$Rt72)lޔ13|JҺH9<hS&IEة|8IʪLiVxE|9NDI=YN@8(߉wwgULA#[UN$E` -މdH2U_n&PH
i*JDQf,? -1(2D㝱5\pl927?p܋L<\Æ넍a*PHX -?' -P}Bo[wu($n,\#Z'Sj<k-kGw[Y:\;eh6\*:{0Tcw?S:孺u!>:4;ia[FQ -k
PK'P - -{>qиDv~7Ls*6ssg 1LN9˶S\u}{VlWi{[#ZP|l^)^o -g7,ob[ЪX##զ*2EtDС!N*)iнhUR._Ccr{ 0ֹF4Wt$%^~F?0):p!MSxA6쪾e]jnbH lum. -qֲ^QP#:F1+/N%X6ϠdĪ<14yԂXH5μͭ|; -JA6\gV>(l8Iv];UO-io²R<+GAS~x\-EhEEf?GԼ~@ XCz! t{Ϝ@;h4M(!}ǸrE.Qw_!^Z][vw;tO>BO_ -FЇsFue!0i<"C2`J7CJ#1~LX%gUfHE]-i+g&ޠؿ5#Y3
q=oek afYbN! -:SPK'=S -XjmE+Ԫq%ĊjԵjֶR-ޗCG眙o̙ -&,d|Bɥ%'.)>V&+Bz*$.EqeQW -G⁅;Ч(m*Fq{E\gFU>,2C3Btxx Y ^eEh6IŰSA{!ǟZXaxx3<.AW/3nE
V -#a
K%vzi -cbBG0&˯l'N|; MA|Lũ5DWt`B0R&8 =0OŹ#Xc -g*ܝa8Z`\ -VXр̓F|Q ֆ 3f"2:3.&hb<xrF;"I)&D̨h$*>.ykL@ZٮnGqّpi"f( -9
HJFlW0+Cq2;`G0-/NEPd-lam|ϻM -y];%(,ogkYڬN^^
YxZ&E|ģ͛sow['cKy:8hǰBFˮ%i8!.O*:NWagr:%~;szgdǜbUgM_cnMgFby/Hf7]sRs+C1$ RtoYV4)hcٓ93˃6)ǜ勢宐l1JqآIe)iK͛&^#fg!g&ޒ -TMQydR)#5B'TP1nђ`$l
o,KM4%jj"Ѹ]HGăTH^䗔_) -&NA29kYE8cy';7if_23uFȞr!V?G9ws -UW[Psp:)؏as:sH~7w9w ;h`kIFQ(Bc -glэ&P91dajNQv*1.rM/PiIqə0 13٨_&tX븚eo&UZҢZ~V;9wP9[;5M;_dݡaq=B뱴2P-{+-k^zq^l{>zxx5ՓjZy7"^=߈Hm 3@v$.ߏJetdm%xPӁj 9Rl<VH5IKU}oLjK ͠}إvp.[܅_
su $3MgJaIjS${ }xBfiOqPPD3RrŎhݵrdJ2$qi`/欔iU`6|ʦc".n%b.%_P0_ 6f,mwy',>3 _%o*y"a~@P<Xp< ՙXBP@HMR5i|`_Bw
仁|[ɷ|ss/ 7\}Vi.r9v<Z_\Zh>Favʰ^F-Mjl֮-ڍUی-6l6Z*A<J9@y!O96:6]Y[U- lՇa>cq>)XZt/zrWa87g;qj88OY_C>ҿ݆ZÃ{'>Toc4!c$6b13JqN˔,d1S%McT#ꐻF&s/܈ӾDgvc=`P]1eQV#)zcKeUHEC{~V%m% mx骤Ŀ(D7l-YϷ4
;"r<ߧْ=fHWz՛do5J*MJJIk<.;r&-'9IM2_I$$|\О8yIᯎL_Rfe~p#27e4vj|x$>ɍ{p︐fr7S矩q. K_7IhFeވMiL5i
y>%EV-Jo:35>jhP*@){.g}ʡf + +Uߔo1PeHUC:8f@8CUͶS6ۂ!W,nr_RWe1ĹG맫"t:kk"|y@狥B_US8$QnY"ZywCi[xC.h80=Hk"TոŭojJ#mس.]J2YjA+#7P\GMugJ}Ui^5k^۷D|1j]w]Wl>ydO*IfwEh%;F + +~PKӤ" ++,mae,ژA0m1j=HVᕥP"vಈ>vDmѻb@- +^Jh!< ImF(N^9oMr!5>p\2oE1'XH\h3A8z+# ? 5<MDӠ/f9V._4fWIپ7!nf[AL3GNLC@:I狗hu3)qIah %w]3a9PcW("e&]BӜP̏MBvD}e}eV*$KcҨ/q3~ +V6k:KGt=ÑNWuV W}p[b1ք'']G7ȭmMNӇϏD<jr#t+Sy:Ѡ/U,DzOЧ2?qc~Us]!Q&NNZtcW +&K<mmi60I'9t,Ll3 n|^0iа'AwSp@㕥GLꓥpHp'01Y +LYIOPƤ=,@[6_D3YY~QR">&[7zI^X$bҫGUS~LzSu5j2I@舅-
Fy{Ǥw8$259 ='7i|Һ2qMH; +wYB퇆9f +bvXk JoxsrǏ?:EѶ( VEZhNm8QOHX/e<D +6`Bcd:l_Yk[<lt<·]6ȵȖG0{RFf:Qf; +Rqc">yΈ:/*HX:Cgճs$jImC{8x1BOhbᾭ4P:QP#pDuI"Hd8O4xY2k.7z}Ln&`a#Z̑HxT6y\Ɋ+IfԡW!?QA}p:wmB5$ϐipZ.;QC1 -2ŀH#l+ݟI]KmDp +6B)Q1/({ĉ:!+.3rMH/E|DOLJ<3CXZ'_
jzJ/ =
1[&o[@W*PgrL >:ޔقtɷK, +[j5b+h!(vJfpWB߄+8o7})#mb.D C6Z8=؛&|u[Ow1 w+]aVT]A8K"Z,xc&?AGzo%NI-O3 &AP^H H&'.koHH.fx+~s+H}SUdEI.U|AG
+MJqmS9UUe/ +aEDŪPa{!]2vQo8DXCL5Zj<?ъ(*), kq<j, +a)W#u8d +Tx$$Bk0Gf3Jw&fBK$5b8YzDdq,< "+k],D;SUPf4ߝJQjRCP +A_6ly%kBşc;)oyjEߖqXyY(.4b9ZbG|LK?BVkޠLZ +ڵ뵇Z՛A~8zl:gObɡ\l)4M\Pvک +IKA4)uǻ$u)%+TBi_0'JQDjƽt`
51NIW(*huB%Z<SEת\ +:9j6(âp,7rv+DLS}_7EblS@0n㒣5fBR{6 gUpĩSKN}3ZS].J.Y9GD]: $6+˖p,;W'*:hJ|8]lL|6lx>Iq(hWr[_WqےW!)^(eGR#úɔ[px@hN?g@%EFTP[?j$g$'cxϫXSI@~_EPqQs3<]Q؈M=`tIԋ=zPWLQI1;Ҍ)epPi4PSRzSLS=*[j=}p0Փzi~5Sg^SFMkSs@_[(!')Sђ{4xd`;]Ht ?<4Q AYDR
9';!E٘ȁr1vIyK`^2/O1
#i~@3:PǤb~Xʼr29)%8<Ƨ;)2d= T +)FQqNl*Ni=z!ZO -
A&IvV_jy|j8}4}tjŸM;h-~ACAsEx)Dg%9@$Lj:j
QK[K&x"9pSv +l,B8fɦc:։x + mhFpQfW +U.@Gs!%NȚY/Z7j8s|ٿ9Xz2)Qte/][C-}ttsݔ>eum=uBJkz0mJ[Po/{ᴥG{'{WiK{鴥gziKҖ^Z]^zm'`cn+vm&N-W;KSqe*]Y~\bm{_M11%N?ɏO֗ҿSwn>nbO9YI"n1]kd`KWӷYveD$?:I~7<-IufJVY\y=8,pAM=4z$sѻvY(fw1ωܦrм\M˒Eb>A(wpM7*i,=JM]587 b+ŦsLmU̓G
uǛpH<CX<1g|]J/e:oM?<Gҕ<~etOX<bm1]'ҵc/]ϧэ|ė|
·ӭtN;sOiʣ;Ewr,K͡ +G{FOGu=m&ڮnVizzQPR/uzDCq>R@"B|bx$IA| +J6>C܂,y|{B6;_Σ}}zע)q). + c/\*b
ju[0SaPՌOZV5&]1<`:Zh
墝^i/ b>hS,T@SH=5b5TO~n%-y^YYٶYF_|?5w+'7uVvIp90^>?.N˝UhnrJ8[b2\NWn\=T}[0.Twu_̎䨮ݔ+xV**F-/h6韩\uAQP<1W~_쇋L+O_%\
y+?yCzSOIjZu]MZ/y1)VB5n:Bz7gzt7a^zX}0~BoЫ>3<u?IA4x[|8'\<z$C|9JFϦ\/oĹO/^ +}I?ׁ>'xF_*} +ku}$PMjߪ>U'gjN^+oΥ:Q# +#ރj.?Ϳh~#;=Y-n xK|?pkC%pK~9)~rB~&ϡĨ耆E>dNNI$F,]-m4h
)W͈|W`p_㯨`/G&p*'%?@ П!) +7o)|W.amftnv
+)إLԽ]XRv]2KPL + JqU$RM.
5O|N}; :Zk</гSRzMJb7ZVveJC[S4)c";[lTN!и==HP.g +h]b9pRL};cQ9;gp12Nu`\Rfsr7M:*WAva\]Yquˑ\Y[HlnX2@8Eh5y4CɅdyFH~,qJ'PX8:ѐIzMF5SqӨGQHe-+e&JY(;ٍ2d6gs9gI<+yv*^RF^v4Au\&h s0̵| ++zχyʉePxcn/xjy:WFU=Qgq6nSS۹]=kܡ^
wt>Sp@}Wx~AC\
3l.<娭cx]*hkM5|4<[>mgy.cϵ]˛mmw`|'gχ^`{/=ٞmaϵm,Ҟe13|}"_k٧,o/+f|7.ђޢřݾFTLޜھVרkfJQd8;9g#l*7`D3JZu 4^˾Hl9jriEh%F۳&u3rۓ4fۥnS-rm]~B6Rmnoԝ\k/h:Fe[¹E4y{@e(4r{2zF%k?eϠR-~(JPl(ÀY}Cо6T |!ef?7*D3KB)9%Mj/ɤ4K{9ES?t4+S_Ѥ1(hiA>Evȶ}uxbk7v twݙ> L)GY|
|KкR^9đw1q()r7ʣOe\K=M5@pq؎r*84{xKo^;f9ݞz:]pćQ&L' uގHsr-FVq^opyf &Z&:R RHu&3^}*m]wOUü4}`Ѓ2bPK%r>K~Kj+<>2.s7[oԾ4ɰ.csOi
I/a'g2.cw\3.Qlo3<=$Zo.4KAN^f\L3\ߖ32[oWfʮhaY,e{~]Ny/dB>SP$`L8i ;R!Lm<eNA7U*梐WE> ť Fh]x -yojm,W_0\p>v&*
;0 e@qbE[lӖPB)HhD%qL"ژE)VfXiYY
@0Bo8S$"K(ϘK%;e<$X3PK'Z -Įb{ZPNfX
?Sa4.7ND;sp -!7]r
ojܩy@w_GO'jIiPPKơ +yojm,W_0\p>v&*
;0 e@qbE[lӖPB)HhD%qL"ژE)VfXiYY
@0Bo8S$"K(ϘK%;e<$X3PK'Z +Įb{ZPNfX
?Sa4.7ND;sp -!7]r
ojܩy@w_GO'jIiPPKơ ,8d4FHcf8%w{z:{[}=-mWt_͊'SF<oDӦ!>ۃ`hw?$¼}pP]Z݃-w@B=6_N{r,5mvI5{Cl`H2*kFƎH΅X>hYG ,ju WnRH|dK<Y7A|Bk0y[_]&Kax<3Z,ԚӶ`WWKw;c|<B?P5R<bfL}V:6X6#DJd_ʢ4A怍jI5]qf(p,MZ16,Ϲwx$SQ[Omz4j Peb%}C˰1Sx# ՒWYP[wKƷМnlÒG#YXMG3kGF˪ٞ뗼бnC@b\rhZisՙMM-B˥]:V "q;;`&BƁ)ahhyfqY .WrXErtO%h5hX]s$fWcrsHrN6
VҮ$~R#Ijy!22S'̑H2GTûcL1A31u]0e})#.c4㻊,mY!/F$qگPl
F82IsmWKw݃wcaG cd/DY$ mg[4o +FotF'aI2ǥ}"u>M:VQzQf- {k7L3%o-/fRQ[Bp%2|VN`.瞔b3^?iR#u0UW)nŇ4|6BÊtT`(lD^0Hq\bTlF<QF:4D$uSj`D2y;u܅Rɂ՛9/{ .l3ތqXTWR~Ռ+͡;lOx,+f06~3F29d"(*0O$BҍGGfBf:>2H}fPD3̳sy9#ywqڌ_T$fo:]5 @@ -86,10 +61,30 @@ mg[4o +FotF'aI2ǥ}"u>M:VQzQf- {k |ɜpLa>xꭜc]KwץhK9;c_'+ISkuM~v}:[UCV01 xxUeUW&P(J35Lx&ORyԤZg,\$6'ȹ{g˯oulu9EoAB?{J?h.97{J/r3f}O*ծjΛ?**a6k<YM$^_:&jJjI6TZt{7x}沚I. Ǎ>i5qT5H2vN0|(~="FIW_L_ݪ&=O1cRZ-S֮m6 -ؠwk̄W _3G:o->6W8wrA)ƗE xZ(39Q|3\J*5QPpHPptvQ%]^{(u6b ^Q#.&Jw03<RX*&keb+8z~R|刱\pBXt4ZaVixVB@ldLׄp-teˢPs&w1תȈ:ȂW%b/_ϔ\9Fk٬6#6quf%oY1Y?-V`!u<_%(kP"֢L\zNfsCy&'^
5$(Wpf:Y-[.ً)v+< ɚ9;G<??b]}fX/gz%+C[lT-r<vfTty%+0HޙMruXŖu.H4߭luMb!n:rPKH -ĩ5j^Rj4 xp֩4[FUč1Lݶ+Xb(djì
Jr}z;j+H"S8} j]aU/z\0њzw[xmmY5v{XcԌd:kF.;w ^{&<r$SZ0SLXtgCQ?0--Y]/67ʦ^|nTfeRo,[lIýlSbjJ}VlshndY<JYNfޞ,fvR^:]/X%'l-ICyR0CK!"8q]qq:~isq{9\UiN7%=ΐ4lAldf -OtEYJ?̀a>40ĩKGEzw.*P=vS*<!c!ܪICU}0V^'9XGA+Ӷ
Ȳa=+'yFC@勬yO5·w<y%[n3Ī%_y!Uulװpob+_(N#)4"H'|lB4<;+NRn蛤 #͇`P3dejw`#jwEUO!V(%s,vHtq*Hb0|xU^3{K;(~;3%J.`1Ԕbwc{6` *ݗ#$oRcU=EH+C#t.N=|ϥo~f4}{ fc6NMS˲jN)3CeR2E
eZ -zeJ%"Q<E$-Bh1<#$5iXzF#>VxM2Bs,*,7dvj_PK +ؠwk̄W _3G:o->6W8wrA)ƗE xZ(39Q|3\J*5QPpHPptvQ%]^{(u6b ^Q#.&Jw03<RX*&keb+8z~R|刱\pBXt4ZaVixVB@ldLׄp-teˢPs&w1תȈ:ȂW%b/_ϔ\9Fk٬6#6quf%oY1Y?-V`!u<_%(kP"֢L\zNfsCy&'^
5$(Wpf:Y-[.ً)v+< ɚ9;G<??b]}fX/gz%+C[lT-r<vfTty%+0HޙMruXŖu.H4߭luMb!n:rPKH +< -P}Bo[wu($^,\#Z'Sj<0kmkw[Y*\;E,i6\2:{0Tcw?gt[uCjCԇM7RoF]+`PK>[ +ӊvj4A͘<-C +?I~IA +M2zaOHRRHc(2ս$R*3"]5i+g85-Yuq=of8(Ӭ5`sXf62wq/s?PK; + .h +CkC
^_C T|Q;%2*_d)HDIrJV_[
E +=&/b.jEEy²U+f-[6zRIqTUSOEC2lVY2Y%(; ږŷEUQ`]8R0o,aNZ³_,x`.?HB4ibi5"6)HIp`2⾑3;&뭨
ٯƤ9 +I3q&O~LeW?h[t%"TT~R̘ +̨tI)݈LLX1q<"bEá8)51Yvfe`Q$ +gCo*%KF: !'I.HH3
г!ΌG"Wҝ6q.d"G,b|[eZ&<- .&b}
,,7!
ucEiJ +P+ Lu6cC^UVcܭ^-. +j-QlUEz!Vre}+/XqW(i*ؙ ݅ʓ.LTn|4bĈG2ʥZp\ +TŷL\i|VN2MIA'⸈"7%6aVI%Kvĭ"jK};CH]C!-:7 Yɨ +qt
k{b:+`E,4N2"YjĘ,TxU-yf"G NayΊ%?RX<ױ$tY4xƞdwaN7vl10sB}UXXyvzO%58{)xƅ*<F/bgr?{TjkH`.M<';4=VlHq{/pqh:'>/$v/0srvrFyh9FDPiRXhuX.nl+lg%IgvkyNZtd +K}NM{wm3G\J˽0U2jY´qLS1)PbniA!6UoЭO +]ЙD;0d]<8ӘgVbZ˩;s!9JA+<9D,*ճc~i0qҐΙK&pDVb.nvj7Ӆ.ٳ#5{dl=?M^y>'sv= +f*m6.ZµZ5Nzܪ݉۵mؠڣب=+Bk^IB\Nu0ܪmܮwQ_z#+U_+pk
78>A~_"M>c"y4Fnc(ǽF3~xЈ!ca;b܆Vcvptx4^үj^|:#F+fp7,ɯ˰-re=^.4a]˛s=!^?f!mssJSx?ô#=<ޅ69xs;x?EnvvQDN'},wH?&D4!x*SC0f3m3:AqQmzK*P:w?8?ЎpʓI,%̓zYB{Dy@dz2(H㗖d+<wЇpxv!_8y8:GJ%yUjw%k^0Ѥ +SDR=Me8zK:A ۭqC"Cb\@~ǓLPK +mAAV\ҵZֶmWL2!(2s=? +#ѝ&=!_L
땥߱e: +PHECvd@;jccKPTTynN5 s':.g`yu19ZV4b=y*=lSU/;K;lWQ-0\喦FEޥfW8#:H}B4ߛ$GXX`\|HKJu:VRɰ.~A0W2SfۭQ&<3W1ٵ:ڑH443 +RZ#ɘLY SjҢ4tgys&ChXϴZTJn6;f}>Z=dSa6l(ϳ+)E-$zۃL?.Dw8df_G'hyOle *\zAޔJ x3ADӐ-('#@tÇ1n̈LS22v[taRA?[spփQŎ!u1iZּ!mD礆SJBoq>LV#G
z4X֢V6N]2p:;>`ƺH#`̈́!LjVз./dD!!̃K<U)_w/>(JSϓ5|ZW+c=-V{9T{Ln6f.v1eߴD4|.5fme.1e䃾.Cױ((<fARp n$fGikD,6=pg8DVI +P2@2GLJ`deƮpSd0j\٬xpU<%09'd(3t2 +5im>?8J7 WpU~!L*u7gw1,%ejaGa~)5RfLM*sd*D9Yrd@e/ >Q,h-<ų\szpM'Xދ5=ېe}_SEֵf)^R$~^0^ +@{חsw.*|5,8
-G4^+6Z*6o^]8}އ͇+?ICu9ݔ\䤡·P>0+|$}ffE\?Z(;/_I%TX2*o%櫮mJ*rԣ
hoi#r#8h2"W.;eF`:Bi$ͱ]HjwQl;5ynB<g}ůُ5=?tqyoWfYm=ٵKS>;yr߾}1_{rñ[{JUk'2E.B()܍)%1Qrlꢣ8ƠtG|OhuQzOC[Ξ9;ř$T"%A#rNSk/#Eq#|^\>\cMmx-UW}6ڪ^WF<jsxvRKXXR`jI=j%=V=#e(J8C+ֆTUNTXJѽspff{&ϙ[Cj3#`1_+Fz-}kpDzZˣVN(?{Sˢ=-b*v.~1uU2y ŵu5t3ZDOroֳ |qzF"&,N i:&w;]a3Q&w#=b/w#݀gv5"x-|g,<EgD >+q[D.&sw +Nw0(vn-v6|I|=G+>B'U8b8Żأk8V&%xP `2
)3RGOYG5r= O=ʝV;QO{ʏzq4(g<)/Wy}8QmSq}@ˋg\8*8횂у']U%}5בވ\גB7Ezgl?ž9دb-%&KX#F:d(v"Y0VpV
b*g*c]74By1֊ib:D]`yB\*fK+Urvڞq=+{6wY%ٔW_-槟*b)?0h#G9/)VǠ~v9xRū*>x3rTT¿i'[b\L]YhGa$_NRooslVtlWsSD؊# +`uc
m*@D*piH$ElEl\Záp'>tݛLBP+0%D
:l׳WvsOy=_bde_WykuYoR)r_m{goob7~鷑~w=?H?FAƹj:cG=FO#s.]dw#e# uiY3p+ai-"E4қvN}yCv]X-o1;ߦM]*OwVw_KbL~墎x].sj$+PK)sm M{>^JKhjKF\:fd\6hnt 6 #9Һ{*pnj=7Yڡ@Y8=F2fV)Jf[Sn&xf+Pbf,CGxˍ
>c(a*IE~ÊoGYQ?v
}pc[=3NfF2Job禡hVqd^#x[J8SI
]h22fkD#{zH;tVvmf"mZ>Bx;X`1k1E^U(Q3mUeTP?/x<Ȅ)dxr᠀ŏXE+3AT.olX2)+652GFMDgueP~܅I@8'gZ'lefqF,LܣcesY_9:jK[$Aӏ.tʒP
aŏ +92d9-HeLag;M0Lr9VȀ&qT(*},-ؙY\Z3wHe7jGMlz$oO<#H,jw4wե%)##0;hpPG?\nÏp O$q3^þ_Jɖ` @@ -101,35 +96,23 @@ imCoz!C8B 3\M,4x{(1-@yٻ(3
/!MβB!ΓyQvI>+uʾ/В`cv l)~/N{'UM?ZyI-Y]t݉q Nu]hd.y@݀c[(Y'-:m?sw¼^I#qIZ3ըgTl.+βi+l(5@z2!=X:?V*ħW~*?DfJFT#!O8,s=7c'8~!"kr|kQd}؎4yK4>%G n99T{X2A Gr<B 0^zbgX@7ʴ8Ɉ"pdz"3 |PfFA\ߝqѸ6{U[dΛؽCoU{-?w-o,{AK.iJ_a^<P
^@ޤYr
]or]%Cz$nU%vMS5GVDUycԁbnyh6WOTVlW$D}-զp{ˌn)/ULv h,,Zfi
Q=^'<yOx%4] d7:ws:% ]sҴ͎I}Jm%| -8yYV^KTd_4e**njVݞ;RPK^h -`'aG#QE.J\BqD7lɨ -KMͶn)[0,}_͜Ue?T]rT%Jrx(Y,?%pKzo"~ -Y㗫*~E6r,ҿfD:Šb}=Ț0 縳@HL|-VLEQfOゅgHHyxX+x@V`ZCܯy'T]p,Fz2{K4í̇ά2Y#5,[=4M V -lV3<R]'o-<-<oagBmEf>W,dNKx=w8m|@vm7l>d+U)gV8',|řu' -,8bwn>>cY|[\3I6E_X̖|tZ`koUiWmmqRBdS9km<'46l>҄C5G\$ӟFmKGZJk)
ʩk-=466iu{ 1W*)Y566kbFӡjHkh -I6lh:)=1!h՟XēhmVQG7/=xȡ7]!|z*h0Ky?"N~i7u80y(=FYڌ=A$K!o%IȆZv|%ۃ:P -q6Po$*}G+sJTVN,3E$RΞ$!IecvDOFv%S<<IJF&nȿ(oݍyA;u#m/o-;F+YWy-`kFJ?h䟗7ne.sLDe<ecx)TϠ4PW7L`w%LtPKcJ +8yYV^KTd_4e**njVݞ;RPK^h +N<D>`0u<y#(u<ECϤBP`)S;.LgB7:.-ǃq^bσ?ƃuHJ`˓?9j-ৱD)HA|30ԙ_c:elw=> duI +
*MJ(%X֑3]IҊF%dˠt'5I؟s-v<-q@V./V.wuc.؈
:yB=iNiؼT93w,w*A<>R +1ea=JoX+T/*^J@H{ ]\+K1E 0̿oeYL|[qEFq2s~ +yEvG37kvG%5S~ +h?g!\O嵟[JھT$(u8AM\s">lK*B<dRqL.㷸L:r՝XZ<?Hw3%2rMI0-Է '䘹|Z+5Ӹ.Ef%8EuG +C +q<z! +\rS #Tq?4X:wHFn{Bv;U>v#-~!;~uS~c_KDw$bGy +I~bءGH"J(zf\w+>l7b<]hjg*-\cT]"~C*2`,c^vM ;akAN.1K=
fY~9K+V\ee)]O(~3,g 32ROT'oxEqᑱ*\geƝEQph-Yz+xuWW_/j5͗ +^#%X+(^ߝgÕ2Eb4Y>cA%z&Z< jP,~һgȪjKde"[%O?B{XEhL:~@QhQﰖx?5oMע߿KIBݷGA`o4CRQxhG˃2/eڿ}V~UL+Im9wTy3\Ż{+p|%\ஒ~9rKJ}iRbPKo [^>S_˜@* \qU5\';ޞѨ |,(AnKY9K -nR)KE4WipFJtIoyE`2MFׯiJM[icmucmucm5LMhvjpT4*,[:!~Zi >*+(ГxbRLb&A3H%$i!4&韫N7. [H"v7$K7SjKR [ n}2Tc|.!)w-$BŤ7\skJJnAO_0GS~@@rO.䌟<H. 9G Lо,18}\IӃ`|i.0^tqnwq>!`2nb]
2Y"&ED"m`I*U=HokZ+X=D+iJIk-҂2~-]М_kъ˫(PPK*k -7fml[PҴ;ne@0ރĜʭhJZcQ'mjt]9uh:lf-5Ŏ[y -7l6SJkLK.ΆXcZe٩삔U@ݗ -5N5QB邜V2À<%i`BJe`<%mmJw[fxNԌɘLTdwxIIP\PM8
Nˍ؉twiM++ְ*cJPS5 ERj>WkDr-1{ +*+q/#|_ޚ@]m`
Xk< -Vުg`ɘpe;#V: -
(3=JKY
<z=5rf6h,ߋe:֢@3ZnPfeKO:u\$2۰]ǧ3Ǵd:ڰïrM;},jشL+]v)Pn^&uؒתY1ӣa>2|{ehW?]د#ƣp7p -3;
{~7IZ)8ϒ}Rя;*bafVPTQCEOs6g$AqR$L0 -e2e -"f9TnzUXq<I$/Is0HFs1,昻䬮x33נV'8QO.K>V{S0S')N9ij@;;l@hoSP"^F9 -.\Ə8`p.ʢUzAWJh=X}3prA8*v
,}vUq
'eDeǒ@\j,C<ZRBk'NlBg]̂!ȗ٨x'*2*2[R6Y)YCr/*<"UxY<%kWIޖ
-R4Yl -nRkSd54%Jγv}Aȫ5|8\"mĎX<C%nu5&p$*ZuɻS^/-X~L%cqbchR 6N#/ -cQj[#K,l:wDŽ+~lj&*w3NCUͯ5Xvcq|_hTy[*o7Rop"R61Stt8UG&Q&0͋z(uAC
8ՂãF9/onkL/Gb6YwPRV -lyC/5̌p"#!+\{hEuبd?(]а}x~{ -30`~<~ϛ9~AK -tSvdh"0Rb5u7CQ[3&n1`"^F?^k^ʲnT刉kb6i#x,Lɚ@ehh&PIkSBe}Csɏt].͟Te? -x}P#ᅱA0b)n]=ݝȮ&Nt*=wTZ&6c>aSV=©
ejG`$fvj2CVűLstS|+4s7")DQx_&4c_6g
x."r[-Mb'W2&dmW9252]NʌQ4*PSfjkPl-vrLTTڝRilum
[H*iW8>m.[)U5T~P!g<E[YCb̗tV("[;lTKm-D5Lgm˟m9n:o|p,,G.ՙRAK84ekզts)MJB
KךNע5awT@dWg䑎T)sB!i7e&_3eўBq ;'[L V~Gf1ck+Ɣ"5E۠0TM:lL=֥i;PY$.J1,uAJ.'/4%.dաMd䔊*);iX#R -YighQ2%)6C[Ƒ>l<)Gozx:ĔK2Ʋ;;j\#hIEBv+4b}DP51|rwWL46
N+CCkNKem0\cʵ^VVr}q,!ڝRE]~NnPOiu|#zĩ͋(|epnVϛώH,Ag|+7G_n)ȭt'ZkBxhˆM>5HdyhlwWevMShitf2L
</Te::ʟ^֥w2seb5a4;qV'T8Ӗrc7Nr6.>ȋJa3F:#)k|LmiK6d{?λExtBXRGTJ]JSZDl'I%x~B^L݉d[}iSxg<L%U#SFK8la`e輻`ΐ;CP1ZrZRdT4V@"a髟qJpi8q8q!__c~N>3͙|||E9+F 'ℜIOI97ST2rS0ݞ|'31U>Tk͆^2=n7Kg栝E4+G6tW6vwip,F|#4*>CbfyHS͡qGa^gKe/+WJGK*gt,{*P~lM^Ck{/b9 /J(u<gսJ꩔J -V9rQ{5EAsJa:gb9=HZ+M>,
=ݶ)8?P>){s?&u~lYU@ߕҦ8^nus=~:>b_BuWuaH֯U#7pG4-oq儽=裸^i37բoQ'0p74OmQg;`?tE;+mObxq7qi([>y¤}|I;e`H>UWKp@Ušjw{==8Ǒ =x݃oӷ:|t~0wtϵOq/~:?/7've}Y`8yuAk$6Cx~Fo9r?AqB3[%SICN.nEv1t R2RQ\AȏU\la@D%X@]aɹxRL>s(wq#,xECI4xZ/[yLb*U_NqaKZE⢠gH|ckL~SqPa(=asaJۻSɿ鋘E,yS#`bXUG5GN0+gʉ$Ye$؇|>}2WU*K<唽]iTdXEfQY.iW/_K<7,ЛJIH>0p'ׂO5fP,.5)fqޒ5=E~c=wVcxnƕ%kܡYq -]'\D Oӧ!ts-s$WEoz7@
R|>Yr"KeW_esgGU$Vv&;[|wx&xQ%˲**k4㫲_8([pt$
uWnaqC<kkxHxpQc3&qc0)#1ijƧck܌7ύgCd<2^5??\_W!^t%x5
*4:/J7s|]uQ.at݉?]Mx]K7I{2鞅ݧ"]cnqZw)uMA0e{%i}#eȍ29$`j]Sf$ȽQG;rp҆k>jBIKq|ͧKZ8φ+1y -a)<١0ž'#Ogf&hC#)Rމمɲ')|=sԩ9{gfy@~8J|a
?=K` /ʢZ~j7u3?PKG%F +nR)KE4WipFJtIoyE`2MFׯiJM[icmucmucm5LMhvjpT4*,[:!~Zi >*+(ГxbRLb&A3H%$i!4&韫N7. [H"v7$K7SjKR [ n}2Tc|.!)w-$BŤ7\skJJnAO_0GS~@@rO.䌟<H. 9G Lо,18}\IӃ`|i.0^tqnwq>!`2nb]
2Y"&ED"m`I*U=HokZ+X=D+iJIk-҂2~-]М_kъ˫(PPK*k +ĩ5j^Rj4 xp֩4[FUč1Lݶ+Xb(djì
Jr}z;j+H"S8} j]aU/z\0њzw[xmmY5v{XcԌd:kF.;w ^{&<r$SZ0SLXtgCQ?0--Y]/67ʦ^|nTfeRo,[lIýlSbjJ}VlshndY<JYNfޞ,fvR^:]/X%'l-ICyR0CK!"8q]qq:~isq{9\UiN7%=ΐ4lAldf +OtEYJ?̀a>40ĩKGEzw.*P=vS*<!c!ܪICU}0V^'9XGA+Ӷ
Ȳa=+'yFC@勬yO5·w<y%[n3Ī%_y!Uulװpob+_(N#)4"H'|lB4<;+NRn蛤 #͇`P3dejw`#jwEUO!V(%s,vHtq*Hb0|xU^3{K;(~;3%J.`1Ԕbwc{6` *ݗ#$oRcU=EH+C#t.N=|ϥo~f4}{ fc6NMS˲jN)3CeR2E
eZ +zeJ%"Q<E$-Bh1<#$5iXzF#>VxM2Bs,*,7dvj_PK VDPd"ǣl*1Pֈ'B[cɄ5 GFBHr<{5ԌqSAS܊!RPM'E#Os+*"TfHأg( dP )m ~X7HlWvbP7"ͦZ4 @@ -148,32 +131,7 @@ N)qZu!'Ex@i, JWɒyn& e>(]7pPbjV'G"r?,7o]Mɫ.{+OyY=^A~BgW g֞q?nճOQ S'e -~s&(9LԤW#o,s{ Egn%*>/ֈrCʳ|Lc=~t'<WɂCڋBNo͏{QW3Ufz) -j'W,pE -C[Y"URUxqOYUR*ȇ%a -NELڏ2xEORB)'aDq#),7n -0iB6<6FսUWBtN/sb|XBEUIß+(=+2beGQ-Dͬ3l%)zc ߠӤ-q[^\ǡ`n4 -_篏A^|.}l=](Xe-<,{)O1ci8òHcC}5.9
gqr[z|Ʊr]C{rx.~E~8ړ__='C?cesrB-Иpѻ$xևZ +y:Z1BCޤm>/cYbF̃K|23-W
BYfp!(Nps$N1OqʧzE(n*1:pY<g\yyPi9/W"J{>n]7q!*@p,ዌ!r9|6Tu!1UxŭRD01ȭ#y
}Hm"!QLc;}a;=m#ۉFdO"me^n=6^Ǚ*9^u2'rj,wT ؙ:-3uTd3/L0Qځ QӇVS#N(e1:H_EBZE@ˋQZôw0Ee]6jQ6Ae2Z ynv_h)"ǯ*QF|_
՛()ohoD{|+Sw${bEaBQeYHx &Y3Lhɑ#Ѣ-1"I,qޥ<v_52_+EA$x
8A/4]/`wCbGj=X.\ÏlZ'UDUx}&ܽHSm>~;XEE3,)nK t\\
DglUЯ
ZbH8,@uқyH定ܴljR~=@V1,&%$HeO=4ͤu4dz<(geȞ,9y')QY(e-(k -l|wrlɻZtM\nt\zKxJYy+-x -ҴǞӿAiHX`w}~W>nMK +3i+e&
Ťnmñ>n
7%=ֳM#a+|ɔ3AޡD̚)j[ -g>cA5& -9#wYK£q=g環vH~
ҧ`;cKb>GN7`8hVUjxqyPqIռ(L{93y=e)#okxGIv$ltLu/*R2Hv`3>is8[5HDC (}%7"K#G'WA$ou*$NS2go'E۴̐[sz~N -?^e=nMsް}e橊ʃn/GT$k)#'2>agqR삭>Y8OָVc`FvnP>CT8)hVŸbR\d#ؖ#ʑt;)
,б3;P"J4U5b=Yf鏨p/*P<]*aD)Z<cX CrtU݁ԩ+9Q6\2P^`nDw5UEȌHh5QsvL_J<H,Ӳ#=Y |X6/b){|Dū[Ʋs=V8:'Dɾ|!x)֗QҼ3I/>GeρM1E5y;'80e䖤jFLܨrlUɡ2%6۶ŷfZ\,c~9Pw8g;wwnpE<et3+*3[@gg?uL>ŏ]?OUdk3[3cexqe-3~sB[=1T9Y/~:2y"\RgDX?md,{wI]z.E?TAAߔU%q*/ a_f w*wCtWm\xD<KyD7lڄSOhM&}||cܼx;*b(+~:ZX.u4wP~ƿۋT>iѣ8g˛AqZ>)+85n+U
xC[ǹid=
ELq+1.8CGk&( D!j~$_1 q#h&NBt \E'wч[|W1A` -p/qOKsD7Cg[H0By=0 -/RX`V g7ΚhwWY5ipW8!ϋ;
V9Tx*;"?P7R}^I~6PmE|vlEqO檷"V$+8A,cr -++{eQs8>,;B#>YQ%gYqY>/NDh8_xe~_*w -{t*+6{'<怣ys=&"w_7J^/ ';bJD:a4l_`%r|,JVJ]$f>Vz71{/%/x KMb>Ȉ+ڿ_ -ycsk(Y5t2a{:E%iDhAV??LAtY
Bx;7"oPKR -N<D>`0u<y#(u<ECϤBP`)S;.LgB7:.-ǃq^bσ?ƃuHJ`˓?9j-ৱD)HA|30ԙ_c:elw=> duI -
*MJ(%X֑3]IҊF%dˠt'5I؟s-v<-q@V./V.wuc.؈
:yB=iNiؼT93w,w*A<>R -1ea=JoX+T/*^J@H{ ]\+K1E 0̿oeYL|[qEFq2s~ -yEvG37kvG%5S~ -h?g!\O嵟[JھT$(u8AM\s">lK*B<dRqL.㷸L:r՝XZ<?Hw3%2rMI0-Է '䘹|Z+5Ӹ.Ef%8EuG -C -q<z! -\rS #Tq?4X:wHFn{Bv;U>v#-~!;~uS~c_KDw$bGy -I~bءGH"J(zf\w+>l7b<]hjg*-\cT]"~C*2`,c^vM ;akAN.1K=
fY~9K+V\ee)]O(~3,g 32ROT'oxEqᑱ*\geƝEQph-Yz+xuWW_/j5͗ -^#%X+(^ߝgÕ2Eb4Y>cA%z&Z< jP,~һgȪjKde"[%O?B{XEhL:~@QhQﰖx?5oMע߿KIBݷGA`o4CRQxhG˃2/eڿ}V~UL+Im9wTy3\Ż{+p|%\ஒ~9rKJ}iRbPKo +~s&(9LԤW#o,s{ Egn%*>/ֈrCʳ|Lc=~t'<WɂCڋBNo͏{QW3Ufz) &#D&/l[FphuuӠ
kP8s0#f2rrKtOx}N:8M݀&7VZ}Ww;O>HGtrP2S(p2S,`,Of@7lp&B".BSbXC v.0~&!Ц3xktx[8&##6Q96&T<
@
8
AcK]qcS+Pu_4\(p#6k(,z1=%1IW0f@**COEF
/34AB.Fn= J*aa\wXh`"k.ۖ>W)F$a09á(T?[l"IFt,ѐfL#KP3Ob2uy<0'{QSFh2|},Y3UdH.a\Hi8+]j(,YhH&-:Oh= \FYZdO3̈́E#|M=;:4\k(L#ԁD; 9qK4=7jEAi7Q(
<d>(6!ɌY!/VbG,vh%6
_GIۦN
_ƝL ;/
JhsѳU{orOS۶z6A ʘBpc 5Q9M|<5)_|{BF2ea?ڋ0\xp Ltzs,roISxH4{m*4LI0Wb2ΑDTfvyJR|Co[zw4lQ=֫ˊҝw bĥ)?CzQ/PZ:$WpG8Y,ɥ}E s#2\峲5FkI$;0ڙ$Dp0#L3#YQjUHіβxG}+2ҍN:z.ʞ
iJ&fLt˧1dkm`0MYfx2
wnVmU2anaK,5.4OõQL66&ZEbh'|E^x\~ɀDh$kSbXm}[BI4|0' %kCa^d8řɱR}X 9@/nsGG.Fey3Z8+9Qq
G[ƵϷ8^`/xeqefx-W?~|_BOI&?>S^y|.^͂XX1{b)|c[u @@ -182,8 +140,51 @@ n[>El0:)ylr^[oAshn_@;hrs?e1Oi \w zv]IEWQՌk,ʬM#*Ʒ:q-Q'm(ͱt3)ݒҟ?4Ǟҭ9/v1.n';rPq&fgB;"9n0~ḿ;:;4yr@ޝ&h2GJ;V.ʇmAi)+] gJ{J0ޜ'lA -rك<ea2{sq([L3ljŸЦ}M2!,PUycS7&=cS]0&&qJE/qeR}2]e*ut9yHOTW="WxQԫ8D-OGz7^TgF)V5d=*gEˢoN+Ldz+{Pti+u>.8ߛPXR!l
=;%@ˋ$s+ok.353E?&uAnȊ(T-'l'&&&~8l4]!{lBEJJ%PK6IR - - - - +rك<ea2{sq([L3ljŸЦ}M2!,PUycS7&=cS]0&&qJE/qeR}2]e*ut9yHOTW="WxQԫ8D-OGz7^TgF)V5d=*gEˢoN+Ldz+{Pti+u>.8ߛPXR!l
=;%@ˋ$s+ok.353E?&uAnȊ(T-'l'&&&~8l4]!{lBEJJ%PK6IR +M*T=1+J;MתJXFsΝ7јҝNAY3VՑ'(#efG(KԩnDdRUΌUwQyqRM7-X[x#I%V
cञAMѣz4Tx3y|dXSIDNzh|"cm|IWB+Z:Ӛ +6(Q ?ksxir->WyWI$Rq7xAiSoĊQxb/SƑ- 3b<7l?k-GUu_q~N"/22%H3E7
y:V/^
/)'yWDpe㛂x
e)4qMe,yƳYǷk6L\%GYƦ16Q_Ae̲\vi&bfҭltO;_"&}(-Vvo˱z̍3u:nвy7?EضDLZRgo9[7ؕk3FEȮ(,T]7Lz<eK12W.Gi~̪,
cNein?]$w.@ W +0AqMTR)<ȳP'(QʻR<j!=̥GP[9T^¬47h5oh\(Ê}X]}@Պ47gN&9 +r",f+}iI+\Ü5{2\it^wfɥiHˡO),+Uܿx(c?cEO+x<I+8kн0xO=s}!PC}B[_mQ+E<_'13Md e +fj^i'E
Zfoj;u<;hOT3J^}g]Ti2$)ˣkj~--O5[Nu5j5v״cisl2!s=A)!Q -@9[UfvYY6YIYCRn<.p)ʜm^Z!p"[wωU&˽QJd̔2WvH欍-{$N*){qF8,'ENNyFZ:nMr#A$MNmҊeV*miV.5W}Vn'o+yevy;#Q>Dy#S=M='^:ʟv>S4yﲼ%,G:~H.~H*g7XJX~,N)~F8I,՚R-va +Bya4n
E#Hj[Y2[[TH0)
VbepCRsDDH2{eڏMmJƝI +NLUͯ5m]p蛛,l##F%?˄:^(nH#ުVqu 8YG皨:3Q2-4QI^40c2?وX*0H0фe4ֆ+ +&aN/VN]"ܹ mjO[iˏ8_oBV6Vb`0/SQIhJHhG=(ُvT66. +&q!.b!67q13@툩;rH9z!.'OEL|*'E
;"ԢKi^ ـHF1،*{V+FDg,=6ros0HhXܔO\"_)>!-`0َ^蓇2)Kh#TE救+L\$xb_mH$|dI3c&G7>\Oq=FmǽApL܈xRdjoy :hz̲)X7Y ?fħcyTVj{<UfZYՔO%Húzyb6̠4 f^ء &5} +.fOJSiDOةYr˃#}h/~)RLF`JZ'=Ie-@Y9kdH$v379簉[N6eVJY^#lbr) +9+UrEV-Zbw>blO`AEY2U[b݆d<NeOގfx}L^9ߋL)
!+NQY_UVwD{:5T0jrr̷;E]ٷb'Sj) ުDTLYKtk冷/1Q5by4檅ȔP +\n +^p֥"l7Z&CkV*YYyd"jGsaYk}*nYgErrGvʦDvM !:\\1>Hj噋:Aa1Q`{Q-}{M[횻IOء~"f#~:,/$ElҢoBrE6SϰN +MN&r$5τ~nlTgF~ASY(mӶl;$RYwlsIi0oWѧjdToWΟ j;I:S<gZNϚC?tJ51jafŇuÌw]Yr,KNx:>CeAjdśX
&zoyI3rsFs>2o>y1S2ㄼq{b$~&d{<\)l+p*i8;+9S<Q641SUqphV?ܾߵ__ۻl<{Ù8683b5|*f ǡB͏n>[P[-0}5:W=ESa~CXPݍgX,:%XBs7Zۺma\Љ`47YTl*uJYL/<&G: +S5bT=3ܥs]))]زlj'{% +lSΝS[j%HID9'OyԔNljC9UAߗMx5]wq}|Օ9^1b,Y(sФcvucO`iG1bZ'>V{bE'a`7^}K<Jʓ$n^9w3\M,${zŋ=^Bt`dJcOC::B +[L}3Ynm^o><{̃8ǡ1]8pwON|g/c|xm]xqB'~܉Kk&uD}Yg8tA6wʼ +%[!#qQS:S">~OG~~OG&)U8z0 +YZo55S)NLVE>:e>Fv xK?n쯞%'K^ƃ(S&rOUy]af@WqQm3y:&#>2
v}la9YYze&BR(~㛹fRZ3`f)Lʫ.`*+"z3G(pi]0KG* +ep,?wH tҀɛ/NiYi`uERZ";"mXp*}hυY_aRd^<Ƨ*YYklRqUF);]as,܇eK[[".#r'(`r[[hzyK;}lsQz5t]:lӳmನ>,jmp.jVBBԢ7鬀 ؟Ź1ݶ8Pݲ풛jmu}Rg/fgb+붚n0;=,SJpt*@w~EsNEtzgo<ekcƫ2Ek4Ge>e>WpM_ +Dp> ԧ55GƹVB:?=`wK1$[o#Gǘd_&_03ōLfjˤz/A܅#=WbS;>)2_8&xY,«I+^~ +ىUxPnCr;~<,xD<.yِ~_uo<iT)c6eDq5sMq'c|5Ǐ~fc/qU-f
FuW:v7o]8:/f9xՀ\Kw"BBm&4aWGzv]oQ{'*}Żx}YE\^/;͒+J˙2+ܘ>E*2y.Zyq |cOfD2=0 +e=nGKbRG
ŵƕنRrSl"yˣ0)R&٨#iΈwFhv97z 1J5q̑]S{Xx3?b`3Wd\GWV:95qx],Jw08fgq%4l!pWaiBȒ"Rw X۫D["dhƃAO)<WLfbLd'5}h֔iT\af:7sN#XP]z? KK5 RA(xvJu[h"=jGNyF۽]m7RRer9&ȕy'ܷٝ0'ߓ;G_;=lsAgsC~h ?;&"/s?PK2?M5 +ҴǞӿAiHX`w}~W>nMK +3i+e&
Ťnmñ>n
7%=ֳM#a+|ɔ3AޡD̚)j[ +g>cA5& +9#wYK£q=g環vH~
ҧ`;cKb>GN7`8hVUjxqyPqIռ(L{93y=e)#okxGIv$ltLu/*R2Hv`3>is8[5HDC (}%7"K#G'WA$ou*$NS2go'E۴̐[sz~N +?^e=nMsް}e橊ʃn/GT$k)#'2>agqR삭>Y8OָVc`FvnP>CT8)hVŸbR\d#ؖ#ʑt;)
,б3;P"J4U5b=Yf鏨p/*P<]*aD)Z<cX CrtU݁ԩ+9Q6\2P^`nDw5UEȌHh5QsvL_J<H,Ӳ#=Y |X6/b){|Dū[Ʋs=V8:'Dɾ|!x)֗QҼ3I/>GeρM1E5y;'80e䖤jFLܨrlUɡ2%6۶ŷfZ\,c~9Pw8g;wwnpE<et3+*3[@gg?uL>ŏ]?OUdk3[3cexqe-3~sB[=1T9Y/~:2y"\RgDX?md,{wI]z.E?TAAߔU%q*/ a_f w*wCtWm\xD<KyD7lڄSOhM&}||cܼx;*b(+~:ZX.u4wP~ƿۋT>iѣ8g˛AqZ>)+85n+U
xC[ǹid=
ELq+1.8CGk&( D!j~$_1 q#h&NBt \E'wч[|W1A` +p/qOKsD7Cg[H0By=0 +/RX`V g7ΚhwWY5ipW8!ϋ;
V9Tx*;"?P7R}^I~6PmE|vlEqO檷"V$+8A,cr +++{eQs8>,;B#>YQ%gYqY>/NDh8_xe~_*w +{t*+6{'<怣ys=&"w_7J^/ ';bJD:a4l_`%r|,JVJ]$f>Vz71{/%/x KMb>Ȉ+ڿ_ +ycsk(Y5t2a{:E%iDhAV??LAtY
Bx;7"oPKR +j'W,pE +C[Y"URUxqOYUR*ȇ%a +NELڏ2xEORB)'aDq#),7n +0iB6<6FսUWBtN/sb|XBEUIß+(=+2beGQ-Dͬ3l%)zc ߠӤ-q[^\ǡ`n4 +_篏A^|.}l=](Xe-<,{)O1ci8òHcC}5.9
gqr[z|Ʊr]C{rx.~E~8ړ__='C?cesrB-Иpѻ$xևZ +y:Z1BCޤm>/cYbF̃K|23-W
BYfp!(Nps$N1OqʧzE(n*1:pY<g\yyPi9/W"J{>n]7q!*@p,ዌ!r9|6Tu!1UxŭRD01ȭ#y
}Hm"!QLc;}a;=m#ۉFdO"me^n=6^Ǚ*9^u2'rj,wT ؙ:-3uTd3/L0Qځ QӇVS#N(e1:H_EBZE@ˋQZôw0Ee]6jQ6Ae2Z ynv_h)"ǯ*QF|_
՛()ohoD{|+Sw${bEaBQeYHx &Y3Lhɑ#Ѣ-1"I,qޥ<v_52_+EA$x
8A/4]/`wCbGj=X.\ÏlZ'UDUx}&ܽHSm>~;XEE3,)nK t\\
DglUЯ
ZbH8,@uқyH定ܴljR~=@V1,&%$HeO=4ͤu4dz<(geȞ,9y')QY(e-(k +l|wrlɻZtM\nt\zKxJYy+-x +`'aG#QE.J\BqD7lɨ +KMͶn)[0,}_͜Ue?T]rT%Jrx(Y,?%pKzo"~ +Y㗫*~E6r,ҿfD:Šb}=Ț0 縳@HL|-VLEQfOゅgHHyxX+x@V`ZCܯy'T]p,Fz2{K4í̇ά2Y#5,[=4M V +lV3<R]'o-<-<oagBmEf>W,dNKx=w8m|@vm7l>d+U)gV8',|řu' +,8bwn>>cY|[\3I6E_X̖|tZ`koUiWmmqRBdS9km<'46l>҄C5G\$ӟFmKGZJk)
ʩk-=466iu{ 1W*)Y566kbFӡjHkh +I6lh:)=1!h՟XēhmVQG7/=xȡ7]!|z*h0Ky?"N~i7u80y(=FYڌ=A$K!o%IȆZv|%ۃ:P -q6Po$*}G+sJTVN,3E$RΞ$!IecvDOFv%S<<IJF&nȿ(oݍyA;u#m/o-;F+YWy-`kFJ?h䟗7ne.sLDe<ecx)TϠ4PW7L`w%LtPKcJ + + +A + diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 404de88..b51e131 100755..100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -96,6 +96,10 @@ <string name="copy_failed_restart">"复制升级文件到:%s失败,重新复制"</string>
<string name="prepare_copy">"准备复制升级文件"</string>
<string name="start_copy">"开始复制升级文件"</string>
- <string name="scan_title">扫描</string>
- <string name="scan_tip">扫描中,请等待...</string>
+ <string name="scan_title">扫描</string>
+ <string name="scan_tip">扫描中,请等待...</string>
+ <string name="backup_result">备份完成</string>
+ <string name="restore_result">备份已经恢复</string>
+ <string name="remove_hit">"保证外设连接正常,否则备份转存失败"</string>
+ <string name="prepare_waitting">"数据准备中,确认您的外设中有备份文件"</string>
</resources>
\ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index ccfc786..0e6927c 100755..100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -96,5 +96,9 @@ <string name="start_copy">Copying...</string>
<string name="copy_failed_restart">Copy Files to Exteranl Storage:%s Failed,Restart Copying</string>
<string name="scan_title">Scanning</string>
- <string name="scan_tip">Scanning,Please wait...</string>
+ <string name="scan_tip">Scanning,Please wait...</string>
+ <string name="backup_result">backup finish</string>
+ <string name="restore_result">restore finish</string>
+ <string name="remove_hit">backup will save to external storage if exists or backup save fail</string>
+ <string name="prepare_waitting">"prepare,make sure BACKUP file in your external storage"</string>
</resources>
\ No newline at end of file diff --git a/src/com/droidlogic/otaupgrade/BackupActivity.java b/src/com/droidlogic/otaupgrade/BackupActivity.java index d65b453..3e25211 100755..100644 --- a/src/com/droidlogic/otaupgrade/BackupActivity.java +++ b/src/com/droidlogic/otaupgrade/BackupActivity.java @@ -18,12 +18,12 @@ package com.droidlogic.otaupgrade; import android.app.Activity;
import android.content.Intent;
-
+import android.os.Handler;
import android.os.Bundle;
import android.os.Environment;
-
+import android.widget.Toast;
import com.amlogic.update.Backup;
-
+import com.amlogic.update.Backup.IBackupConfirmListener;
import java.io.File;
@@ -35,12 +35,14 @@ import java.io.File; * @Author
* @Version V1.0
*/
-public class BackupActivity extends Activity {
+public class BackupActivity extends Activity implements IBackupConfirmListener{
public static String BACKUP_FILE = "/data/data/com.droidlogic.otaupgrade/BACKUP"; +
public static final String SdcardDir = "/storage/external_storage/sdcard1/";
public static final int FUNCBACKUP = 1;
public static final int FUNCRESTORE = 2;
public static int func = 0;
+ public Handler mHandler;
/*private static void getBackUpFileName() {
File devDir = new File(PrefUtils.DEV_PATH);
@@ -59,8 +61,9 @@ public class BackupActivity extends Activity { @Override
protected void onCreate(Bundle icicle) {
//getBackUpFileName(); - super.onCreate(icicle);
+ super.onCreate(icicle);
+ mHandler = new Handler();
boolean flag = false;
String act = getIntent().getAction();
@@ -86,6 +89,10 @@ public class BackupActivity extends Activity { Activity activity = (Activity) this;
startActivityForResult(intent0, 1);
} else {
+ if (!new File(BACKUP_FILE).exists()) {
+ Toast.makeText ( BackupActivity.this.getApplicationContext(), getString ( R.string.prepare_waitting ), 5000 )
+ .show();
+ }
Restore();
}
}
@@ -96,6 +103,29 @@ public class BackupActivity extends Activity { finish();
}
}
+ public void onBackupComplete() {
+ if ( android.os.Build.VERSION.SDK_INT > 20 ) {
+ if (mHandler != null) {
+ mHandler.post(new Runnable(){
+ public void run(){
+ Toast.makeText ( BackupActivity.this.getApplicationContext(), getString ( R.string.remove_hit ), 5000 )
+ .show();
+ }
+ });
+ }
+ PrefUtils util = new PrefUtils(this);
+ util.copyBKFile();
+ }
+ Intent intent = new Intent ( MainActivity.RESULT_BACKUP );
+ intent.setClass ( this, MainActivity.class );
+ startActivity ( intent );
+ }
+
+ public void onRestoreComplete() {
+ Intent intent = new Intent ( MainActivity.RESULT_RESTORE );
+ intent.setClass ( this, MainActivity.class );
+ startActivity ( intent );
+ }
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
@@ -134,11 +164,12 @@ public class BackupActivity extends Activity { private void Backup() {
new Thread() {
final String[] args = {
- BACKUP_FILE, "backup", "-apk", "-system", "-all"
+ BACKUP_FILE, "backup", "-apk", "-system","-widget","-compress", "-noshared"
};
public void run() {
Backup mBackup = new Backup(BackupActivity.this);
+ mBackup.setConfirmListener ( BackupActivity.this );
mBackup.main(args);
}
}.start();
@@ -147,11 +178,14 @@ public class BackupActivity extends Activity { private void Restore() {
new Thread() {
final String[] args = {
- BACKUP_FILE, "restore", "-apk", "-system", "-all"
+ BACKUP_FILE, "restore", "-apk", "-system","-widget","-compress", "-noshared"
};
public void run() {
+ PrefUtils pref = new PrefUtils(BackupActivity.this);
+ pref.copyBackup(false);
Backup mBackup = new Backup(BackupActivity.this);
+ mBackup.setConfirmListener ( BackupActivity.this );
mBackup.main(args);
}
}.start();
diff --git a/src/com/droidlogic/otaupgrade/LoaderReceiver.java b/src/com/droidlogic/otaupgrade/LoaderReceiver.java index 4c164aa..835b789 100644 --- a/src/com/droidlogic/otaupgrade/LoaderReceiver.java +++ b/src/com/droidlogic/otaupgrade/LoaderReceiver.java @@ -106,7 +106,7 @@ public class LoaderReceiver extends BroadcastReceiver { }
private void afterReboot() {
- final String[] args = { BACKUP_FILE, "restore", "-apk", "-system", "-all" };
+ final String[] args = { BACKUP_FILE,"restore", "-apk", "-system","-widget","-compress", "-noshared" };
new Thread() {
public void run() {
File outFile = new File(BACKUP_OLDFILE);
@@ -160,7 +160,7 @@ public class LoaderReceiver extends BroadcastReceiver { }
private void backup() {
- final String[] args = { BACKUP_FILE, "backup", "-apk", "-system", "-all" };
+ final String[] args = { BACKUP_FILE, "backup", "-apk", "-system","-widget","-compress", "-noshared"};
Backup mBackup = new Backup ( mContext );
mBackup.main ( args );
}
diff --git a/src/com/droidlogic/otaupgrade/MainActivity.java b/src/com/droidlogic/otaupgrade/MainActivity.java index d05aada..3759952 100644 --- a/src/com/droidlogic/otaupgrade/MainActivity.java +++ b/src/com/droidlogic/otaupgrade/MainActivity.java @@ -80,7 +80,8 @@ public class MainActivity extends Activity implements OnClickListener { private Button mUpdateCertern;
private CheckBox mWipeDate;
private CheckBox mWipeMedia;
-
+ public static final String RESULT_BACKUP = "com.droidlogic.backupresult";
+ public static final String RESULT_RESTORE = "com.droidlogic.restoreresult";
//private CheckBox mWipeCache;
private TextView filepath;
private TextView filename;
@@ -247,6 +248,14 @@ public class MainActivity extends Activity implements OnClickListener { vg.setVisibility(View.GONE);
}
}
+ String act = getIntent().getAction();
+ if ( RESULT_BACKUP.equals ( act ) ) {
+ Toast.makeText ( this, getString ( R.string.backup_result ), 5000 )
+ .show();
+ } else if ( RESULT_RESTORE.equals ( act ) ) {
+ Toast.makeText ( this, getString ( R.string.restore_result ), 2000 )
+ .show();
+ }
}
@Override
diff --git a/src/com/droidlogic/otaupgrade/PrefUtils.java b/src/com/droidlogic/otaupgrade/PrefUtils.java index 17d8656..c742bb6 100644 --- a/src/com/droidlogic/otaupgrade/PrefUtils.java +++ b/src/com/droidlogic/otaupgrade/PrefUtils.java @@ -268,30 +268,34 @@ public class PrefUtils { }
}
- public void copyBKFile() {
+ public void copyBackup(boolean outside){
String backupInrFile = "/data/data/com.droidlogic.otaupgrade/BACKUP";
String backupOutFile = getCanWritePath();
- if ( new File ( backupInrFile ).exists() && backupOutFile != null ) {
- File dev = new File ( backupOutFile );
- if ( dev == null || !dev.canWrite() ) {
- return;
- }
- if ( dev.isDirectory() && dev.canWrite() && !dev.getName().startsWith(".") ) {
- backupOutFile = dev.getAbsolutePath();
- backupOutFile += "/BACKUP";
- Log.d("OTA","back backupOutFile=null"+backupOutFile);
- if ( !backupOutFile.equals ( "" ) ) {
- try {
+ File dev = new File ( backupOutFile );
+ if ( dev == null || !dev.canWrite() ) {
+ return;
+ }
+ if ( dev.isDirectory() && dev.canWrite() && !dev.getName().startsWith(".") ) {
+ backupOutFile = dev.getAbsolutePath();
+ backupOutFile += "/BACKUP";
+ if ( !backupOutFile.equals ( "" ) ) {
+ try {
+ if ( outside )
copyFile ( backupInrFile, backupOutFile );
- } catch ( Exception ex ) {
- ex.printStackTrace();
- }
+ else
+ copyFile ( backupOutFile, backupInrFile);
+ } catch ( Exception ex ) {
+ ex.printStackTrace();
}
}
}
}
+ public void copyBKFile() {
+ copyBackup(true);
+ }
+
public static void copyFile ( String fileFromPath, String fileToPath ) throws Exception {
FileInputStream fi = null;
|