From 4ca4b83c1921a4f0116a78a0c983eaa4cd891701 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 13 Feb 2022 10:57:36 +0100 Subject: [PATCH] #672: calculate average incomes and expenditures per month instead of average over all transactions of a given year --- .../budgetmaster/charts/DefaultCharts.java | 8 +- ...AverageIncomesAndExpendituresPerYearBar.js | 112 --------------- ...MonthlyIncomesAndExpendituresPerYearBar.js | 134 ++++++++++++++++++ .../resources/languages/base_de.properties | 4 +- .../resources/languages/base_en.properties | 4 +- ...verageIncomesAndExpendituresPerYearBar.png | Bin 15994 -> 0 bytes ...onthlyIncomesAndExpendituresPerYearBar.png | Bin 0 -> 16700 bytes 7 files changed, 142 insertions(+), 120 deletions(-) delete mode 100644 src/main/resources/charts/AverageIncomesAndExpendituresPerYearBar.js create mode 100644 src/main/resources/charts/AverageMonthlyIncomesAndExpendituresPerYearBar.js delete mode 100644 src/main/resources/static/images/charts/averageIncomesAndExpendituresPerYearBar.png create mode 100644 src/main/resources/static/images/charts/averageMonthlyIncomesAndExpendituresPerYearBar.png diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java b/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java index 6afbf2681..ad67a8300 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java +++ b/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java @@ -58,9 +58,9 @@ public class DefaultCharts getChartFromFile("charts/AverageTransactionAmountPerCategoryBar.js"), ChartType.DEFAULT, 3, ChartDisplayType.BAR, ChartGroupType.NONE, "averageTransactionAmountPerCategory.png"); - private static final Chart CHART_AVERAGE_INCOMES_AND_EXPENDITURES_PER_YEAR_BAR = new Chart("charts.default.averageIncomesAndExpendituresPerYearBar", - getChartFromFile("charts/AverageIncomesAndExpendituresPerYearBar.js"), - ChartType.DEFAULT, 4, ChartDisplayType.BAR, ChartGroupType.YEAR, "averageIncomesAndExpendituresPerYearBar.png"); + private static final Chart CHART_AVERAGE_MONTHLY_INCOMES_AND_EXPENDITURES_PER_YEAR_BAR = new Chart("charts.default.averageMonthlyIncomesAndExpendituresPerYearBar", + getChartFromFile("charts/AverageMonthlyIncomesAndExpendituresPerYearBar.js"), + ChartType.DEFAULT, 9, ChartDisplayType.BAR, ChartGroupType.YEAR, "averageMonthlyIncomesAndExpendituresPerYearBar.png"); private DefaultCharts() { @@ -79,7 +79,7 @@ public class DefaultCharts charts.add(CHART_INCOMES_AND_EXPENDITURES_PER_YEAR_BAR); charts.add(CHART_INCOMES_AND_EXPENDITURES_PER_YEAR_BY_CATEGORIES); charts.add(CHART_AVERAGE_TRANSACTION_AMOUNT_PER_CATEGORY); - charts.add(CHART_AVERAGE_INCOMES_AND_EXPENDITURES_PER_YEAR_BAR); + charts.add(CHART_AVERAGE_MONTHLY_INCOMES_AND_EXPENDITURES_PER_YEAR_BAR); return charts; } diff --git a/src/main/resources/charts/AverageIncomesAndExpendituresPerYearBar.js b/src/main/resources/charts/AverageIncomesAndExpendituresPerYearBar.js deleted file mode 100644 index df534b8ca..000000000 --- a/src/main/resources/charts/AverageIncomesAndExpendituresPerYearBar.js +++ /dev/null @@ -1,112 +0,0 @@ -/* This list will be dynamically filled with all the transactions between - * the start and and date you select on the "Show Chart" page - * and filtered according to your specified filter. - * An example entry for this list and tutorial about how to create custom charts ca be found in the BudgetMaster wiki: - * https://github.com/deadlocker8/BudgetMaster/wiki/How-to-create-custom-charts - */ -var transactionData = []; - -// Note: All variables starting with "localized" are only available inside default charts. -moment.locale(localizedLocale); - -var dates = []; -var incomes = []; -var incomeSums = []; -var numberOfIncomes = []; -var numberOfExpenditures = []; -var expenditureSums = []; - -transactionData = transactionData.reverse(); - -for(var i = 0; i < transactionData.length; i++) -{ - var transaction = transactionData[i]; - - // create new sums if year is not already in list - var date = moment(transaction.date).startOf('year').format('YYYY'); - if(!dates.includes(date)) - { - dates.push(date); - incomeSums.push(0); - numberOfIncomes.push(0); - expenditureSums.push(0); - numberOfExpenditures.push(0); - } - - // add to income or expenditure sum - var amount = transaction.amount; - if(amount > 0) - { - var lastIndex = incomeSums.length - 1; - incomeSums[lastIndex] = incomeSums[lastIndex] + amount; - numberOfIncomes[lastIndex] = numberOfIncomes[lastIndex] + 1; - } - else - { - var lastIndex = expenditureSums.length - 1; - expenditureSums[lastIndex] = expenditureSums[lastIndex] + Math.abs(amount); - numberOfExpenditures[lastIndex] = numberOfExpenditures[lastIndex] + 1; - } -} - -var incomeAverages = []; -var expenditureAverages = []; - -for(let i = 0; i < dates.length; i++) -{ - var currentIncomeAverage = (incomeSums[i] / 100) / numberOfIncomes[i]; - incomeAverages.push(currentIncomeAverage); - - var currentExpenditureAverage = (expenditureSums[i] / 100) / numberOfExpenditures[i]; - expenditureAverages.push(currentExpenditureAverage); -} - -// Prepare your chart settings here (mandatory) -var plotlyData = [ - { - x: dates, - y: incomeAverages, - type: 'bar', - name: localizedData['traceName1'] - }, - { - x: dates, - y: expenditureAverages, - type: 'bar', - name: localizedData['traceName2'] - } -]; - -// Add your Plotly layout settings here (optional) -var plotlyLayout = { - title: { - text: localizedTitle - }, - yaxis: { - title: localizedData['axisY'] + localizedCurrency, - rangemode: 'tozero', - tickformat: '.2f', - showline: true - }, - xaxis: { - - } -}; - -// Add your Plotly configuration settings here (optional) -var plotlyConfig = { - showSendToCloud: false, - displaylogo: false, - showLink: false, - responsive: true, - displayModeBar: true, - toImageButtonOptions: { - format: 'png', - filename: 'BudgetMaster_chart_export', - height: 1080, - width: 1920, - } -}; - -// Don't touch this line -Plotly.newPlot("containerID", plotlyData, plotlyLayout, plotlyConfig); \ No newline at end of file diff --git a/src/main/resources/charts/AverageMonthlyIncomesAndExpendituresPerYearBar.js b/src/main/resources/charts/AverageMonthlyIncomesAndExpendituresPerYearBar.js new file mode 100644 index 000000000..31314af2c --- /dev/null +++ b/src/main/resources/charts/AverageMonthlyIncomesAndExpendituresPerYearBar.js @@ -0,0 +1,134 @@ +/* This list will be dynamically filled with all the transactions between + * the start and and date you select on the "Show Chart" page + * and filtered according to your specified filter. + * An example entry for this list and tutorial about how to create custom charts ca be found in the BudgetMaster wiki: + * https://github.com/deadlocker8/BudgetMaster/wiki/How-to-create-custom-charts + */ +var transactionData = []; + +// Note: All variables starting with "localized" are only available inside default charts. +moment.locale(localizedLocale); + +var years = []; +var transactionsPerYear = []; + + +transactionData = transactionData.reverse(); + +// group transactions by years +for(var i = 0; i < transactionData.length; i++) +{ + var transaction = transactionData[i]; + + // create new sums if year is not already in list + var date = moment(transaction.date).startOf('year').format('YYYY'); + + if(!years.includes(date)) + { + years.push(date); + transactionsPerYear.push([]); + } + + var index = years.indexOf(date); + + transactionsPerYear[index].push(transaction); +} + + +var incomeAveragesPerYear = []; +var incomeAveragesHoverTexts = []; +var expenditureAveragesPerYear = []; +var expenditureAveragesHoverTexts = []; + +for(let i = 0; i < years.length; i++) +{ + var year = years[i]; + var transactionsOfYear = transactionsPerYear[i]; + + var incomeSum = 0; + var expenditureSum = 0; + + for(let j = 0; j < transactionsOfYear.length; j++) + { + var currentTransaction = transactionsOfYear[j]; + var month = moment(currentTransaction.date).startOf('month').format('M') - 1; + + var amount = currentTransaction.amount; + if(amount > 0) + { + incomeSum = incomeSum + amount; + } + else + { + expenditureSum = expenditureSum + Math.abs(amount); + } + } + + var currentIncomeAverage = (incomeSum / 100) / 12; + incomeAveragesPerYear.push(currentIncomeAverage); + incomeAveragesHoverTexts.push(prepareHoverText(currentIncomeAverage)) + + var currentExpenditureAverage = (expenditureSum / 100) / 12; + expenditureAveragesPerYear.push(currentExpenditureAverage); + expenditureAveragesHoverTexts.push(prepareHoverText(currentExpenditureAverage)) +} + +// Prepare your chart settings here (mandatory) +var plotlyData = [ + { + x: years, + y: incomeAveragesPerYear, + type: 'bar', + name: localizedData['traceName1'], + hoverinfo: 'text', + hovertext: incomeAveragesHoverTexts, + }, + { + x: years, + y: expenditureAveragesPerYear, + type: 'bar', + name: localizedData['traceName2'], + hoverinfo: 'text', + hovertext: expenditureAveragesHoverTexts, + } +]; + +// Add your Plotly layout settings here (optional) +var plotlyLayout = { + title: { + text: localizedTitle + }, + yaxis: { + title: localizedData['axisY'] + localizedCurrency, + rangemode: 'tozero', + tickformat: '.2f', + showline: true + }, + xaxis: { + + } +}; + +// Add your Plotly configuration settings here (optional) +var plotlyConfig = { + showSendToCloud: false, + displaylogo: false, + showLink: false, + responsive: true, + displayModeBar: true, + toImageButtonOptions: { + format: 'png', + filename: 'BudgetMaster_chart_export', + height: 1080, + width: 1920, + } +}; + +// Don't touch this line +Plotly.newPlot("containerID", plotlyData, plotlyLayout, plotlyConfig); + + +function prepareHoverText(value) +{ + return value.toFixed(1) + ' ' + localizedCurrency; +} \ No newline at end of file diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties index 07a048892..9652e9eeb 100644 --- a/src/main/resources/languages/base_de.properties +++ b/src/main/resources/languages/base_de.properties @@ -558,8 +558,8 @@ charts.default.incomesAndExpendituresPerYearByCategories=Eingaben/Ausgaben nach charts.default.incomesAndExpendituresPerYearByCategories.localization='{"label1": "Ausgaben", "label2": "Einnahmen"'} charts.default.averageTransactionAmountPerCategory=Durchschnittlicher Transaktionsbetrag pro Kategorie charts.default.averageTransactionAmountPerCategory.localization='{"label1": "Durchschnittlicher Transaktionsbetrag in"'} -charts.default.averageIncomesAndExpendituresPerYearBar=Durchschnittliche Einnahmen/Ausgaben -charts.default.averageIncomesAndExpendituresPerYearBar.localization='{"traceName1": "Einnahmen", "traceName2": "Ausgaben"', "axisY": "Durchschnittlicher Betrag in"'} +charts.default.averageMonthlyIncomesAndExpendituresPerYearBar=Durchschnittliche monatliche Einnahmen/Ausgaben +charts.default.averageMonthlyIncomesAndExpendituresPerYearBar.localization='{"traceName1": "Einnahmen", "traceName2": "Ausgaben"', "axisY": "Durchschnittlicher monatlicher Betrag in"'} chart.new.label.name=Name chart.new.label.script=Script diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties index b9bb2c5b3..69067d821 100644 --- a/src/main/resources/languages/base_en.properties +++ b/src/main/resources/languages/base_en.properties @@ -558,8 +558,8 @@ charts.default.incomesAndExpendituresPerYearByCategories=Incomes/Expenditures by charts.default.incomesAndExpendituresPerYearByCategories.localization='{"label1": "Expenditures", "label2": "Incomes"'} charts.default.averageTransactionAmountPerCategory=Average transaction amount per category charts.default.averageTransactionAmountPerCategory.localization='{"label1": "Average transaction amount in"'} -charts.default.averageIncomesAndExpendituresPerYearBar=Average incomes/expenditures -charts.default.averageIncomesAndExpendituresPerYearBar.localization='{"traceName1": "Incomes", "traceName2": "Expenditures"', "axisY": "Average amount in"'} +charts.default.averageMonthlyIncomesAndExpendituresPerYearBar=Average monthly incomes/expenditures +charts.default.averageMonthlyIncomesAndExpendituresPerYearBar.localization='{"traceName1": "Incomes", "traceName2": "Expenditures"', "axisY": "Average monthly amount in"'} chart.new.label.name=Name chart.new.label.script=Script diff --git a/src/main/resources/static/images/charts/averageIncomesAndExpendituresPerYearBar.png b/src/main/resources/static/images/charts/averageIncomesAndExpendituresPerYearBar.png deleted file mode 100644 index fa26b0d9e14df12726e3e7dffef3f82be0a1b568..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15994 zcmeAS@N?(olHy`uVBq!ia0y~yVEM_wz!bs3#K6EXUwer<0|NtNage(c!@6@aFBupZ zSkfJR9T^xl_H+M9WMyDr;4JWnEM{QfI}E~%$MaXDFfiEhd%8G=RK&f#%RT36@xLD* zm#thf+skEAbjscG+?{{dJe~eKD*Jlr^<8UDP4kXY);y`pqr7uX^eLgPBhR+E6nQS0 zU8KLzN$HBo-PzCno88ynf9+DomghD9&p$t${3~YP^XhYRPMWN@yg#d{tE(%Efq`Ly z=<oOY_g`aWU{J_jwR}Gl1A{|YMl1sZ!zQ=aObiSYOryjZ7#h}G+{M7akkSiLw?&VE zfgy5nDI){J38}T*3=9s}DAm#`9#@fQ#nMp!{a*EZUMZ7|oTcG$m8q9~&DTb6&)c>A zm)*Y~kCXc>)27Fk-7GlFdwJ>m=bz8p+kd?h+;8!yqvYS+Q>RX~@kj<mL`akyR(yES zYkqHs-(0JWcDc8<h{shd3|$>&IL|o!T&McH9bd0SAJ3DCSsk|a>-G5kpRWCX*1*iy z@xA=>S#$sA_YWUx<^KKk^>mxq&Wc@+{(O`<R(o}IxW4VXcB?lV4x8ObXkNSRme$<= zChzwD|K~Yb?d^`oeTIGCHRc`Le!tH8-4?fAsgsP^*FHQv{8;Y)^ZI}4bD0lFJt~c5 z*mrqN<mN@iR-sm3E;#G&`|(IRe^24bNvbc)-bHRqIw~Gtv$5jiBZ+<q!=!tADo_4u zm#?$Py0Ri=&!(Nl&(|F+SAX~Y<8k@_U)R^qwMkCg{dSwSzJ7oEmYScRzAU&ScK%qf zzwOrV_o~$|m*1;=-l;zC$8-DtKQFq=t7<b$(BGoRaNm1#+S$Av58FUteQJv4#R=;3 zYd&@B?~{1lEvDO5C=%FH{pE#W(UTJydy@NYziqu9*FDMRagT9Q&6A1l_iDf2ow|JG zw>!n>Wy|jr*8eyxpQL)pBuuXE$3qJ>nX(&+^J~9Fy1E`cGt;>K`|kUy-4o*qeRSN` z9Q!gOxv%oq%jMeVL*9Nk%>VxW{(7BbKl69JT=pbq{hm)=EYUuXRbqFS_1^vX`1tp? zx4&NvkMAw~{q61K+iJ`F=0-(CNHqWa{5-zoqHE!Si|+EW?_D>|zVl?o;=WfmH>V4& z<`&m`b8T(3&avGBk+WsCWu2a;+s(e=oYm_i7VrMX|Nj+!$0nxc<I#x+H{Mw2+^)TT zkI}YA>$<zTrs>5>bvLu|c4f+leYY!laiQY-ew*;ES^0ZD9-IH~%kqdf_x4uLvAkCO z{ax+#*z%)iAJ6RkT=U@|`*HdDnx6dKZ?`>B`?&7wtE<|6Uw_~KZ)aCixLj~u;iL+w zWWzomyS~nLxvCYOlhw}7HuqolF|k*f-|EGJ3Y(LsW*8<vs`Wqiu}-$;!$HH2<29ep znjc^Jh`I1y<@2M=-AB{s*P6+t-#L0Seg0gVw;!XG`uyLS-23|^T1e3@?xeEK$0Nd% zSM&+<$=liF$@w2@U}T>3-aV%1r0T~HkIbWGZZ7qn{-Za%GMnKC-^b%B3^l7g78{?p zF`gT;>)o!`i?WoGlr7!*<z%%d)~nAg32KS&Q9hvLs~nOfBPppX^-}b4#Lq|F`e|op zm7Y*+-}B{?x8Tx?TYkUa|Nls*aI(zuu4JbYzbC<wkvCT^pSLUFU{ge=L3gH%%+aYS zAKu*D{Qt*s`!Kn<kGJptE4#C!(6Hn4@uWM+E<ZGv&k^Fc7Q4MQ+dTKymQ&2yi*_%n zp8Rq7{5mO5v&2I!67!4CSqAoR6ngvj(`o(V&7IYMo=o;n(w2*Jso+_3=g|*AWw#@H zOWxh7{Pg7H$)qPYjnCT%KVGl;K13wSW=6$<k7iY$9{1b#IToF(@HjbH%+LDmmWl(0 z9ejKKe!IPRsk6?#;`6o}CEl0%Bny<6{Cc_kxXH2oKhNgN)qFTuF=3;`ccJr@J^FjU zT*|m>VIj7d;qlM@!jvbH>2m~gCAW9Q_{^IS(evH>-dTS8KL&D_p3kqB>o!h1(^1mn z*rC<;VV+55kWugQr!B&M9ovJK`B*;cP`+3Fes4q%|NZO7k587Dlxc2cW{)eonfmd{ z(O?nt`oCYV$5%d`T5;&H;?cZ0X7@fyxNK6BKT>g{{{Qd$>-T=UCE@OO+*opdchZ~~ z7lG!}`uq3f-``jG*&=;^-QPvelMO#v-23|^bLXp7tK}-6Oq5_aQ2ue39>Z$ISt>uJ zH+*#W*z}3FSITr%<mNOUr4`rW>;L+i-BdZY@zRFG!>9gcfs(C;hDTrLjLwf{w{wIW zr7DF_Zh1N_+AVZj&P}78(_dX(tzPeJ!PYBn?#Fh~-jJj4HXE<h5e3WJ*I%#B{`KYM z#B0{?_Y}`DIJf^Go3zU7llM2Q4P5M|<Cb*vXZpE0lAWUbrcv6r-d_!m_wD-=_4d|Q z{XHKJ?S8+{`j_#&ce~&3dwDGU(N9md*4EZ|`}U9Lj+q>hb=5oOWy5*#z(+GJ+s;c* zPE?pZa#Z8joVPb+W8L3hg}0yF>{#G?PMF_LE;l7TGxKF~zpYsRPXGCKo72vAmG#a( z!gx~I^WN4|mqWVW_3~f#vwl0phn+`aL&n8L(Rn+c-m8A!`@8Ft|F!?YduD%p*mp-) zQ&ZBu?oZk6TyfUjU#~^0*B>>n^tIme^;)#~-IB{|x8M8q<+A^AWzLhoc1=wZkbl(i zFyrx$jw6?){fi0<3sXM3%hyiXv-$Pf?Qwg`4LkZPKDjU+D8IOip(cK!{A4xXU%&K= z*F|l)wx{y*q}Be1XXo#m$+K_anl(C3+w1@TOP^Z`3PRyfvEC_PB06|x8>jmj#l>#T zy6WXVHBnM?hTlJDmN=FB>ho(R`7Gw2e9-)eq3>)n+s|i=&#x{yE?YjQ?$^tg_hx;2 z(99oK`}OMo=$FU;EDrnFpuGR~*6isv&l;K8<%&)yzPwjo@t~2t&*syK6d6UU!beBC z_4n;?@0WW%zrIdrWAXEIzGeFpzrDF>ey6}$rtFO2aTkexDO0Ukf24J#cFNtAd+*)O zC;Mn_*2P7xyEabxaaV}lMf&({XMS6g$}@$}Ce&CnGwicp%Y9&#PTZb~sHGE?-M_uN z`+H9Dxtleg&t8wt-y2(g_v_5`d7WQDRa%g`ZIx=_fw1V@(#O5##|*#UDL&sJsC=on zetW{frggEqj~U9>ehKWEZJsZ;z3bM_&*!X@KVFN@kNufHdEK=5f1jqGRPMQ)x98(A zLyq_R|JUu>J88%973+5#?|8e=x!vu^GU@+%kA6OA=J(U<<=cM0?)Qs}i!bk8zb0bi zqh@})j=L72dvtYmea*uztIf_a%Dc0}!ukHb+Q%&~U%kq{wB#hHobrD>y}#ntmioW1 z<CBl~`F{Tw`zh$vwdnl0KKH9$uif!>+wHvBKG9pVwjN}Y_L*gpx%sSFcSYU1ozEZT zl;5u{|1_&$P5J9<xv#FQES$9Bb=uikbIWdJf~vZr<)FIv>#M8WTwIUJ&$Vz0Cq2Cy z9v}Pj`{CpA^>bt-Gw*IpK3*};-{N7*ioY4pB6^PP`}67aWoO0*)!IMSbzfjuuxHPo z*W9VjE*>u4Rx8gusECe;kZ25F?A9xx6T8b~=N>al1)a!ED*qOAp6jgXb@Z7$S>^F8 z)9hnwAL&gx-Jfh*X=vs*V~>`ExldTqtQan7^FLK{<|yvmog#Bwy<f31r0|)A-Ol3? z{ZpT`82aVSkeM?_(Ncl!V$nyld%K@JR8{vsC;522e6B~|pQulMODB89-}k<gdFSgX z{vWS*_Z_t;?wNcvqVwbR^A1LS^IGz2Jw8@EI&*(VrBUBqfqt!>4Ax@KpFEPjOP_zf zbb6drW9_Gt>gw%lYi_yBQQ_-j7ibpH-YDJt#IxhL@NUB&zXa=QBbK~rU}RpD9B!vm zneZ{;QRC6XlSwu|p4jqg|G(F5&1KljJZbX(=ZBda@-OUS`0#&s<mR-w_5XfekE?#$ zzccQa^sbVZlUiOMYUQr}_GafU`w&TnIu%Hx_0Rp(G*A<mmp*M=GHkKDyQ|;!TZ9!8 z14F}m-R05WUoM~T=gz>u@L})HHc5<zIhU4})}_REnp#>~nwp-V4#*#c{F;zk&rfc@ zeA27z=9Y^ue{c0s53PJYw_M6B=f)Dx$tC~(*8KT++<UrS?!`r}R`Jn$)^Rg1OembM z8}aMP?D>D5*RMbGN6GflZ5|nm4=Wb;S*^UZ_xruyzh19DKg(46?(ci|>VCiVoUFEV z@>UN}hvCCpKbwz7>O-ua%}Bl$TYmS`r%#~f=)T|Ye%CIo{QT^wp?G}F$N2xhuFu%_ z>6EsitaVw=Ch6^~Y>rQ#G<DOaO%n4<uSHJ0U|aQN$IE52lMIEd#I&`vs=mFEyuAC} zF70LC@7MpI>~AM|S=i4a@!}%a_<2dDnV|m4zPrx+wj!KTa`k^crk<Xr8^5pSXqV{w zz2EOK^V<lVv`RS8V3Brij^*^2qLcUk|NCzJevk1o>D(=WZ`%6p|5d!ZvvcDlnfg<j z%a7blidybB_h2)7{-%>^)$evbe>y$B?(Np=$C3gAFMd2OZ(s7_!lg@>B#qN_Vt181 zJ2SIzwKKo%m#5R?`<TO~gSto$ZvXwZeSdEsFS~3>z^;(BQ7Kt_dQ*CT^*Y|&ReC)# zeXf*gmJ8?cl3QCcj~+ex_t)3oUoQJku9wg1*4@^z{p;)N{(K$M$8PWNoUG=Xb#>L& zijR+G_|3EV3F^GO-F7?c+8W8|jhmiMi#~R{>g%hi)2AO#D1`=syL|1JsHOe(|14rx zo%-<baP;=Py~pLMMa0CGdEa;5UG`SWG)rWA)`bO*ECsuMDgP*+!N|a1^zP@%;(vGQ zeXJr+{=04Zw)~L(WzTJ(K3zjk^rkg`KC^mXKIwIBW#o+=@1!aOP1(VTPvP;RO!K@Q z@9O_ezj^^V4@GWYwCC0(*889Cf71WY`^4uGsPh<Uo?Nok?so0z`on(y{6AiPeRcKq z-SYds>h`vv+&H21>FL$F^M338*NvSZ_d!<8Z_bbD`~ReVdvo*UANLu?>3*L+S6uHq z#I3)_K=#?Zhlktc3l1>8WMN=vkbl<weYLOLoWAgDDX+7v<!1KnKf8AOy<6LIZ-aV% zzO&6PFY~Q_GSR*4UgdL6VYNGTzuy|}c-SU=tVi<mm0<teJs*#mW?$R$>(%Pxz0&46 zH#TSnFWZuL_m}+tAIDEjRF<#(a`D#IY*2@#-}c)L_4zeI$L;@qxm^8bqkCp%=AA!J zr^m}#m1J~_>4KVB#pi9mZ@nJ(`?>x9$cTs?N5!I-^gn3-v<uW}zOOW?^f0fv&6f+# z%8vVgJnAm_sx7$MIQ^W>j|a{ERxg+6ZogA>X^H3Vx7(tp>&5cf|M~EwVR4_;s}AKp ziw_5w<?DVtOnJKDFkd(Gw!3AwPfk|vmom*-KDVrk+0Xv(mnRLqX16rTZg0=G&$zJQ z$q#vFaF*0<<B|OIVsXFQZom0<wXd$MeEBMTmU(_$Ow68_%VxXn;FGo5QuXzfcGwz^ z?^>~SKcAMqzLtAsMWCaj<E|}}TDis7ZNFC~9b)zQjPd2GrtV-fedpKzt2B9~+;3x) zb7RB5zrXwC?e}F~UY5V-qucj)cinp=1lenTJZ!(XVsG{Lc?OAxKux~S=d9f&j=#I? zZ!g;^&2Ex$VS)dAyYl<B-#<M)t?eKA_Ly{j53}9hFPG>4|MQ$(uHwOI{rxiL{Qfo{ zU5XA!g#-i!PUI{04-5?S^z^i1WMFvE{<FYotNO0xkEd?Eu{i2>+{+)wHFb4sU#(m& zrXOdMe5~hjpLO2mvu57r|GXii7MqW)ON@)t)O;?g9j0<QMO)=^e#~CkNnh7j@7}Y= zX4yxxnM@1}2lzLzMU`J%<T}^798|3@^PRn|<mDxf>)GpesvT=)=im2!-|t5ajm+$J ze?A;uzyIGaUh_K>?x+<0e!HDt-md1)kB{beOM-nK^Qfw-79RH2+nI80P2@>K1_p)= zyRIEDJ=1Uh@5hS3#j{Ma#U2OyS*D(xq#C$W)~e*kqi+3wzpn4US9Ux1?d|RRzg~-e zeQj;^*Q?>>udb|&+gnxm<k8V?f9tnfve)k|n_GHq=a);~-CbS3zP*(;@BeJ``^{$4 z>}z+5&)dcx=6SL;&sm*c&f0kHgz$HH+i%C|&R!zSpuoSj@!H$_`|C?yp0E41`T6|% ze`n3_+x+=(xSdy8Y;AN{SlOG6$N3}-7R2r@3*5go`?{W<Uf;XiOHWR(m-F)Wwk~@k zu^rUXUmv&Es{GxZ<^J>6#qKuCyHoMy#YJv$y`0<Ia<{xwogOpk4!6U-oev&vZ}a(~ zF?T|Ep8dn;yYnw<%w;$b6}UQV?V&@5N)GjJV~Z+(abcl!-j0X&s^7~tR-M+}KBx3r z<i~I8>;Jw!Gt*dq_nS?#^LA;@`gVw0zo%pGyIrr(+5LXw+AXFVzi&_7-(Ru2N-Y2X z`TY9IO5v%u7rXbrUcbNYe(m?WiS4p-l}{#uJjWJyo%PeK>!qKkUoT};xWBe>|N7sv z@Bc|VGsCd{*X8+(imXds1Ox<JSQEK<hT97<aq;7f;;|(cS;b=tPH8Ux^GJMuN9K~8 zlw2OG@^>}wc0P9#-JW~fY+2!f-0gS8%xj*{EeGYs2u4t0bl|)U(~p%EvF7!avEmG$ z?n?ch=?rRQC_~a8RY%RpXi<!6q1tF>aK*z`@nwhQU-g>bdvR&$={1p?kM+q)U-mV- z`J~VK9Z0r~Uw+@cs@J(&F1jTj>)H8w-EK9%ITp#sdfsloZ?`kF;@!^Y@AiJbSNQnY z*?G3rw{y4Ge!pA3e&4TG=J#ugpPZOz{dUV`tJiCU(=8q}Fkf2C_~~qL{<*rhi!YTp z#r-_2KWlqNjQU&#hRTeyd)D1v5xDs8_xt}RIP+y*UUv4<Qt#<Hkwv#MmzTb{@Nic4 zy2x!gH+{|Tmb_ZIyzI@5!e3uro}RAnpBEGtXIJsz!TzvWHkCy(W+g8!l)b%ml(+up z>G*x0&sm>L1Q%LdpqAxB{;f$zyEv{(e0g#4aRW2ojl$!yph9CIqR>#_GTXEbWWdp* zZ*OnUzqG_tCMGIM>g(<O_5Y<zv%b8#y1MxJx!PY}Uf$Z8{rFg~d%xV?f`^B;<=z$( z6^*U=cywwx(}a4xiXUr#tDo~ye=?P^{$A>LU8$wQ3=!JbBGc!>OO5Z@ph1!!A0IEy zf4}2#U&dX3`@dh_Y(Bs5?Y7&C@_&DO8@<2oZ$<U9nd#S7g=+J~?W_3-8qE1BEq}4% z_S)#}H*BBHNH)8jvsqBt%_QeW!S&ek-fMe5ozk8>nfb}w&vF%C?-j}~5&m>4cKMc@ z#jC$w=44nS$~yHDr~NIdjJxXdYl@zonfWoW^7Y#7O7XMJ^X(E2G|Z^`bW;8I+wJkM zudQ|OmHPVWw7z-9g#~$ccO924zcWG6d70nbTYIa&XWTmR_}12J^UO<6`0IZho}wB2 zZrAH|y4!9%dfadS?#9OCCwW`)JUu<D%o%<zyM5tg^YL>&>QAQbzWsJv_-Xz1PD~7+ zuFR^5E$_X&%OURauAknonH=_gHg0F2-hljQIf1X708gKk%&6|_>hkjPy2R<Q@1<GE zrw1F2FLPEteOI>o?bS`5R*iQyWW4-z`Q6MNDL=bP{QliYpRM-x`@KyI7AVYR&ThTN z`eS9r-9Jl9PdcV{Pv83P@0CTVQRe?;wq}2Rq+GsgU1{RmB3@&v&$J*%>{+SoyPCnv z-t7PXZ*%(jzK@Ih?W&Flx^Kz9U-$9RQNy{`<?l|a&j*eE+x`FZdFt_HcE4UM7WT7v zI3u}F(!Q?7XS!Z&)w7xD$9UK8ezyzMqB_pNz;NJIl=0f%m%Q~|*NcgW9NDpGQPQy< zNq)N@3H@@mU0q#Cs%)THoCS`}$9g1#D=StlS@Pu7>h=5ne!DGS|L5b3Z?CVv*RTKS zeP@Gfw^;tZpJ_!r3=9lw)-`!tF8Sg7_w)S!IX5;u1T_zs`79D19BAAKYJ&2~T1}Zc zRkr%gMrJmijO**}J~-H%eSKYQOw65qwZGMTXB{zIx^$_mb=jNy`|Eq9Osl@Wy1KLY zxn1qAlDD_E7Ct_<*u6h)M?vE4ZMn)*tG~aCtyDjdrL7Uc{J;5g@|T(yXMZ27pW$~x zyL`@$*YBduywoR1i|J_If4wSQT(|gb^uM2f&(Dtiw)^eAnm~@Qm1$>ZU0wa#ds+4w zsR}J|od|=xJ3A&#n)G8;)sqtwFK#*cYg6iJQ1^JovD=?MeY&BmqZ5-pw{+6o9}dSX zBKz<7@<ne-@yyYU-)D2|Wa7tzY$t+GJ~#Xn==ini%VG{o<+|u)`yEf3f1K!T-?hQ( z<$H;16HI?@^8d8!U7K`X#nsU8zaRVSWlXa|LSBD7E`NW2{r_IGTN$%+w^crw=)SAu zrBTX>2`ht_m%YFD_gZxR-K^DXLGxPa^D3X6F+MM2m~^CtQ@GFi-Hr&*1e^KIl*x-0 zE%JEr<qh`YsOe7Nwu;Et_xvkk&E;jG={N4@^}h{U(|ot(WoBmXt@^queEq(ho10v_ z#f~a0+bCDQG2vj7sCL+umBGv1dZoOl>*?z2$CuwNO;)}3xIyB06;F~>G-xO^PUae{ zkek%JCGX#*T_55%s>N&MUs&My=~VUES*FQzTJkhBG&%~`s5nY%&W>3m!+w4Jlr`<U zN?#vKjE`sKWnf^iZ|FXRf4VX<^!2$JhL6Er(yOb^&NNOxHANHDzho%7x+>~>n{-~p zmW)8Fm0@c)Y}nvG-wrOdebJ&tj?HZTwqLJYSs6Tes;Ks#A4Lod3`KWWMSZ^#?Em)q z`ulHgZcaZl!!YScNBy72@^5c#_5RMlz@QMmc2#Ngww#+QgO__wR{Oj9QX{+Ejb*;G zOZY+huda$R&)IU(t^W7z`+n;~mix{9e!t%SE&~HYLrkdaYtVqeIqUa#5>#KZF)%PZ zS)~>Aee-#{?7O>4?@nDJ4Qg|)UX^k8toi+#Pft#Qo%_jAbggyyyE`+D)5X@RKup@Y z>RRl+nxB5wZ%dBuM>s3}+#JjFb8|BP>)mArS-5r8wYy2(y0gr3Z@s#|w3>lojjQO( z^$a!op?_*)85oKj9e-&v-0udBekf$G%D4*}<?)}|XaDa<%7xA8=T*I@ExFCWuts!U zB3p!R=$1T3$Ah5m_3rokey`j8?$x!mx8thcUR@Wv+gop^%3U^wgtY~{#s{)iE-DRQ z6A`#M?QF`Pf4^S)&oo+E_xIQOz2BlXfu`9lS9D#w3u=Y%%iC3bc~O3^QvKe)Z`=3l zYHQ!l-~abgE(60guImQOYo=*MZLj<LD?GOJs(#(a?q_FbyT1VSNOhyOSb(~<$O_9} zURrwe=+V7eU*Fu^9KAgc9=zpeW*A22@BR92_xrkYmd`=O<l|m*KXY(YhF;v2c(?R= z?v)i6-`w0RZIbcflDGcS)v#y)4Vq1G=KJ||eSK_DP|>H8>hU!nk0OlDSt<b<m*}_q z^}_6S&g3=B3=9tER)Ky0@n-t`rNW@Pojr8RJGI$4Mep~1x7$0Zgc+1dLPgi!Ug9}< zcHXYc{a(M{Y(9U^`u&_d1_lO)b*mPY#;=*u^Ze}W@7MSLGnE9J`Rm-Z*c}BAzh003 zpRm+hJGS!a)OPv0id~>wvh$U7^mf0wR_QfQ|9FMR6dwI}Tz-BYNZYzqkEEWh-F|OZ z-QQoq%Y0_q*Z<p7`8n<Etf_FT)O}}}6g)WKap&Y@_32Zm#+F=kg?rEZ*S87Ie408s zJ%xK>ca>yr;$vW7uw31B?QY%gx5xYC=l@B$Tm5e5^5o-va6Q`-54Wk$DLBL`9s^22 z`~SYpUmLw08ro}Dm1=8giRs1cD0z7aG}QZIasRsu3lHz9{Cvq46jY(Bv+go7v)TOn z@tEKK&xgO?@7F({TRyM+Ugh+-s?1&N3=9lAvqINeSABVLZEduC)r*DR({w;R?89xm zpxz@S3x<l;$D3bS7i%rc$iU!W7ZLh8Z^J=0+o~@X4_kymegCqzw@TmL*_n5D*GoBY zCJf#BPBc8G@OixlB!`FAg6r@n;-En;hif4hcPVSbBQx)C8}I2;r!H}Vv^Hx+ZQrx! z&$ionuQws$_V?-de?>PoBwk+w&99-Zug}dkU%z9=k1dz|s{j3b9$)dWm0NFz0wg<w z3Wga54<9u1+r8WIcvblNf1Bt3eRJ0Qz7IT^&d%HQa)D#>q>tSCdp@j=|EmQ_7^@b6 z%c8Z>+kbw3K7HCW&`N>1R;6BWeTk>0XtGY-_v2Bw`urNBSXNN65bFB6Pu~9D(&=$l z8HjRd`<5*w?XqPapb_W^{HrqVhOLe2l`_?u3rd!DKh9mNeZTknudlDazgXO#x8<Un z;g2YI`YZ3&-Ij5G-(R`vH-=?zZb-C*t&OVv@v!}+87PoeX{}5A_vNyGzxBHvDSICG zS?~MxYV}D8P(}z7UAz0~wCH=~_iMSubUHqI>+dbOk=U;K8k7Y$gGxfP+iS|--vf=| zO;B`xb$$K+=l1_CA;GqF)wQ_>iHEjiUcOiJ`E1%$E-tRPs+UV4sQ^^|i|_w&G%PxI z>vdQeS)2YEG&Q4MGrI&-))rkY-<CJqEce}>&*wgC9aV^_e!KPeyWRN^f351OpZ)5w z*U5^HkB<7={Y)`pV_;~Q^K~wGxaHl>=l7yk#x9*_TRpG%oF&ww?{n@}eSIY=F3!KE z<aT)7zt8iR-v;?)^{O3hKYx0itT;Ev^0;hyj8WXp9!cYK_W%F9ySw}Q`}_8h;FcMv z6PdEB<mIIk&*s@y@B4Z!`lQ#QEnB{9I<2?+!y)eb)$jMFJOz!nN!xw7;Cxbqfq|i} z;eF0sRqts$(q?a3y}pM?nPgm;SN(2g-ujfEpPq`xmIQ{pzO%D<e(krLU0q!j(wA$$ z-!=bb#`ogt>gx~N<?k(a@2~&&dHzXXq43z!&?Cju^<p1AG2HvO&pK*LhM@Tz)9h<g zG=nE4GcYhDl#05{T6Q?!xbV@Dir=+*v7qtwb$h?v+I-GxwdZ6t!IQF9B^uh=*57U< zv-3z?SQoqdU^Dymb+Nm5?ATHJ`&*%dOng+-t&PdY|NZ@aeMO*h(hl6+%A>xMJ~Ka= z`;LEK+4~**mpCg^AH+w!-+A@dOO_(%o0FdIj{o;%QL6SO%b$-=#OD+peP6Dl;j#Qf z?5gnfaSzN-&DspEAuDaJ-?vb>WFq^wJ>zcf_Pb@%W6M0F%K!cO35ta+d0*ZxaBN;w zx_-~6Q!nnVkKP`<+;98cvfHQDR-dzczGnZwU)tOA-rw5`>0P$(HB33={<3Ayr+(r3 zjmM|;Ugmt#mT~w0&R3ReXZP3bKYeWa-#lwx=c$W&xVX75bK2ip74?1Z_j{{@m!G?{ zv-oo5(y+BrOBb*2kuuHtez&}z-)G62Z@2U7Pbjv>6do0QKDYdy@p+ripHAzSzrAHz z^>slr->;kJ>#l9jzyI#;ZqN#&V?C0fKI|I#!Xtvdv(5HCofe%`dt!njx0sH_%O#T^ zJp)Z7OpDHwTpJw}H0d6%14a+$)9LqToZe|f?^#p&e)*O>JFBeg&yKpk3yFPw=vL@a z(=&-THYCc|{YbQ08MZcfx!=nd+VV9Y98Ge0KuyiP-|tzoU0&`lZ(mn)cULLD&4&Xs z^y2sZIjKHBW>d<^yxniNeLN=ZKiBGOxBkA2%gfF#a_yd1_v_`2yT#{iA8#vsa$=%# zvbI+F^w_e_mDgB5&AN6rK5Dv*N&Ux7W>Mz$nXy0CuUJ&7oTTnQ@6Ni|-6i|VGGi6i zXWj*Ox8km!jgJ!lr@iXOOlNL!y*ovxbuYt;;PQ6avWiEY>Yy_DziQ~8wZ;tpVnx?R z$HmnhU}W!!@Z817a3Jc*ukePeL9VaOa&K)ZdwVNY+Y??&K0e-G|8#0NUp!Q$R2o?2 zv}x1ww%;v#$->a^UkKVFDZib&z4qPC=ODWno;1JDx%=|+^81CyWe>OW->><6Hu=L= zc-itUZFX+iqfT|uK!N_=FF`zq!lH9cb8l^ds0bCkZczX0<#KoV+7hFCdAr}<t9aa- z0_rz`YuT*TYuR|Eru<p45Y#T)zW;A7yavv_xajEA@Hoq)BOQr{+t%*?_v^TPea$XL zPzAZF>l!bww3$!crg!glzmMBnb@ezi1H*y(aM8EFj!EZ(#%Z5Eefsg+jpY8h28m8^ zO@E(E_OJWC`@Zj7tF4in)6DNxJf0dJHxu4e*nT^2xB9$_M}5}sEdG2re82AZ+iAMd z%RuGm1W=om*Zj_hPhM-Iw%$tax7FMG<r2K9v%BEoq0i^6*I)L!1ZuFH2o2rxZiZp< zxBK<~rNbw|EqHx(_4bO7k4ivo#GenWqrd<Cet-YpZ?}*4%i9+`I3Q7@dlys!$9$c; zcK6R`v**`*ItlW1U|=B6q5Qhfv*Z813Wt`%TI&+)zFrMaKR0J)&vf1Bu$Y)RJ&X(t z3hAL2cZrIMUR}NXxQK|znuv``@M^UDX6kg%g0;%0Q)_>JleMY%Q2BiBbhzWZy}kc` zum8V2`}(@{xus##^<uZ(%32Ng;_q*_^Y?!|CJk?~?|!{*x827h!U%zki;E8PS?63q z3WP^TyY2s#LmN*`U0q!z5mOD5kJbG9`J7$8roig|OHonLsZ*vbnLPjAr%$5ur|EjC zXNTDwXMJfP{`CLh)q#6|v3<SnsXoDY7w=q~ikx4{r%vjZZ@-<pewyzk&L?e~j-HPC zUYB*z$ezInK1LBY;dFeyBimZH*KRM$UR-$i@ArHE=k|NI-r058K6=CX(DR`2Gc(`U z{O>=lE@85Ce*H{;tvBB#(16vUdRNiw2J3Uq&9R)Fv&qxy<dXN%f1k{G|6f;{f#Jb_ zP)qmA%ggNbsh^&lJbDz-P~IN7Iqi1N=CjYH^4Wg5aBFM!a!9HPySnT2bp7`i7aw<% z&fQYIbn`i@?0b7E5v?-a?RSJaZ?B2moFcXM_xJt(Z6VPW75aML$79l<rA(lL%5$>X z`u+c^K$A-iF`%x|o{GY?QCly0Zp|{yy3#QfoT5Mt$J<*nFM}%VFH`kmcU@T@Zx8P# z?R~T9^uLet@Mb7za{7cj@~{i-meC??sa&A+SG3{1>uV;4Cyh;C!Ws5KTc8<tr~atZ zWSFoz<}lBOs4efj{zx)0Jkh#8nLR=mN&A7X=?tsEx*0*Gl^CS?3YrpTz_T*=n#1e5 zZ#UDG-TP{Oy<D#DH)qD0GqX&!m+9~Okz}N+uV4SLRs7Km%i?D$+MTN2(|V*#Ux5}m zT9@Z-0<FZ^@$h#3{<%J&nLYLh=C#(DmzMnhIsgC7{QZCP_WgWz;%--0*T28NkCz;5 zVy*r4rIUHxu2-vOnPzXxy!>ohbe?D4q#e&@WnYWV-}`pk?RTKo%}Zu}8-uz(KXyE< z{eBm;wpbN9LdCpRx>QP2x|!GPhQhsbGmX;^^P2Y@%-j9;+Zp5YM@r7jFa&iVcfDR0 z9TD;4=kxjXm9w+1K081E|F75Ux98m46u8)pTU@W_@UdR$@9p+~6t_KU0f(Oangxp% zDarn`U}ocqsQ>#F)cLr%Ih|kHY>jg}UutUVak=W8HQTeV=Y4o^5Hh)zcYj~)WHsMM zKQ3Lm)F*5G?fw1zZoN`_tG>PhwYKbPca^=pwWILy#l`OKf4Ak{-nL@Ji%H&kp6B+9 zo%vC7vGMxy>#>vLqw)g2KlIzZRCr%dz=mW0*q^s!n|gD|i`cNF=KbpV@mq3St<>vf zHl9AVm;ZmHqgC_!5TrS|eIoxJH1o?<JZLn_z4d0_?{|j1!r$KB-tIkJZ?d|-oJqz7 z(404`bm#3wuH6y#-|rMJ_nQlv4ZOBC`umHEk3qBQH#UGenevZs=kMQJ`T5!J_xtO4 zK&ywt)<(I$o;GEQ%J)rTKJzyx%%7AFYLmU@eQo=5d+jC8Cq3xXmizyl(|OVdDS^CR zKU=)GEH|#^iQiT3D|%}}vmZ!3`}p`cXsWdQUS;}nzqxFDG7$j*8*b<AK3ehO!a~7a zg$Gop$9(Fq|D$~9>jY=M&X-?aUXHK*dR1ah@i|LS<pi4O`*P9!_?IV>{pVQ}Cf(WK zH`hvV*G5qFVejA<|L8?&>^}ANuP4pkvu^hOJ?p&rKJCi;_i2~jpYR_)L5mw`xH2A` zs%XCco+4WYrmPv@`P4MtE${B^Ebi{=0xftF)ebwdWznKXv$EG!e!UtFnvq)Q+<xqo z?e{yzDJLcrK0bE0;4tsh?H+e4pU>sD{c>SN;9^jbHsjcXF70(4(s3mhT{owl_38u7 zAz$6f76lspP*qjk{brN5k*>D(>get7Ky!*W65H>V->)?U^@u@@X3#<jZgIVs4GE4# zHy$1Bo?rcL=ihI)*Za;kldu0%C}URi<b?hIpXUn?$N&Fz{r&#`bw!}g@|tzvCc=-$ zF~w(1=USJqi`)C_&CSj2ywcYeI=7#=p4@L+cA$ar?X9iSHWdYLZ*A@F?!LV}|Naus z$rk&zY}t~0yzlSt@9P5>yRDDg`)C`=e4cFRoo%_d7cE)@8p*T#A7$|PvnzYt|0FBL z^;_;Ncz1YinYa1`W6%_zqOcukito1nkDu?NO+X{+r>5!rzj}4CnC|aSMpmCr3+~Rj z^LzVkF%gj^#XtDAW?j|N(eY9Llaalz^l{7fdsVMjE}!@7VY|HBN>H!eu+P!u&DQI2 z)!%NW>&NcevS&}t-O}r}uh(qW+wq{us`OP%?boZIg=Oz{y#_TH=l^|^4q9E;Ev8#` zBe6Z>?xabRzVOvmU4E`}WBHSrB~EcSs}5KB|I3|U!eqG^V;XM1G55~JIUhG&+dKc# zuAeVf#LgC%-x*xGmOJ~p)Q+~FpU>Op-{1Fl^Le}KQ<}>`i_lqFSwYKpe?FP4zg~nr zCPK5zeCN5!8ygY@j~QA#?lIm~{$4Ks``z;UGmiNxO?sR=XG!SlFi076K&m?S`|=04 zOCj(Y19D0sUq@G0SF1C&uCA`Cs;V!aEH|$`*Hr5@&r|)$)V1bozCXGD4c;hxbEd>8 zPV!>Wi7@YbUg}RKy3G##UAsSPtMrn~Ihv4upqOs-#B(R*-QV8Y^W((aRpKH`iWAme z*!ABX-1N)4wCm^Voy%&Y&PY%9JE82mZC%-^$ycxCPVw993R1xRA2dD;+KNO;=5F9w zxx#~e=H#2@JP(#HEM;uq(bPcZgC|LM3*FaeZK!!JmByfzd3Wj$V-|)_bF*hKu2=%! z)|Ao#<u~vY@)|Qt<<ctpaeF?|0adv!bH3Q;V@riUc}!lrdhVx`t)<dS(F5xEn}GLS z+j?uaE9tM@p1HMDdRg+P-fMsDqs;3wV~Zw(dbQ^9nXyHeG)v<x_WwD?bbaCT#mej< zw;%GqoKf>w3bcL|PkW3|FtUn@ioP`XE&}fwe6i&Irdg>rcS3knet=!db@R)dKT|JX zySnX`zHGYR_Jxz#`{&N|JE48v^zG%Odpk;;<T5vvZVjHdW?SCkl3BX&iA?Zl%9LID zbK>ig9k<^3yK46Pk|zyW)_)XbC+BZ@_y6LqpV|Mv+P~iZpr^#C?&jkyS?qDs`i#NJ zWcK<kdX}EApBb*5eLm(e4@uk08hBQIQ1)T`G3gpBgVB-&3bG6z{+q+wt_sdEhj|=S z*K#w!;})D4koeHJh6fyiKS6O_BHIFx!3+x7aCxYHO18kI<!*WR<Ktt{-jmhq_f@^P zu<&Kj(u<4T<I8TQhR2p(RqnSDy8Qiq{r>9j@2<xb`xX{{{PXkkWXL$$-zVU)iNn0+ zC9kfmEPj3twBq&C)6@Io_Wypj8?;i)_`FT=qa&Rg>;C`!zCHi`KJV#zyWj14ZT)`F zWEs%J(dyNZ7OM%Ub-UdDZzjB9+BYlr(h|=#)2B@<dvjxB{r`WaSyx_MT^&B9U_NrI zR6l0NhTPlRTwPuF|9PrE`STjq`MP>LUahTq*|KNTZ>#tGdN1brozTuV&HH_-&3)<Q zGm=)xb2rYv4l4WAU&Y_bx+(p#<xgPL>X*T@=kDIJA<ydkG}Wi9)AxmyN4h#%sn^d5 z$bRB__4m&cPZx`u<(U`nz4r3S^6#tT|AIERyljzwtDb-N>FMeJpX%4|{B|o_+9adk ztm*YRmCt5w&8q!5HGa+fx?e9r+X+oRfX3$E?R@_2?d|V3lKb!GY(5JbRkE;Hd57Qb z$AV8L2eMYj?fumys(p!bgVmq+%=SKx2d6uJ53aA|jJ&$Ub8^Sxl0*I9CU4KHcs4U# z&3D$76@iNn9Xe$H_ocsc8_!Iu(yZ_A?zZ#G%Qcr?kKJDP_m{hD>6O{}`z$jqEXdt{ z_uJp^_ut>xm@G5@9%#BC?D(yW*a+pSZ*O*HTwElo9R}LowE3*r?+4BNpe22;b8l_2 z{Pkk-biG*6cngoL)t5=$dYzyl<R_=J*Y`MrmY+V^c02F)ClQADnHGhQ7C1IP`h57) z)6<~+g>1Z1pmlxc?SAJtIv&hiK6l&CXS1hIo!Tp9`f6VFJJ8OG$3M>7{noMLzPd8_ z`DK55(CRu+_vwiZL*l0=Cz;v#de*O=t{W{D-*sg96wu((lM@p^YA#Ja-Ur%H)5OX> zum0c9_4Z4Th->Yw{=P19b6QXJ*H@wY>;9g)%#a=O$DXtD$=dDrUR_%oT~m2$T`XvI z{?Suwx8IA3i<4`P*z;=DYOVfX_SfU<Yikl``7!)E4C<#nXy!krK4D+&Z@2Hq#22W~ zt4Q)m&c3xJ6EwU$`S82F-|sD-SEY4LzVgY$hlktMyBY2m)Gz%Jb8)%<{2x<<;#>Ya z)vx!oTe|1>yWJ<3PnjVmE*>ryXIS^=hoW<vN^-*4PoGOq8uQzJ30UqoS4=lbWMTCB zd(;0<i}+*Lx88U1-Ta6h1&M!ueVts-$NRwk><mNYeOh<x|Nnh{W~OlbR51~eD=UN3 zzrDH1EvDnq|Kn8M@3-Rdvq9;InVs)W_4~b-LmQ@o_6dH}e0qSHzsFzm^fcYy>-;r0 z-dhp4SbbiF(y@=BUXhWJoA}m5Mor)I@#XUQaTO0+LDL1FpPkLVw&vyn$7WUUX-BI5 zG=5wg{_n^;%ja`0Z_B-1!uR35n*ThR_^J1bPV1Ixi;9UIORA}qnjbW&-tA+y=v4jx z-(FvT|GxhJ@66?M&2nyRC}Dn}4Vntr`~6<^<6iS?t3~DqJqkX4X{q=B&%s`xkzS<+ z`HBaPv-9^=g4W4~H=3?8c%&%n#MfP5`}@siP#g0{a`LY)FF~7C54Z8U_shxF`_+88 z=wAJHYq*TSWlmwWE9+u+2QGFKJpA$b@ol&BZtwbf>v#I2MjNA|Cnx^>{ViW|!SSTG z-q~5E-CuNdb!%TPoeml?1nr`^x2JNkTW{CVu(eU3HF6t8cS_HXKGr9@`*z-L)7)Do zwt@~@v(DRokJ(@McapzmYHI4o)>E(7@0XkJcC1HIIKC@q|KD#XmrwDWtd_g^tl3A+ z)QgK;i=UtC6`E&X|L>x^eC%Sk-Y+f(W<9>Yj0x1PAhkZBLh(-aK5E^otNz;eERt$m U+qHE%0|Nttr>mdKI;Vst05%xgc>n+a diff --git a/src/main/resources/static/images/charts/averageMonthlyIncomesAndExpendituresPerYearBar.png b/src/main/resources/static/images/charts/averageMonthlyIncomesAndExpendituresPerYearBar.png new file mode 100644 index 0000000000000000000000000000000000000000..17836f6333821b2511ed4f420b165a46585019e4 GIT binary patch literal 16700 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 literal 0 HcmV?d00001 -- GitLab