From 36822c1f31b24910cfd247d04825bd3308989eb2 Mon Sep 17 00:00:00 2001 From: b4pm-devops Date: Sun, 8 Sep 2024 05:09:17 +0000 Subject: [PATCH 1/7] Pickle recalculated --- ...vestments_profile_builder_disc_all_years.pkl | Bin 524 -> 519 bytes ...n_investments_profile_builder_disc_poles.pkl | Bin 559 -> 562 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/energy_models/tests/jacobian_pkls/jacobian_investments_profile_builder_disc_all_years.pkl b/energy_models/tests/jacobian_pkls/jacobian_investments_profile_builder_disc_all_years.pkl index ca93d4bba6d95a30893110ee97f107c341e9c552..e9aa2ea0b8395ec50a93b4473db856bb846120cc 100644 GIT binary patch literal 519 zcmV+i0{HzxT4*^jL0KkKS%JBs%m4v3|NsB3TI^WCcw~rqHv+%s|9S#Sc00E((&^<$G z14pO^o}kcro~P-m8~^|S00001kk9}C0000000K%%7=uQD00TfY8fYG-KmY(}3?R^Y zfb|*xM+SpAG@usX5mNnX=OmsQWdqV;xG^kWan%}uNu@aJ4I!(Pm`0drr#xjC><_gn zWF%SPb{+(UUaPDysF@lV2R8a?c2Ws?_L@YQDOROPDWtLu@M1b*3r+~~{Y401%253i z(c}R!4TM=D@D#CqinuKC_+!Z^kpoCB87rB-R6ZmGgmEHRrDjuu@OqfWuxGFvG}2Ma znJdVgIEgy>S!vswByA3$Sx6pHAbgAwom zfCMOt1O~tXw*-LT00E$AXlQAW0iXa40MO6?10Vndl8K}-4LuV>5C8xG27@7>0B8n) zXfy!e00E$AXlQAW0iXa40MO6?10VndRFa>eGM=Z3438*jwLL(@4H{^AnhhBbPzQpa zsXa9`^%<0DwA6K%@rI2tP;f999D19)FbQJSPBKkIT*8776T*(r{s+V|gW!^P(y;!< zJrVv6;P!@K^at1%VQC>lXg%Dqr2G4Y014ldL~~FEA(s#IiKQxWI9Z zq32CbQ1UeNQ+#~`RXMvuIXlvc+b_mOb@JAam9TklsM}N>xSC>BMrZlvxTpOb}agAZl3B#xr27R{{#pb1P zmvS0V4?JvF0`SD)O$$33*poppZeWsY2Ep<%Q{A9vo3x_Uqxu{p`QRP#_l*>#ygVb2 zcZM{M$nhjerxtbu{`rzbl@~r&86rs2DCQ*f$T){6)g5VRFNA20u;d&=#5qRklwcE2 O_`8xR!i0s~;c{?mlH!s8 diff --git a/energy_models/tests/jacobian_pkls/jacobian_investments_profile_builder_disc_poles.pkl b/energy_models/tests/jacobian_pkls/jacobian_investments_profile_builder_disc_poles.pkl index ded9fa93d25ff29257b954907fa017dc3cfac257..30c90ea337412728613975ddc6d196b397943e78 100644 GIT binary patch literal 562 zcmZ>Y%CIzaj8qGbG(2*pmVt5d|NsBr*m)d$`NQo+q)6NU_x~TAe&X-Ic!*c!49@~a zrbUej2N>@#FgGw{Fk~=0FtGJFFkD~&f(yh6F>X~6$~2qpWHfI^u)o9X;492-vr;bm zFw9#ld@0GG-*fr0Wf#=kZ@de2iAd?G+jx@S;YrVtt2^3zX9PDI*Kx_Le8RPpRVY)C zL9d9T|)8dEOCag{qd6!rdA`}KACo`Z2qAH=CTs9Adbl(?5Lv1Ub3cv79u z>6a0T49k}6{ zXwHn;Y(FiPk4%()#XX(p{2f+1dF!y0z5Mgo%>#ZOQJ$!`>G$mZ8Lom-m3L~cJIoMY zs>_x*GfFLT!t&L+6RTxY-h2}0Rl2F_?DJAdcXGGu<~ciJypposE&F=>^2w8r8(vs* jW<{&rwd()qXn&(@?(zxm6a&61ss0x)aY%CIzaj8qGbtQ7VYV_)76V7$Y?+`xbWB-v583=BqmXaXs`D;1^ME+zQ~U-`mRC4A+Uu*1d00=bF{E>3*m zzHGr|fy-CE^e!?MsqOBX(7!PBq@>P-7cvtc_)hn@(X)W%3{(Ea#u@Wjev6({a`=>} z%{+xOn?2>Ie0-oPt4T<1L2mn(+a-ldvOZ4Z@pZ0rT5Yv#_d7rTmDMW+#rn6cbLzdu zx@h9GiJFS{FIn}r81&l9b;ap(?#UKU^lNc!M^YTs<51_#ZPnjarH zUa8R7^H|O$#IKaO=l}pj;p&(G From ee365091726b12c76f75685b6b0ac49f461ce4a0 Mon Sep 17 00:00:00 2001 From: b4pm-devops Date: Sun, 15 Sep 2024 04:46:08 +0000 Subject: [PATCH 2/7] Pickle recalculated --- ...vestments_profile_builder_disc_all_years.pkl | Bin 519 -> 520 bytes ...n_investments_profile_builder_disc_poles.pkl | Bin 562 -> 559 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/energy_models/tests/jacobian_pkls/jacobian_investments_profile_builder_disc_all_years.pkl b/energy_models/tests/jacobian_pkls/jacobian_investments_profile_builder_disc_all_years.pkl index e9aa2ea0b8395ec50a93b4473db856bb846120cc..11d1065e2ad90941bc760f8fcd89eede65811895 100644 GIT binary patch literal 520 zcmV+j0{8twT4*^jL0KkKSyncbg#ZCZ|NsBIngLr`c}1!nRGR!wCdW|#zpbY>342GD100Y!$&>m2FnrLrS5=toaKx0vpKmarV zGy^7p001-q$N&I100w{tfHVLAXv6>w000004FD2SDYTks&@^ZoGynhq05oJ80gwhD zXa=5BM_8L`hd+iD(k8G-U~%7vci_Q8#Kh7?TqiLrV4Pif<%E&6N0A|xL)Ayi?P|IGAuU339k!LO_Sb;1kjp`v`!W5djNzF z(CDcOxFn_u$@(kBRro5TMR^#G4{Os?qi!`2rvzj%x-6SyLn#HMC-IQ2QyiQ?$iabbd5cw1vuIVUvQLRMWL^>v#L@<0TAgGqU^ydq#h{q<0 z*4$_{X;X6q=zj`{JcuWLy*(6yyF<^v!%&)02#4G$HKu{>UfyGm`-)(qi=S#Sc00E((&^<$G z14pO^o}kcro~P-m8~^|S00001kk9}C0000000K%%7=uQD00TfY8fYG-KmY(}3?R^Y zfb|*xM+SpAG@usX5mNnX=OmsQWdqV;xG^kWan%}uNu@aJ4I!(Pm`0drr#xjC><_gn zWF%SPb{+(UUaPDysF@lV2R8a?c2Ws?_L@YQDOROPDWtLu@M1b*3r+~~{Y401%253i z(c}R!4TM=D@D#CqinuKC_+!Z^kpoCB87rB-R6ZmGgmEHRrDjuu@OqfWuxGFvG}2Ma znJdVgIEgy>S!vswByA3$Sx6pHA@Gs!J2egP?M>K$pB8T_uqu{n5y1 zBk0<|+VV6f@~56XL-8&nPwG;#wpRj{u3YEeqCmLIzq&?wm|SU9QZhkSNXJOINOiJG zk@+)DvEdn{%Kj9q>K!F2N|8w{J**AH#%DPO!o)WAw}p6yV50|}5VlOr>A@*8SV|iK zBQz|9pIzcpQj`;A_m-|Ms&k@LQ!NlofmlXed7;_}j3cO`lEJ`~7vq#Mdp*~$FnlRX z2&<`yUxZFnDjnQlop_-Wr%$1ENFWv3O8QI)D!dp>l5k1Gz!LJYLS)&{sgWH6!Pst> z&JM)_KfdBveS1^99SHvD;)QBRmerWU{0b+}*=?ux*k}!pXiP zjV?}Z3qml2aPaBcgcAa$X$+Y&Y!|qb7o~AEX}hKg#m-teNy{Q}Q2i6r@FsF<#U(vk x9sGG)WaQ;g=q;0t6Z~osokV6?K~HfR)^-t*nMJkx87SBMUC9*TLPA{M;F!B?_V)k) literal 562 zcmZ>Y%CIzaj8qGbG(2*pmVt5d|NsBr*m)d$`NQo+q)6NU_x~TAe&X-Ic!*c!49@~a zrbUej2N>@#FgGw{Fk~=0FtGJFFkD~&f(yh6F>X~6$~2qpWHfI^u)o9X;492-vr;bm zFw9#ld@0GG-*fr0Wf#=kZ@de2iAd?G+jx@S;YrVtt2^3zX9PDI*Kx_Le8RPpRVY)C zL9d9T|)8dEOCag{qd6!rdA`}KACo`Z2qAH=CTs9Adbl(?5Lv1Ub3cv79u z>6a0T49k}6{ zXwHn;Y(FiPk4%()#XX(p{2f+1dF!y0z5Mgo%>#ZOQJ$!`>G$mZ8Lom-m3L~cJIoMY zs>_x*GfFLT!t&L+6RTxY-h2}0Rl2F_?DJAdcXGGu<~ciJypposE&F=>^2w8r8(vs* jW<{&rwd()qXn&(@?(zxm6a&61ss0x)a Date: Mon, 16 Sep 2024 09:55:51 +0200 Subject: [PATCH 3/7] showed capital graph for CC technos --- .../techno_type/disciplines/carbon_capture_techno_disc.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/energy_models/core/techno_type/disciplines/carbon_capture_techno_disc.py b/energy_models/core/techno_type/disciplines/carbon_capture_techno_disc.py index e881440a..40c564f7 100644 --- a/energy_models/core/techno_type/disciplines/carbon_capture_techno_disc.py +++ b/energy_models/core/techno_type/disciplines/carbon_capture_techno_disc.py @@ -214,6 +214,11 @@ def get_post_processing_list(self, filters=None): if new_chart is not None: instanciated_charts.append(new_chart) + if 'Non-Use Capital' in charts: + new_chart = self.get_chart_non_use_capital() + if new_chart is not None: + instanciated_charts.append(new_chart) + return instanciated_charts def get_chart_detailed_price_in_dollar_tCO2(self): From c0ac03120c775f5210722564743cfe1f836a8e02 Mon Sep 17 00:00:00 2001 From: b4pm-devops Date: Sun, 22 Sep 2024 04:44:05 +0000 Subject: [PATCH 4/7] Pickle recalculated --- ...vestments_profile_builder_disc_all_years.pkl | Bin 520 -> 522 bytes ...n_investments_profile_builder_disc_poles.pkl | Bin 559 -> 570 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/energy_models/tests/jacobian_pkls/jacobian_investments_profile_builder_disc_all_years.pkl b/energy_models/tests/jacobian_pkls/jacobian_investments_profile_builder_disc_all_years.pkl index 11d1065e2ad90941bc760f8fcd89eede65811895..8fa6d9cad50205114fdc7c5909b830da6a3e851a 100644 GIT binary patch literal 522 zcmV+l0`>huT4*^jL0KkKS!lsylmG!Z|L^~lncLS-(&y$Z!-`Dz$Ow< z2nPTrzyZ80MhPlG9-~Z}00E!?007M(XaE7_9;c`Wk~Gi&l9ZY@p!Az2r>JNRGyu>B zhD`u800000VgMWf13&{n8UO$^VgLq!00006fC#9jrk<&^nl_1o05oD?0%S5Y0}-?u z6HOQa86KK8sX7eDoi<<>un5UgcOdCk8Ld%_Llj`fsNs){W*>mi3ir4&^A7m*jWLiu z$!0On9O1MXMq%C@@TUz#g$`l*6AfXBN{IhQ$@l#wf_Njgkx3FVQQ-@Lpcu!}=2Er05!$mMp zQlcQLbcFI9k#L5QCJ5Iknr<33->Mf_K86_4(BTB9hWa{(JjBF1{3wYQSR%7vpd!}7 zOB7w9IP4>~SfC5+RnI!di;*`Y*jyry?kh2Pig=tC*sMXpXA2x8bgB~ER*_#9D543` zITs;-X_X1F(J*`pc%mnTJrL+of{HKD{O9E|m{V4-9b^&7q!M9jRKdtEp>szOBiK|0 zC|*L$6lsW=vWRG@Q71yW>O_K1PPo+`z}6qg_lAl|)I0-7dZroaK4GRchD5TgGavDH MBvXY628!wCdW|#zpbY>342GD100Y!$&>m2FnrLrS5=toaKx0vpKmarV zGy^7p001-q$N&I100w{tfHVLAXv6>w000004FD2SDYTks&@^ZoGynhq05oJ80gwhD zXa=5BM_8L`hd+iD(k8G-U~%7vci_Q8#Kh7?TqiLrV4Pif<%E&6N0A|xL)Ayi?P|IGAuU339k!LO_Sb;1kjp`v`!W5djNzF z(CDcOxFn_u$@(kBRro5TMR^#G4{Os?qi!`2rvzj%x-6SyLn#HMC-IQ2QyiQ?$iabbd5cw1vuIVUvQLRMWL^>v#L@<0TAgGqU^ydq#h{q<0 z*4$_{X;X6q=zj`{JcuWLy*(6yyF<^v!%&)02#4G$HKu{>UfyGm`-)(qi=Y%CIzaj8qGbv=SG5%fQ%E|NsBK{-mR&e{wqSmMHB1{{L6{A3jE<6%tN+4moNv zv4}DqV7$Y?+`xbeWKg*b3=hx*m^9TERW-hv7wo&@Le;#*zK&1kwFUdkTdd}A@fE|p zB^Q_7TBiQ0eaR=Ov?*WhLq3PhvFKZ5(<_|RP*uRQ`h?s=+32nPKi4c-AgA6rX?o|1|z#N%hTz0m*A4?bL1FKNGK< zG<~DxsoGYBpdUZx=6Z7n-71-#Q2g`Cdc%pmiD&nJ`?R9)5r#Nf<552XRFCCc2ak5-mRr=h|_p^`vWIOWQigRwb w%5vX{I{d#Ll+N2-xFI>QV2?icypI;M&s{$BsG?o)fA>zMIT{|a+#TN<03VMCd;kCd literal 559 zcmV+~0?_?JT4*^jL0KkKS(i8XCIA74|NsB3Dp0}W{N$=#w8X#f-{wQ??nn^;ut1SW zC@2BNh{V7F+yDcB0MGyofB*n88Z-a^000000N?;L00STZ01SqW000000000u01W^D z$N&HXA)`P50000000z{MjV7mv%|SHUVG)xEXb(w^O*GR@GBOMkX{n|rC#ciWF!e{+ zo<^~RY_diySc&9^A@Gs!J2egP?M>K$pB8T_uqu{n5y1 zBk0<|+VV6f@~56XL-8&nPwG;#wpRj{u3YEeqCmLIzq&?wm|SU9QZhkSNXJOINOiJG zk@+)DvEdn{%Kj9q>K!F2N|8w{J**AH#%DPO!o)WAw}p6yV50|}5VlOr>A@*8SV|iK zBQz|9pIzcpQj`;A_m-|Ms&k@LQ!NlofmlXed7;_}j3cO`lEJ`~7vq#Mdp*~$FnlRX z2&<`yUxZFnDjnQlop_-Wr%$1ENFWv3O8QI)D!dp>l5k1Gz!LJYLS)&{sgWH6!Pst> z&JM)_KfdBveS1^99SHvD;)QBRmerWU{0b+}*=?ux*k}!pXiP zjV?}Z3qml2aPaBcgcAa$X$+Y&Y!|qb7o~AEX}hKg#m-teNy{Q}Q2i6r@FsF<#U(vk x9sGG)WaQ;g=q;0t6Z~osokV6?K~HfR)^-t*nMJkx87SBMUC9*TLPA{M;F!B?_V)k) From f30429d3736b755644e52639d9b0418484048f2f Mon Sep 17 00:00:00 2001 From: perrotcap Date: Tue, 24 Sep 2024 14:32:55 +0200 Subject: [PATCH 5/7] fined tuned constraint non use capital --- energy_models/core/energy_mix/energy_mix.py | 8 ++++---- energy_models/core/energy_mix/energy_mix_disc.py | 5 +++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/energy_models/core/energy_mix/energy_mix.py b/energy_models/core/energy_mix/energy_mix.py index 7d12e6f4..81099ebe 100644 --- a/energy_models/core/energy_mix/energy_mix.py +++ b/energy_models/core/energy_mix/energy_mix.py @@ -138,7 +138,7 @@ def __init__(self, name): Constructor ''' super(EnergyMix, self).__init__(name) - + self.period_tol_power_non_use_capital_constraint = None self.non_use_capital_constraint_df = None self.target_production_constraint = None self.co2_emitted_by_energy = None @@ -242,7 +242,7 @@ def configure_parameters(self, inputs_dict): self.heat_losses_percentage = inputs_dict['heat_losses_percentage'] self.tol_constraint_non_use_capital_energy = inputs_dict['tol_constraint_non_use_capital_energy'] self.ref_constraint_non_use_capital_energy = inputs_dict['ref_constraint_non_use_capital_energy'] - + self.period_tol_power_non_use_capital_constraint = inputs_dict['period_tol_power_non_use_capital_constraint'] if self.subelements_list is not None: for energy in self.subelements_list: if f'{energy}.losses_percentage' in inputs_dict: @@ -1038,7 +1038,7 @@ def compute_non_use_energy_capital_constraint(self): We add also a period tolerance, so """ ratio_non_use_capital = self.energy_capital[GlossaryEnergy.NonUseCapital].values / self.energy_capital[GlossaryEnergy.Capital].values - period_tolerance = np.linspace(0, 1, len(self.years)) ** 2 + period_tolerance = np.linspace(0, 1, len(self.years)) ** self.period_tol_power_non_use_capital_constraint constraint = (ratio_non_use_capital - self.tol_constraint_non_use_capital_energy) / self.ref_constraint_non_use_capital_energy * period_tolerance self.non_use_capital_constraint_df = pd.DataFrame({ @@ -1054,7 +1054,7 @@ def d_non_use_capital_constraint_d_capital(self): capital = self.energy_capital[GlossaryEnergy.Capital].values non_use_capital = self.energy_capital[GlossaryEnergy.NonUseCapital].values - period_tolerance = np.linspace(0, 1, len(self.years)) ** 2 + period_tolerance = np.linspace(0, 1, len(self.years)) ** self.period_tol_power_non_use_capital_constraint d_non_use_capital = np.diag(period_tolerance / capital / self.ref_constraint_non_use_capital_energy / 1e3) d_capital = np.diag(- non_use_capital * period_tolerance / (capital ** 2) / self.ref_constraint_non_use_capital_energy / 1e3) return d_non_use_capital, d_capital diff --git a/energy_models/core/energy_mix/energy_mix_disc.py b/energy_models/core/energy_mix/energy_mix_disc.py index ccbb1e56..4d57d3f2 100644 --- a/energy_models/core/energy_mix/energy_mix_disc.py +++ b/energy_models/core/energy_mix/energy_mix_disc.py @@ -150,8 +150,9 @@ class Energy_Mix_Discipline(SoSWrapp): 'liquid_hydrogen_constraint_ref': {'type': 'float', 'default': 1000., 'unit': 'Twh', 'user_level': 2, 'visibility': SoSWrapp.SHARED_VISIBILITY, 'namespace': GlossaryEnergy.NS_REFERENCE}, - 'ref_constraint_non_use_capital_energy': {'type': 'float', 'default': 0.30, 'unit': '0.30 means after 35 % of capital not used the constraint will explode'}, - 'tol_constraint_non_use_capital_energy': {'type': 'float', 'default': 0.05, 'unit': '0.05 means constraint does not penalize lagrangian when non use capital is less than 5%'}, + 'ref_constraint_non_use_capital_energy': {'type': 'float', 'default': 0.30, 'unit':'-','description': '0.30 means after 35 % of capital not used the constraint will explode'}, + 'tol_constraint_non_use_capital_energy': {'type': 'float', 'default': 0.05, 'unit':'-','description': '0.05 means constraint does not penalize lagrangian when non use capital is less than 5%'}, + 'period_tol_power_non_use_capital_constraint': {'type': 'float', 'default': 1.0, 'unit':'-','description': '0.05 means constraint does not penalize lagrangian when non use capital is less than 5%'}, 'syngas_prod_ref': {'type': 'float', 'default': 10000., 'unit': 'TWh', 'user_level': 2, 'visibility': SoSWrapp.SHARED_VISIBILITY, 'namespace': GlossaryEnergy.NS_REFERENCE}, 'syngas_prod_constraint_limit': {'type': 'float', 'default': 10000., 'unit': 'TWh', 'user_level': 2, From 5b725d42c519a0fd3e28cd6bcda134363824b87e Mon Sep 17 00:00:00 2001 From: perrotcap Date: Wed, 25 Sep 2024 13:26:41 +0200 Subject: [PATCH 6/7] completed with neglectable invest --- data_energy/techno_invests/carbonstoragetechno.csv | 1 + .../direct_air_capture_directaircapturetechno.csv | 2 +- data_energy/techno_invests/flue_gas_capture_fluegastechno.csv | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/data_energy/techno_invests/carbonstoragetechno.csv b/data_energy/techno_invests/carbonstoragetechno.csv index 970d4508..31dc690c 100644 --- a/data_energy/techno_invests/carbonstoragetechno.csv +++ b/data_energy/techno_invests/carbonstoragetechno.csv @@ -2,3 +2,4 @@ years,invest 2020,0.013 2021,0.009 2022,0.004 +2023,0.004 diff --git a/data_energy/techno_invests/direct_air_capture_directaircapturetechno.csv b/data_energy/techno_invests/direct_air_capture_directaircapturetechno.csv index a2557fdf..e9a91384 100644 --- a/data_energy/techno_invests/direct_air_capture_directaircapturetechno.csv +++ b/data_energy/techno_invests/direct_air_capture_directaircapturetechno.csv @@ -2,8 +2,8 @@ years,past years,invest 2017,-3,1.3581333333333335e-05 2018,-2,1.3581333333333335e-05 2019,-1,0.0040248 -2019,-1,0.0040248 2020,-1,0 2021,-1,0.0040248 2022,-1,1.0 +2023,-1,0.0218 2024,-1,0.0218 diff --git a/data_energy/techno_invests/flue_gas_capture_fluegastechno.csv b/data_energy/techno_invests/flue_gas_capture_fluegastechno.csv index aa1e2de9..ba0b1274 100644 --- a/data_energy/techno_invests/flue_gas_capture_fluegastechno.csv +++ b/data_energy/techno_invests/flue_gas_capture_fluegastechno.csv @@ -1,3 +1,4 @@ years,past years,invest 2019,-1,0.2 +2020,-1,0.0 2023,-1,0.0 From 7fc68b0bd9e180548cec52cfb4c7a7d237aa95b9 Mon Sep 17 00:00:00 2001 From: perrotcap Date: Wed, 25 Sep 2024 16:15:13 +0200 Subject: [PATCH 7/7] fixed optim Ku --- ...vestments_profile_builder_disc_all_years.pkl | Bin 522 -> 522 bytes ...n_investments_profile_builder_disc_poles.pkl | Bin 570 -> 562 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/energy_models/tests/jacobian_pkls/jacobian_investments_profile_builder_disc_all_years.pkl b/energy_models/tests/jacobian_pkls/jacobian_investments_profile_builder_disc_all_years.pkl index 8fa6d9cad50205114fdc7c5909b830da6a3e851a..73b4ceab5e07f2d8b0b537e9ae05892e602d586c 100644 GIT binary patch literal 522 zcmV+l0`>huT4*^jL0KkKS?Rv`%>V&M|NsB4I}lt&`Ao4I%Z>Uy4|N2v6MgF&?nnr5Mp84VgV zVKRDvJwcd_NDNPsP}>4a0>n@uI|qUZ&MhR<0$`Y$y%&g~gtlGr#~qP~G}6fY#w>BP zJEOopAl8N|LUpl~C`>bFp{6vAflT=qkfw_1&crbcoQa5WjWmdCfn&MQ5v2?HiG$`Q>F0<#6={8Fn*F!v4FCWD literal 522 zcmV+l0`>huT4*^jL0KkKS!lsylmG!Z|L^~lncLS-(&y$Z!-`Dz$Ow< z2nPTrzyZ80MhPlG9-~Z}00E!?007M(XaE7_9;c`Wk~Gi&l9ZY@p!Az2r>JNRGyu>B zhD`u800000VgMWf13&{n8UO$^VgLq!00006fC#9jrk<&^nl_1o05oD?0%S5Y0}-?u z6HOQa86KK8sX7eDoi<<>un5UgcOdCk8Ld%_Llj`fsNs){W*>mi3ir4&^A7m*jWLiu z$!0On9O1MXMq%C@@TUz#g$`l*6AfXBN{IhQ$@l#wf_Njgkx3FVQQ-@Lpcu!}=2Er05!$mMp zQlcQLbcFI9k#L5QCJ5Iknr<33->Mf_K86_4(BTB9hWa{(JjBF1{3wYQSR%7vpd!}7 zOB7w9IP4>~SfC5+RnI!di;*`Y*jyry?kh2Pig=tC*sMXpXA2x8bgB~ER*_#9D543` zITs;-X_X1F(J*`pc%mnTJrL+of{HKD{O9E|m{V4-9b^&7q!M9jRKdtEp>szOBiK|0 zC|*L$6lsW=vWRG@Q71yW>O_K1PPo+`z}6qg_lAl|)I0-7dZroaK4GRchD5TgGavDH MBvXY628Y%CIzaj8qGbTt9OkBLic9{r~^#xB@;F{&L$9S;qGN`TyeQ@6U0l2>38GxC*v2 z8Hg|(V7$Y?+`y2*kiqQ0z}DlyaDf2`E)XZgxK%}PQKGNSEY2rAz7yHp9L_5H^z;V< zX}1emiH0ja`cA3ser@3PStTT;tNDV>#89)m`;lA?!bYwK8>8eV~Yc(gir<%XKW3$`O&(D92(nM#4 zCmvhsUIvA(T=Db4swEXc29so$xCI;)+GV30A04P0>At2*)l=(dsdZ+rE#sf3KI``; z1W!04F}S{E_%$eF9Rd(rg?e}}BZ&^-=Gg+M4 zwV5fvUt`J2WH%niQ*w*SMYH$~YBqjg_L(wGqbz3o8L8S2(=7|7mo(a&mHd%=;GiYY zBazq07JTq-%H$?fFQq6Q|EZ7E5{@jrpeq^8#qd^G=e$zosgovWe@*pfwO0Myup?UU$wo{d`ZfzSy}%Oczaqt_NOMIuRcHe(#b$eBs^C9Th#^%N#2#X>>Tb gflKqc|HGJl@%l5eUYv}N|5&aP+{(%IbM^xP03M|7Y5)KL literal 570 zcmZ>Y%CIzaj8qGbv=SG5%fQ%E|NsBK{-mR&e{wqSmMHB1{{L6{A3jE<6%tN+4moNv zv4}DqV7$Y?+`xbeWKg*b3=hx*m^9TERW-hv7wo&@Le;#*zK&1kwFUdkTdd}A@fE|p zB^Q_7TBiQ0eaR=Ov?*WhLq3PhvFKZ5(<_|RP*uRQ`h?s=+32nPKi4c-AgA6rX?o|1|z#N%hTz0m*A4?bL1FKNGK< zG<~DxsoGYBpdUZx=6Z7n-71-#Q2g`Cdc%pmiD&nJ`?R9)5r#Nf<552XRFCCc2ak5-mRr=h|_p^`vWIOWQigRwb w%5vX{I{d#Ll+N2-xFI>QV2?icypI;M&s{$BsG?o)fA>zMIT{|a+#TN<03VMCd;kCd