Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

All enty split #951

Open
wants to merge 57 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
9cd5620
Changed all_enty from equation q_emiTe
Aug 27, 2021
f1b7773
Changed eq q_emiAll all_enty to emiTe, no changes in testOneRegi
Aug 27, 2021
ec737b7
Fixup changed declarations of the equations from all_enty to emiTe
Aug 27, 2021
3a7a3c9
Changed eq q_emiAllGLob s all_enty to emiTe. No changes in testOneRegi
Aug 27, 2021
85b8ade
Changed equation q_emiTeMkt s all_enty to emiTe. No changes in testOn…
Aug 27, 2021
dd24146
Changed eq q_emiEnFuelEx s all_enty to emiTe. No changes in testOneRegi
Aug 27, 2021
43b3799
Changed equation q_emiAllMkt s all_enty to emiTe. No changes in testO…
Aug 27, 2021
008a7b3
Changed parameter pm_emissionsForeign all_enty to emiTe. No changes i…
Aug 27, 2021
c0e67cd
Changed param p_histEmiSector s all_enty to emiTe. No changes in test…
Aug 27, 2021
0eca704
Changed param pm_emissions0 s all_enty to emiTe. No changes in testOn…
Aug 27, 2021
403b47f
Changed variable vm_emiMac s all_enty to emiTe and made emiMac set on…
Aug 27, 2021
fbe7380
Changed variable vm_emiAll s all_enty to emiTe. No changes in testOne…
Aug 27, 2021
c7d20d9
Changed Variable vm_emiAllGlob all_enty to emiTe. No changes in testO…
Aug 27, 2021
40aa633
Changed variable vm_emiTeMkt s all_enty to emiTe. No changes in testO…
Aug 27, 2021
5ac8cff
Changed variable v_emiEnFuelEx s all_enty to emiTe. No changes in tes…
Aug 27, 2021
df97a7e
Changed variable vm_emiAllMkt s all_enty to emiTe. No changes in test…
Aug 27, 2021
4a942c1
Changed param pm_emiExog s all_enty to emiTe. No changes in testOneRegi
Aug 27, 2021
3842ae1
Changed param p_cint s 1. all_enty to emiTe. No changes in testOneRegi
Aug 27, 2021
96d4468
ÂChanged output o_emissions and o_emissions_bunkers all_enty to emiTe…
Aug 27, 2021
344c9a1
Merge branch 'develop' of https://github.com/remindmodel/remind into …
Aug 31, 2021
2559b89
Changed output o_emissions_energy s all_enty to emiTe. No changes in …
Aug 31, 2021
8d09556
Merge branch 'develop' of https://github.com/remindmodel/remind into …
Aug 31, 2021
cb2c4fc
Changed outputs o_emissions_energy_demand_sector, o_emissions_energy_…
Aug 31, 2021
8b3ac79
Changed all remaining o_emissions_* all_entys to emiTe. No changes in…
Aug 31, 2021
2c29def
Changed all outputs o_capture_* and o_carbon_* s allenties to emiTe. …
Aug 31, 2021
e87b696
Merge branch 'develop' of https://github.com/remindmodel/remind into …
Sep 1, 2021
27fb912
Merge branch 'develop' of https://github.com/remindmodel/remind into …
spahrm Sep 1, 2021
e60d7d1
Merge branch 'develop' of https://github.com/remindmodel/remind into …
spahrm Sep 7, 2021
fd8f11b
Merge branch 'develop' of https://github.com/remindmodel/remind into …
spahrm Sep 9, 2021
0487027
Merge branch 'develop' of https://github.com/remindmodel/remind into …
spahrm Sep 14, 2021
45adde9
Fixup! Forgot to rename declaration of o_emissions_energy_supply_gross
spahrm Sep 14, 2021
1044420
Added all_enty replacing including cco2 and n2obio with emiAll
spahrm Oct 1, 2021
8a9ec93
Merge branch 'develop' of https://github.com/remindmodel/remind into …
spahrm Oct 1, 2021
833a4a4
Merge branch 'develop' of https://github.com/remindmodel/remind into …
spahrm Oct 14, 2021
4531987
Added all necessary changes for en2en set
spahrm Oct 14, 2021
162007a
Fixed en2en changes
spahrm Oct 14, 2021
8e0ee24
Merge branch 'develop' of https://github.com/remindmodel/remind into …
spahrm Oct 15, 2021
d4adf76
Merge branch 'develop' of https://github.com/remindmodel/remind into …
spahrm Oct 18, 2021
6b7819b
Merge branch 'develop' of https://github.com/remindmodel/remind into …
spahrm Oct 19, 2021
99ed2eb
Added changes for pm_prodCouple variable
spahrm Oct 19, 2021
d2b8fa7
Added fixes for splitting emiAll from all_enty
spahrm Oct 20, 2021
148ed96
Added description for pm_prodCoupleEmi
spahrm Oct 20, 2021
9ceb3e9
Merge branch 'develop' of https://github.com/remindmodel/remind into …
spahrm Oct 22, 2021
0f8d00b
Added bounds for v05_INIcap0 for ccsinje value
spahrm Oct 22, 2021
8b12af8
Merge branch 'remindmodel:develop' into feature/oneByOne_all_enty
Renato-Rodrigues Oct 29, 2021
a20a9b6
Merge branch 'allEntySplit' into oldAllEntySplit
chroetz Jul 26, 2022
111c268
undo wrong merge change
chroetz Jul 26, 2022
01efe22
delete v05_INIcap0 fix to 0
chroetz Jul 26, 2022
e0113b4
Merge pull request #7 from chroetz/oldAllEntySplit
chroetz Jul 26, 2022
4fc29ba
fix set
chroetz Jul 26, 2022
f3a429c
re-insert `v05_INIcap0.fx(regi, "ccsinje") = 0;`
chroetz Jul 26, 2022
db6e901
Merge pull request #8 from chroetz/oldAllEntySplit
chroetz Jul 26, 2022
e49bb73
Merge branch 'remindmodel:develop' into allEntySplit
chroetz Aug 1, 2022
7ec2111
Merge pull request #11 from chroetz/beforeAllEntySplit
chroetz Aug 9, 2022
f97b707
Merge pull request #12 from chroetz/beforeAllEntySplit
chroetz Aug 10, 2022
faa785b
Merge branch 'remindmodel:develop' into allEntySplit
chroetz Aug 23, 2022
dbd6720
added use of `pm_prodCoupleEmi` to 32_power/DTcoup/equations.gms
chroetz Aug 24, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions core/datainput.gms
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,9 @@

