Skip to content

Commit

Permalink
Merge branch 'jfn-ustory-leaf-turn' into api36.1.0-merge
Browse files Browse the repository at this point in the history
  • Loading branch information
glemieux committed Oct 2, 2024
2 parents e06e0df + 3fcbd19 commit 651a732
Show file tree
Hide file tree
Showing 10 changed files with 2,046 additions and 67 deletions.
15 changes: 13 additions & 2 deletions biogeochem/EDPhysiologyMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -668,6 +668,7 @@ subroutine trim_canopy( currentSite )
real(r8) :: target_c_area

real(r8) :: pft_leaf_lifespan ! Leaf lifespan of each PFT [years]
real(r8) :: leaf_long ! temporary leaf lifespan before accounting for deciduousness
!----------------------------------------------------------------------

ipatch = 1 ! Start counting patches
Expand Down Expand Up @@ -740,6 +741,14 @@ subroutine trim_canopy( currentSite )
! Identify current canopy layer (cl)
cl = currentCohort%canopy_layer

! Get leaf lifespan- depends on canopy layer
if (cl .eq. 1 ) then
leaf_long = sum(prt_params%leaf_long(ipft,:))
else
leaf_long = sum(prt_params%leaf_long_ustory(ipft,:))
end if


! PFT-level maximum SLA value, even if under a thick canopy (same units as slatop)
sla_max = prt_params%slamax(ipft)

Expand Down Expand Up @@ -788,10 +797,10 @@ subroutine trim_canopy( currentSite )
! Drought-decidous costs. Assume time-span to be the least between
! 1 year and the life span provided by the parameter file.
pft_leaf_lifespan = &
min(decid_leaf_long_max,sum(prt_params%leaf_long(ipft,:)))
min(decid_leaf_long_max,leaf_long)

else !evergreen costs
pft_leaf_lifespan = sum(prt_params%leaf_long(ipft,:))
pft_leaf_lifespan = leaf_long
end if

! Leaf cost at leaf level z (kgC m-2 year-1) accounting for sla profile
Expand Down Expand Up @@ -1270,6 +1279,8 @@ subroutine phenology( currentSite, bc_in )
! (defined as a PFT parameter) and the maximum canopy leaf life span allowed
! for drought deciduous (local parameter). The sum term accounts for the
! total leaf life span of this cohort.
! Note we only use canopy leaf lifespan here and assume that understory cohorts
! would behave the same as canopy cohorts with regards to phenology.
ndays_pft_leaf_lifespan = &
nint(ndays_per_year*min(decid_leaf_long_max,sum(prt_params%leaf_long(ipft,:))))

Expand Down
4 changes: 2 additions & 2 deletions main/EDMainMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -532,15 +532,15 @@ subroutine ed_integrate_state_variables(currentSite, bc_in, bc_out )
is_drought = .true.
end if

call PRTMaintTurnover(currentCohort%prt,ft,is_drought)
call PRTMaintTurnover(currentCohort%prt,ft, currentCohort%canopy_layer,is_drought)

! -----------------------------------------------------------------------------------
! Call the routine that advances leaves in age.
! This will move a portion of the leaf mass in each
! age bin, to the next bin. This will not handle movement
! of mass from the oldest bin into the litter pool, that is something else.
! -----------------------------------------------------------------------------------
call currentCohort%prt%AgeLeaves(ft,sec_per_day)
call currentCohort%prt%AgeLeaves(ft,currentCohort%canopy_layer, sec_per_day)

! Plants can acquire N from 3 sources (excluding re-absorption),
! the source doesn't affect how its allocated (yet), so they
Expand Down
1,803 changes: 1,803 additions & 0 deletions parameter_files/archive/api36.1.0_params_default.cdl

Large diffs are not rendered by default.

129 changes: 129 additions & 0 deletions parameter_files/archive/api36.1.0_patch_params.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
<?xml version="1.0"?>
<all>
<!-- This parameter patch file updates the parameter file with the changes
brought in by Xiulin Gao, Jessie Needham, Jennifer Holm and Ryan Knox.
This includes grass specific allometry parameters, canopy versus
understory leaf turnover specifications, and changing default behavior of
nutrient uptake to be fully coupled. -->

<!-- To use this patch file run the following command: -->
<!-- Run `python ../tools/UpdateParamAPI.py -/-f archive/api33.0.0_020524_patch_params.xml` -->

<!-- General xml file usage notes: -->
<!-- Special mod types "variable_add": creates a new variable
"dimension_add": creates a new dimension
"variable_del": removes a variable, must include attribute "name"
"variable_change": change values in the parameter, possibly including the name, and
this must also come with a name attribute as well -->
<!-- To change a dimension. The easiest way to script this, is to delete the variables
that use it, delete the dimension. Re-add it with the new size, and then re-add
the variables -->
<!-- -->

<base_file>archive/api36.1.0_params_default.cdl</base_file>
<new_file>fates_params_default.cdl</new_file>
<pft_list> 1,2,3,4,5,6,7,8,9,10,11,12 </pft_list>
<mods>
<mod type="variable_change" name="fates_allom_agb1">
<val> 0.0673, 0.1364012, 0.0393057, 0.2653695, 0.0673, 0.0728698, 0.06896, 0.06896, 0.06896, 0.001, 0.001, 0.003 </val>
</mod>
<mod type="variable_change" name="fates_allom_agb2">
<val> 0.976, 0.9449041, 1.087335, 0.8321321, 0.976, 1.0373211, 0.572, 0.572, 0.572, 1.6592, 1.6592, 1.3456 </val>
</mod>
<mod type="variable_change" name="fates_allom_agb3">
<val> 1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 1.248, 1.248, 1.869 </val>
</mod>
<mod type="variable_change" name="fates_allom_agb4">
<val> 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, -999.9, -999.9, -999.9 </val>
</mod>
<mod type="variable_change" name="fates_allom_agb_frac">
<val> 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 1, 1, 1 </val>
</mod>
<mod type="variable_change" name="fates_allom_amode">
<val> 3, 3, 3, 3, 3, 3, 1, 1, 1, 5, 5, 5 </val>
</mod>
<mod type="variable_change" name="fates_allom_blca_expnt_diff">
<val> -0.12, -0.34, -0.32, -0.22, -0.12, -0.35, 0, 0, 0, -0.487, -0.487, -0.259 </val>
</mod>
<mod type="variable_change" name="fates_allom_d2bl1">
<val> 0.04, 0.07, 0.07, 0.01, 0.04, 0.07, 0.07, 0.07, 0.07, 0.0004, 0.0004, 0.0012 </val>
</mod>
<mod type="variable_change" name="fates_allom_d2bl2">
<val>1.6019679, 1.5234373, 1.3051237, 1.9621397, 1.6019679, 1.3998939, 1.3, 1.3, 1.3, 1.7092, 1.7092, 1.5879 </val>
</mod>
<mod type="variable_change" name="fates_allom_d2bl3">
<val>0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.3417, 0.3417, 0.9948 </val>
</mod>
<mod type="variable_change" name="fates_allom_d2ca_coefficient_max">
<val>0.2715891, 0.3693718, 1.0787259, 0.0579297, 0.2715891, 1.1553612, 0.6568464, 0.6568464, 0.6568464, 0.0408, 0.0408, 0.0862 </val>
</mod>
<mod type="variable_change" name="fates_allom_d2ca_coefficient_min">
<val>0.2715891, 0.3693718, 1.0787259, 0.0579297, 0.2715891, 1.1553612, 0.6568464, 0.6568464, 0.6568464, 0.0408, 0.0408, 0.0862 </val>
</mod>
<mod type="variable_change" name="fates_allom_d2h1">
<val>78.4087704, 306.842667, 106.8745821, 104.3586841, 78.4087704, 31.4557047, 0.64, 0.64, 0.64, 0.1812, 0.1812, 0.3353 </val>
</mod>
<mod type="variable_change" name="fates_allom_d2h2">
<val>0.8124383, 0.752377, 0.9471302, 1.1146973, 0.8124383, 0.9734088, 0.37, 0.37, 0.37, 0.6384, 0.6384, 0.4235 </val>
</mod>
<mod type="variable_change" name="fates_allom_dbh_maxheight">
<val>1000, 1000, 1000, 1000, 1000, 1000, 3, 3, 2, 20, 20, 30 </val>
</mod>
<mod type="variable_change" name="fates_allom_hmode">
<val> 5, 5, 5, 5, 5, 5, 1, 1, 1, 3, 3, 3 </val>
</mod>
<mod type="variable_change" name="fates_allom_l2fr">
<val> 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.67, 0.67, 1.41 </val>
</mod>
<mod type="variable_change" name="fates_allom_lmode">
<val>2, 2, 2, 2, 2, 2, 1, 1, 1, 5, 5, 5 </val>
</mod>
<mod type="variable_change" name="fates_allom_smode">
<val>1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2 </val>
</mod>
<mod type="variable_change" name="fates_leaf_slamax">
<val>0.0954, 0.0954, 0.0954, 0.0954, 0.0954, 0.0954, 0.012, 0.03, 0.03, 0.05, 0.05, 0.05 </val>
</mod>
<mod type="variable_change" name="fates_leaf_slatop">
<val>0.012, 0.005, 0.024, 0.009, 0.03, 0.03, 0.012, 0.03, 0.03, 0.05, 0.05, 0.05 </val>
</mod>
<mod type="variable_change" name="fates_recruit_height_min">
<val>1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2 </val>
</mod>
<mod type="variable_change" name="fates_recruit_seed_alloc">
<val>0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0, 0, 0 </val>
</mod>
<mod type="variable_change" name="fates_recruit_seed_alloc_mature">
<val>0, 0, 0, 0, 0, 0, 0.9, 0.9, 0.9, 0.25, 0.25, 0.2 </val>
</mod>
<mod type="variable_change" name="fates_recruit_seed_dbh_repro_threshold">
<val>90, 80, 80, 80, 90, 80, 3, 3, 2, 3, 3, 3 </val>
</mod>
<mod type="variable_change" name="fates_cnp_prescribed_nuptake">
<val> 0,0,0,0,0,0,0,0,0,0,0,0 </val>
</mod>
<mod type="variable_change" name="fates_cnp_prescribed_puptake">
<val> 0,0,0,0,0,0,0,0,0,0,0,0 </val>
</mod>
<mod type="variable_del">
<na>fates_turnover_leaf</na>
</mod>
<mod type="variable_add">
<na> fates_turnover_leaf_canopy</na>
<di> fates_leafage_class, fates_pft </di>
<un> yr </un>
<ln> Leaf longevity (ie turnover timescale) of canopy plants. For drought-deciduous PFTs, this also indicates the maximum length of the growing (i.e., leaves on) season. </ln>
<val> 1.5, 4, 1, 1.5, 1, 1, 1.5, 1, 1, 1, 1, 1 </val>
</mod>
<mod type="variable_add">
<na> fates_turnover_leaf_ustory</na>
<di> fates_leafage_class, fates_pft </di>
<un> yr </un>
<ln> Leaf longevity (ie turnover timescale) of understory plants. </ln>
<val> 1.5, 4, 1, 1.5, 1, 1, 1.5, 1, 1, 1, 1, 1 </val>
</mod>

</mods>


</all>
83 changes: 44 additions & 39 deletions parameter_files/fates_params_default.cdl
Original file line number Diff line number Diff line change
Expand Up @@ -657,9 +657,12 @@ variables:
double fates_turnover_fnrt(fates_pft) ;
fates_turnover_fnrt:units = "yr" ;
fates_turnover_fnrt:long_name = "root longevity (alternatively, turnover time)" ;
double fates_turnover_leaf(fates_leafage_class, fates_pft) ;
fates_turnover_leaf:units = "yr" ;
fates_turnover_leaf:long_name = "Leaf longevity (ie turnover timescale). For drought-deciduous PFTs, this also indicates the maximum length of the growing (i.e., leaves on) season." ;
double fates_turnover_leaf_canopy(fates_leafage_class, fates_pft) ;
fates_turnover_leaf_canopy:units = "yr" ;
fates_turnover_leaf_canopy:long_name = "Leaf longevity (ie turnover timescale) of canopy plants. For drought-deciduous PFTs, this also indicates the maximum length of the growing (i.e., leaves on) season." ;
double fates_turnover_leaf_ustory(fates_leafage_class, fates_pft) ;
fates_turnover_leaf_ustory:units = "yr" ;
fates_turnover_leaf_ustory:long_name = "Leaf longevity (ie turnover timescale) of understory plants." ;
double fates_turnover_senleaf_fdrought(fates_pft) ;
fates_turnover_senleaf_fdrought:units = "unitless[0-1]" ;
fates_turnover_senleaf_fdrought:long_name = "multiplication factor for leaf longevity of senescent leaves during drought" ;
Expand Down Expand Up @@ -992,55 +995,54 @@ data:
0.8, 0.8, 0.8, 0.8 ;

