diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..0cdbe7e --- /dev/null +++ b/404.html @@ -0,0 +1,643 @@ + + + +
+ + + + + + + + + + + + + + + + + + +
eo_tides.model
+
+
+¶
model_tides
+
+
+¶model_tides(
+ x,
+ y,
+ time,
+ model="FES2014",
+ directory=None,
+ crs="EPSG:4326",
+ crop=True,
+ method="spline",
+ extrapolate=True,
+ cutoff=None,
+ mode="one-to-many",
+ parallel=True,
+ parallel_splits=5,
+ output_units="m",
+ output_format="long",
+ ensemble_models=None,
+ **ensemble_kwargs
+)
+
Compute tides at multiple points and times using tidal harmonics.
+This function supports all tidal models supported by pyTMD
,
+including FES Finite Element Solution models, TPXO TOPEX/POSEIDON
+models, EOT Empirical Ocean Tide models, GOT Global Ocean Tide
+models, and HAMTIDE Hamburg direct data Assimilation Methods for
+Tides models.
This function requires access to tide model data files.
+These should be placed in a folder with subfolders matching
+the formats specified by pyTMD
:
+https://pytmd.readthedocs.io/en/latest/getting_started/Getting-Started.html#directories
For FES2014 (https://www.aviso.altimetry.fr/es/data/products/auxiliary-products/global-tide-fes/description-fes2014.html):
+{directory}/fes2014/ocean_tide/
For FES2022 (https://www.aviso.altimetry.fr/en/data/products/auxiliary-products/global-tide-fes.html):
+{directory}/fes2022b/ocean_tide/
For TPXO8-atlas (https://www.tpxo.net/tpxo-products-and-registration):
+{directory}/tpxo8_atlas/
For TPXO9-atlas-v5 (https://www.tpxo.net/tpxo-products-and-registration):
+{directory}/TPXO9_atlas_v5/
For EOT20 (https://www.seanoe.org/data/00683/79489/):
+{directory}/EOT20/ocean_tides/
For GOT4.10c (https://earth.gsfc.nasa.gov/geo/data/ocean-tide-models):
+{directory}/GOT4.10c/grids_oceantide_netcdf/
For HAMTIDE (https://www.cen.uni-hamburg.de/en/icdc/data/ocean/hamtide.html):
+{directory}/hamtide/
This function is a modification of the pyTMD
package's
+compute_tide_corrections
function. For more info:
+https://pytmd.readthedocs.io/en/stable/user_guide/compute_tide_corrections.html
Parameters:
+Name | +Type | +Description | +Default | +
---|---|---|---|
x |
+
+ float or list of floats
+ |
+
+
+
+ One or more x and y coordinates used to define +the location at which to model tides. By default these +coordinates should be lat/lon; use "crs" if they +are in a custom coordinate reference system. + |
+ + required + | +
y |
+
+ float or list of floats
+ |
+
+
+
+ One or more x and y coordinates used to define +the location at which to model tides. By default these +coordinates should be lat/lon; use "crs" if they +are in a custom coordinate reference system. + |
+ + required + | +
time |
+
+ A datetime array or pandas.DatetimeIndex
+ |
+
+
+
+ An array containing |
+ + required + | +
model |
+
+ string
+ |
+
+
+
+ The tide model used to model tides. Options include: +
|
+
+ 'FES2014'
+ |
+
directory |
+
+ string
+ |
+
+
+
+ The directory containing tide model data files. If no path is
+provided, this will default to the environment variable
+ For example: +
|
+
+ None
+ |
+
crs |
+
+ str
+ |
+
+
+
+ Input coordinate reference system for x and y coordinates. +Defaults to "EPSG:4326" (WGS84; degrees latitude, longitude). + |
+
+ 'EPSG:4326'
+ |
+
crop |
+
+ bool optional
+ |
+
+
+
+ Whether to crop tide model constituent files on-the-fly to +improve performance. Cropping will be performed based on a +1 degree buffer around all input points. Defaults to True. + |
+
+ True
+ |
+
method |
+
+ string
+ |
+
+
+
+ Method used to interpolate tidal constituents +from model files. Options include: +
|
+
+ 'spline'
+ |
+
extrapolate |
+
+ bool
+ |
+
+
+
+ Whether to extrapolate tides for x and y coordinates outside of +the valid tide modelling domain using nearest-neighbor. + |
+
+ True
+ |
+
cutoff |
+
+ int or float
+ |
+
+
+
+ Extrapolation cutoff in kilometers. The default is None, which +will extrapolate for all points regardless of distance from the +valid tide modelling domain. + |
+
+ None
+ |
+
mode |
+
+ string
+ |
+
+
+
+ The analysis mode to use for tide modelling. Supports two options: +
|
+
+ 'one-to-many'
+ |
+
parallel |
+
+ boolean
+ |
+
+
+
+ Whether to parallelise tide modelling using |
+
+ True
+ |
+
parallel_splits |
+
+ int
+ |
+
+
+
+ Whether to split the input x and y coordinates into smaller, +evenly-sized chunks that are processed in parallel. This can +provide a large performance boost when processing large numbers +of coordinates. The default is 5 chunks, which will split +coordinates into 5 parallelised chunks. + |
+
+ 5
+ |
+
output_units |
+
+ str
+ |
+
+
+
+ Whether to return modelled tides in floating point metre units, +or integer centimetre units (i.e. scaled by 100) or integer +millimetre units (i.e. scaled by 1000. Returning outputs in +integer units can be useful for reducing memory usage. +Defaults to "m" for metres; set to "cm" for centimetres or "mm" +for millimetres. + |
+
+ 'm'
+ |
+
output_format |
+
+ str
+ |
+
+
+
+ Whether to return the output dataframe in long format (with +results stacked vertically along "tide_model" and "tide_m" +columns), or wide format (with a column for each tide model). +Defaults to "long". + |
+
+ 'long'
+ |
+
ensemble_models |
+
+ list
+ |
+
+
+
+ An optional list of models used to generate the ensemble tide +model if "ensemble" tide modelling is requested. Defaults to +["FES2014", "TPXO9-atlas-v5", "EOT20", "HAMTIDE11", "GOT4.10", +"FES2012", "TPXO8-atlas-v1"]. + |
+
+ None
+ |
+
**ensemble_kwargs |
+ + | +
+
+
+ Keyword arguments used to customise the generation of optional
+ensemble tide models if "ensemble" modelling are requested.
+These are passed to the underlying |
+
+ {}
+ |
+
Returns:
+Type | +Description | +
---|---|
+ DataFrame
+ |
+
+
+
+ A dataframe containing modelled tide heights. + |
+
eo_tides/model.py
389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 |
|
pixel_tides
+
+
+¶pixel_tides(
+ ds,
+ times=None,
+ resample=True,
+ calculate_quantiles=None,
+ resolution=None,
+ buffer=None,
+ resample_method="bilinear",
+ model="FES2014",
+ dask_chunks="auto",
+ dask_compute=True,
+ **model_tides_kwargs
+)
+
Obtain tide heights for each pixel in a dataset by modelling +tides into a low-resolution grid surrounding the dataset, +then (optionally) spatially resample this low-res data back +into the original higher resolution dataset extent and resolution.
+ + +Parameters:
+Name | +Type | +Description | +Default | +
---|---|---|---|
ds |
+
+ Dataset
+ |
+
+
+
+ A dataset whose geobox ( |
+ + required + | +
times |
+
+ pandas.DatetimeIndex or list of pandas.Timestamps
+ |
+
+
+
+ By default, the function will model tides using the times
+contained in the |
+
+ None
+ |
+
resample |
+
+ bool
+ |
+
+
+
+ Whether to resample low resolution tides back into |
+
+ True
+ |
+
calculate_quantiles |
+
+ list or array
+ |
+
+
+
+ Rather than returning all individual tides, low-resolution tides
+can be first aggregated using a quantile calculation by passing in
+a list or array of quantiles to compute. For example, this could
+be used to calculate the min/max tide across all times:
+ |
+
+ None
+ |
+
resolution |
+
+ int
+ |
+
+
+
+ The desired resolution of the low-resolution grid used for tide
+modelling. The default None will create a 5000 m resolution grid
+if |
+
+ None
+ |
+
buffer |
+
+ int
+ |
+
+
+
+ The amount by which to buffer the higher resolution grid extent
+when creating the new low resolution grid. This buffering is
+important as it ensures that ensure pixel-based tides are seamless
+across dataset boundaries. This buffer will eventually be clipped
+away when the low-resolution data is re-projected back to the
+resolution and extent of the higher resolution dataset. To
+ensure that at least two pixels occur outside of the dataset
+bounds, the default None applies a 12000 m buffer if |
+
+ None
+ |
+
resample_method |
+
+ string
+ |
+
+
+
+ If resampling is requested (see |
+
+ 'bilinear'
+ |
+
model |
+
+ string or list of strings
+ |
+
+
+
+ The tide model or a list of models used to model tides, as
+supported by the |
+
+ 'FES2014'
+ |
+
dask_chunks |
+
+ str or tuple
+ |
+
+
+
+ Can be used to configure custom Dask chunking for the final
+resampling step. The default of "auto" will automatically set
+x/y chunks to match those in |
+
+ 'auto'
+ |
+
dask_compute |
+
+ bool
+ |
+
+
+
+ Whether to compute results of the resampling step using Dask.
+If False, this will return |
+
+ True
+ |
+
**model_tides_kwargs |
+ + | +
+
+
+ Optional parameters passed to the |
+
+ {}
+ |
+
Returns:
+Type | +Description | +
---|---|
+ If `resample` is False:
+ |
+
+
+
+ tides_lowres : xr.DataArray
+ A low resolution data array giving either tide heights every
+ timestep in |
+
+ If `resample` is True:
+ |
+
+
+
+ tides_highres, tides_lowres : tuple of xr.DataArrays
+ In addition to |
+
eo_tides/model.py
824 + 825 + 826 + 827 + 828 + 829 + 830 + 831 + 832 + 833 + 834 + 835 + 836 + 837 + 838 + 839 + 840 + 841 + 842 + 843 + 844 + 845 + 846 + 847 + 848 + 849 + 850 + 851 + 852 + 853 + 854 + 855 + 856 + 857 + 858 + 859 + 860 + 861 + 862 + 863 + 864 + 865 + 866 + 867 + 868 + 869 + 870 + 871 + 872 + 873 + 874 + 875 + 876 + 877 + 878 + 879 + 880 + 881 + 882 + 883 + 884 + 885 + 886 + 887 + 888 + 889 + 890 + 891 + 892 + 893 + 894 + 895 + 896 + 897 + 898 + 899 + 900 + 901 + 902 + 903 + 904 + 905 + 906 + 907 + 908 + 909 + 910 + 911 + 912 + 913 + 914 + 915 + 916 + 917 + 918 + 919 + 920 + 921 + 922 + 923 + 924 + 925 + 926 + 927 + 928 + 929 + 930 + 931 + 932 + 933 + 934 + 935 + 936 + 937 + 938 + 939 + 940 + 941 + 942 + 943 + 944 + 945 + 946 + 947 + 948 + 949 + 950 + 951 + 952 + 953 + 954 + 955 + 956 + 957 + 958 + 959 + 960 + 961 + 962 + 963 + 964 + 965 + 966 + 967 + 968 + 969 + 970 + 971 + 972 + 973 + 974 + 975 + 976 + 977 + 978 + 979 + 980 + 981 + 982 + 983 + 984 + 985 + 986 + 987 + 988 + 989 + 990 + 991 + 992 + 993 + 994 + 995 + 996 + 997 + 998 + 999 +1000 +1001 +1002 +1003 +1004 +1005 +1006 +1007 +1008 +1009 +1010 +1011 +1012 +1013 +1014 +1015 +1016 +1017 +1018 +1019 +1020 +1021 +1022 +1023 +1024 +1025 +1026 +1027 +1028 +1029 +1030 +1031 +1032 +1033 +1034 +1035 +1036 +1037 +1038 +1039 +1040 +1041 +1042 +1043 +1044 +1045 +1046 +1047 +1048 +1049 +1050 +1051 +1052 +1053 +1054 +1055 +1056 +1057 +1058 +1059 +1060 +1061 +1062 +1063 +1064 +1065 +1066 +1067 +1068 +1069 +1070 +1071 +1072 +1073 +1074 +1075 +1076 +1077 +1078 +1079 +1080 +1081 +1082 +1083 +1084 +1085 +1086 +1087 +1088 +1089 +1090 +1091 +1092 +1093 +1094 +1095 +1096 +1097 +1098 +1099 +1100 |
|
eo_tides.stats
+
+
+¶
tide_stats
+
+
+¶Test function.
+ + +Parameters:
+Name | +Type | +Description | +Default | +
---|---|---|---|
a |
+
+ int
+ |
+
+
+
+ Test + |
+ + required + | +
Returns:
+Type | +Description | +
---|---|
+ Test
+ |
+
+
+
+
+ |
+
eo_tides.validation
+
+
+¶
eval_metrics
+
+
+¶Calculate a set of common statistical metrics +based on two input actual and predicted vectors.
+These include:
+Parameters:
+Name | +Type | +Description | +Default | +
---|---|---|---|
x |
+
+ array
+ |
+
+
+
+ An array providing "actual" variable values. + |
+ + required + | +
y |
+
+ array
+ |
+
+
+
+ An array providing "predicted" variable values. + |
+ + required + | +
round |
+
+ int
+ |
+
+
+
+ Number of decimal places to round each metric +to. Defaults to 3. + |
+
+ 3
+ |
+
all_regress |
+
+ bool
+ |
+
+
+
+ Whether to return linear regression p-value, +intercept and standard error (in addition to +only regression slope). Defaults to False. + |
+
+ False
+ |
+
Returns:
+Type | +Description | +
---|---|
+ Series
+ |
+
+
+
+ A |
+
eo_tides/validation.py
load_gauge_gesla
+
+
+¶load_gauge_gesla(
+ x=None,
+ y=None,
+ site_code=None,
+ time=("2018", "2020"),
+ max_distance=None,
+ correct_mean=False,
+ filter_use_flag=True,
+ site_metadata=True,
+ data_path="/gdata1/data/sea_level/gesla/",
+ metadata_path="/gdata1/data/sea_level/GESLA3_ALL 2.csv",
+)
+
Load and process all available Global Extreme Sea Level Analysis
+(GESLA) tide gauge data with an x, y, time
spatiotemporal query,
+or from a list of specific tide gauges.
Can optionally filter by gauge quality and append detailed gauge metadata.
+Modified from original code in https://github.com/philiprt/GeslaDataset.
+ + +Parameters:
+Name | +Type | +Description | +Default | +
---|---|---|---|
x |
+
+ numeric or list / tuple
+ |
+
+
+
+ Coordinates (in degrees longitude, latitude) used to load GESLA
+tide gauge observations. If provided as singular values
+(e.g. |
+
+ None
+ |
+
y |
+
+ numeric or list / tuple
+ |
+
+
+
+ Coordinates (in degrees longitude, latitude) used to load GESLA
+tide gauge observations. If provided as singular values
+(e.g. |
+
+ None
+ |
+
site_code |
+
+ str or list of str
+ |
+
+
+
+ GESLA site code(s) for which to load data (e.g. |
+
+ None
+ |
+
time |
+
+ tuple or list of str
+ |
+
+
+
+ Time range to consider, given as a tuple of start and end dates,
+e.g. |
+
+ ('2018', '2020')
+ |
+
max_distance |
+
+ numeric
+ |
+
+
+
+ Optional max distance within which to return the nearest tide gauge
+when |
+
+ None
+ |
+
correct_mean |
+
+ bool
+ |
+
+
+
+ Whether to correct sea level measurements to a standardised mean +sea level by subtracting the mean of all observed sea level +observations. This can be useful when GESLA tide heights come +from different or unknown tide datums. Note: the observed mean +sea level calculated here may differ from true long-term/ +astronomical Mean Sea Level (MSL) datum. + |
+
+ False
+ |
+
filter_use_flag |
+
+ bool
+ |
+
+
+
+ Whether to filter out low quality observations with a "use_flag" +value of 0 (do not use). Defaults to True. + |
+
+ True
+ |
+
site_metadata |
+
+ bool
+ |
+
+
+
+ Whether to add tide gauge station metadata as additional columns +in the output DataFrame. Defaults to True. + |
+
+ True
+ |
+
data_path |
+
+ str
+ |
+
+
+
+ Path to the raw GESLA data files. Default is
+ |
+
+ '/gdata1/data/sea_level/gesla/'
+ |
+
metadata_path |
+
+ str
+ |
+
+
+
+ Path to the GESLA station metadata file.
+Default is |
+
+ '/gdata1/data/sea_level/GESLA3_ALL 2.csv'
+ |
+
Returns:
+Type | +Description | +
---|---|
+ DataFrame
+ |
+
+
+
+ Processed GESLA data as a DataFrame with columns including: +
...and additional columns from station metadata. + |
+
eo_tides/validation.py
181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 |
|
round_date_strings
+
+
+¶Round a date string up or down to the start or end of a given time +period.
+ + +Parameters:
+Name | +Type | +Description | +Default | +
---|---|---|---|
date |
+
+ str
+ |
+
+
+
+ Date string of variable precision (e.g. "2020", "2020-01", +"2020-01-01"). + |
+ + required + | +
round_type |
+
+ str
+ |
+
+
+
+ Type of rounding to perform. Valid options are "start" or "end". +If "start", date is rounded down to the start of the time period. +If "end", date is rounded up to the end of the time period. +Default is "end". + |
+
+ 'end'
+ |
+
Returns:
+Name | Type | +Description | +
---|---|---|
date_rounded |
+ str
+ |
+
+
+
+ The rounded date string. + |
+
Examples:
+ + + + +eo_tides/validation.py
eo_tides.utils
+
+
+¶
idw
+
+
+¶idw(
+ input_z,
+ input_x,
+ input_y,
+ output_x,
+ output_y,
+ p=1,
+ k=10,
+ max_dist=None,
+ k_min=1,
+ epsilon=1e-12,
+)
+
Perform Inverse Distance Weighting (IDW) interpolation.
+This function performs fast IDW interpolation by creating a KDTree
+from the input coordinates then uses it to find the k
nearest
+neighbors for each output point. Weights are calculated based on the
+inverse distance to each neighbor, with weights descreasing with
+increasing distance.
Code inspired by: https://github.com/DahnJ/REM-xarray
+ + +Parameters:
+Name | +Type | +Description | +Default | +
---|---|---|---|
input_z |
+
+ array - like
+ |
+
+
+
+ Array of values at the input points. This can be either a +1-dimensional array, or a 2-dimensional array where each column +(axis=1) represents a different set of values to be interpolated. + |
+ + required + | +
input_x |
+
+ array - like
+ |
+
+
+
+ Array of x-coordinates of the input points. + |
+ + required + | +
input_y |
+
+ array - like
+ |
+
+
+
+ Array of y-coordinates of the input points. + |
+ + required + | +
output_x |
+
+ array - like
+ |
+
+
+
+ Array of x-coordinates where the interpolation is to be computed. + |
+ + required + | +
output_y |
+
+ array - like
+ |
+
+
+
+ Array of y-coordinates where the interpolation is to be computed. + |
+ + required + | +
p |
+
+ int or float
+ |
+
+
+
+ Power function parameter defining how rapidly weightings should
+decrease as distance increases. Higher values of |
+
+ 1
+ |
+
k |
+
+ int
+ |
+
+
+
+ Number of nearest neighbors to use for interpolation. |
+
+ 10
+ |
+
max_dist |
+
+ int or float
+ |
+
+
+
+ Restrict neighbouring points to less than this distance. +By default, no distance limit is applied. + |
+
+ None
+ |
+
k_min |
+
+ int
+ |
+
+
+
+ If |
+
+ 1
+ |
+
epsilon |
+
+ float
+ |
+
+
+
+ Small value added to distances to prevent division by zero +errors in the case that output coordinates are identical to +input coordinates. Defaults to 1e-12. + |
+
+ 1e-12
+ |
+
Returns:
+Name | Type | +Description | +
---|---|---|
interp_values |
+ ndarray
+ |
+
+
+
+ Interpolated values at the output coordinates. If |
+
Examples:
+>>> input_z = [1, 2, 3, 4, 5]
+>>> input_x = [0, 1, 2, 3, 4]
+>>> input_y = [0, 1, 2, 3, 4]
+>>> output_x = [0.5, 1.5, 2.5]
+>>> output_y = [0.5, 1.5, 2.5]
+>>> idw(input_z, input_x, input_y, output_x, output_y, k=2)
+array([1.5, 2.5, 3.5])
+
eo_tides/utils.py
5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 |
|