*AJS* technical. initialize parameters so that they are read from gdx
vm_co2eq.l(ttot,regi) = 0;
vm_emiAll.l(ttot,regi,enty) = 0;
vm_emiAll.l(ttot,regi,emiTe) = 0;
vm_emiCO2Sector.l(ttot,all_regi,emi_sectors) = 0;


*AJS* initialize parameter (avoid compilation errors)
* do this at the start of datainput to prevent accidental overwriting
pm_SolNonInfes(regi) = 1; !! assume the starting point came from a feasible solution
Expand Down Expand Up @@ -351,7 +350,7 @@ $offdelim
/
;
* Read in historical emissions per sector to calibrate MAC reference emissions
parameter p_histEmiSector(tall,all_regi,all_enty,emi_sectors,sector_types) "historical emissions per sector"
parameter p_histEmiSector(tall,all_regi,emiTe,emi_sectors,sector_types) "historical emissions per sector"
/
$ondelim
$include "./core/input/p_histEmiSector.cs4r"
Expand All @@ -367,7 +366,7 @@ $offdelim
*RP* 2012-07-24: CO2-technologies don't have own emissions, but the pipeline leakage rate (s_co2pipe_leakage) is multiplied on the individual pe2se
s_co2pipe_leakage = 0.01;

loop(emi2te(enty,enty2,te,enty3)$teCCS(te),
loop(emi2te(enty,enty2,te,emiAll)$teCCS(te),
fm_dataemiglob(enty,enty2,te,"co2") = fm_dataemiglob(enty,enty2,te,"co2") + fm_dataemiglob(enty,enty2,te,"cco2") * s_co2pipe_leakage ;
fm_dataemiglob(enty,enty2,te,"cco2") = fm_dataemiglob(enty,enty2,te,"cco2") * (1 - s_co2pipe_leakage );
);
Expand Down
116 changes: 58 additions & 58 deletions core/declarations.gms
100644 → 100755

Large diffs are not rendered by default.

130 changes: 65 additions & 65 deletions core/equations.gms
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -128,10 +128,10 @@ q_balSe(t,regi,enty2)$( entySE(enty2) AND (NOT (sameas(enty2,"seel"))) )..
pm_prodCouple(regi,enty4,enty5,te,enty2)
* vm_prodFe(t,regi,enty4,enty5,te)
)
+ sum(pc2te(enty,enty3,te,enty2),
+ sum(pc2emi(emiAll,enty3,te,enty2),
sum(teCCS2rlf(te,rlf),
pm_prodCouple(regi,enty,enty3,te,enty2)
* vm_co2CCS(t,regi,enty,enty3,te,rlf)
pm_prodCoupleEmi(regi,emiAll,enty3,te,enty2)
* vm_co2CCS(t,regi,emiAll,enty3,te,rlf)
)
)
*** add (reused gas from waste landfills) to segas to not account for CO2
Expand Down Expand Up @@ -281,8 +281,8 @@ q_limitCapFe(t,regi,te)..
***---------------------------------------------------------------------------
*' Definition of capacity constraints for CCS technologies:
***---------------------------------------------------------------------------
q_limitCapCCS(t,regi,ccs2te(enty,enty2,te),rlf)$teCCS2rlf(te,rlf)..
vm_co2CCS(t,regi,enty,enty2,te,rlf)
q_limitCapCCS(t,regi,ccs2te(emiAll,enty2,te),rlf)$teCCS2rlf(te,rlf)..
vm_co2CCS(t,regi,emiAll,enty2,te,rlf)
=e=
sum(teCCS2rlf(te,rlf), vm_capFac(t,regi,te) * vm_cap(t,regi,te,rlf));

Expand Down Expand Up @@ -488,20 +488,20 @@ q_limitBiotrmod(t,regi)$(t.val > 2020)..
*' from secondary to final energy transformation (some air pollutants), or
*' transformations within the chain of CCS steps (Leakage).
***-----------------------------------------------------------------------------
q_emiTeDetail(t,regi,enty,enty2,te,enty3)$(emi2te(enty,enty2,te,enty3) OR (pe2se(enty,enty2,te) AND sameas(enty3,"cco2")) ) ..
vm_emiTeDetail(t,regi,enty,enty2,te,enty3)
q_emiTeDetail(t,regi,enty,enty2,te,emiAll)$(emi2te(enty,enty2,te,emiAll) OR (pe2se(enty,enty2,te) AND sameas(emiAll,"cco2")) ) ..
vm_emiTeDetail(t,regi,enty,enty2,te,emiAll)
=e=
sum(emiMkt, v_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt))
sum(emiMkt, v_emiTeDetailMkt(t,regi,enty,enty2,te,emiAll,emiMkt))
;

***--------------------------------------------------
*' Total energy-emissions:
***--------------------------------------------------
*** calculate total energy system emissions for each region and timestep:
q_emiTe(t,regi,emiTe(enty))..
vm_emiTe(t,regi,enty)
q_emiTe(t,regi,emiTe)..
vm_emiTe(t,regi,emiTe)
=e=
sum(emiMkt, vm_emiTeMkt(t,regi,enty,emiMkt))
sum(emiMkt, vm_emiTeMkt(t,regi,emiTe,emiMkt))
;

***-----------------------------------------------------------------------------
Expand All @@ -511,22 +511,22 @@ q_emiTe(t,regi,emiTe(enty))..
*' transformations within the chain of CCS steps (Leakage).
***-----------------------------------------------------------------------------

q_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)$(emi2te(enty,enty2,te,enty3) OR (pe2se(enty,enty2,te) AND sameas(enty3,"cco2")) ) ..
v_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)
q_emiTeDetailMkt(t,regi,enty,enty2,te,emiAll,emiMkt)$(emi2te(enty,enty2,te,emiAll) OR (pe2se(enty,enty2,te) AND sameas(emiAll,"cco2")) ) ..
v_emiTeDetailMkt(t,regi,enty,enty2,te,emiAll,emiMkt)
=e=
sum(emi2te(enty,enty2,te,enty3),
sum(emi2te(enty,enty2,te,emiAll),
(
sum(pe2se(enty,enty2,te),
pm_emifac(t,regi,enty,enty2,te,enty3)
pm_emifac(t,regi,enty,enty2,te,emiAll)
* vm_demPE(t,regi,enty,enty2,te)
)
+ sum((ccs2Leak(enty,enty2,te,enty3),teCCS2rlf(te,rlf)),
pm_emifac(t,regi,enty,enty2,te,enty3)
* vm_co2CCS(t,regi,enty,enty2,te,rlf)
+ sum((ccs2Leak(emiAll,enty2,te,emiAll),teCCS2rlf(te,rlf)),
pm_emifac(t,regi,enty,enty2,te,emiAll)
* vm_co2CCS(t,regi,emiAll,enty2,te,rlf)
)
)$(sameas(emiMkt,"ETS"))
+ sum(se2fe(enty,enty2,te),
pm_emifac(t,regi,enty,enty2,te,enty3)
pm_emifac(t,regi,enty,enty2,te,emiAll)
* sum(sector$(entyFe2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), vm_demFeSector(t,regi,enty,enty2,sector,emiMkt))
)
)
Expand All @@ -536,65 +536,65 @@ q_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)$(emi2te(enty,enty2,te,enty3)
*' energy emissions from fuel extraction
***--------------------------------------------------

q_emiEnFuelEx(t,regi,emiTe(enty))..
v_emiEnFuelEx(t,regi,enty)
q_emiEnFuelEx(t,regi,emiTe)..
v_emiEnFuelEx(t,regi,emiTe)
=e=
*** emissions from non-conventional fuel extraction
sum(emi2fuelMine(enty,enty2,rlf),
p_cint(regi,enty,enty2,rlf)
* vm_fuExtr(t,regi,enty2,rlf)
sum(emi2fuelMine(emiTe,enty,rlf),
p_cint(regi,emiTe,enty,rlf)
* vm_fuExtr(t,regi,enty,rlf)
)$( c_cint_scen eq 1 )
*** emissions from conventional fuel extraction
+ (sum(pe2rlf(enty3,rlf2),
sum(enty2$(peFos(enty2)),
(p_cintraw(enty2)
* pm_fuExtrOwnCons(regi, enty2, enty3)
* vm_fuExtr(t,regi,enty3,rlf2))$(pm_fuExtrOwnCons(regi, enty2, enty3) gt 0))))$(sameas("co2",enty))
+ (sum(pe2rlf(enty2,rlf2),
sum(enty$(peFos(enty)),
(p_cintraw(enty)
* pm_fuExtrOwnCons(regi, enty, enty2)
* vm_fuExtr(t,regi,enty2,rlf2))$(pm_fuExtrOwnCons(regi, enty, enty2) gt 0))))$(sameas("co2",emiTe))
;



***--------------------------------------------------
*' Total energy-emissions per emission market, region and timestep
***--------------------------------------------------
q_emiTeMkt(t,regi,emiTe(enty),emiMkt)..
vm_emiTeMkt(t,regi,enty,emiMkt)
q_emiTeMkt(t,regi,emiTe,emiMkt)..
vm_emiTeMkt(t,regi,emiTe,emiMkt)
=e=
*** emissions from fuel combustion
sum(emi2te(enty2,enty3,te,enty),
v_emiTeDetailMkt(t,regi,enty2,enty3,te,enty,emiMkt)
sum(emi2te(enty,enty2,te,emiTe),
v_emiTeDetailMkt(t,regi,enty,enty2,te,emiTe,emiMkt)
)
*** energy emissions fuel extraction
+ v_emiEnFuelEx(t,regi,enty)$(sameas(emiMkt,"ETS"))
+ v_emiEnFuelEx(t,regi,emiTe)$(sameas(emiMkt,"ETS"))
*** Industry CCS emissions
- ( sum(emiMac2mac(emiInd37_fuel,enty2),
- ( sum(emiMac2mac(emiInd37_fuel,enty),
vm_emiIndCCS(t,regi,emiInd37_fuel)
)$( sameas(enty,"co2") )
)$( sameas(emiTe,"co2") )
)$(sameas(emiMkt,"ETS"))
*** LP, Valve from cco2 capture step, to mangage if capture capacity and CCU/CCS capacity don't have the same lifetime
+ ( v_co2capturevalve(t,regi)$( sameas(enty,"co2") ) )$(sameas(emiMkt,"ETS"))
+ ( v_co2capturevalve(t,regi)$( sameas(emiTe,"co2") ) )$(sameas(emiMkt,"ETS"))
*** JS CO2 from short-term CCU (short term CCU co2 is emitted again in a time period shorter than 5 years)
+ sum(teCCU2rlf(te2,rlf),
vm_co2CCUshort(t,regi,"cco2","ccuco2short",te2,rlf)$( sameas(enty,"co2") )
vm_co2CCUshort(t,regi,"cco2","ccuco2short",te2,rlf)$( sameas(emiTe,"co2") )
)$(sameas(emiMkt,"ETS"))
;

***--------------------------------------------------
*' Total emissions
***--------------------------------------------------
q_emiAllMkt(t,regi,emi,emiMkt)..
vm_emiAllMkt(t,regi,emi,emiMkt)
q_emiAllMkt(t,regi,emiTe,emiMkt)..
vm_emiAllMkt(t,regi,emiTe,emiMkt)
=e=
vm_emiTeMkt(t,regi,emi,emiMkt)
vm_emiTeMkt(t,regi,emiTe,emiMkt)
*** Non-energy sector emissions. Note: These are emissions from all MAC curves.
*** So, this includes fugitive emissions, which are sometimes also subsumed under the term energy emissions.
+ sum(emiMacSector2emiMac(emiMacSector,emiMac(emi))$macSector2emiMkt(emiMacSector,emiMkt),
+ sum(emiMacSector2emiMac(emiMacSector,emiMac(emiTe))$macSector2emiMkt(emiMacSector,emiMkt),
vm_emiMacSector(t,regi,emiMacSector)
)
*** CDR from CDR module
+ vm_emiCdr(t,regi,emi)$(sameas(emi,"co2") AND sameas(emiMkt,"ETS"))
+ vm_emiCdr(t,regi,emiTe)$(sameas(emiTe,"co2") AND sameas(emiMkt,"ETS"))
*** Exogenous emissions
+ pm_emiExog(t,regi,emi)$(sameas(emiMkt,"other"))
+ pm_emiExog(t,regi,emiTe)$(sameas(emiMkt,"other"))
;


Expand Down Expand Up @@ -683,7 +683,7 @@ q_emiMac(t,regi,emiMac) ..
q_emiCdrAll(t,regi)..
vm_emiCdrAll(t,regi)
=e= !! BECC + DACC
(sum(emiBECCS2te(enty,enty2,te,enty3),vm_emiTeDetail(t,regi,enty,enty2,te,enty3))
(sum(emiBECCS2te(enty,enty2,te,emiAll),vm_emiTeDetail(t,regi,enty,enty2,te,emiAll))
+ sum(teCCS2rlf(te,rlf), vm_ccs_cdr(t,regi,"cco2","ico2","ccsinje",rlf)))
!! scaled by the fraction that gets stored geologically
* (sum(teCCS2rlf(te,rlf),
Expand All @@ -701,25 +701,25 @@ q_emiCdrAll(t,regi)..
*' Total regional emissions are the sum of emissions from technologies, MAC-curves, CDR-technologies and emissions that are exogenously given for REMIND.
***------------------------------------------------------
*LB* calculate total emissions for each region at each time step
q_emiAll(t,regi,emi(enty))..
vm_emiAll(t,regi,enty)
q_emiAll(t,regi,emiTe)..
vm_emiAll(t,regi,emiTe)
=e=
vm_emiTe(t,regi,enty)
+ vm_emiMac(t,regi,enty)
+ vm_emiCdr(t,regi,enty)
+ pm_emiExog(t,regi,enty)
vm_emiTe(t,regi,emiTe)
+ vm_emiMac(t,regi,emiTe)
+ vm_emiCdr(t,regi,emiTe)
+ pm_emiExog(t,regi,emiTe)
;

***------------------------------------------------------
*' Total global emissions are calculated for each GHG emission type and links the energy system to the climate module.
***------------------------------------------------------
*LB* calculate total global emissions for each timestep - link to the climate module
q_emiAllGlob(t,emi(enty))..
vm_emiAllGlob(t,enty)
q_emiAllGlob(t,emiTe)..
vm_emiAllGlob(t,emiTe)
=e=
sum(regi,
vm_emiAll(t,regi,enty)
+ pm_emissionsForeign(t,regi,enty)
vm_emiAll(t,regi,emiTe)
+ pm_emissionsForeign(t,regi,emiTe)
)
;

Expand Down Expand Up @@ -785,14 +785,14 @@ q_budgetCO2eqGlob$(cm_emiscen=6)..
***---------------------------------------------------------------------------
*' Definition of carbon capture :
***---------------------------------------------------------------------------
q_balcapture(t,regi,ccs2te(ccsCO2(enty),enty2,te)) ..
sum(teCCS2rlf(te,rlf),vm_co2capture(t,regi,enty,enty2,te,rlf))
q_balcapture(t,regi,ccs2te(ccsCO2(emiAll),enty2,te)) ..
sum(teCCS2rlf(te,rlf),vm_co2capture(t,regi,emiAll,enty2,te,rlf))
=e=
sum(emi2te(enty3,enty4,te2,enty),
vm_emiTeDetail(t,regi,enty3,enty4,te2,enty)
sum(emi2te(enty3,enty4,te2,emiAll),
vm_emiTeDetail(t,regi,enty3,enty4,te2,emiAll)
)
+ sum(teCCS2rlf(te,rlf),
vm_ccs_cdr(t,regi,enty,enty2,te,rlf)
vm_ccs_cdr(t,regi,emiAll,enty2,te,rlf)
)
*** CCS from industry
+ sum(emiInd37,
Expand All @@ -817,13 +817,13 @@ q_balCCUvsCCS(t,regi) ..
*' Definition of the CCS transformation chain:
***---------------------------------------------------------------------------
*** no effect while CCS chain is limited to just one step (ccsinje)
q_transCCS(t,regi,ccs2te(enty,enty2,te),ccs2te2(enty2,enty3,te2),rlf)$teCCS2rlf(te2,rlf)..
(1-pm_emifac(t,regi,enty,enty2,te,"co2")) * vm_co2CCS(t,regi,enty,enty2,te,rlf)
q_transCCS(t,regi,ccs2te(emiAll,enty2,te),ccs2te2(emiAll,enty3,te2),rlf)$teCCS2rlf(te2,rlf)..
(1-pm_emifac(t,regi,emiAll,enty2,te,"co2")) * vm_co2CCS(t,regi,emiAll,enty2,te,rlf)
=e=
vm_co2CCS(t,regi,enty2,enty3,te2,rlf);
vm_co2CCS(t,regi,emiAll,enty3,te2,rlf);

q_limitCCS(regi,ccs2te2(enty,"ico2",te),rlf)$teCCS2rlf(te,rlf)..
sum(ttot $(ttot.val ge 2005), pm_ts(ttot) * vm_co2CCS(ttot,regi,enty,"ico2",te,rlf))
q_limitCCS(regi,ccs2te2(emiAll,"ico2",te),rlf)$teCCS2rlf(te,rlf)..
sum(ttot $(ttot.val ge 2005), pm_ts(ttot) * vm_co2CCS(ttot,regi,emiAll,"ico2",te,rlf))
=l=
pm_dataccs(regi,"quan",rlf);

Expand Down
Loading