fates_allom_agb1 = 0.0673, 0.1364012, 0.0393057, 0.2653695, 0.0673,
0.0728698, 0.06896, 0.06896, 0.06896, 0.01, 0.01, 0.01 ;
0.0728698, 0.06896, 0.06896, 0.06896, 0.001, 0.001, 0.003 ;

fates_allom_agb2 = 0.976, 0.9449041, 1.087335, 0.8321321, 0.976, 1.0373211,
0.572, 0.572, 0.572, 0.572, 0.572, 0.572 ;
0.572, 0.572, 0.572, 1.6592, 1.6592, 1.3456 ;

fates_allom_agb3 = 1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 1.94,
1.94, 1.94, 1.94 ;
1.248, 1.248, 1.869 ;

fates_allom_agb4 = 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931,
0.931, 0.931, 0.931, 0.931 ;
0.931, -999.9, -999.9, -999.9 ;

fates_allom_agb_frac = 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6,
0.6, 0.6 ;
fates_allom_agb_frac = 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 1, 1, 1 ;

fates_allom_amode = 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1 ;
fates_allom_amode = 3, 3, 3, 3, 3, 3, 1, 1, 1, 5, 5, 5 ;

fates_allom_blca_expnt_diff = -0.12, -0.34, -0.32, -0.22, -0.12, -0.35, 0,
0, 0, 0, 0, 0 ;
0, 0, -0.487, -0.487, -0.259 ;

fates_allom_cmode = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ;

fates_allom_d2bl1 = 0.04, 0.07, 0.07, 0.01, 0.04, 0.07, 0.07, 0.07, 0.07,
0.07, 0.07, 0.07 ;
0.0004, 0.0004, 0.0012 ;

fates_allom_d2bl2 = 1.6019679, 1.5234373, 1.3051237, 1.9621397, 1.6019679,
1.3998939, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3 ;
1.3998939, 1.3, 1.3, 1.3, 1.7092, 1.7092, 1.5879 ;

fates_allom_d2bl3 = 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55,
0.55, 0.55, 0.55 ;
0.3417, 0.3417, 0.9948 ;

fates_allom_d2ca_coefficient_max = 0.2715891, 0.3693718, 1.0787259,
0.0579297, 0.2715891, 1.1553612, 0.6568464, 0.6568464, 0.6568464,
0.6568464, 0.6568464, 0.6568464 ;
0.0579297, 0.2715891, 1.1553612, 0.6568464, 0.6568464, 0.6568464, 0.0408,
0.0408, 0.0862 ;

fates_allom_d2ca_coefficient_min = 0.2715891, 0.3693718, 1.0787259,
0.0579297, 0.2715891, 1.1553612, 0.6568464, 0.6568464, 0.6568464,
0.6568464, 0.6568464, 0.6568464 ;
0.0579297, 0.2715891, 1.1553612, 0.6568464, 0.6568464, 0.6568464, 0.0408,
0.0408, 0.0862 ;

fates_allom_d2h1 = 78.4087704, 306.842667, 106.8745821, 104.3586841,
78.4087704, 31.4557047, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64 ;
78.4087704, 31.4557047, 0.64, 0.64, 0.64, 0.1812, 0.1812, 0.3353 ;

fates_allom_d2h2 = 0.8124383, 0.752377, 0.9471302, 1.1146973, 0.8124383,
0.9734088, 0.37, 0.37, 0.37, 0.37, 0.37, 0.37 ;
0.9734088, 0.37, 0.37, 0.37, 0.6384, 0.6384, 0.4235 ;

fates_allom_d2h3 = 47.6666164, 196.6865691, 93.9790461, 160.6835089,
47.6666164, 16.5928174, -999.9, -999.9, -999.9, -999.9, -999.9, -999.9 ;

fates_allom_dbh_maxheight = 1000, 1000, 1000, 1000, 1000, 1000, 3, 3, 2,
0.35, 0.35, 0.35 ;
fates_allom_dbh_maxheight = 1000, 1000, 1000, 1000, 1000, 1000, 3, 3, 2, 20,
20, 30 ;

fates_allom_dmode = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ;

Expand All @@ -1058,21 +1060,21 @@ data:

fates_allom_h2cd2 = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ;

fates_allom_hmode = 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1 ;
fates_allom_hmode = 5, 5, 5, 5, 5, 5, 1, 1, 1, 3, 3, 3 ;

fates_allom_l2fr = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ;
fates_allom_l2fr = 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.67, 0.67, 1.41 ;

fates_allom_la_per_sa_int = 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8,
0.8, 0.8, 0.8 ;

fates_allom_la_per_sa_slp = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;

fates_allom_lmode = 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1 ;
fates_allom_lmode = 2, 2, 2, 2, 2, 2, 1, 1, 1, 5, 5, 5 ;

fates_allom_sai_scaler = 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
0.1, 0.1 ;

fates_allom_smode = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ;
fates_allom_smode = 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2 ;

fates_allom_stmode = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ;

Expand Down Expand Up @@ -1127,9 +1129,9 @@ data:
fates_cnp_pid_kp = 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005,
0.0005, 0.0005, 0.0005, 0.0005, 0.0005 ;

fates_cnp_prescribed_nuptake = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ;
fates_cnp_prescribed_nuptake = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;

fates_cnp_prescribed_puptake = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ;
fates_cnp_prescribed_puptake = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;

fates_cnp_store_ovrflw_frac = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ;

Expand Down Expand Up @@ -1325,10 +1327,10 @@ data:
495 ;

fates_leaf_slamax = 0.0954, 0.0954, 0.0954, 0.0954, 0.0954, 0.0954, 0.012,
0.03, 0.03, 0.03, 0.03, 0.03 ;
0.03, 0.03, 0.05, 0.05, 0.05 ;

fates_leaf_slatop = 0.012, 0.005, 0.024, 0.009, 0.03, 0.03, 0.012, 0.03,
0.03, 0.03, 0.03, 0.03 ;
0.03, 0.05, 0.05, 0.05 ;

fates_leaf_stomatal_intercept = 10000, 10000, 10000, 10000, 10000, 10000,
10000, 10000, 10000, 10000, 10000, 40000 ;
Expand Down Expand Up @@ -1481,23 +1483,23 @@ data:
fates_rad_stem_tauvis = 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,
0.001, 0.001, 0.12, 0.12, 0.12 ;

fates_recruit_height_min = 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 0.2, 0.2, 0.2,
0.125, 0.125, 0.125 ;
fates_recruit_height_min = 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 0.2, 0.2, 0.2, 0.2,
0.2, 0.2 ;

fates_recruit_init_density = 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2,
0.2, 0.2, 0.2 ;

fates_recruit_prescribed_rate = 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02,
0.02, 0.02, 0.02, 0.02, 0.02 ;

fates_recruit_seed_alloc = 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
0.1, 0.1 ;
fates_recruit_seed_alloc = 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0,
0, 0 ;

fates_recruit_seed_alloc_mature = 0, 0, 0, 0, 0, 0, 0.9, 0.9, 0.9, 0.9, 0.9,
0.9 ;
fates_recruit_seed_alloc_mature = 0, 0, 0, 0, 0, 0, 0.9, 0.9, 0.9, 0.25,
0.25, 0.2 ;

fates_recruit_seed_dbh_repro_threshold = 90, 80, 80, 80, 90, 80, 3, 3, 2,
0.35, 0.35, 0.35 ;
fates_recruit_seed_dbh_repro_threshold = 90, 80, 80, 80, 90, 80, 3, 3, 2, 3,
3, 3 ;

fates_recruit_seed_germination_rate = 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,
0.5, 0.5, 0.5, 0.5, 0.5 ;
Expand Down Expand Up @@ -1611,7 +1613,10 @@ data:

fates_turnover_fnrt = 1, 2, 1, 1.5, 1, 1, 1.5, 1, 1, 1, 1, 1 ;

fates_turnover_leaf =
fates_turnover_leaf_canopy =
1.5, 4, 1, 1.5, 1, 1, 1.5, 1, 1, 1, 1, 1 ;

fates_turnover_leaf_ustory =
1.5, 4, 1, 1.5, 1, 1, 1.5, 1, 1, 1, 1, 1 ;

fates_turnover_senleaf_fdrought = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ;
Expand Down
Loading

0 comments on commit 651a732

Please sign in to comment.