From d70853e16f3d7cd54ef93bb34d8597c714363b66 Mon Sep 17 00:00:00 2001 From: John Slavick Date: Sat, 5 Oct 2024 12:32:36 -0500 Subject: [PATCH] v27 (#256) * Fix issue with app mode toggle not updating * Fix `NonConstantResourceld` warning advising to avoid using non-final resource ids in switch statements; switch converted to ifs * Add activeandroid-3.1.0-SNAPSHOT.jar to the project directly * Update to latest gradle * Update to latest firebase * Fix deprecation warning * Enable code minification and fix java heap space errors when building apk * Allow horizontal screen rotation * Update to latest timber to fix build warning * Fix "Wrong locale name" inspection * Remove unnecessary properties * No longer need API check * Merge API 17 specific files * Merge API 21 specific files * Refactor to simplify line separator retrieval * Combine identical exception handlers * Refactor backup to not hold lines in memory * Add landscape layouts for viewing history * Enable and update proguard rules to fix minifyEnabled causing crash on app start * Update to use recommended proguard file (https://developer.android.com/build/shrink-code#configuration-files) * Improve restore performance by 4x * Fix code inspection warnings * Remove debug logging * Improve performance of GenerateDataTask * Fix bug where restoring from json would lose the first day's entries * Update to latest gradle * Update to latest crashlytics * Update versionCode and versionName --- app/build.gradle | 22 +- app/libs/activeandroid-3.1.0-SNAPSHOT.jar | Bin 0 -> 63772 bytes app/proguard-rules.pro | 2 + app/src/main/AndroidManifest.xml | 13 +- .../java/likeanimation/LikeButtonView.java | 3 - .../org/nutritionfacts/dailydozen/Common.java | 4 - .../dailydozen/activity/AboutActivity.java | 2 +- .../dailydozen/activity/FoodInfoActivity.java | 8 +- .../dailydozen/activity/MainActivity.java | 108 ++-- .../activity/ServingsHistoryActivity.java | 2 +- .../activity/TweakInfoActivity.java | 9 +- .../TweakServingsHistoryActivity.java | 2 +- .../activity/WeightHistoryActivity.java | 2 +- .../dailydozen/model/DDServings.java | 9 +- .../nutritionfacts/dailydozen/model/Day.java | 4 + .../dailydozen/model/TweakServings.java | 9 +- .../dailydozen/model/Weights.java | 6 + .../dailydozen/task/BackupTask.java | 18 +- .../dailydozen/task/GenerateDataTask.java | 6 +- .../dailydozen/task/RestoreTask.java | 24 +- .../layout-land/activity_servings_history.xml | 45 ++ .../res/layout-land/time_range_selector.xml | 69 +++ .../res/layout-land/time_scale_selector.xml | 20 + .../main/res/layout-v17/food_type_item.xml | 33 - .../res/layout-v21/activity_food_info.xml | 126 ---- .../res/layout-v21/activity_tweak_info.xml | 94 --- .../main/res/layout/activity_food_info.xml | 16 +- .../layout/activity_notification_settings.xml | 1 - .../main/res/layout/activity_tweak_info.xml | 1 + app/src/main/res/layout/food_type_item.xml | 12 +- app/src/main/res/layout/header_date.xml | 1 - app/src/main/res/values-he/strings.xml | 571 ------------------ app/src/main/res/values-v17/styles.xml | 22 - app/src/main/res/values/styles.xml | 3 + build.gradle | 2 +- gradle.properties | 2 +- 36 files changed, 292 insertions(+), 979 deletions(-) create mode 100644 app/libs/activeandroid-3.1.0-SNAPSHOT.jar create mode 100644 app/src/main/res/layout-land/activity_servings_history.xml create mode 100644 app/src/main/res/layout-land/time_range_selector.xml create mode 100644 app/src/main/res/layout-land/time_scale_selector.xml delete mode 100644 app/src/main/res/layout-v17/food_type_item.xml delete mode 100644 app/src/main/res/layout-v21/activity_food_info.xml delete mode 100644 app/src/main/res/layout-v21/activity_tweak_info.xml delete mode 100644 app/src/main/res/values-he/strings.xml delete mode 100644 app/src/main/res/values-v17/styles.xml diff --git a/app/build.gradle b/app/build.gradle index c14690d6..a2b4ce1e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,10 @@ configurations { } android { - buildFeatures.viewBinding = true - + buildFeatures { + buildConfig = true + viewBinding = true + } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 @@ -33,8 +35,8 @@ android { compileSdk 34 targetSdkVersion 34 vectorDrawables.useSupportLibrary = true - versionCode 90 - versionName "26" + versionCode 91 + versionName "27" } buildTypes { debug { @@ -43,8 +45,8 @@ android { } release { manifestPlaceholders = [crashlyticsCollectionEnabled: "true"] -// minifyEnabled true -// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } @@ -61,18 +63,18 @@ android { } dependencies { - implementation 'com.google.firebase:firebase-analytics:22.0.2' - implementation 'com.google.firebase:firebase-crashlytics:19.0.3' + implementation 'com.google.firebase:firebase-analytics:22.1.0' + implementation 'com.google.firebase:firebase-crashlytics:19.1.0' implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'androidx.cardview:cardview:1.0.0' implementation 'com.google.android.material:material:1.12.0' - implementation 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT' + implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.darwinsys:hirondelle-date4j:1.5.1' implementation 'com.github.prolificinteractive:material-calendarview:2.0.1' implementation('com.joanzapata.iconify:android-iconify-fontawesome:2.2.2') { exclude group: "com.android.support" } implementation('com.github.PhilJay:MPAndroidChart:v2.2.5') { exclude group: "com.android.support" } implementation('org.greenrobot:eventbus:3.3.1') { exclude group: "com.android.support" } implementation 'com.google.code.gson:gson:2.10.1' - implementation 'com.jakewharton.timber:timber:4.7.1' + implementation 'com.jakewharton.timber:timber:5.0.1' implementation "io.noties.markwon:core:4.6.2" } diff --git a/app/libs/activeandroid-3.1.0-SNAPSHOT.jar b/app/libs/activeandroid-3.1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..28b494e62419fbff372576dc4ca59ce3e033de4d GIT binary patch literal 63772 zcma&NV{m3sv@IGZUu@g9ZQHhOqhlu>=Zm`2v2EM7ZQJSB@1A>K-E;1FuimP)cI_W? z?p3SythweGHKwv0I0P&R2n-BJwYro9$iD&he?R^Wz`vy+p)SH8qbSJ)4x;>@4C{ly zuJQgE;QU+Y|GS}rh@y<7gqk{|g5-n39P7eRahX1<_>i@JcF>|-^v@mfrcXhHc|35s^1?Xl+!9hT(U_d}9{#y@` z|KTt4AO4JH_9kv_@#+R@8(2NUZppU&Cq*|81O{ldri06!B80yLrmo6KfVncV2mt*#f5!_ zaJ@)3gM5KtUEl8(Za!`<6mE0mxmP(+Q1kVZTqvG=Yq!IF?%vbsOh{SVO*?|qFU!8h z+hPX4$Ysw-Khb6A!mTc!vsL&#I-(un@Fm+RQ?)$=tVWZjnziHaMp|x#8H&RM%TOEy zOxl1a6kTO#b{yaYAMxg|>aYQE_3ee^jL#3>5w#o4JFc3K8o3Cr#pHzXVe|#M@_y>G zJJ@)04ERgrD(j~IU4F9hoX!vtpvYbljUeraW^=%?#}1xj&s3em^z&%mue|nY;ZsN)EJmEmP#uBfaDIh&dwJz~SL*6uE zpfg579sTq7KF_eawf}N(3|49BE6NJSXQ3(3%N>yp-*LA%Mo;_bHoW(d<`=So@p}_= zvhA1S3^0!!?0k&g=g9rQ2p=Rmju*dO(|F%ZoT}D7w^FV}`1=f~<*_4svRe7@ccyGH zL*@PGPAy_rufRJ=lQ%wOcyIg{a?q?f%mKQai7S2vbvX(MTC2QSFry_c<&Fg9Cf(oo z{1ft@JmSwV10$@TR*-@cfCWGqt3|O{8Bp6c?Pq63g?YkHIXZvIkr_&K*H+OsX%kM( z)nZd@zGUj-dypz0-XM}i+}K+e4*u)`4OO$HH*Jp;Nl6T8*)n{RAbPDo;K3B;E(kvQ zO46A7_uk8C`ln6)P;+8cw6$5%=q;jITrgD#qF4*38lpjp*6*^Wk5$(miuil-?^8F* zWk$~iXQ&t>5{3o$WWi(3RQ!rxU0(X;kshLqFR-g8i*Z!ZxIpt3J2el|!Fm|OKWE z=oXuk#(YpsbUhgj^a*KK;;rH4`n!m_`1o`WrswU|WzK=A(P7vPrH_K=wHMj?{mAoK zB7cfpzv&nMnYNQWzptIY0iS>$O#4EtPYvcC6hAPB3G!DE?}a5Id+u zI|;iX@M|C5G$A)IO*i9Fdln=<634f;=rw?`3zbfi?wz=O29t+o>~5?+KGx=4AC`xJ zyXR2qKW2PC9+qb_qYDf_i*e$ng}HGPuQM> zT`rVQP0`QU)4imWwK2A{q{pN=wzkQ~QV1F{l6214<^s%IwQ`l^^RSdHZ}%nCDKR_c0u ze{d+Kl55!p{}@JEZarJi%@G(hgo|iQF=ogX9~ELg7mp`67S?O>R2|RQ_7j)PU}%)s z+n`b|vtv)^sbMXq=3}0y@{G*Kx`}bcnw^5ot*qhjsgV;c&Cb|C9y{xbuGA{dfda0^ zy46s5=hdxxb-GFk=w@cDmkW8#lu>80e3rP2blYE_!wIH!wlIAhJ@pV|mcbKIuN5L} zvW9d5s_n}X95EvyqP4p<$@i`~s;pDo7C#%LmXejK*qp3sv1nCiuaa%lP!}!=ta{^& zSmbo;+FeoKQvyV`;kwx^gse^z(#La0?^TvC1RtQ1wBnC=rT{TcdI+j+Z$qV7G|I&@ z=YR5^DeN%W97>x7)X7G(^f$VXk1*+Kwf~%KWK~i$p253{k;Q~fJ<-Yd30Z*06A$?5 zE-yq=PBS0~YVm`cVC<8GoqI*2^TzIRoUXa(m4)}0*0gkmgQpvEtrV5>&UR8B1Tbt$ zAE2_fq^G2N#}rLv!|A3aP~&(NiL32bcd(sV4LZQuEHF2A_TW74nA>s>>Vce9m#JQe z_kT^%z?gN$kdXM<;b_A-f&&P&81xztvzH6?E}?~pXtKQhwqyYv`nNKR3JUli5|3w= z*I#?+dcn{<{KeBL*VWAJBt`tL713~gQHUo9J-;S+8tjjn2HIEG>o*dh!^1@c%Ie8=<(YM*1D$-OqUPkmWFwj$r1Z+-Kzclj=8I znsXx5aPe-~&+8iKJEXXNW6~;INd(J&7BmYzIqdhiB3-b@8t&@dnBLX`7ZyUg3rUf% z7kqC0A&%$B(0vP;zMb2o5ZG!u?cp5^`TaudJk47cP14uMkf41u$iMvv``hF*u!2Jf zkZ#-+yZCt;w>U8TE=yGxo> z%Ba$(a%eY}gWOlCnJ?*cr1|SJ>RnW>%(MsY5?jlHz_O2CdG-_1_OmMRERZ`)!!EBo z>PQc1Y+@>;^;K~amiNGfP)4dh!0wQw_vRiE-;hciy28#bpHJ{~!TX2ShsgKG>3)+? z_=gWd&<`VrPcG8fz&<3Um;SN47PXvby;*pJvITnwmo{(t@_bOu7 ztll{a_Znf$8UZiWLRO0x15W4OqpGrr|u;`|rrcO*_9 z<@95+vJh+Boy#<#1vy%wTW7>Ec7ih@wpU#t_M0Ff1pjV1NS)oPa^LW4akxLG6xyq8rv!v1HOs3xl)_qW;bCDYiB7q?4=@S_bTj zi|hC8=vBn>Ui9%*>{wD7JNAU6l=MYiC8Epi8X<009(mv9T6q13y_Ncw;u>W!Kixgb zQ1lB+@NC!K+X@z+=rI6Re zjKKYa$6K3L9~b*+YZutdULeB8?T^B4niIlB;#vd89g?!#`v$p#!P-JkxpNYktE9z& zWMAb#IorPQUymY;8 zrZOUFo*8Oy%^@TX{zxL3?-AHQ(%&BLl}63(0Zvj%89zpX5?IU|CF87v?1*uYq&~3V z)IEp)L>HncJmVyZr1;xP8Lf;9zr+}Va=qnYOtgQ32D=o38_;#|eQw$D{L;ne-s<^o zOi05oiLfx3;G4d!(cM{_^O0S72gv|LU90v=RFuy*kVVatDUzInkWfs)C4)T$lHtaT z^ye@C#*d-YyP^SGf#QwdrDQ|y{#j~=U+m!~(SwuGj6lzpJPbu<@{9|v&mlPQ0=yIF z#!OQMJCRUi+Xt{QuDlG2S{AaIlA~INT&Sr+r|d~r2<80L-3oRNT9if{rnw%>Iio;C zPLHFQ`Zl)zy#zx!AZEFaDmS!`_G$#C+hoyz!+c;uCd#+Jh~up!iiU$ywT9{-aU|D2 z=X?(lOcO6*u)avOdrrx=Sj$*`FXsKpR6;)3t z{GH4os9{nAB#Y<=Zgg|ia@tfrQU=#TAm5%e4;ebH3~w++eA^u%nxI23Nd>P`s<444 zK9J6n{v@8p2f+W6J>=vWJNxR(>KIh0^hX`GM%ob>PQ=yloqq^`(As@gcEolixnUkO5{@wdBM6bj%Wk&`H(6EdT!oSMu%AMg z9id$Lv6N0r#zLk6P(7X=i!mzBIpJ{V>tb^w+rpD$Ohk|rGr)qFnre2Npg)G+!h zKRlmwPrgqf5^2>M3xxq0FAjR@$mBvbDJ_;kwOe?Anx>)vOGu;EXk_NrjetO#miYyF z=68b8t^`4@c5wlm18=(Axw%X(Sh2-a)EL2CYn{aU6v(+Zphx|-KEY^jg*Px%%l&nZ zA?Z_bdge7QaJ2;R~aN<~2K^=fGq8)AehL{^{%$ z`n&AFRX_j0$Xj7Vp;dIdoy#d9ER=>QoU``vWXl6shtjYE<2ZNc)S164#JfEhHYkdx>M;VpC;haf3B*EV)mR?ogA`-BO3bK065uLeUi8XPzj;WqiZQeth5 zR9WvO2FWB%rd?rtqNn;;OQ^wmxnCwV3V1J5S7lL^xoA+^3ixw9d+sF%r6 zH=EOj{IQ-DFIv=tvWuo?I#o?fD(tDCdyZudCsw>wL^HFvDTaD)Ape!Zf6mBX*t0F)xMmBj z9j`gH-hg8U(Ej~I?1o+{^s5WmS>UeEGNbs+J>3dNb$U=tz5X$wch%24?j`KgyY9~0 zL)iM-6}6KnGBQ+Z#-%%!)V}BmF$=A|Xxnc-(FfEvqtmgao9j$bGws@7b>*--RxQ0W zC%bQq<43S#-~!}?H#qoEt>2?NJs_6)^jDitR=dKevG$|;&)%2yw*T4P^tl&Qa$dm% zZP|u;$?xB7CrM<0vDpv)h`7is`sWv)<1Iqlw} zCT`3=ubEJL^wYAcSgT}qJ45fa_Cv;rWnHr z=I~nXyW*;j-+lQJFVE^{tU@OC08{JHI0iCnvkKd>G+d<#B(Kh^X0vsU&dH}(UJSht zb2fAZSp)*Y3VABm^qNc-OHL?dbdTEvv{>TCaih?M4y%(z^C%tgq12Lf)d7Zc%uP_x# z04uvpZ3j*J=Z(6gEGE+}CCDD!bn_W{uh0AxWdbQuvtS*Y<;z19B zseTEMe3SL8Nh;NcT|K&~#v#;hg%SpmP1zBRYvmeI;F-U7QLFdRMwh+ws$7bTT&j!e z=5{)QOM$%ZG-373>R!8;yVz6f3aV%4#T&JF!TJv}gzDdgR3c-B$&E7D0s+QUq zm)#h*o3NX3l=ADUX!aNBP@QpOsd3+C)?HunC5&3e%l|lEQlDFo8TVXbGfH664v=YE zeV6Bp9%IWGeY7IC{^^C|NeBa(WGciX1w5ZE(0#Z zg`!EB&R|Z`mE_Ton1x?=j1kepwOgZFlBcn-~hj-i0+#hAYzTO{$b$3!6Oyq~Yx<+O6zno7n zJ>1Y?deBYRx^{-Sg*=T;!43u;EO~+cX9!RjS!_=GkNwYp`+uYB#r}5)@E-+nu7;l5 zf+YI)GE4duH+d#{7A5F>Sn?{vG~_9Tjc9Gk;!qnhSqT;7&jw}4-_Qbo}B*8>yC1h=9wc1sbBOat9i9{a~U zKKazX5^;!VA0q&`;X+X6JiMFM~bX*DR5aCFZIaXYA=yFWC|3?8x`! zJr^50D>kKyvw5-a%oBP?Ew}cQOizzA6LO;#gTxI(pdJFsNI=A$u%k(Z`X&RR1IGSq z1c_mRwG#gwHl^%lHMd7YGTUM5)zK$Kv<{tf;xA{d%eyRNY`YJOy;jRDOJj)$bA`WS zyt@f>aD-)7%XIzsN@6@yrg(WaN3z9qCTQ(CO>HaAFs=o5J`B#B;dSW@I8V9>czJKy zjj|egmDLMMm>!RhNweW*t`ncYbJN)!*hL4iLtd1x_~a&jE<%{xVr)~pVh7&~c(sQB zyjEq)sN*vAh`D5&*e=N{ac-&4LDb~I_P#3C5{1zhs)B9sl=EMJvIOBE<_d&JzeTTd zNj6=0%8Guw1syro)eJ@8F7vSFgr|=j$g-=zX1+bBgyG#o&-_@qCT6#6zjp0;3L-AXI%fBcG znWl-@iQ2zw+Zn#jq1>w+{GxnP-UJFuH8b53_6&V{z#JCMm7Pw?t(AVNg(hdD1Gigl z&kq?A3wlvzWx9g%@)tikRF@wcxQ$sWD|KGoK%P|o5ZDp1C7&U5s!$Q;vCI-GGTgm$}A z^0zXEr~t*|r=}pWQ+6keKnf5m%Bp@Q$-8*J=BGeB$x~6BY4~|ZgwOpnM?u{W_}`K` zQVeW9e|>IDO2A{5U`hdHD6{0) zpj)Ie?%)=HQYp``;Ca~6*^)nm0K{_Z3MB~vSA6w3P5>u-sZ`ciFeCMErgxC1(T65s zc0KhwqxmARa+VO3HhH|bc}VVv!T-WHG|O61jO!IK7UidJnw@i?e0UF8ixx&o2A8!GOO7 z1!OoA!q5D-zy3aN_1t_3y~))GzOnz9avhH}mw+A+`{KQ?LEAP;C7croGfk|z25Rq+r7#WmEUR!`U8xf_iFCAY+qw= zyUU-u%lGUI{kI}}hIY~p@Lv6xzC{49QcT@toJPvALHB#V?)FVT;S6=-oc4^CZk=$u zugLnm7Q=7K_bi$|^V;8ABX0cez>9j30$#m7BO{33Y5_vedqQ_cv3F>lg?lB2pOdkF zpZ6#~HzSR9Gi+beSkHpkKWmT(&V8X7z3+m~{Zt0%3_Hu+vz}l(NwethWpU1iBxqeK z`VJ17SLlue@5W3O+=-yfqbcPAu#+upOK)Y1{@i^O%BI_?GHADVIGt=yCw2D)4~XTG zwZMLUdErpSrI(`ovc{P%B)yCF>`T5D=g(!?2da=|aX@yj-rk-5Op?u}2`(W+O*C%? zEH6DpqSj%OrAFs4$9r?9MTO}}^AG|@i{s?UQJiXsFk0KuOzyRpiK4T?*H$xuxGcke zicxc6aOPCVFjVaP7SecdW#E?6jk^X$vCSmcJD1`pr&3kf)am7Gk7M4IKg9i+ZSGyo z41&HDS1mV_1qtKLC)4)?zCI6!bR_9v69Ls(AuMu(9csl%`4UIbuib~@7cQe`bX zk!Qv;Wj}$91Nq^uSpYCNT87z&XYNVYLdHH6ydFC{C^M8*eE2oe!lA`smi;c{l@eAFQ z4%sXelA7CaFBJ++C5ySytM8&{gg*Ne0B1%oK@c?s0>AWrS<8vA5(sjIPrthSd6Ik zUmUP)h0Lk=mM-*?l$CydlF;w?C$1`HbhA#1*!g3mXVuguNmJ+E1R8K2A6a;Y~hg8z*9zOLOWw?{1p_({FYJe zz8!vy(BPStFLH^Q^aG-gPQdN_&VyJuLuIXI?5Z7K*<*$M*D7rjXi*CafjkRaJ6c_# z$i28MPaYKh{1IYXio{4vN27IS!jyafsJl-A{_$D za@u?T3bTrj%v*S{z_UAhc3v5zgbCcfbGqNiPVhvrUcSj!p?W^<39`P5aNl$UUrjF)hTENio9f+b(>^FhKE zb%BBr;-fc2qM|de&`5TridUdoPL@Y1v&crLKt?j7GRL^X#YbD!L0(Ymao?7XF@HZY zz^BYA8^vIEt7r`J@p>Xt6BWRzPoRCARvRMV%AUpz^g~Ub4nWD=Mzb7F($>=o0&*JT z)LdsS0O(J?P;Y8`PX8=0q%AEqI4YH2b7sp@sdi09iQ6VmU&M~+P^*yTY9jr5(_JsA z@aJ8gLRoWs^5jjUx2;Gc!Z(Ozm}=s+yO8B~$!HcLd_WJ#YPP2kq$k0uFM(`pEG^Ae zLgB+qD3n&2?#Olj@yAe$6n3x=^TNLcg^RLsgxb4^FDxZ&$!^6+^R3On(qc=Wpz0U$ zxyK=!o>ysXF2aWK%b2>jhs^VIsjc3hwMUf+*CtpAG+Jma#vebw0Hy|FfU0*na)*xO zR!>mHHtw4P^{)G_P(QzSPelCfB{$>O+uQE^{Jt(S0lw0b5O_liGW~IkMQu{J92L)@ zOdgcz#KJglU7O#ihgqmUivyt!L$3LG7i}a2Pt)7CqOBL<*9dm*RX;9GNEPc=CP}74 zf1Gb5;+}z4m>alUu(hB-ZC4;-;GPpmY&{;U_7K2bxde}Xea9vzjyA48Wd7iOgzf0Ghg$t#{TUxZ=d@kGy_4Oo;$$R261DL=f>LPm92M%W~|E71di>PXii z!6lK+pFxIP_M&K#p!A|3A1-_l(3Ki&pXVo#C%i9+dx!~Mt{jM5O2G&S@e9b`Muide zY|cD*3(gg7Cjjdb21BRA)5useKH9lpjn$Z^)rf)3vN4wd6zm@ycw$lY5GI+;lMbB) zjy|}!GrfAdXAPcyWpmS{hJ=wBk?V@uoe8|1h-ye470dfY5%&?p66z~nP_Zu+O@_$I zV#~dZ318^VcuUy5vhbLI3XiZQ-hR^72~18Alkv-PQnX=dl#90p1d1v&yCy9(zv5i-R zP6ovmxl^9`r_x+MmyTg8_)+27aQ29e7I-tU1Z+!M3(mZ^Go0oD1dnauL-Kp-QA_DT z3w2xf*u5TlPhXs&`O%QmeoN_DcH0Kniv<1B?M97hRm9HREhd6fSCj_pgt>=}cXmVv zM`tb;G48gCBGirh{23x2M+MlPQ1D#5&%}7K=PMEwQ1aJkmQad+DeTVBG zA7`3MIu)8#8h(VL3cUtZ4vr6;P@Ri+jta$=LEIc4KJ^tRew!=|blYzI;3ov=S6+keyqNM2Lkrt8NZx*0oMT4V z^AX&3!2ifl$CD01YJ;dlxuJ9b)=#>Kw~nG*-RcjbBHZK-@p@M|e+p{hZkOzReNx3; z()U$N@_;cK&pF_J_sX#e?uMQ7RIBqiF`e~dKtglQhjun(@fcm=XB^>YT;*UkCTr0- zHh1%!*c(@ebn3q{BYeP|-;P)hf_HupI}VCCa3^rRFZ<%*IBSiL80t_fQ+Z{O@oI!QW zBkrLZbAh_))$xZvIsGmf{lHP>mz$pXdE?f32YDTs)NoR@8@Et3;14DwK6;z%N?~$@ z#B=fIQOFd^F7=(+z*`9IoCeQb-8R=N#Csd`;sH_nS4&@eoU7pEqce+u>x^B(2KZrq zh+*WtR$Y?zg9_9)sU(b`0j{7YXp^U*(T|o1$v@CQ%{KGaV1I$agfU@8toyxF6LQYu zKO(C{w>S2$_}IC6H=*0J(w{fksx_!oEi5-)3i)jeM3zB8!R(O_ZFs)fdJ15U%OSoB z8`!mJ%Ut4+ya4QTJkz7_oOSCXIuL(gOLxC>K)lDDM@T=H^aJVK7lmp7+Lm{4Bh!2| zQ_{Tz?}Z+sw|m3j!z!WMCjP(K09MfZiY?~9Iqccf|I8rn;l)H?xr*_~Ot@Fdya%}8 z0LkKk!|JKffZQ_SXXKs3;YBMI6Zh2JMImbSv?H1Q$F$nSTSy ziyS$4WV!xLopM_3ax=wkrJ@I%qz#{5PBR+Ju0O`R1(>M%Bb8dXQAdwb55rL*={For^bD;vMO_3h;BY=BO`h!=pyuX=TfudbOF&M8neg(hK@PkBteI{S+ z)JXfGwCrJcsx=gLOCxoK41i5IZJajf3O)weeq2Qzw2&q2B&-IiAuLke(a3r=NK7Gv z>ZkYE?)qXh;Sw&~+Gx%|F5Z})W=!5~SXDw@HroHNC6`#<%c*=x{fqmb2|gDHQ+u_4 z0=z`(|2Gkyf|I$0{r@EPbO8S9OG|%$WsG$KGqAv9Kq4hVz$`)gDdk}FP)UPprNLN! zOpyBkLQ{auaIqhTE=DTKWqJfE7n%T(L0i2!TZbjx7Tc}v_2-JEnx~2JxnS}j?bpi8=%Hvjk&y6_F;6jJ|tHl7HBS0D&=CHJ2aLuCszdwS2`}PL5-HoVAP*tEg($o2^9FqsY2N z1eq(wQ!9E{t74ISs${HSO~ekrQS;{ot2)+KP0BfMSv8q;EG9cWuiMagdl4K!U23%I z`6Gm+g{g7<3IR{&$2|>6MMHHwb8TR#UrNX3#j{81%0~b}gO9gWLC28Y;@kRHSkhC~ z_q3~*-Dty@^T#?^ppu?XXLk5iUbDruV(8Cb>?&f^yDTO3TE6~yv-*aWt>zqknpaL{ zbDh44GuoKf_AFq>>a43f=g-xi(EO^2oa>?&0wN)F;2}l)i5Vv|*UX~zv7h_Nj{&PX z!!TpwA}^GI2rv#;thn%o0~b6aFvyhVnLOAxOiuDB8B3he@2V~Bofe^UxciFx2`n-M z9)>k@d(Vt8?qPfgM%H`jngw)+cOTl1VeqC^Rg%n^^oRB@*xRL!RrR|h@Upo2S02!z zV3U_v8Witfk{uaIX)Cf=6Vwh2Vf*i^f*YG8Ua@@EsnA@$0we{UdyBq-OX7MGe#e$N ze+%}_bicZhor*fweY1zjCy-Eur8{T;bfY8_l&(2l$;-6(mLj!mvLzRWf{kBwv4EoC@7yweM(2{`@#Bgx_ zy~D<*cLIBpyZ0@4Gf~RYugsgDjcK@e3j7VUcy#ZEYy`h~>|FpotCNs&4!t`%1c(q{ z_QzzbIqgeadbND7)B^cc`;u82jqp>B8uG!;B}>IE?_GO}Mh4D0s}~kcH7Fs{_kIN& z_`57)o;hd)`*v*2w}n+I%GH7_cZiiFeMiBZWX9yuwD|Yl6aW5{OA8AQBF$X=Pn7H! z`~^F63tqV?3r8V2iWXT0`38tI9*eS#5j-KDFYblNj6$=8^)Jv+1l#Dol**64_(yXY z(K<0?hb`o*8>-UGeSO2jwHtVsN75?Ww0mfi&ymY;1eR}loVQ^YTYXQMN^CZ6x3x0h zPUU?>h>f^Sgf8||VL~d!3oaPd%Pu&KD`jcx>a6azC5QxCyU?^%D`TN89{SM^ybiw` zJnr`$`e(PfEBXnUh?*6156yn%u_=w{k#g6z{7%4gK~sxJ$R4Xv!*W=p5f(`kWREEsFt&)Ii74Yxg#F zbjONEz-$T=lOXv1sUtJ@!^4tyOS&>R+oL_)amj{nYnU(vxqKaWAFY+3!+l+Zk7t$A z#<@!fIr*56JB~b@SW_bMG!S|V$eK2&V$(%uk*<4;<(6(hvupclQfy@N_g@*W5!jPa zWypI?iB1mu@b&r;(69SSNZ8OU=z)dWxU4C2(?z>gvhejtCYUIwPXpQ7+M|f1EM5XV z6r;%Pt9_hVu;9qDMDU25e`<}QTM~JOk{c+W$ciwH(h(qEGI9p!zdM8Biiq!BzQ<)F zm^+hskCs(BYm997SeFy{g12GrJdVC8C^2hi!!Z^i-rc5U@9ivF2=tXK0_PQw6S8nB zJjtAK_st6|UYI$<;_VWKhCGes?Go=tH!%8g%=wC{u?8z&81nlddb+o%A@)uk{<{Ekcu^^fH zbb`llwNn1lA)_pfbGq9mX}tMcFb@Exqw~-J3@cmyA_s$^l^w z@=cuK{bi1bXFJYGB|KwubI_>^B)r^+`CZYk6p85+RkVKc74?pO61u(_YLb`S;bROq zoeX+u>ovD~J+* zXvj~B&961~E$L+`2VnBoJAvnXZT-zO?+i~&61FZ`xNU;18|CZifx(f@XdnBl-^?Pe zfW8D*kGl;m;1J8I_25{t1J66qL@RnMAm|kPXaCW$K_hu+geg{xcmiJPBe}JOw^{6m zWw*I?_5Ng?T&MKYs22=NR$Pn8f^q>7m;I23>9eOyyFW>VA=O+J<64ZVxj9cnW*$Y` z>NvTAX`Qa^5Q&}Ky!J>;CuW^?GDk>tF?p`1`4a~Pj`VOA*)xf;GwtAD#t+SISB9wm zvUF;r+~nP1M)SETb)PQ=doB8o=5bx(^vW+PB1zO8GZ-ERN!8s6SXpvGngJejZX6lq zO$P@S2pnm;fpmw0I&2CMd+dlulOk~ zWrqBN@C?TX==1}B$h9X9Y8|7m#+p;4czj~O;VS}#^x>^nRqcR#AIu@O_Wgo!7P7d}B{pSe6+v$lc{qxw_kq+#+R~QGkwFjz9 zGN{%|B~wx?FJt7F_QjK4f+G}Lt0Wmf(ijctCJTk=5ZDD2aptlj&hwz(C0_53Pc8`koFU}k*!XUKA@65sEN0li9oc}N^6J~^2!wA zacpU0_eo-oP0VgjUNs%h>NDn=%A!kB35EalFjIk8I4nI!C5TlxI3PegVUhDy{sq!l zh$lA{Ju;?q&*Ev;CU?~rQw#$;pM}^(T>MTNk(MsukT>jQW`TseDnpiuZAY*(fr0x* zLe^0iBM@@s@1bUdX#DmkBz#=lf)%f`)6SW;qnUe%>T+J@e=Nz|vvCXQi2X|zaGog=*U~VYfnXkUM*B+`bYR0@E&fAQsjKx;;{s8-&t$F&v1Uus#(M}M+_talO-N? zetak8yQmnV3UBoxvwuQ`nx1?}@Wc;Hu?ltmZq*^Q9pW23YBD)shU0KbXX)%oJbX@{ z38q?z!&)GFU0cqu`2v0uzGr|RZ8U2}oT-=@l)*xLlY(ffPO$>~E>~^#%U|S;{(<7} zn8{|HSAZS3~}wAevife1DKnCNB<}DI^^f9`|w;uyy2avjyXl;)%?Y!!FH%-$y@&`3H2+WGL0; zOaanHArhAY7C&s13r@0pJ4 znPPECj$nUYapzV!AVRr>1-v#gEf2ymDgJ!8#kDG_X=wOL2Rth9hqT=CZy%?7-QjEx zta$%&y#+-WiDU;5&H4L_R@~CyyplnO%$!nw0!d%tu11W`ApI4ccH!RPjpnsp`2r$? zoQYp$UG{&;3U+Ho>>G`%`d8${++=?CSnUf{Htt5%C)KCAjTP%lB3j__q~Vn*w}rb~ z@Ey^Mq`_--Tz5>gHOnSj+$G)#5JM$r+us)*8< z(_L{3qAzrkR#SBOqsc*OM-Bq#7Tx9UBQ&RIYu9E!8sI!t z*N3^KJsHPxuV@CwDLt^ZL5Y)Tld@-GA>!tuW73+nA0$J-u*x~rZ>JU3D%(Ur#zchg zxSTOG8(#Rb zV=hJLzcUT)q1a-UhnLi1cN+dFh={?Hz631q#->V~Ku7%BHoFp${crnC_3rJ%rEy1OYOoD>RrC$fD2T%NMs%_L3|w)``bDr3W$J zbb;BCr;?HO_QJr3A)ph=UibInSg4S}PnJC9OBMJ2FDaF?e5^q;tL>zEKIyZvRZs$ym+A#OHc?YrLN%+2S!d)5-xTbm-duE}a^AqPB3evJNlzXi)h` zEM*#vXAlC+@V;|n=E7;)&64vJvyvpOxH4mB=OA}ZDLOU@PpT^4Daa#B7k?SnrS08eX4Ev_JQB4#;2X-{KKSbBoAzCNur%e zE#jYA{V)`Tb`mQp(HP1(6WMTePv)aj8b3|QERn?i6b3dAdZRM)GZ@gmWN+7KIXxk^f!$;{BYBMi&*4it5K+v zrY0Z>h@lXb3`;K=Mb=e0g)5^s&K=H{p0g%VXfh~K-0l+;NW6nra?aIU{)6TMjwg&w zW3@=zieZcH%$LJ8CP3{+wFu$9Z$3cqitwMQ&SD_~FbxC{5ZixEJ|zF&!Sz4sPHi}2 z^`o?JMOHR1);0jLv~jPLc-YUM5F#p6phFJCKRZq`Rz zekb`U5u#f$h)Vbh{Usi<6MQ!V{|WiE)ZZg)NAH6=+#?D%;2U@sAGA{unzB^>t(5#- zG~j!2%PaBFqyL%n^~E2e>coaKj7!Mor#j#!y+XkxQb50s3S3ix zxVA%)oOL0|sa~CxvJ_|Y@KUUOt1QdBy7=kmxyyQpqfUL-3i>&m(vv43IVo$VJ@AI4 zEazY2d2#4QOrI=j?z>054#XMv4sFt;(ZVhvPg{;X5>6H8M0N_X<2t?f-Qq4mo1Toj z%tF_Sj64oZS<>1zsvRpoQBQJ7Lej;vqRvf{d=Aw>U+c6w!+5>`BRC zWdC%xIvD>4nF^Ad$CJ$0smD0^fkBS`!`;3=8I;ktnZ-lGGFK9$2{v3a2l3+39I}`k z9crO^<_oWU&Q#g)A??9_2$QLH^0RX1Ci6$yTOJ~>h>ucomgA5mitfP}+P`W0kZWe{ z#{ei&m0=G3tHZ`wQ&#LLj-SRF6X-yyCkjD5w=x@s$JlFVk(dYG7Zz>;%w~(}IW_6)&rYkmOxh`BTV(jvHoVGYeHyo5m za8zW6cAnl!V0@aEX!UgQNY`udM38Z4adq@`v1K`dX|AzZIP@vB#(G^Cui<$IB#8F7NoP-HHl$e=bgPyux~iqlhPsv_A0V~9CDUQ zX|3tR<0#WkWE*@xg=+Pl#!D0Os>X~A=2uSqtudZ4&p!7nYBQg_Owp$LZ+jGXutOgb zJq=xBVX*D5ZbGWECL;{xpIfGUiYi(!&vhhS!ka$shA4W8PL|d|%r%_e^ya*Hwa*{S zM7n=sc%fq}GGp{+5_hJKHcK-FM}|0@v0+?D6CEs)`}t z=rJ*&+NHi@b=>OF5OL!OY0IH6$fIL=7{#i-4zs29YK=kBWX+BCI(KKB$)Inu`q7Rd zP9xD$3bw6G1Q#+Y+@D4A+qx$d9sekVnWNUc`~5^=%M%&UT6`$ zu$tO*g1tGDGHOy+b2{No%0P2^WeV5+0vLWA(HjOIDvX)46A6%Y68W*fLPOdjby{RO{Y1f zwaY7c?keclFk|)b^y!=mN<1)G3RzL- z7vuRBvwT-7lR2cA=ESyKQ)c2EI-p4#Qua!@io#<5prMt|P$#PFR^dpGwJE8Iz&qd_ zg9W#)M(o9;&YcI?oLbdTS;4V4wavsQ8qy6@EEKV{9Cc}9_g(CO@`COw;0Mg#=A$)Ix^ist9QyoQdoP} z)23f#G}T2GtP{9dCy37a#lvqzTur}xIkiTNmlwM}T_xM@3tFG+i-rIt>i|}Mm+tm> z2?*F_saqfKBf3iCZ?M^%Oe2Ej#`jQWh~iI)%GWs~CBYK*n%hyn2*3_l*q{r) z{=!Jt6p>>NALUniSzeQbDKL@LzS5W4a0s287KL1wlQvmN&}JmS;vDOQUYLz`R}&AP z5MLO|TH0(wpsbBXQr!blV7b@fRPKPc&5u_CwG9SLU4t1MnvQ>8brqB4`t#F?1h&?ONfJ0NoC$64F7JffVPv(xF(G=$WI>nx-85cy z1ZJW%tL!{pRUf(`GEmi5LRG32!C&Z>O(Qm+l_vnT-LDR^#t>ggFU~k3x$XrL?*J@5 z@Ogmhk8AnH?e9cy$9uqb@ykC6)=puk;}A`Siv4%@_lHJ|Ub7xAiUWgasVEbQ9H7Id)kNy2#FW@3~nCk&drlrr#kbB_5)9^(D+qRhIb|6K6LGrIM zLOzW>1QpJ@WVhDfyGzD9tU^$QPF^V)!PbcFo{$I6v+uu;i#xZE3#*o$p4@Fs`8b|p zxVv9a*EhuHD&$Ws{&(}n}1jV+1JH8wdTMTpLN z{hEl$7gm-0L~9-vz-VECw)1AneQ@c6r>c@;`h3QFhdJnnr&2s`KO$@`4fS!)eh1g$ z@<*npv{=$+@R$5C*Jzkv+n7aOOu?pkw$o<&)u0Y*AWrw&I@nP zO8&e@`1*^-4|Y#6lUuxyYvS}Xmg5r$6iUX%xSHCKy(8hp|Ih_xdt?KDn>z&S89v39 zFe4H9Roglvj(l#zX zVlHAc9sVKkKE=sCV39A{}*Vv$-B z6t>V_{OoG(NM~o&s9lSqpD+Cyx$k{fbV{9j&OORTwHap^6Nxcot^xN%B%t^huDsYS zNCugfN-2H&FO{&Oa*1%A-j+vEC4CXar~)z;r80jqMFZQQ-ey$Jfhra2`v<~A(pNTF zV#NkK;6Oha922f7>?a!LQVCk~#~J`^K4=cH7Vik3kDu@bKS~H~J&;!zo_DCL=-3q* zz#SR>8`{7vo8vWjb+>;Fyx7cMMdA}y5$-_5D~Qj?o1_~A?SZ+-E4#(rPdU5+p}z&n z$(FEm+Vs^6uRE*j&Bp?cXvf1V_=swd)6n>a=lOUh9pNRP+%xCk^2m!ED!xJ&BB1dA z-7A|8nv86CcXDkj5#Qu^K;1MQ$%ovEE?1#U5LlhvK{Ay^=KT26UzB$lP`vMGPPEY|c{n3z1Pl;!Bc$?QbVh@4v?4gs4`pMb;5H3L=_C^AW0UsjBEY5BtvOlDEN;tam7^-BY(P1LWXAbJ>2aB>EyJ@=dzXLP`a!vncY2 zVJP6j{9P+@RfXbT!&bf(J&Z^ZAd9g@FP7!-EQTIzv&fK^ami1Os?pD-A%q$&7)4Xa z<{1IWWtd%!{=%I7&6;7&Lj+@`eWu{x#?R-4MWVm8Ei#jvO*AwXcBQVwgdo-ZT(lzs zH60FawYaL<^E5ArCo8Aejkj>Xfvpo+Vk$5-Tp2vn7=^F7Zq&r0F6E`OX0Q$2#fUok z=nRrA&gcdE5l|@>6M6M=q7x7#vJz5x`xTRSGwzuZ)0RpQ2_3a>g;}tN<5JZ~EYwWw zH9ZU>N@S(rSI@W9XSPxqM|(`of|2Wh~W?o2Uji?O3grsG#>pHNUrll!pmY8P2BL_vH4>NjP?TMocP~89eIZ3%z+RLI zN0P`X-__4Qr!Gccz%N`E=`(x_;aF;+mce1e=amdQ!$UQhsdPI{I;i~)S}>$2tsI$= z{7l2=?yXDg##So>zYJvq{~8LXlbz&i+NtCg@t~{eZpVky~GhDG5)BLyQTIQyy*=pR#*T= z#fz26K(oR%+TYzX6(taINpqtlkOR6D-WK_qocduH*t>_};wF&Nb@FATHi-ryWyDMa z4!-(`N=rogDEuHEr+ackkAuf%n;3WiCYP6rQ@Ji&W$5_Qziv^3v{h#4t^c^?!{)AQ zo!@)5nU+aLY0vED!BNN>CU3w%XlAR3pX8f5*_Fu3t{`-&Slx4^n2r`RiWD2un9;mq zM|URJPeIwM)cNxW|9#}w8@ym^W%Z0`D3xK_ji>8C!7>q%SS)#D4rC?Y?nwM&U6SQNv>NX&%#4lzP6*^k%$ zRw~gCRGz`jBP%=w<`tl37-J%vTb%Z`%62?UQZvIDtOyzv0Z zUB-}dIzJ%&ndQ7g`xSfRj?^VTE!MS9@~bFtR$?%FNNbaSuCuWP`2u`lpp1AE`VX2l zQjvyKO)863K7!NSH$;ZHHjgm0VkdRtnTm$GFpsDApXH5in0sr)k~^&vO|)y1Q=>ot z7ifTBo8T)b&gwkrNLPl-cTnPQghcHRJpL!W7HxL`sySQyxf5&zNH#+p{Y_Gtl2ype zPwQB2qYX(Pa?nCH%)?yB(7?ad8Ibj?xDH!hzh2nRYFt<*I^PdcN%1l9GlTI=GxzY; zu7|v3FfhmZ*JzH!zU(*CMF}!FVpj}Sz=AjQS`5-aKJ zaYmq0Qv-mG@x?9Q&zJxSD&CN6L9*nB^y73DDSAjm?KKsp>?A`)w8V7|Z}h-Y64^V= zjCct|y1xHgLi{I9`Clfi|K1}}-^Rw)>7V{f|HEq)b&6R&@h6)u1pMn4+rLeC{vU@0 zZLOTGZHWFc&TVCG==2X4R$H6@%!4Xj$so$Zai`dHY#6^$fHm%d`mg&d@WVABYo_N% zVOq3{&A(czC$}4UvXX1+^rFVcht8S3UJ0U~=wJvE(vP#GovpDmI$k^3_o7tk|L(r=lu>gMpxuQM336;vzP}m}e2LW`a`HD>F5Zo^eCSfyy)w3*4wyxGv?9OV zkmgy@4CD}sz+75q38+`EOogf&pQy5^n#^4ux1BT)_sZBHPq&>w8948#cnZZ{^U*ZZ zk~FPW6Celnq#1}kvv;l7+H}_3c&?VURZ{P0pSh*5##t40S#EJBv<#w-VRcBWaF$H< zGyLFmnLw0o&qA_c)rS8lfXt%1v8UBCMe7j~B5n{|+w+VefotgmX&G>dpb(xX$UVaD z$>?;)Z<*Yf`cz)5Nx<5ISf?J@dJMe&a@@`@wbqlkJZ$vi%C5-Gp7`GB?}gGqYmM*( z5uvxy6G#=;kMA#}let*;MABdyfn^&*mo%lpYH0V|<-ixu{tJrT=!ZH&smklR7PGy< zsj8L_nUuSMPDvDG@aI!#Mb^c;{z9=Iwq!7uOpqUI#U2of6?}_?7N-mF8Qj}6)Qf1) zPI581j(mScEPJ;mSGIczas1O%XeJlTM;F#Nxzc{RAM1LQEh@RPv^EgT`O=kc)pSP&)yC50HqGKL9w0Ap(>*U8MwF zzBeJ#+3Zgt73RIlqcH%W0_Q?+w7dd4QjJt^q^Bf50cn;ff{1xO$psg-P;5pEh^&8m*IVA2FXG_)aUOqiU zVIXHfT(lUt+{^vxDvv0D0cId2}Gk}n)V3I^K{k+?o?XW5O^=r4R2trhP^ z>)w2JJ3h=a9D9r*J=%9YuSjzKHb9p>LMBD+oA_*0GL!~&Dv#PCiF;R=DYr-fV?-uX zcDxBRDUl=UyO7%2pi&1fv35y_L|fHROVto7asWt4x!O}?M&L!N!K#EF=b`@wK5iK^LCYcZPniI{>|>l z@5E{+=vA2jQtwvnuax2ePfr(x3Ua;I?FS!;j)tl)5ZDR^9!am&(TNpoxAnk|jv-x4 zL)BF8y1S@plCkS4r z%p}N<#A*)-rI@&dkCd_v@DbR}7|5eAY^V9tqes3kE1A7Zn5AI62>eLgiagCILK>RLme$sk{d3r1aXcFFJuqF_Sny~ORjmwSe zw+uBUmeyR>@L0zOLbntM49#3`w?*$<(N`MPN0mXRHxgZ2PGyy8z-u-QvIei(K^xFw zv2|}C5o^XTuBKf@FZaimzl}F=?k8+D#1x@PL#9<}&wAp!WOZ2Yo#}bgINxV1xC@hW z2)IA-tC~5CQ6#^hvlJ&-E^0Vu3%%ne#=snL;pNM7RxVb-3I|tFDn+z2-D`65Ah%0i zC<;c6^Eq-(jM5!`_4t~L@NQytz3)VXn4j13m7rw_bm7}!hyALx3;08X0=Nq%3A8zQ z&khH#)<^Acb1)4iu}8ySk&@?`kiAUf*&g%sXWmh;|f`GhMTC{W36?0eyhcP*8N@TNY z<6MsYppk5nd|4rVguy&QkNE-!;0#(W`vfF?vq;0DB3cuMc&83(IQq1X^62Xofw^gU# zJNwbemVHYMP>1(7y%9z?>|$|6X1#pTb|E~>fQaY;_%Ygl zYWYTMMWt8-;!b}`47kSqjN=qSsyTf?7HoXn?BH1Yr;z`O#}5Sm6(6Gfdpzvy{zqWg zo;)9?_k*Ir4~qZZ*i--K6u+I_PbB!y(DFY)jQuBw!QXo-5Xf+}T0*g{{3tB;%b{FEJ~uzfjGL^z>&^|3bmo zndQfajiXSY{IpR}mKnKC!P#a(qa$#0qd>iNEA6}RV2AzG+Y!r=KGqKs@L>zbR)&P! zXicF?yk%vzuY(-$TQNX2qP4F-Y*t=K=MVB0%LihY%Td8_;%O?D_<$74@~Iq4PW(u1 z3i(l*g-&3-`mhW2IY$SY?GAH;4MBkw%LYu$zBtqJ9#3+HZJk-i+bben7+2!F2y)C? zG%CKAj?IxFklVQra0jB>vY3+@b!ULm#pbf6P(c|l5~k#i<4q3}u25@DAq+<2rG|4=df}kfhd@&+JWm?bNfM@+CYlH6V(Xb5)?^g z0-kx-_6u1vw@N!+!T2ce44W8!j?w-f4qa7 zgRP7C|L13__A})*g#AV0**SGg%qIYbDG-?(>!~>?_glyy5JL(K0j8kow%$DuG-In) zl&HD+>GVimvuRtjsd-U_QeaESd`U%8({t^k`(|UiO873r-Ii6~RdB!N>y@67^MSYL zoBrYcQZj}YKrfB#sQ|j=wGO1^-5%2>rGgWJeY0$jhWC1y+sEzBk6<(6=%<=r%xD+r;kM{swV)Vtx7ip5@>VF=w_AI5UMg@{iGEQcXkzU6b(oJ^ za9o@x{G)+X*aL+#!}wkMHje#~pNTo%?A`RTcNjT@0w2)DLp8;v%iqBHCl9>5fg zjbnkxFwZcUb**bS5$FYlRF_R4gdzm!jKCZvL|R)-BWU#g`h*Nx+_v~7(kP0dC!T7PBI}B&%5LANs5_g#c9j?1-T1Zi{na~2zzFW^9hyw zF(IDB|40$;WbijzwA#=G7ED2wja|cTp($E+Cv6wF#d7smr>c;(h!m=6Wz`RScEKF5 z&>V;{o6k*)WdN3`nF1m-C_mItPN5C0Hi{gc8N)}pg&MOmN)=>i2Ru`g++AWKdId<3ThZvlKz{D?MG21wi!tb#Nog_T}Dre-;BOj zh)#;vrsHX7Vo(t{$eAAsB$Fl*&gaJ*3*P2XKq+Cx{28baKLALvLE|>Gd?a#_zgfj` ztgpWbl>tPFp)X^!d{xJfp_?2Mk_RoE055P%TwL5}V~lfQQoh|lYd)+7MA*h~Z#OAs zg(Hl<7PxTAx^GfTh#n!TT!R%Y{89)&cBqq2I=q zbOlrP)#(DVNDBPtop3I&$+FRq6CTh<6V~CC@T;%@+w@}9kN4sgG8?rtHGl8ymGWyi8D6XM;3l3u(D&4h zd)kDlLEWhnbfrN!Mrc)6=qC?ri)90)CS?Ji$nvQO;iWUub88FzJy!?&ZG13y_xr2l z08MA{PNq|G1iDpzgiL4tPUT0FvJ2t`lFbH6qT1}u1*)Q^-@==fpf`a8T-LUeA^B({ z?O{lt{+28mt6ab$b%!@r@h~Ma7*sN{_mrvtOUvS65VIj5?eB5 z%qV;d8VR9}{1m$O%TlYB;oe_6t-qU^7|qYJ6wKAFyG0H#WadNNo3h$i#7JuBxva+1 z&BhDJTI6N8n7zVEyOMg2oXSlVo7vqtYjBEyPuNnz_`I#NAt}0PCq1B_vv-Ebr6sqC z84HlqcnPseJP)n(n9EzFW@y4*g4-`YLR|Gy8}e1n`J%hM%5{rgBrYO1)BWF~xh8A2 z84tdF!dFop`Zs4jwdu&oW&T+8P!)xfN53{Dpdg4_u^i0ZhFS?llpwJ1GpU;;nQaC~SXdDUWyHeD3bH|2pZV z%|X-pIAYFT<3%0PdXVnFsbvjWaV=P{zh`)hx=W7K)Q;-m(&5_d z#^&zQ>;}uv3nbf{C14Lhe3Xr3g57`V(8Nd@r10?xHvT?L$10sH;C{vhL#~wQi49|$ zen64JX7{P_5&%JXra&pdMpM++q_sr&2V^lfj#HWqaEc2Sq0e}=Ul&B<7N)W{imNAz z6d~Ag%pJtVfYF1z4%xeKQ$lUMts#n%7G)2?>SUZ4-+mWj7eb3qgJ0WrU($vWpnDWx ziN_OA71gl>4VYFxE|?YK?zc#5Tfn$gW=^qK*uy|z9)8f9B@Dh?lE9IoT5a7K8J9HZ z1?I5a(s}hg)DFy)_b(e&NsKBL+g{D~SUT$yE$f-V`@txO8SC4mY=>Xj^B5mx>(#_ifN;Hro(n4xdlLLUJ8$DPYEM1X-o?-{06>6=xtO;^q`2{8#BvAnQB z3&M5f1T8wL4t)i02%NsJ>xEO18Ub zz1gq=a0Q&>)9w?;jg+k50-KS5aY8CrkZMWmDl1$Fuak@Oh( zG=+YVA?}`5-_0K2(h$(Br9H%r{!lbdNL!S=e|4F=P85?&5z{Fp=<_b0d?oJ}-?V+E zycJbc6IWF@cg7Iqf@)EzN-e_jc?B&hpS*2C>s6&uyB2As}4lgITJj?1rVsU0k3;FsJ$)FN;1&gpBSgoJnb^nnXxL#pf%QUIki@rZG$1nMDA z<%F))<`cBzk{tA#17Dv_&gsempfs+bvqdEG%1k$_*QGr~rvvdKyKL!9d9_S=H^t+v zdKGlxgJ?Zr-99u8SV3NYWvTq75PHrA2r+5_b8>ksWGl@F`Dn$`gTLec8F$Xc0eTak z6y3r7DgP~d^Anr@mwH3{w}HC7v$2Ew{|NAj&D5D1fApK@&muLV|K*&Jv6ZpYe=bmp zQqY#&|54zAeg;Fx>O;2t-hRY32kGAZulcV^ya-TZJTS(C_(j^1^mn>v31K83fS>Xv zH;vjV!lAT|HVu#D4nE}BoO>6TCN(%}N6Y#rewb8NY%#I`y z@ZC?FfCnmxwe2}hn*x3NG-0w1sb`L55S^(V%TQ{D$*H~&m z`+JyU0ttW16CM`bJfXQvsHE)JE$rEha5=g4=vG7$<01x?mf=ybunHKHbviqLeB?A_ zz3l!y2X&SyRWEVj6HtU+vv;Sv4fA9$a3FX?gm#Ov4AJk_awpyd^Ez`mT{m+B+(8*p zc*~B~x$NjSj_X4jSSNB1S~Hl9Iam3cuVb*9`iTtH_Kh;Fp{)-JHDr%fkIj8DGv|xB z;Vf0IoW3d?P7-rDhh~9PhN}U+ekE^&q_~6AdrdB`m#)H`%LgD%MIfop@>?H7muy~( zKopGFP6jQAIXm`MnHc$shALla9^aB!iA<OMUesNFrx>jHtr>`kNWJ}5Vf7YESp%EQ zJ`iVE%5Yz_xMU_Ckj!SQ^yaY4f{FS1Wky1=c}C;e{-S;Ek1gnQ2KrQFp-&DkPnPSB z_Vo9T;|%*t=iX6;st#WM6V}7L^&@bU&b

cb{O(yl&X5WmNZRkwV9bF?>zvYkX+W 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 aPqnHF@Zc9Wu$l+>FYYcBl*8xi|NRF-Q?3R8 literal 0 HcmV?d00001 diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index b4031fb0..20d5d7d7 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -24,6 +24,8 @@ # ActiveAndroid -keep class com.activeandroid.** { *; } +-keep class org.nutritionfacts.dailydozen.model.** { *; } + # MPAndroidChart -keep class com.github.mikephil.charting.** { *; } -dontwarn io.realm.** diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 75f07721..1c289978 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -29,7 +29,6 @@ android:name=".activity.MainActivity" android:exported="true" android:launchMode="singleTask" - android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden"> @@ -55,14 +54,12 @@ + android:configChanges="orientation|keyboardHidden"/> getServingsOfFoodInYearAndMonth(final long foodI } } - if (placeholderArray.size() == 0) { + if (placeholderArray.isEmpty()) { return new ArrayMap<>(); } diff --git a/app/src/main/java/org/nutritionfacts/dailydozen/model/Day.java b/app/src/main/java/org/nutritionfacts/dailydozen/model/Day.java index 16cd062b..ae3a509a 100644 --- a/app/src/main/java/org/nutritionfacts/dailydozen/model/Day.java +++ b/app/src/main/java/org/nutritionfacts/dailydozen/model/Day.java @@ -134,6 +134,10 @@ public static Day getByDate(String dateString) throws InvalidDateException { return day; } + public static Day createDay(final String dateString) { + return createDayIfDoesNotExist(new Day(fromDateString(dateString))); + } + public static Day createDayIfDoesNotExist(final String dateString) throws InvalidDateException { return createDayIfDoesNotExist(getByDate(dateString)); } diff --git a/app/src/main/java/org/nutritionfacts/dailydozen/model/TweakServings.java b/app/src/main/java/org/nutritionfacts/dailydozen/model/TweakServings.java index fdb83443..95aea648 100644 --- a/app/src/main/java/org/nutritionfacts/dailydozen/model/TweakServings.java +++ b/app/src/main/java/org/nutritionfacts/dailydozen/model/TweakServings.java @@ -97,6 +97,13 @@ public static TweakServings getByDateAndTweak(Day day, Tweak tweak) { return null; } + public static TweakServings createServings(final Day day, final Tweak tweak, final int numServings) { + TweakServings servings = new TweakServings(day, tweak); + servings.setServings(numServings); + servings.save(); + return servings; + } + public static TweakServings createServingsIfDoesNotExist(final Day day, final Tweak tweak) { return createServingsIfDoesNotExist(day, tweak, 0); } @@ -183,7 +190,7 @@ public static Map getServingsOfTweakInYearAndMonth(final long twea } } - if (placeholderArray.size() == 0) { + if (placeholderArray.isEmpty()) { return new ArrayMap<>(); } diff --git a/app/src/main/java/org/nutritionfacts/dailydozen/model/Weights.java b/app/src/main/java/org/nutritionfacts/dailydozen/model/Weights.java index a9163d55..7f3466cf 100644 --- a/app/src/main/java/org/nutritionfacts/dailydozen/model/Weights.java +++ b/app/src/main/java/org/nutritionfacts/dailydozen/model/Weights.java @@ -59,6 +59,12 @@ public Float getAverageWeight() { return null; } + public static boolean createWeights(final Day day, float morningWeight, float eveningWeight) { + Weights weights = new Weights(day, morningWeight, eveningWeight); + weights.save(); + return true; + } + public static boolean createWeightsIfDoesNotExist(final Day day, float morningWeight, float eveningWeight) { Weights weights = getWeightsOnDay(day); diff --git a/app/src/main/java/org/nutritionfacts/dailydozen/task/BackupTask.java b/app/src/main/java/org/nutritionfacts/dailydozen/task/BackupTask.java index af416467..7e85a0d4 100644 --- a/app/src/main/java/org/nutritionfacts/dailydozen/task/BackupTask.java +++ b/app/src/main/java/org/nutritionfacts/dailydozen/task/BackupTask.java @@ -5,7 +5,6 @@ import com.google.gson.Gson; -import org.nutritionfacts.dailydozen.Common; import org.nutritionfacts.dailydozen.R; import org.nutritionfacts.dailydozen.controller.Bus; import org.nutritionfacts.dailydozen.model.DDServings; @@ -49,19 +48,16 @@ public Boolean call() { final int numDays = allDays.size(); - final String lineSeparator = Common.getLineSeparator(); - - final StringBuilder jsonLines = new StringBuilder(); + try { + final FileWriter fileWriter = new FileWriter(backupFile); - for (int i = 0; i < numDays; i++) { - jsonLines.append(String.format("%s%s", lineSeparator, getDayJsonLine(allDays.get(i)))); + for (int i = 0; i < numDays; i++) { + fileWriter.write(getDayJsonLine(allDays.get(i))); + fileWriter.write(System.lineSeparator()); - progressListener.updateProgressBar(i + 1, numDays); - } + progressListener.updateProgressBar(i + 1, numDays); + } - try { - final FileWriter fileWriter = new FileWriter(backupFile); - fileWriter.write(jsonLines.toString()); fileWriter.close(); Timber.d("backup file successfully written"); diff --git a/app/src/main/java/org/nutritionfacts/dailydozen/task/GenerateDataTask.java b/app/src/main/java/org/nutritionfacts/dailydozen/task/GenerateDataTask.java index 723857f3..0d92cbe3 100644 --- a/app/src/main/java/org/nutritionfacts/dailydozen/task/GenerateDataTask.java +++ b/app/src/main/java/org/nutritionfacts/dailydozen/task/GenerateDataTask.java @@ -99,7 +99,7 @@ private void createDailyDozenForDay(List allFoods, Day day) { final int numServings = taskParams.generateRandomData() ? random.nextInt(recommendedServings + 1) : recommendedServings; if (numServings > 0) { - DDServings.createServingsIfDoesNotExist(day, food, numServings); + DDServings.createServings(day, food, numServings); } } } @@ -110,7 +110,7 @@ private void createTweaksForDay(List allTweaks, Day day) { final int numServings = taskParams.generateRandomData() ? random.nextInt(recommendedServings + 1) : recommendedServings; if (numServings > 0) { - TweakServings.createServingsIfDoesNotExist(day, tweak, numServings); + TweakServings.createServings(day, tweak, numServings); } } } @@ -128,7 +128,7 @@ private void createWeightsForDay(final Day day) { eveningWeight = round(180 + 3 * random.nextFloat()); } - Weights.createWeightsIfDoesNotExist(day, morningWeight, eveningWeight); + Weights.createWeights(day, morningWeight, eveningWeight); } private static float round(double value) { diff --git a/app/src/main/java/org/nutritionfacts/dailydozen/task/RestoreTask.java b/app/src/main/java/org/nutritionfacts/dailydozen/task/RestoreTask.java index a7f71116..c3a37ca1 100644 --- a/app/src/main/java/org/nutritionfacts/dailydozen/task/RestoreTask.java +++ b/app/src/main/java/org/nutritionfacts/dailydozen/task/RestoreTask.java @@ -84,11 +84,11 @@ public Boolean call() { progressListener.updateProgressBar(++i, numLines); } while (line != null); } else { - do { - line = reader.readLine(); + while (line != null) { restoreLineJSON(line); progressListener.updateProgressBar(++i, numLines); - } while (line != null); + line = reader.readLine(); + } } } @@ -164,23 +164,25 @@ private void restoreLineJSON(final String line) { try { DayEntries dayEntries = new Gson().fromJson(line, DayEntries.class); - final Day day = Day.createDayIfDoesNotExist(dayEntries.getDate()); + final Day day = Day.createDay(dayEntries.getDate()); - Weights.createWeightsIfDoesNotExist(day, - dayEntries.getMorningWeight(), - dayEntries.getEveningWeight()); + if (dayEntries.getMorningWeight() != 0 || dayEntries.getEveningWeight() != 0) { + Weights.createWeights(day, dayEntries.getMorningWeight(), dayEntries.getEveningWeight()); + } for (Map.Entry entry : dayEntries.getDailyDozen().entrySet()) { - DDServings.createServingsAndRecalculateStreak(day, getFoodByIdName(entry.getKey()), entry.getValue()); + if (entry.getValue() > 0) { + DDServings.createServings(day, getFoodByIdName(entry.getKey()), entry.getValue()); + } } for (Map.Entry entry : dayEntries.getTweaks().entrySet()) { - TweakServings.createServingsIfDoesNotExist(day, getTweakByIdName(entry.getKey()), entry.getValue()); + if (entry.getValue() > 0) { + TweakServings.createServings(day, getTweakByIdName(entry.getKey()), entry.getValue()); + } } ActiveAndroid.setTransactionSuccessful(); - } catch (InvalidDateException e) { - Timber.e(e, "restoreLineJSON: "); } catch (JsonSyntaxException e) { Timber.e(e, "restoreLineJSON: "); } finally { diff --git a/app/src/main/res/layout-land/activity_servings_history.xml b/app/src/main/res/layout-land/activity_servings_history.xml new file mode 100644 index 00000000..ea43324c --- /dev/null +++ b/app/src/main/res/layout-land/activity_servings_history.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/time_range_selector.xml b/app/src/main/res/layout-land/time_range_selector.xml new file mode 100644 index 00000000..eeb5e817 --- /dev/null +++ b/app/src/main/res/layout-land/time_range_selector.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/time_scale_selector.xml b/app/src/main/res/layout-land/time_scale_selector.xml new file mode 100644 index 00000000..ac9747b8 --- /dev/null +++ b/app/src/main/res/layout-land/time_scale_selector.xml @@ -0,0 +1,20 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-v17/food_type_item.xml b/app/src/main/res/layout-v17/food_type_item.xml deleted file mode 100644 index 92fca05c..00000000 --- a/app/src/main/res/layout-v17/food_type_item.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout-v21/activity_food_info.xml b/app/src/main/res/layout-v21/activity_food_info.xml deleted file mode 100644 index d5707536..00000000 --- a/app/src/main/res/layout-v21/activity_food_info.xml +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -