Weblog Tomasza Przechlewskiego [Zdjęcie T. Przechlewskiego]


scrum
random image [Photo gallery]
Zestawienie tagów
1-wire | 18b20 | 1wire | 2140 | 3rz | adamowicz | afera | alsamixer | amazon | amber | amman | anniversary | antypis | apache | api | applebaum | arm | armenia | astronomy | asus | atom.xml | awk | aws | bachotek | bakłażan | balcerowicz | balta | banan | bash | batumi | berlin | białowieża | białystok | bibtex | bieszczady | biznes | blogger | blogging | blosxom | bme280 | bono | borne-sulinowo | breugel | bt747 | budapeszt | budyń | bursztyn | campagnolo | canon | cedewu | chaos | chello | chiller | chillerpl | chown | christophe dominici | chujowetaśmy | ciasto | cmentarz | contour | coronavirus | covi19 | covid | covid19 | cron | css | csv | cukinia | curl | cycling | d54250wykh | dbi | debian | dejavu | dhcp | dht22 | dia | docbook | dom | dp1500 | ds18b20 | duda | dulkiewicz | dyndns | dynia | ebay | economy | ecowitt | ekonomia | elka | elm | emacs | emacs23 | english | ep | erasmus | erasmusplus | ess | eu | eurostat | excel | exif | exiftool | f11 | fc | fc11 | fc15 | fc29 | fc5 | fc8 | fedora | fedora21 | fenix | ffmpeg | finepix | firefox | flickr | folau | fontforge | fontspec | fonty | food | fop | forms | foto | france | francja | fripp | froggit | fuczki | fuji | fuse | gammu | garden | garmin | gas | gawk | gazwyb | gdańsk | gdynia | gender | geo | geocoding | georgia | gft | ggplot | git | github | gmail | gmaps | gnokii | gnus | google | google apps script | googlecl | googleearth | googlemaps | gotowanie | gphoto | gphoto2 | gps | gpsbabel | gpsphoto | gpx | gpx-viewer | greasemonkey | gruzja | grzyby | gus | gw1000 | haldaemon | handbrake | hhi | historia | history | hitler | holocaust | holokaust | hp1000se | hpmini | humour | iblue747 | ical | iiyama | ikea | imagemagick | imap | inkscape | inne | internet | j10i2 | javascript | jhead | jordania | k800i | kajak | kamera | karob | kibbeh | kleinertest | kml | kmobiletools | knuth | kociewie kołem | kod | kolibki | komorowski | konwersja | krutynia | krynki | kuchnia | kurski | kłamstwo | latex | latex2rtf | latex3 | lcd | legend | lenny | lesund | lewactwo | lgbt-folly | liban | liberation | linksys | linux | lisp | lisrel | litwa | lizbona | logika | ltr | lubowla | lwp | lwów | m2wś | malta | mapquest | mapsource | maradona | marchew | marimekko | marvell | math | mathjax | mazury | mbank | mediolan | mencoder | mevo | mh17 | michalak | michlmayr | microsoft | monitor | mp4box | mplayer | ms | msc | mssql | msw | mswindows | mtkbabel | museum | muzyka | mymaps | mysql | mz | nafisa | nanopi | natbib | navin | nekrolog | neo | neopi | netbook | niemcy | niemieckie zbrodnie | nikon | nmea | nowazelandia | nuc | nxml | oauth | oauth2 | obituary | ocr | odessa | okular | olympus | ooffice | ooxml | opera | osm | otf | otftotfm | other | overclocking | ozbekiston | panoramio | paryż | pdf | pdfpages | pdftex | pdftk | pedophilia | perl | photo | photography | picasa | picasaweb | pim | pine | pis | pit | plotly | pls | plugin | po | podcast | podlasie | podróże | pogoda | politics | polityka | polsat | portugalia | postęp | powerpoint | połtawa | prelink | problem | propaganda | pseudointeligencja | pstoedit | putin | python | pywws | r | r1984 | radio | random | raspberry | raspberry pi | raspberrypi | raspbian | refugees | relaxng | ridley | router | rower | rowery | rpi | rsync | rtf | ruby | rugby | rumunia | russia | rwc | rwc2007 | rwc2011 | rwc2019 | rzym | samba | sds011 | selenium | sem | senah | sernik | sheevaplug | sienkiewicz | signature | sks | skype | skytraq | smoleńsk | sqlite | srtm | sshfs | ssl | staszek wawrykiewicz | statistcs | statistics | stats | statystyka | stix | stretch | supraśl | suwałki | svg | svn | swanetia | swornegacie | szwajcaria | słowacja | tbilisi | terrorism | tesseract | tex | texgyre | texlive | thunderbird | tomato | totalnaopozycja | tourism | tramp | trang | transylwania | truetype | trzaskowski | ttf | turcja | turkey | turystyka | tusk | tv | tv5monde | tweepy | twitter | tykocin | typetools | ubuntu | uchodźcy | udev | ue | ukraina | umap | unix | upc | updmap | ups | utf8 | uzbekistan | varia | video | vienna | virb edit | virbedit | vostro | wammu | wdc | wdfs | weather | weathercloud | webcam | webdav | webscrapping | weewx | wh2080 | wiedeń | wikicommons | wilno | win10 | windows | windows8 | wine | wioślarstwo | word | wordpress | wrt54gl | ws1080 | wtyczka | wunderground | ww2 | www | wybory | wybory2015 | włochy | węgry | xemex | xetex | xft | xhtml | xine | xml | xmllint | xsd | xslt | xvidtune | youtube | yum | zaatar | zakopane | zakupy | zawodzie | zdf | zdrowie | zgarden | zgony | zprojekt | łeba | świdnica | żywność
Archiwum
O stronie
wykorzystywany jest blosxom plus następujące wtyczki: tagging, flatarchives, rss10, lastbuilddatexhtmlmime. Niektóre musiałem dopasować nieco do swoich potrzeb. Więcej o blosxom jest tutaj
Subskrypcja
RSS 1.0
Żuławy w Koło 2018 (how it unfolded)

Trasa z kierunkiem wiatru

Nonsensowny drogowskaz na Rubno Wlk.

00:20 wracam do domu z niesamowitej imprezy urodzinowej kol. BL zorganizowanej w Blues Club Gdynia.

01:05 idę spać. Straciłem z pół godziny (żeby rano zaoszczędzić 15 minut) usiłując kupić bilet do Malborka przez Internet ale się nie udało. System nie działał. Tzn. prawie działał. Naciśnięcie ostatniego guzika skutkowało zwisem...

04:20 wstaję. 04:55 jadę na dworzec PKP, kupuję bilet i jadę pociągiem do Malborka. Wysiadam 06:10, przedtem jem śniadanie z pudełka w pociągu.

W Malborku jest już szaro. Z mocnym wiatrem w plecy jadę do Nowego Dworu Gdańskiego (circa 25 km). 07:15 jestem na miejscu. Start za 45 minut bo podobnie jak w imprezie Kociewskiej plan jest taki żeby zapierdzielać w grupie dopóki się da, a na bufetach stawać i jechać z następną grupą. Więc żeby tych grup do podczepienia się było potencjalnie jak najwięcej chcę zacząć z pierwszą. Pierwszy bufet zamierzam odpuścić, bo jest na 37 km czyli blisko startu.

Pogoda jest niezła. Dużo lepsza niż była prognozowana. Miało być zimno, wietrznie i miało padać. Jest około 13C, czyli nie aż tak bardzo zimno, faktycznie wieje, ale nie pada i się nie zanosi żeby padało, a to najważniejsze.

07:50 ustawiam się na linii startu. Trochę wcześnie, ale chę być w pierwszej grupie, bez konieczności wpychania się poza kolejnością. Wśród czekających rowerzyści-turyści na rowerach nie do końca stricte szosowych.

Startujemy z lekkim opóźnieniem o 08:05.

Tempo pierwszego kilometra turystyczne dyktują ci na turystycznych. Inaczej niż w zeszłym roku -- słynny start z kol. Wiktorem -- kiedy to startując w grupie #2 już od początku mieliśmy wściekły zapieprz. Wygląda na to, że najwięksi ściganci się nie spieszą i ustawiają się w kolejnych grupach na starcie. No i dobrze...

Po pierwszym kilometrze zmiana. Prowadzących i tempa. Jedziemy na wschód z wiatrem jakieś 33--35 km. Miło i przyjemnie, do czasu aż doganiają nas ci superściganci. Zabieram się z nimi. Tempo może i specjalnie nie wzrasta, ale to tylko dlatego, że teraz mamy wiatr boczny, a potem czołowo-boczny. Wieje całkiem mocno na wschód/północny-wschód (na Kaliningrad he, he). Zapieprz całkiem konkretny, aż do skrętu na drogę 502 w Tujsku. Tutaj poprawia się jakość asfaltu, ale też tempo wzrasta. Z jednym takim mocnym w nogach, ale powiedzmy słabym w taktyce odpadamy. Mocarze pojechali. Za nami z kolei też nikogo nie widać. Mój kompan jest tak mocny, że gdyby miał lepszą taktykę, to bez problemu by jechał w pierwszej grupie, a tak to mnie tylko holuje (zmian nie daję, o czym go uprzedzam).

Dojeżdżamy do bufetu #1. Ponieważ sytuacja się rozwinęła, tak jak się rozwinęła sugerują żeby stanąć. Pierwszy bufet w Jantarze tak trochę na uboczu, z drogi go nie widać. Zajeżdżamy. Okazuje się, że grupa czołowa też tu stanęła. Bufet super zaopatrzony zresztą: ciasta domowej roboty, naleśniki, bułki z czymśtam. Nawet jakaś zupa. Jakby spróbować tylko każdej z potraw to by człowiek nie był w stanie dalej jechać. Jem dwa kawałki ciasta i dwa naleśniki. Dwa następne w kieszeń...

Jadę dalej. Nawet zaczynam z grupą czołową znowu, ale za duże tempo więc odpuszczam. Dogania mnie za to całkiem mocny gość a potem jeszcze jeden. Jedziemy zgodnie tym razem aż do Nowej Kościelnicy. Tutaj wyłącza mi się kamera (bo zapomniałem włączyć guziczek `Ładuj' w Powerbanku--zawsze czegoś zapomnę). Mówię tym, z którym jadę żeby chwilę zwolnili, bo chcę ustalić co dalej z kamerą, ale oni nie potrafią wolno--no trudno zostałem sam, ale z tyłu ktoś kręci, więc się nie napinam tylko czekam aż mnie dogonią.

Znowu dwóch, ale innych. Słabsi niż ci co nie chcieli czekać i do tego słabi technicznie, że tak powiem. Ja tam po zmianie się za nich chowam oni nie--na kole nie jadą, tylko obok albo 10m za. Mimo tego trzymają się, pomimo tego wściekłego bocznego wiatru. Jedziemy wzdłuż Wisły aż do Mątowów (Dorota z Mątew), tyle że po drodze wreszcie urywam swoich partnerów, ale mam za to dwóch innych. Jednego już znam, jechałem z nim wcześniej. Przeoczyłem bufet #2, on stanął a teraz mnie doszedł (z kolegą).

Za Mątowami skręt jakby na wschód, na wschód, na Miłoradz. Teraz wiatr jest w plecy aż do bufetu #3 (raptę parę kilometrów). Jedziemy we trzech spacerowo, tym bardziej że jeden z nas ma kapcia (ale takiego że idzie jechać--zmieni dętkę na bufecie). Jest generalnie przekonanie że od Miłoradza będzie miło i przyjemnie z wiatrem. Potem się okazało że nie było i nawet nie było szans żeby było przy tym kierunku wiatru (o tym później). Wykorzystując przerwę w zapieprzu uświadamiam współścigantom gdzie są. Że są w Mątowach, wsi w której urodziła się słynna bł. Dorota. Pytam się czy słyszeli o Dorocie. Nie. No to ja że to matka 9-ga dzieci, która kazała się zamurować w celi, gdzie zmarła. No bo jak taki/taka się już zamurował, to no-way, wychodził już tylko nogami do przodu. -- Ale po co? pyta współścigant. -- Ku chwale Bożej -- odpowiadam -- dawniej ludzie tak mieli. -- No ale coś z tego było? A to nie wiem -- odpowiadam :-)

Bufet w Miłoradzu całkiem zwyczajny: chleb z marmoladą i smalcem. Ale dają też kopytka na słodko. Swoim zwyczajem nie rozsiadam się, jem kopytka i dalej sam--dogonią mnie. I faktycznie doganiają w Pogorzałej Wsi. Stąd jest z wiatrem wzdłuż Nogatu prosto do Malborka. Zapierdzielamy całkiem żwawo, a mnie się już przstało chcieć, jeszcze dociągam do Zamku i odpuszczam na zakręcie DK55 na Kościeleczki. Co się będę spinał--z wiatrem sobie pojadę te ostatnie 20km sam (sobie myślę).

Bym znał profil trasy dokładnie, to bym nie miał takich złudzeń. Znowu wieje nieprzyjemny boczny wiatr (aż do Lubiszewa czyli aż praktycznie do mety). Generalnie z tym wiatrem to masakra była. Kilka odcinków z wiatrem, reszta zwykle z nieprzyjemny bocznym albo nawet pod wiatr.

Kilka kilometrów jadę sam, ale dogania mnie następna grupa. Ci są z firmy, są jednakowo ubrani, całkiem mocni i wiedzą co to jazda w grupie. Jadę z nimi prawie do końca, czyli do Lubiszewa. Tam odpuszczam, bo tempo wzrasta a mi się już nie chce (pobudka 4:20 ostatecznie--więc mam wymówkę)

13:02 jestem na mecie. Jem makaron i do Malborka na pociąg. Jest pod wiatr, non-stop. No ale ja się nie spinam. Mam pociąg 15:02 i dużo czasu, tyle że jak się jedzie 18kmh, po przejechaniu 25 +135 = 160 km to trochę się dłuży droga, by się już chciało skończyć.

Dojeżdżam jakoś tak 14:40. Się okazuje, że pociąg jest 14:57 i całkiem sporo ludzi w kolejce do kasy. Kupuję bilet, jest 14:50.

W Kałdowie dosiada się współścigant z pierwszej grupy. Podobno był drugi, jechał circa 4:20 (ja circa 4:57). Na mecie się ociągał, wyjechał o 14:00 i ledwo zdążył pod ten wiatr. By pociąg nie stawał w Kałdowie (nie wszystkie stają, bo to mały przystanek jest bez kas i budynku, a nie żadna stacja), to by nie zdążył. Uświadamiam go jakie miał szczęście :-) NB ja też mogłem w Kałdowie wsiadać, ale wolałem do Malborka, bo to różnie bywa (w sensie, że w Malborku bardziej komfortowo się do pociągu wejdzie--co jest istotne jak się ma takiego klamota jak rower)...

W domu jestem circa 16:20. Minęło 12h od pobudki...

Filmik dając pojęcie jak (ciężko) było :-) jest tutaj. BTW odszukaj na googleMaps Rubno Wlk jeżeli nie wiesz czemu drogowskaz w Marzęcinie wydaje się bezsensowny.

url | Mon, 24/09/2018 05:30 | tagi: ,
Żuławy w Koło 2018

Się tak rozochociłem, że zapisałem się na Żuławy w Koło 2018 (99 PLN). W ramach przygotowań, że tak powiem taktycznych postanowiłem rozpoznać możliwości przeciwnika:-) Konkretnie ustalić jak jechali ci co się zapisali, a co już startowali w ŻwK w roku 2017 albo 2016. Zadanie zatem polega na odszukaniu na liście zgłoszeń tych co się zapisali na edycję 2018 i jednocześnie ukończyli ŻwK w latach 2016/2017. Oczywiście nie ręcznie, tylko automatem:

## poniższe ściąga plik z listą zapisanych
wget 'http://www.czasomierzyk.pl/zapisy2016/zulawywkolo/index.php?akcja=lista' -O ZwK2018.out

Plik HTML ma tak prostą strukturę, że jego zamiana (za pomocą wyrażeń regularnych) na CSV jest banalna. Jak już mam ten plik CSV, to porównuję go do połączonych wyników z lat 2017/2016 (też w formacie CSV). Skrypt mam co porównuje pliki CSV:

perl join_csvs.pl -fn1 ZwK201809190908.csv  -fs1 1,2 -fn2 ZwK16_17.csv -fs2 1,2

Porównuje pliki ZwK201809190908.csv oraz ZwK16_17.csv, w oparciu o (wspólną) wartości dla kolumn nr 1 oraz nr 2 (w tym przypadku są to kolumny zawierające nazwisko i imię). Innymi słowy fs1 c1,c2..., to klucz główny, a fs2 c1,c2, to klucz obcy. Skrypt wypisuje połączone wiersze odpowiadające tym wierszom dla, których klucz główny = klucz obcy. Na dziś (19 września) takich wierszy wypisał 55, (na 104 zgłoszenia na dystansie 140km), ale pomijam tych co startowali kiedyś na najkrótszym dystansie lub tych, którzy startowali wprawdzie na najkrótszym, ale mieli średnią mniejszą niż 24kmh (odpada w ten sposób 10 zostaje 45). Na koniec plik jest zapodawany do prostego skryptu rysującego wykres słupkowy:

z <- read.csv("ZwK_2018_vs_2017.csv", sep = ';',
   header=T, na.string="NA", dec=".");

s140 <- summary(z$speed)

z <- subset (z, ( speed > 16.0 )); ## bez maruderów

# wykres słupkowy
h <- hist(z$speed,
  breaks=c(18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35),
  freq=TRUE,
  col="orange",
  main="Dystans: 140 (biorący udział w latach 2017-16)",
  xlab="Prędkość średnia w latach 2017--16 [kmh]",ylab="L.kolarzy",
  labels=T, xaxt='n' )
  axis(side=1, at=c(18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35))
  text(38, 37, summary_label, cex = .8, adj=c(1,1) )

Jak widać paru ludków w okolicach 30kmh jest. Będzie za kim jechać.

url | Wed, 19/09/2018 12:54 | tagi: , , ,
Kociewie Kołem 2018 (how it unfolded)


Z Elką wyjechaliśmy 6:10 albo coś w tym stylu (plan był że o 6:00)

Po z grubsza godzinie byliśmy na tym Owidz-Grodzisku...

Poleciałem po numer i 7:40 byłem gotowy. Elka odjechała. Na start podjechałem 7:50 a tam tłumów nie ma; ostatecznie wystartowałem o 8:06 z pierwszą grupą.

Plan był taki żeby zapierdzielać w grupie dopóki się da, ale na bufetach stawać i jechać z następną grupą. W tym zbożnym celu nie wziąłem prawie nic do jedzenia (ostatecznie za start zapłaciłem 111 PLN, więc niech się chociaż trochę zwróci). Ponieważ dobrze mi szło i ponieważ pierwszy bufet był już na 40 km, to go ominąłem. Być może to był błąd, bo tak do 70 km to mi szło, a potem już jakby nie do końca. Do 80 km jeszcze się trzymałem, ale do bufetu #2 (na prawie 100 km) dotarłem w kiepskim stanie i za grupą. W bufecie szandar i ciasta, przy czym szandar, to zapieczone utarte ziemniaki z cebulą i boczkiem. Rodzaj mega-placka ziemniaczanego (przepis w goole można znaleźć). Jem tego 2/3 porcji, resztę w kieszeń na spróbowanie dla Elki. Do szandara kawka + mały serniczek i jadę dalej. BTW mi ten szandar smakował, ale opinia może być nieobiektywna, bo głodny byłem.

Część grupy, z którą jechałem bufetowała tak długo, że mogę kontynuować jazdę w mocnym towarzystwie. Całkiem nieźle mi znowu idzie, co z jednej strony pewnie zasługą szandara, a z drugiej że grupa ciut wolniej pomyka, bo jednak najsilniejszych już w niej nie ma. Na 115 km bufetu #3. Ja skręcam do bufetu, a moja grupa nie. Na bufecie tłumy, bo tą część trasy pokonują już uczestnicy, którzy się zapisali na krótsze dystanse. Zamiast szandara dają racuchy i jakąś zupę z kapustą. Za zupę dziękuję, jem dwa racuchy (dwa następne biorę na spróbowanie dla Elki) z kawką i dalej.

Teraz jadę w sumie sam, mijając pojedynczych maruderów. Wreszcie dogania mnie poważna grupa i następne parę kilometrów mam solidne koło. Tylko parę, bo bufet #4 jeszcze został (130 km). Moja grupa jedzie dalej a ja skręcam. Dobra decyzja, bo bufet #4 najlepiej zaopatrzony. Wprawdzie bardziej oglądam niż jem, ale nawet dla popatrzenia warto było stanąć. Są omasty w tuzinie bodajże wariantów (z nieśmiertelnym smalcem na czele, ale zmieszanym z grzybami), ciasta, jogurty... Ja decyduję się na kaszę manną z czarną jagodą + dwie małe porcje jogurtu. Kasza tak mi smakuje, że dwie porcje ładuję do bidonu dla Elki (w domu się dowiaduję, że Elka nie lubi kaszy mannej.)

Od bufetu #4 do mety mam 25km. Z 10 km jadę ze starszym gościem, resztę sam. Dojeżdżam do mety o 13:20 czy jakoś tak czyli po 5h z niewielkim ogonkiem. Trasa co mi się wydawała na rysunku mocno sfalowana okazała się całkiem płaska. Jedyna niewielka dolegliwość to stan dróg, nie tyle dziurawych co o nierównej nawierzchni (pofalowany/popękany asfalt)

Idę po medal, potem po makaron. Potem jadę 30 km do Tczewa na pociąg :-). Do Pelplina jest bliżej, ale tam najbliższy pociąg do Gdańska odjeżdża o 16:45.

Żeby się nie stresować, nie sprawdzam połączeń z Trójmiastem z Tczewa do którego docieram o 15:15. Pociąg mam 15:17 i już na niego nie zdążę. Następny jest o 16:30. Pech...

W domu jestem o 17:40.

Sprawy sprzętowe

Eksperymentalnie dokleiłem do mostka powerbank (Anker Mini 3000 mAh) do zasilania kamery, która normalnie działa circa 2h. Alternatywą byłoby wymienianie akumulatora na bufetach, ale to zawsze stres i kłopot, bo trzeba odkręcić śrubę mocującą, wyjąć kamerę z obudowy a potem wsadzić i zakręcić. U mnie nie jest to aż tak trywialne z uwagi na konstrukcję obudowy i sposób jej umieszczenia (pod kierownicą, bo przecież nie będą jeździł z obciachowo sterczącą kamerą.) Pomysł z powerbankiem się sprawdził, a kamera się wyłączyła no dokładnie na linii mety (czasami ma się szczęście.) Teraz mam 128Gb do przetworzenia...

Ślad jest tutaj (albo kml.) Kilka zdjęć jest tutaj.

url | Mon, 10/09/2018 07:18 | tagi: ,
Przygotowania do Kociewie Kołem


W zeszłym roku wziąłem udział w imprezie kolarsko-rekreacyjnej pn. Żuławy w Koło, a teraz zapisałem się na Kociewie Kołem, która ma się odbyć 9 września. Ta sama firma organizuje jak się łatwo domyśleć.

Żeby nie jechać w ciemno pobrałem stosowne dane ze strony organizatora, zamieniłem je na plik CSV i policzyłem różne statystyki. W 2016 średnia prędkość na najdłuższym dystancie (170 km) wyniosła na przykład 27,05 km/h. Rok później (dystans 155 km) było to 26,69 km/h. Czyli sporo, bo na płaskiej i krótszej trasie Żuławy w Koło było dla przykładu w 2016 roku 25,47 km/h, a w 2017 26,23 km/h. Więcej szczegółów na wykresach pudełkowych obok.

Ściągnąłem też w środę listę uczestników, których okazało się jest 719, w tym z Gdańska 332, z Gdyni 107, a tak w ogóle to ze 120 różnych miejscowości. Za pomocą Google Fusion Tables można pokazać listę na mapie. Żeby kropki z tej samej miejscowości się nie nakładały na siebie zastosowałem losowe `drganie' (jitter) wg. algorytmu:

### Jitter w kole o średnicy $r
$factorJ = 0.00001; ## ustalone heurystycznie

$sd = sqrt($factorJ * $N); # $N liczba kropek dla miejscowosci, tj dla GDA 332
$r = $sd * sqrt(rand()); $theta = rand() * 2 * $pi;
$rand_lat = $lat + $r * cos($theta);
$rand_lon = $lon + $r * sin($theta);

### Jitter w prostokącie o boku $r
$rand_lat = $lat + rand($sd);
$rand_lon = $lon + rand($sd);

Rezultat jak na obrazku poniżej, albo tutaj.

Lewy obrazek to mapa bez `jittera' a prawy z zastosowanym `jitterem'.

url | Fri, 07/09/2018 07:46 | tagi: , , , , ,