diff --git a/3party/harfbuzz/CMakeLists.txt b/3party/harfbuzz/CMakeLists.txt index d7041d46be..3a6e14e828 100644 --- a/3party/harfbuzz/CMakeLists.txt +++ b/3party/harfbuzz/CMakeLists.txt @@ -17,7 +17,6 @@ target_compile_options(${PROJECT_NAME} -fno-rtti -fno-exceptions -fno-threadsafe-statics - $<$,$>:-Wno-format-pedantic> ) target_compile_definitions(${PROJECT_NAME} diff --git a/3party/harfbuzz/harfbuzz b/3party/harfbuzz/harfbuzz index 49c8493f5c..bc90b29b37 160000 --- a/3party/harfbuzz/harfbuzz +++ b/3party/harfbuzz/harfbuzz @@ -1 +1 @@ -Subproject commit 49c8493f5ce67bc66610d5e4494ce3231c8229cf +Subproject commit bc90b29b37fe3809f9e48aa7be08fbf2208e481a diff --git a/android/app/src/fdroid/play/listings/ar/release-notes.txt b/android/app/src/fdroid/play/listings/ar/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/ar/release-notes.txt +++ b/android/app/src/fdroid/play/listings/ar/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/az-AZ/release-notes.txt b/android/app/src/fdroid/play/listings/az-AZ/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/az-AZ/release-notes.txt +++ b/android/app/src/fdroid/play/listings/az-AZ/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/be/release-notes.txt b/android/app/src/fdroid/play/listings/be/release-notes.txt index 880b282dda..f0399c7a73 100644 --- a/android/app/src/fdroid/play/listings/be/release-notes.txt +++ b/android/app/src/fdroid/play/listings/be/release-notes.txt @@ -1,8 +1,9 @@ -• Дадзеныя OpenStreetMap па стане на 28 мая -• Пошук паштовых індэксаў ЗША і паштовых індэксаў у Вялікабрытаніі (GB) -• Абвяшчэнне вуліцы ў вербальных інструкцыях (уключыце яго ў наладах) -• Экспарт закладак і трэкаў у фармаце файла GPX -• Захавайце закладкі і трэкі ў лакальнае сховішча прылады -• Дадайце, рэдагуйце і адлюстроўвайце спасылкі на меню рэстаранаў, бараў і іншых харчовых паслуг +• Сартаванне закладак і сцежак па імені +• Дадзеныя OpenStreetMap па стане на 29 красавіка +• Трэба ізноў залагініцца ў OSM +• Складаныя паходныя сцежкі зараз карычневыя, а экспертныя шляхі чорныя +• Веласіпедныя дарожкі цяпер цёмна-сінія, пункцірам там, дзе яны ідуць па пешаходных сцежках +• Цяпер бачна дарогі пад напаўпразрыстымі мастамі +• Выпраўлены імпарт GPX з прыкладання Google Files … больш падрабязна на omaps.org/news diff --git a/android/app/src/fdroid/play/listings/bg/release-notes.txt b/android/app/src/fdroid/play/listings/bg/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/bg/release-notes.txt +++ b/android/app/src/fdroid/play/listings/bg/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/bn-BD/release-notes.txt b/android/app/src/fdroid/play/listings/bn-BD/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/bn-BD/release-notes.txt +++ b/android/app/src/fdroid/play/listings/bn-BD/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/ca/release-notes.txt b/android/app/src/fdroid/play/listings/ca/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/ca/release-notes.txt +++ b/android/app/src/fdroid/play/listings/ca/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/cs-CZ/release-notes.txt b/android/app/src/fdroid/play/listings/cs-CZ/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/cs-CZ/release-notes.txt +++ b/android/app/src/fdroid/play/listings/cs-CZ/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/da-DK/release-notes.txt b/android/app/src/fdroid/play/listings/da-DK/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/da-DK/release-notes.txt +++ b/android/app/src/fdroid/play/listings/da-DK/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/de-DE/release-notes.txt b/android/app/src/fdroid/play/listings/de-DE/release-notes.txt index a97d0b179d..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/de-DE/release-notes.txt +++ b/android/app/src/fdroid/play/listings/de-DE/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap-Daten, Stand: 28. Mai -• Suche nach US-Postleitzahlen und UK (GB)-Postleitzahlen -• Ansagen von Straßennamen in verbalen TTS-Abbiegeanweisungen (bitte in den Einstellungen aktivieren) -• Lesezeichen und Tracks im GPX-Dateiformat exportieren -• Speichern von Lesezeichen und Tracks auf einem lokalen Gerät -• Hinzufügen, Bearbeiten und Anzeigen von Weblinks zu Speisekarten von Restaurants, Bars und anderen gastronomischen Betrieben +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app -…mehr Details unter omaps.org/de/news +…more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/el-GR/release-notes.txt b/android/app/src/fdroid/play/listings/el-GR/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/el-GR/release-notes.txt +++ b/android/app/src/fdroid/play/listings/el-GR/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/en-US/release-notes.txt b/android/app/src/fdroid/play/listings/en-US/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/en-US/release-notes.txt +++ b/android/app/src/fdroid/play/listings/en-US/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/es-ES/release-notes.txt b/android/app/src/fdroid/play/listings/es-ES/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/es-ES/release-notes.txt +++ b/android/app/src/fdroid/play/listings/es-ES/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/et/release-notes.txt b/android/app/src/fdroid/play/listings/et/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/et/release-notes.txt +++ b/android/app/src/fdroid/play/listings/et/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/eu-ES/release-notes.txt b/android/app/src/fdroid/play/listings/eu-ES/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/eu-ES/release-notes.txt +++ b/android/app/src/fdroid/play/listings/eu-ES/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/fa/release-notes.txt b/android/app/src/fdroid/play/listings/fa/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/fa/release-notes.txt +++ b/android/app/src/fdroid/play/listings/fa/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/fi-FI/release-notes.txt b/android/app/src/fdroid/play/listings/fi-FI/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/fi-FI/release-notes.txt +++ b/android/app/src/fdroid/play/listings/fi-FI/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/fr-FR/release-notes.txt b/android/app/src/fdroid/play/listings/fr-FR/release-notes.txt index bcd7be36b7..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/fr-FR/release-notes.txt +++ b/android/app/src/fdroid/play/listings/fr-FR/release-notes.txt @@ -1,7 +1,9 @@ -• Données OpenStreetMap en date du 28 mai -• recherche de codes postaux américains et britanniques (GB) -• annonce des noms de rue dans les instructions verbales de changement de direction (veuillez l'activer dans les paramètres) -• exporter les signets et les traces au format GPX et les enregistrer localement -• ajouter, modifier et afficher des liens web vers des menus de restaurants, de bars et d'autres services de restauration +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app -…plus de détails sur omaps.org/fr/news +…more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/gl-ES/release-notes.txt b/android/app/src/fdroid/play/listings/gl-ES/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/gl-ES/release-notes.txt +++ b/android/app/src/fdroid/play/listings/gl-ES/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/gu/release-notes.txt b/android/app/src/fdroid/play/listings/gu/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/gu/release-notes.txt +++ b/android/app/src/fdroid/play/listings/gu/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/hi-IN/release-notes.txt b/android/app/src/fdroid/play/listings/hi-IN/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/hi-IN/release-notes.txt +++ b/android/app/src/fdroid/play/listings/hi-IN/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/hr/release-notes.txt b/android/app/src/fdroid/play/listings/hr/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/hr/release-notes.txt +++ b/android/app/src/fdroid/play/listings/hr/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/hu-HU/release-notes.txt b/android/app/src/fdroid/play/listings/hu-HU/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/hu-HU/release-notes.txt +++ b/android/app/src/fdroid/play/listings/hu-HU/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/id/release-notes.txt b/android/app/src/fdroid/play/listings/id/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/id/release-notes.txt +++ b/android/app/src/fdroid/play/listings/id/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/it-IT/release-notes.txt b/android/app/src/fdroid/play/listings/it-IT/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/it-IT/release-notes.txt +++ b/android/app/src/fdroid/play/listings/it-IT/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/iw-IL/release-notes.txt b/android/app/src/fdroid/play/listings/iw-IL/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/iw-IL/release-notes.txt +++ b/android/app/src/fdroid/play/listings/iw-IL/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/ja-JP/release-notes.txt b/android/app/src/fdroid/play/listings/ja-JP/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/ja-JP/release-notes.txt +++ b/android/app/src/fdroid/play/listings/ja-JP/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/ka-GE/release-notes.txt b/android/app/src/fdroid/play/listings/ka-GE/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/ka-GE/release-notes.txt +++ b/android/app/src/fdroid/play/listings/ka-GE/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/kk/release-notes.txt b/android/app/src/fdroid/play/listings/kk/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/kk/release-notes.txt +++ b/android/app/src/fdroid/play/listings/kk/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/km-KH/release-notes.txt b/android/app/src/fdroid/play/listings/km-KH/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/km-KH/release-notes.txt +++ b/android/app/src/fdroid/play/listings/km-KH/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/kn-IN/release-notes.txt b/android/app/src/fdroid/play/listings/kn-IN/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/kn-IN/release-notes.txt +++ b/android/app/src/fdroid/play/listings/kn-IN/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/ko-KR/release-notes.txt b/android/app/src/fdroid/play/listings/ko-KR/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/ko-KR/release-notes.txt +++ b/android/app/src/fdroid/play/listings/ko-KR/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/lo-LA/release-notes.txt b/android/app/src/fdroid/play/listings/lo-LA/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/lo-LA/release-notes.txt +++ b/android/app/src/fdroid/play/listings/lo-LA/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/lt/release-notes.txt b/android/app/src/fdroid/play/listings/lt/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/lt/release-notes.txt +++ b/android/app/src/fdroid/play/listings/lt/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/lv/release-notes.txt b/android/app/src/fdroid/play/listings/lv/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/lv/release-notes.txt +++ b/android/app/src/fdroid/play/listings/lv/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/mk-MK/release-notes.txt b/android/app/src/fdroid/play/listings/mk-MK/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/mk-MK/release-notes.txt +++ b/android/app/src/fdroid/play/listings/mk-MK/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/ml-IN/release-notes.txt b/android/app/src/fdroid/play/listings/ml-IN/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/ml-IN/release-notes.txt +++ b/android/app/src/fdroid/play/listings/ml-IN/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/mr-IN/release-notes.txt b/android/app/src/fdroid/play/listings/mr-IN/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/mr-IN/release-notes.txt +++ b/android/app/src/fdroid/play/listings/mr-IN/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/ms/release-notes.txt b/android/app/src/fdroid/play/listings/ms/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/ms/release-notes.txt +++ b/android/app/src/fdroid/play/listings/ms/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/ne-NP/release-notes.txt b/android/app/src/fdroid/play/listings/ne-NP/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/ne-NP/release-notes.txt +++ b/android/app/src/fdroid/play/listings/ne-NP/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/nl-NL/release-notes.txt b/android/app/src/fdroid/play/listings/nl-NL/release-notes.txt index 52f6a08075..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/nl-NL/release-notes.txt +++ b/android/app/src/fdroid/play/listings/nl-NL/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap-data van 28 mei -• zoeken naar postcodes in de VS en het VK -• straatnamen worden aangekondigd tijdens het navigeren met spraakinstructies (in te schakelen in de instellingen), dank aan Will Bradley voor deze feature -• exporteren van bladwijzers en tracks in GPX-bestandsformaat -• bladwijzers en tracks lokaal opslaan -• toevoegen, aanpassen en tonen van links naar menus van restaurants, bars en andere eetgelegenheden +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app -…voor meer details zie omaps.org/news +…more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/no-NO/release-notes.txt b/android/app/src/fdroid/play/listings/no-NO/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/no-NO/release-notes.txt +++ b/android/app/src/fdroid/play/listings/no-NO/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/pl-PL/release-notes.txt b/android/app/src/fdroid/play/listings/pl-PL/release-notes.txt index bc0a2cae35..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/pl-PL/release-notes.txt +++ b/android/app/src/fdroid/play/listings/pl-PL/release-notes.txt @@ -1,8 +1,9 @@ -• dane OpenStreetMap z 28 maja -• wyszukiwanie kodów pocztowych w USA i Wielkiej Brytanii -• zapowiadanie nazw ulic w komunikatach nawigacji (proszę włączyć w ustawieniach), autor Will Bradley -• eksport zakładek i śladów do pliku w formacie GPX -• zapis zakładek i śladów do lokalnej pamięci urządzenia -• dodawanie, edycja i wyświetlanie linków do menu restauracji, barów i pozostałej gastronomii +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app -…więcej szczegółów na omaps.org/pl/news/ +…more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/pt-BR/release-notes.txt b/android/app/src/fdroid/play/listings/pt-BR/release-notes.txt index f8e2e47d7d..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/pt-BR/release-notes.txt +++ b/android/app/src/fdroid/play/listings/pt-BR/release-notes.txt @@ -1,8 +1,9 @@ -• Dados do OpenStreetMap de 28 de maio -• Pesquisa de CEPs dos EUA e do Reino Unido -• Anúncios de nomes de ruas em instruções verbais TTS (ative-o nas configurações), graças a Will Bradley -• Exporta favoritos e trilhas em formato GPX -• Salva favoritos e trilhas no armazenamento local do dispositivo -• Adiciona, edita e exibe links da web para cardápios de restaurantes, bares e outros serviços de alimentação +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app -…mais detalhes em omaps.org/news +…more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/pt-PT/release-notes.txt b/android/app/src/fdroid/play/listings/pt-PT/release-notes.txt index 9302935271..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/pt-PT/release-notes.txt +++ b/android/app/src/fdroid/play/listings/pt-PT/release-notes.txt @@ -1,8 +1,9 @@ -• Dados do OpenStreetMap de 28 de maio -• Pesquisa de códigos postais dos EUA e do Reino Unido -• Anúncios de nomes de ruas em instruções verbais TTS (ative-o nas configurações), graças a Will Bradley -• Exporta favoritos e trilhos em formato GPX -• Salva favoritos e trilhos no armazenamento local do dispositivo -• Adiciona, edita e exibe links da web para cardápios de restaurantes, bares e outros serviços de alimentação +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app -…mais detalhes em omaps.org/news +…more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/ro/release-notes.txt b/android/app/src/fdroid/play/listings/ro/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/ro/release-notes.txt +++ b/android/app/src/fdroid/play/listings/ro/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/ru-RU/release-notes.txt b/android/app/src/fdroid/play/listings/ru-RU/release-notes.txt index 5878682e53..31202c457f 100644 --- a/android/app/src/fdroid/play/listings/ru-RU/release-notes.txt +++ b/android/app/src/fdroid/play/listings/ru-RU/release-notes.txt @@ -1,7 +1,9 @@ -• Данные OpenStreetMap от 28 мая -• поиск по почтовым индексам в США и Великобритании -• объявления названий улиц в голосовых TTS-инструкциях при навигации (включается в настройках) -• экспорт меток и треков в формате GPX и сохранение их локально на устройстве -• добавление, редактирование и отображение веб-ссылок на меню ресторанов, баров и других заведений общественного питания +• Сортировка меток и треков по имени +• Данные OpenStreetMap по состоянию на 29 апреля +• Если вы были залогинены в OSM, нужно перелогиниться +• Сложные пешеходные тропы теперь отображаются коричневыми точками, очень сложные – чёрными редкими точками +• Велодорожки теперь тёмно-синие, а где идут по пешеходным дорожкам – пунктирные +• Под полупрозрачными мостами видны дороги +• Исправлен импорт GPX из приложения Google Files -…и многое другое на omaps.org/ru/news +…больше подробностей на omaps.org/ru/news diff --git a/android/app/src/fdroid/play/listings/si-LK/release-notes.txt b/android/app/src/fdroid/play/listings/si-LK/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/si-LK/release-notes.txt +++ b/android/app/src/fdroid/play/listings/si-LK/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/sk/release-notes.txt b/android/app/src/fdroid/play/listings/sk/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/sk/release-notes.txt +++ b/android/app/src/fdroid/play/listings/sk/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/sl/release-notes.txt b/android/app/src/fdroid/play/listings/sl/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/sl/release-notes.txt +++ b/android/app/src/fdroid/play/listings/sl/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/sr/release-notes.txt b/android/app/src/fdroid/play/listings/sr/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/sr/release-notes.txt +++ b/android/app/src/fdroid/play/listings/sr/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/sv-SE/release-notes.txt b/android/app/src/fdroid/play/listings/sv-SE/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/sv-SE/release-notes.txt +++ b/android/app/src/fdroid/play/listings/sv-SE/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/th/release-notes.txt b/android/app/src/fdroid/play/listings/th/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/th/release-notes.txt +++ b/android/app/src/fdroid/play/listings/th/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/tr-TR/release-notes.txt b/android/app/src/fdroid/play/listings/tr-TR/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/tr-TR/release-notes.txt +++ b/android/app/src/fdroid/play/listings/tr-TR/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/uk/release-notes.txt b/android/app/src/fdroid/play/listings/uk/release-notes.txt index f9204b3a5b..f0399c7a73 100644 --- a/android/app/src/fdroid/play/listings/uk/release-notes.txt +++ b/android/app/src/fdroid/play/listings/uk/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Сартаванне закладак і сцежак па імені +• Дадзеныя OpenStreetMap па стане на 29 красавіка +• Трэба ізноў залагініцца ў OSM +• Складаныя паходныя сцежкі зараз карычневыя, а экспертныя шляхі чорныя +• Веласіпедныя дарожкі цяпер цёмна-сінія, пункцірам там, дзе яны ідуць па пешаходных сцежках +• Цяпер бачна дарогі пад напаўпразрыстымі мастамі +• Выпраўлены імпарт GPX з прыкладання Google Files -…more details at omaps.org/news +… больш падрабязна на omaps.org/news diff --git a/android/app/src/fdroid/play/listings/ur/release-notes.txt b/android/app/src/fdroid/play/listings/ur/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/ur/release-notes.txt +++ b/android/app/src/fdroid/play/listings/ur/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/vi/release-notes.txt b/android/app/src/fdroid/play/listings/vi/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/vi/release-notes.txt +++ b/android/app/src/fdroid/play/listings/vi/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/zh-CN/release-notes.txt b/android/app/src/fdroid/play/listings/zh-CN/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/zh-CN/release-notes.txt +++ b/android/app/src/fdroid/play/listings/zh-CN/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/zh-HK/release-notes.txt b/android/app/src/fdroid/play/listings/zh-HK/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/zh-HK/release-notes.txt +++ b/android/app/src/fdroid/play/listings/zh-HK/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/listings/zh-TW/release-notes.txt b/android/app/src/fdroid/play/listings/zh-TW/release-notes.txt index f9204b3a5b..eb1872b87b 100644 --- a/android/app/src/fdroid/play/listings/zh-TW/release-notes.txt +++ b/android/app/src/fdroid/play/listings/zh-TW/release-notes.txt @@ -1,8 +1,9 @@ -• OpenStreetMap data as of May 28 -• search for US zip codes and UK (GB) postcodes -• street name announcements in verbal TTS turn instructions (please enable it in settings), thanks to Will Bradley -• export bookmarks and tracks in GPX file format -• save bookmarks and tracks to a local device storage -• add, edit, and display web links to menus of restaurants, bars, and other food services +• Sort bookmarks and tracks by name +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• OpenStreetMap data as of April 29 +• Difficult hiking trails are now brown-dotted, expert ones are black +• Dark blue lines for dedicated cycleways, mixed with white/brown dashes for shared foot/cycle paths +• Roads are now visible under semi-transparent bridges +• Fixed GPX import from Google Files app …more details at omaps.org/news diff --git a/android/app/src/fdroid/play/version.yaml b/android/app/src/fdroid/play/version.yaml index ad16a38e81..0be4372bb7 100644 --- a/android/app/src/fdroid/play/version.yaml +++ b/android/app/src/fdroid/play/version.yaml @@ -1 +1 @@ -version: 2024.06.02-12-FDroid+24060212 +version: 2024.05.11-3-FDroid+24051103 diff --git a/android/app/src/main/assets/00_NotoSansBengali-Regular.ttf b/android/app/src/main/assets/00_NotoSansBengali-Regular.ttf deleted file mode 120000 index 2e56b14f5b..0000000000 --- a/android/app/src/main/assets/00_NotoSansBengali-Regular.ttf +++ /dev/null @@ -1 +0,0 @@ -../../../../../data/00_NotoSansBengali-Regular.ttf \ No newline at end of file diff --git a/android/app/src/main/assets/00_NotoSansMalayalam-Regular.ttf b/android/app/src/main/assets/00_NotoSansMalayalam-Regular.ttf deleted file mode 120000 index 2dea374f66..0000000000 --- a/android/app/src/main/assets/00_NotoSansMalayalam-Regular.ttf +++ /dev/null @@ -1 +0,0 @@ -../../../../../data/00_NotoSansMalayalam-Regular.ttf \ No newline at end of file diff --git a/android/app/src/main/cpp/app/organicmaps/Framework.cpp b/android/app/src/main/cpp/app/organicmaps/Framework.cpp index 8f377c6b24..99542185ea 100644 --- a/android/app/src/main/cpp/app/organicmaps/Framework.cpp +++ b/android/app/src/main/cpp/app/organicmaps/Framework.cpp @@ -58,8 +58,10 @@ #include "3party/open-location-code/openlocationcode.h" +#include #include #include +#include #include #include @@ -594,7 +596,7 @@ void Framework::ExecuteMapApiRequest() void Framework::DeactivatePopup() { - m_work.DeactivateMapSelection(); + m_work.DeactivateMapSelection(false); } /* @@ -879,7 +881,8 @@ Java_app_organicmaps_Framework_nativeGetParsedCenterLatLon(JNIEnv * env, jclass) } JNIEXPORT void JNICALL -Java_app_organicmaps_Framework_nativePlacePageActivationListener(JNIEnv *env, jclass, jobject jListener) +Java_app_organicmaps_Framework_nativePlacePageActivationListener(JNIEnv *env, jclass clazz, + jobject jListener) { LOG(LINFO, ("Set global map object listener")); g_placePageActivationListener = env->NewGlobalRef(jListener); @@ -887,12 +890,9 @@ Java_app_organicmaps_Framework_nativePlacePageActivationListener(JNIEnv *env, jc jmethodID const activatedId = jni::GetMethodID(env, g_placePageActivationListener, "onPlacePageActivated", "(Lapp/organicmaps/widget/placepage/PlacePageData;)V"); - // void onPlacePageDeactivated(); + // void onPlacePageDeactivated(boolean switchFullScreenMode); jmethodID const deactivateId = jni::GetMethodID(env, g_placePageActivationListener, - "onPlacePageDeactivated", "()V"); - // void onPlacePageDeactivated(); - jmethodID const switchFullscreenId = jni::GetMethodID(env, g_placePageActivationListener, - "onSwitchFullScreenMode", "()V"); + "onPlacePageDeactivated", "(Z)V"); auto const fillPlacePage = [activatedId]() { JNIEnv * env = jni::GetEnv(); @@ -909,18 +909,12 @@ Java_app_organicmaps_Framework_nativePlacePageActivationListener(JNIEnv *env, jc } env->CallVoidMethod(g_placePageActivationListener, activatedId, placePageDataRef.get()); }; - auto const closePlacePage = [deactivateId]() + auto const closePlacePage = [deactivateId](bool switchFullScreenMode) { JNIEnv * env = jni::GetEnv(); - env->CallVoidMethod(g_placePageActivationListener, deactivateId); + env->CallVoidMethod(g_placePageActivationListener, deactivateId, switchFullScreenMode); }; - auto const switchFullscreen = [switchFullscreenId]() - { - JNIEnv * env = jni::GetEnv(); - env->CallVoidMethod(g_placePageActivationListener, switchFullscreenId); - }; - - frm()->SetPlacePageListeners(fillPlacePage, closePlacePage, fillPlacePage, switchFullscreen); + frm()->SetPlacePageListeners(fillPlacePage, closePlacePage, fillPlacePage); } JNIEXPORT void JNICALL @@ -932,7 +926,7 @@ Java_app_organicmaps_Framework_nativeRemovePlacePageActivationListener(JNIEnv *e if (!env->IsSameObject(g_placePageActivationListener, jListener)) return; - frm()->SetPlacePageListeners({} /* onOpen */, {} /* onClose */, {} /* onUpdate */, {} /* onSwitchFullScreen */); + frm()->SetPlacePageListeners({} /* onOpen */, {} /* onClose */, {} /* onUpdate */); LOG(LINFO, ("Remove global map object listener")); env->DeleteGlobalRef(g_placePageActivationListener); g_placePageActivationListener = nullptr; diff --git a/android/app/src/main/cpp/app/organicmaps/SearchEngine.cpp b/android/app/src/main/cpp/app/organicmaps/SearchEngine.cpp index af2f846bd8..a66019d449 100644 --- a/android/app/src/main/cpp/app/organicmaps/SearchEngine.cpp +++ b/android/app/src/main/cpp/app/organicmaps/SearchEngine.cpp @@ -21,6 +21,7 @@ #include "defines.hpp" #include +#include #include #include @@ -143,7 +144,7 @@ jobjectArray BuildSearchResults(vector const & productInfo, return jResults; } -void OnResults(Results results, vector const & productInfo, +void OnResults(Results results, vector productInfo, jlong timestamp, bool isMapAndTable, bool hasPosition, double lat, double lon) { // Ignore results from obsolete searches. diff --git a/android/app/src/main/cpp/app/organicmaps/VideoTimer.cpp b/android/app/src/main/cpp/app/organicmaps/VideoTimer.cpp new file mode 100644 index 0000000000..8a0d78107f --- /dev/null +++ b/android/app/src/main/cpp/app/organicmaps/VideoTimer.cpp @@ -0,0 +1,84 @@ +#include "VideoTimer.hpp" + +#include "app/organicmaps/core/jni_helper.hpp" + +#include "base/assert.hpp" +#include "base/logging.hpp" + + +android::VideoTimer * g_timer = 0; + +namespace android +{ + VideoTimer::VideoTimer(TFrameFn frameFn) + : ::VideoTimer(frameFn) + { + ASSERT(g_timer == 0, ()); + g_timer = this; + } + + VideoTimer::~VideoTimer() + { + stop(); + g_timer = 0; + } + + void VideoTimer::SetParentObject(jobject videoTimer) + { + m_videoTimer = videoTimer; + } + + void VideoTimer::start() + { + /*JNIEnv * env; + m_javaVM->AttachCurrentThread(&env, NULL); + env->CallVoidMethod(m_videoTimer, jni::GetJavaMethodID(env, m_videoTimer, "start", "()V"));*/ + m_state = ERunning; + } + + void VideoTimer::resume() + { + /*JNIEnv * env; + m_javaVM->AttachCurrentThread(&env, NULL); + env->CallVoidMethod(m_videoTimer, jni::GetJavaMethodID(env, m_videoTimer, "resume", "()V"));*/ + m_state = ERunning; + } + + void VideoTimer::pause() + { + /*JNIEnv * env; + m_javaVM->AttachCurrentThread(&env, NULL); + env->CallVoidMethod(m_videoTimer, jni::GetJavaMethodID(env, m_videoTimer, "pause", "()V"));*/ + m_state = EPaused; + } + + void VideoTimer::stop() + { + /*JNIEnv * env; + m_javaVM->AttachCurrentThread(&env, NULL); + env->CallVoidMethod(m_videoTimer, jni::GetJavaMethodID(env, m_videoTimer, "stop", "()V"));*/ + m_state = EStopped; + } + + void VideoTimer::perform() + { + //m_frameFn(); + } +} + +extern "C" +{ + JNIEXPORT void JNICALL + Java_app_organicmaps_VideoTimer_nativeRun(JNIEnv * env, jobject thiz) + { + ASSERT ( g_timer, ()); + g_timer->perform(); + } + + JNIEXPORT void JNICALL + Java_app_organicmaps_VideoTimer_nativeInit(JNIEnv * env, jobject thiz) + { + ASSERT ( g_timer, ()); + g_timer->SetParentObject(thiz); + } +} diff --git a/android/app/src/main/cpp/app/organicmaps/VideoTimer.hpp b/android/app/src/main/cpp/app/organicmaps/VideoTimer.hpp new file mode 100644 index 0000000000..439954329a --- /dev/null +++ b/android/app/src/main/cpp/app/organicmaps/VideoTimer.hpp @@ -0,0 +1,33 @@ +#pragma once + +#include + +#include "platform/video_timer.hpp" + +namespace android +{ + class VideoTimer : public ::VideoTimer + { + private: + jobject m_videoTimer; + + public: + + explicit VideoTimer(TFrameFn frameFn); + ~VideoTimer(); + + void SetParentObject(jobject videoTimer); + + void start(); + + void stop(); + + void resume(); + + void pause(); + + void perform(); + }; +} + +extern android::VideoTimer * g_timer; diff --git a/android/app/src/main/cpp/app/organicmaps/editor/OpeningHours.cpp b/android/app/src/main/cpp/app/organicmaps/editor/OpeningHours.cpp index a95388003b..80d6453998 100644 --- a/android/app/src/main/cpp/app/organicmaps/editor/OpeningHours.cpp +++ b/android/app/src/main/cpp/app/organicmaps/editor/OpeningHours.cpp @@ -4,16 +4,15 @@ #include "app/organicmaps/platform/AndroidPlatform.hpp" #include "editor/opening_hours_ui.hpp" + #include "editor/ui2oh.hpp" #include "base/logging.hpp" - -#include "3party/opening_hours/opening_hours.hpp" - #include #include -#include +#include +#include "3party/opening_hours/opening_hours.hpp" namespace { @@ -166,7 +165,8 @@ TimeTableSet NativeTimetableSet(JNIEnv * env, jobjectArray jTimetables) { TimeTableSet tts; int const size = env->GetArrayLength(jTimetables); - tts.Replace(NativeTimetable(env, env->GetObjectArrayElement(jTimetables, 0)), 0); + jobject const timetable = env->GetObjectArrayElement(jTimetables, 0); + tts.Replace(NativeTimetable(env, timetable), 0); for (int i = 1; i < size; i++) { @@ -232,9 +232,9 @@ Java_app_organicmaps_editor_OpeningHours_nativeGetComplementTimetable(JNIEnv * e return JavaTimetable(env, tts.GetComplementTimeTable()); } -JNIEXPORT jobjectArray JNICALL +JNIEXPORT jobject JNICALL Java_app_organicmaps_editor_OpeningHours_nativeRemoveWorkingDay(JNIEnv * env, jclass clazz, - jobjectArray timetables, jint ttIndex, jint dayIndex) + jobjectArray timetables, jint ttIndex, jint dayIndex) { TimeTableSet tts = NativeTimetableSet(env, timetables); auto tt = tts.Get(ttIndex); @@ -243,9 +243,9 @@ Java_app_organicmaps_editor_OpeningHours_nativeRemoveWorkingDay(JNIEnv * env, jc return JavaTimetables(env, tts); } -JNIEXPORT jobjectArray JNICALL +JNIEXPORT jobject JNICALL Java_app_organicmaps_editor_OpeningHours_nativeAddWorkingDay(JNIEnv * env, jclass clazz, - jobjectArray timetables, jint ttIndex, jint dayIndex) + jobjectArray timetables, jint ttIndex, jint dayIndex) { TimeTableSet tts = NativeTimetableSet(env, timetables); auto tt = tts.Get(ttIndex); @@ -256,7 +256,7 @@ Java_app_organicmaps_editor_OpeningHours_nativeAddWorkingDay(JNIEnv * env, jclas JNIEXPORT jobject JNICALL Java_app_organicmaps_editor_OpeningHours_nativeSetIsFullday(JNIEnv * env, jclass clazz, - jobject jTimetable, jboolean jIsFullday) + jobject jTimetable, jboolean jIsFullday) { TimeTable tt = NativeTimetable(env, jTimetable); if (jIsFullday) @@ -271,7 +271,7 @@ Java_app_organicmaps_editor_OpeningHours_nativeSetIsFullday(JNIEnv * env, jclass JNIEXPORT jobject JNICALL Java_app_organicmaps_editor_OpeningHours_nativeSetOpeningTime(JNIEnv * env, jclass clazz, - jobject jTimetable, jobject jOpeningTime) + jobject jTimetable, jobject jOpeningTime) { TimeTable tt = NativeTimetable(env, jTimetable); tt.SetOpeningTime(NativeTimespan(env, jOpeningTime)); @@ -280,7 +280,7 @@ Java_app_organicmaps_editor_OpeningHours_nativeSetOpeningTime(JNIEnv * env, jcla JNIEXPORT jobject JNICALL Java_app_organicmaps_editor_OpeningHours_nativeAddClosedSpan(JNIEnv * env, jclass clazz, - jobject jTimetable, jobject jClosedSpan) + jobject jTimetable, jobject jClosedSpan) { TimeTable tt = NativeTimetable(env, jTimetable); tt.AddExcludeTime(NativeTimespan(env, jClosedSpan)); @@ -289,7 +289,7 @@ Java_app_organicmaps_editor_OpeningHours_nativeAddClosedSpan(JNIEnv * env, jclas JNIEXPORT jobject JNICALL Java_app_organicmaps_editor_OpeningHours_nativeRemoveClosedSpan(JNIEnv * env, jclass clazz, - jobject jTimetable, jint jClosedSpanIndex) + jobject jTimetable, jint jClosedSpanIndex) { TimeTable tt = NativeTimetable(env, jTimetable); tt.RemoveExcludeTime(static_cast(jClosedSpanIndex)); diff --git a/android/app/src/main/java/app/organicmaps/Framework.java b/android/app/src/main/java/app/organicmaps/Framework.java index 146bb92964..f42ae575b6 100644 --- a/android/app/src/main/java/app/organicmaps/Framework.java +++ b/android/app/src/main/java/app/organicmaps/Framework.java @@ -76,12 +76,7 @@ public class Framework // Called from JNI @Keep @SuppressWarnings("unused") - void onPlacePageDeactivated(); - - // Called from JNI - @Keep - @SuppressWarnings("unused") - void onSwitchFullScreenMode(); + void onPlacePageDeactivated(boolean switchFullScreenMode); } public interface RoutingListener diff --git a/android/app/src/main/java/app/organicmaps/MwmActivity.java b/android/app/src/main/java/app/organicmaps/MwmActivity.java index 06dfac9715..b1aed8aad0 100644 --- a/android/app/src/main/java/app/organicmaps/MwmActivity.java +++ b/android/app/src/main/java/app/organicmaps/MwmActivity.java @@ -1229,22 +1229,22 @@ public class MwmActivity extends BaseMwmFragmentActivity // Called from JNI. @Override @SuppressWarnings("unused") - public void onPlacePageDeactivated() + public void onPlacePageDeactivated(boolean switchFullScreenMode) { - closePlacePage(); - } + if (switchFullScreenMode) + { + if ((mPanelAnimator != null && mPanelAnimator.isVisible()) || + UiUtils.isVisible(mSearchController.getToolbar())) + return; - // Called from JNI. - @Override - @SuppressWarnings("unused") - public void onSwitchFullScreenMode() - { - if ((mPanelAnimator != null && mPanelAnimator.isVisible()) || UiUtils.isVisible(mSearchController.getToolbar())) - return; - - setFullscreen(!isFullscreen()); - if (isFullscreen()) - showFullscreenToastIfNeeded(); + setFullscreen(!isFullscreen()); + if (isFullscreen()) + showFullscreenToastIfNeeded(); + } + else + { + closePlacePage(); + } } private void setFullscreen(boolean isFullscreen) diff --git a/android/app/src/main/java/app/organicmaps/bookmarks/data/BookmarkManager.java b/android/app/src/main/java/app/organicmaps/bookmarks/data/BookmarkManager.java index 46869cde27..c56f05f098 100644 --- a/android/app/src/main/java/app/organicmaps/bookmarks/data/BookmarkManager.java +++ b/android/app/src/main/java/app/organicmaps/bookmarks/data/BookmarkManager.java @@ -346,7 +346,7 @@ public enum BookmarkManager static @Nullable String getBookmarksFilenameFromUri(@NonNull ContentResolver resolver, @NonNull Uri uri) { String filename = null; - final String scheme = uri.getScheme(); + String scheme = uri.getScheme(); if (scheme.equals("content")) { try (Cursor cursor = resolver.query(uri, null, null, null, null)) @@ -404,10 +404,6 @@ public enum BookmarkManager return filename + ".gpx"; } - // WhatsApp doesn't provide correct mime type and extension for GPX files. - if (uri.getHost().contains("com.whatsapp.provider.media")) - return filename + ".gpx"; - return null; } @@ -417,7 +413,7 @@ public enum BookmarkManager Logger.w(TAG, "Importing bookmarks from " + uri); try { - String filename = getBookmarksFilenameFromUri(resolver, uri); + final String filename = getBookmarksFilenameFromUri(resolver, uri); if (filename == null) { Logger.w(TAG, "Could not find a supported file type in " + uri); diff --git a/android/app/src/main/java/app/organicmaps/car/CarAppSession.java b/android/app/src/main/java/app/organicmaps/car/CarAppSession.java index fd20c22a7e..e2a5c2111e 100644 --- a/android/app/src/main/java/app/organicmaps/car/CarAppSession.java +++ b/android/app/src/main/java/app/organicmaps/car/CarAppSession.java @@ -252,7 +252,7 @@ public final class CarAppSession extends Session implements DefaultLifecycleObse } @Override - public void onPlacePageDeactivated() + public void onPlacePageDeactivated(boolean switchFullScreenMode) { // The function is called when we close the PlaceScreen or when we enter the navigation mode. // We only need to handle the first case @@ -263,12 +263,6 @@ public final class CarAppSession extends Session implements DefaultLifecycleObse mScreenManager.popToRoot(); } - @Override - public void onSwitchFullScreenMode() - { - // No fullscreen mode in AndroidAuto. Do nothing. - } - private void restoreRoute() { final RoutingController routingController = RoutingController.get(); diff --git a/android/app/src/main/java/app/organicmaps/util/Utils.java b/android/app/src/main/java/app/organicmaps/util/Utils.java index dbdf109188..3b6b80f038 100644 --- a/android/app/src/main/java/app/organicmaps/util/Utils.java +++ b/android/app/src/main/java/app/organicmaps/util/Utils.java @@ -662,13 +662,6 @@ public class Utils return brand; } - public static String getLocalizedLevel(@NonNull Context context, @Nullable String level) - { - if (TextUtils.isEmpty(level)) - return ""; - return context.getString(R.string.level_value_generic, level); - } - private static class SupportInfoWithLogsCallback implements LogsManager.OnZipCompletedListener { @NonNull diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java b/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java index 67ae7d51e8..f452f99e79 100644 --- a/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java +++ b/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java @@ -405,8 +405,7 @@ public class PlacePageView extends Fragment implements View.OnClickListener, refreshMetadataOrHide(Framework.nativeGetActiveObjectFormattedCuisine(), mCuisine, mTvCuisine); refreshWiFi(); refreshMetadataOrHide(mMapObject.getMetadata(Metadata.MetadataType.FMD_FLATS), mEntrance, mTvEntrance); - final String level = Utils.getLocalizedLevel(getContext(), mMapObject.getMetadata(Metadata.MetadataType.FMD_LEVEL)); - refreshMetadataOrHide(level, mLevel, mTvLevel); + refreshMetadataOrHide(mMapObject.getMetadata(Metadata.MetadataType.FMD_LEVEL), mLevel, mTvLevel); final String cap = mMapObject.getMetadata(Metadata.MetadataType.FMD_CAPACITY); refreshMetadataOrHide(!TextUtils.isEmpty(cap) ? getString(R.string.capacity, cap) : "", mCapacity, mTvCapacity); diff --git a/android/app/src/main/res/values-ar/strings.xml b/android/app/src/main/res/values-ar/strings.xml index ba88fabc1b..7168f9b39e 100644 --- a/android/app/src/main/res/values-ar/strings.xml +++ b/android/app/src/main/res/values-ar/strings.xml @@ -600,10 +600,8 @@ معرفة المزيد خروج - - استخدام البحث أو النقر على الخريطة لإضافة نقطة بداية الطريق - - استخدام البحث أو النقر على الخريطة لإضافة نقطة وجهة + أضف نقطة البداية لتخطيط المسار + أضف النهاية لتخطيط المسار إزالة إضافة نقطة توقف diff --git a/android/app/src/main/res/values-az/strings.xml b/android/app/src/main/res/values-az/strings.xml index 11a054d3c6..bb64e0e6a3 100644 --- a/android/app/src/main/res/values-az/strings.xml +++ b/android/app/src/main/res/values-az/strings.xml @@ -587,10 +587,8 @@ Daha ətraflı Çıx - - Marşrutun başlanğıc nöqtəsi əlavə etmək üçün axtarışdan istifadə edin və ya xəritədə klikləyin - - Təyinat nöqtəsi əlavə etmək üçün axtarışdan istifadə edin və ya xəritədə klikləyin + Marşrutu planlaşdırmaq üçün başlanğıc nöqtəsi əlavə edin + Marşrutu planlaşdırmaq üçün təyinat əlavə edin Sil Dayanacaq nöqtəsini əlavə edin diff --git a/android/app/src/main/res/values-be/strings.xml b/android/app/src/main/res/values-be/strings.xml index df23f0584b..69ea868bd9 100644 --- a/android/app/src/main/res/values-be/strings.xml +++ b/android/app/src/main/res/values-be/strings.xml @@ -439,8 +439,8 @@ Сёння закрыта Закрыта Сёння - Адчыняецца праз %s - Зачыняецца праз %s + Адкрываецца праз %s + Закрываецца праз %s Закрыта Правіць часы працы Не зарэгістраваныя на OpenStreetMap? @@ -581,10 +581,8 @@ Даведацца больш Выхад - - Скарыстайцеся пошукам або націсніце на мапе, каб дадаць пачатак маршруту - - Скарыстайцеся пошукам або націсніце на мапе, каб дадаць пункт прызначэння + Дадайце пункт адпраўлення, каб пракласці маршрут + Дадайце пункт прызначэння, каб пракласці маршрут Выдаліць Дадаць прыпынак @@ -1372,7 +1370,6 @@ Карта Турыстычны офіс Цэнтр для наведвальнікаў - Аглядальная пляцоўка Турыстычная хатка Хатні заапарк diff --git a/android/app/src/main/res/values-bg/strings.xml b/android/app/src/main/res/values-bg/strings.xml index b09d5d6524..0d8ffae1e6 100644 --- a/android/app/src/main/res/values-bg/strings.xml +++ b/android/app/src/main/res/values-bg/strings.xml @@ -542,10 +542,8 @@ Научете повече Изход - - Използвайте търсене или докоснете картата, за да добавите начална точка на маршрута - - Използвайте търсене или докоснете картата, за да добавите точка на дестинация + Добавяне на начална точка за планиране на маршрут + Добавяне на крайна точка за планиране на маршрут Премахване Добавяне на спирка @@ -561,7 +559,7 @@ Показване на всичко Създаване на нов списък - Импортиране на отметки и маршрути + Импортиране на отметки и песни Не е възможно споделяне поради грешка в приложението Грешка при споделяне Не може да се споделя празен списък diff --git a/android/app/src/main/res/values-ca/strings.xml b/android/app/src/main/res/values-ca/strings.xml index 3a787ddd2d..4c10c7b622 100644 --- a/android/app/src/main/res/values-ca/strings.xml +++ b/android/app/src/main/res/values-ca/strings.xml @@ -580,10 +580,8 @@ Més informació Surt - - Utilitzeu la cerca o toqueu el mapa per afegir un punt de partida de la ruta - - Utilitzeu la cerca o toqueu el mapa per afegir un punt de destinació + Afegiu un punt inical per a planificar una ruta + Afegeiu la destinació per a planificar la ruta Elimina Afegeix una parada diff --git a/android/app/src/main/res/values-cs/strings.xml b/android/app/src/main/res/values-cs/strings.xml index 29f7dd398d..ea8342bf56 100644 --- a/android/app/src/main/res/values-cs/strings.xml +++ b/android/app/src/main/res/values-cs/strings.xml @@ -559,10 +559,8 @@ Zjistit více Ukončit - - Pomocí vyhledávání nebo klepnutím na mapu přidejte výchozí bod trasy - - Pomocí vyhledávání nebo klepnutím na mapu přidejte cílový bod + Zadejte výchozí bod pro plánování trasy + Zadejte cílový bod pro plánování trasy Odstranit Přidat zastávku diff --git a/android/app/src/main/res/values-da/strings.xml b/android/app/src/main/res/values-da/strings.xml index b1853c43f9..7c75164196 100644 --- a/android/app/src/main/res/values-da/strings.xml +++ b/android/app/src/main/res/values-da/strings.xml @@ -555,10 +555,8 @@ Flere oplysninger Afslut - - Brug søgning eller tryk på kortet for at tilføje et startpunkt for en rute - - Brug søgning eller tryk på kortet for at tilføje et destinationspunkt + Tilføj startpunkt for at planlægge en rute + Tilføj slutpunkt for at planlægge en rute Fjern Tilføj stop diff --git a/android/app/src/main/res/values-de/strings.xml b/android/app/src/main/res/values-de/strings.xml index a36ab42fff..9577e7c4d0 100644 --- a/android/app/src/main/res/values-de/strings.xml +++ b/android/app/src/main/res/values-de/strings.xml @@ -466,8 +466,6 @@ Email oder Benutzername Telefon hinzufügen Stockwerk - - Stock: %s Alle Kartenänderungen werden zusammen mit der Karte gelöscht. Karten aktualisieren Um eine Route zu erstellen, müssen Sie alle Karten aktualisieren und dann die Route erneut planen. @@ -585,10 +583,8 @@ Weitere Informationen Ausgang - - Verwende die Suche oder tippe auf die Karte, um einen Routenstartpunkt hinzuzufügen - - Verwende die Suche oder tippe auf die Karte, um einen Zielpunkt hinzuzufügen + Fügen Sie einen Startpunkt hinzu, um eine Route zu planen + Fügen Sie ein Ziel hinzu, um eine Route zu planen Entfernen Stopp einfügen diff --git a/android/app/src/main/res/values-el/strings.xml b/android/app/src/main/res/values-el/strings.xml index 4bf328cd64..e54f8488bc 100644 --- a/android/app/src/main/res/values-el/strings.xml +++ b/android/app/src/main/res/values-el/strings.xml @@ -583,10 +583,8 @@ Μάθετε περισσότερα Έξοδος - - Χρησιμοποιήστε την αναζήτηση ή πατήστε στο χάρτη για να προσθέσετε ένα σημείο εκκίνησης της διαδρομής - - Χρησιμοποιήστε την αναζήτηση ή πατήστε στο χάρτη για να προσθέσετε ένα σημείο προορισμού + Προσθέστε αφετηρία για να σχεδιάσετε μια διαδρομή + Προσθέστε τελικό προορισμό, για να σχεδιάσετε μια διαδρομή Αφαίρεση Προσθήκη στάσης diff --git a/android/app/src/main/res/values-en-rGB/strings.xml b/android/app/src/main/res/values-en-rGB/strings.xml index b846c215eb..54aa1dc796 100644 --- a/android/app/src/main/res/values-en-rGB/strings.xml +++ b/android/app/src/main/res/values-en-rGB/strings.xml @@ -35,7 +35,7 @@ Petrol Stations Metro navigation in this region is not available yet - No metro route found + Metro route is not found Please choose a start or end point closer to a metro station diff --git a/android/app/src/main/res/values-es/strings.xml b/android/app/src/main/res/values-es/strings.xml index 5e1da5e338..95b281e518 100644 --- a/android/app/src/main/res/values-es/strings.xml +++ b/android/app/src/main/res/values-es/strings.xml @@ -587,10 +587,8 @@ Leer más Salida - - Busca o toca en el mapa para añadir el origen de la ruta - - Busca o toca en el mapa para añadir el destino + Buscar un origen para el plan de ruta + Buscar un destino para el plan de ruta Eliminar Añadir parada diff --git a/android/app/src/main/res/values-et/strings.xml b/android/app/src/main/res/values-et/strings.xml index 79aae35958..316f6ea6af 100644 --- a/android/app/src/main/res/values-et/strings.xml +++ b/android/app/src/main/res/values-et/strings.xml @@ -579,10 +579,8 @@ Lisateave Välju - - Marsruudi alguspunkti lisamiseks kasutage otsingut või puudutage kaarti - - Kasutage otsingut või koputage kaardil sihtkoha lisamiseks + Marsruudi planeerimiseks lisa lähtepunkt + Marsruudi planeerimiseks lisa sihtkoht Eemalda Lisa peatus diff --git a/android/app/src/main/res/values-eu/strings.xml b/android/app/src/main/res/values-eu/strings.xml index 39e044a33d..01796ac313 100644 --- a/android/app/src/main/res/values-eu/strings.xml +++ b/android/app/src/main/res/values-eu/strings.xml @@ -585,10 +585,8 @@ Irakurri gehiago Irten - - Erabili bilaketa edo sakatu mapan ibilbidearen abiapuntua gehitzeko - - Erabili bilaketa edo sakatu mapan helmuga puntu bat gehitzeko + Gehitu abiapuntu bat ibilbide bat antolatzeko + Gehitu helmuga bat ibilbide bat antolatzeko Kendu Gehitu geldiunea diff --git a/android/app/src/main/res/values-fa/strings.xml b/android/app/src/main/res/values-fa/strings.xml index 1e54916214..72e16dec04 100644 --- a/android/app/src/main/res/values-fa/strings.xml +++ b/android/app/src/main/res/values-fa/strings.xml @@ -551,10 +551,8 @@ بیشتر بدانید خروج - - برای افزودن نقطه شروع مسیر، از جستجو استفاده کنید یا روی نقشه ضربه بزنید - - برای افزودن نقطه مقصد، از جستجو استفاده کنید یا روی نقشه ضربه بزنید + یک نقطه شروع برای برنامه ریزی یک مسیر اضافه کنید + یک مقصد برای برنامه ریزی یک مسیر اضافه کنید حذف اضافه کردن توقف diff --git a/android/app/src/main/res/values-fi/strings.xml b/android/app/src/main/res/values-fi/strings.xml index b3610d9688..8f60ec0903 100644 --- a/android/app/src/main/res/values-fi/strings.xml +++ b/android/app/src/main/res/values-fi/strings.xml @@ -589,10 +589,8 @@ Lisätietoja Poistu - - Käytä hakua tai napauta karttaa lisätäksesi reitin lähtöpisteen - - Käytä hakua tai napauta karttaa lisätäksesi kohdepisteen. + Lisää alkupiste reitin suunnittelua varten + Lisää määränpää reitin suunnittelua varten Poista Lisää pysähdys diff --git a/android/app/src/main/res/values-fr/strings.xml b/android/app/src/main/res/values-fr/strings.xml index b719260f51..e2639203f7 100644 --- a/android/app/src/main/res/values-fr/strings.xml +++ b/android/app/src/main/res/values-fr/strings.xml @@ -472,8 +472,6 @@ Email ou nom d\'utilisateur Ajouter un numéro de téléphone Étage - - Niveau : %s Toutes vos modifications de la carte seront supprimées avec elle. Mettre à jour les cartes Pour créer un itinéraire, vous devez mettre à jour toutes les cartes puis reprogrammer l\'itinéraire. @@ -590,10 +588,8 @@ En savoir plus Sortie - - Utilise la recherche ou tape sur la carte pour ajouter un point de départ d\'itinéraire - - Utilise la recherche ou tape sur la carte pour ajouter un point de destination + Ajouter un point de départ pour planifier un itinéraire + Ajouter un point d\'arrivée pour planifier un itinéraire Supprimer Ajouter un arrêt diff --git a/android/app/src/main/res/values-hi/strings.xml b/android/app/src/main/res/values-hi/strings.xml index 551df7ba8c..9972594e2e 100644 --- a/android/app/src/main/res/values-hi/strings.xml +++ b/android/app/src/main/res/values-hi/strings.xml @@ -417,10 +417,8 @@ कुछ भाषाओं के लिए, आपको ऐप स्टोर (Google Play, Galaxy Store, App Gallery, FDroid) से एक स्पीच सिंथेसाइज़र या एक अतिरिक्त भाषा पैक इंस्टॉल करना होगा।\nअपने डिवाइस की सेटिंग्स खोलें → भाषा और इनपुट → स्पीच → टेक्स्ट टू स्पीच आउटपुट.\nयहां आप वाक् संश्लेषण के लिए सेटिंग्स प्रबंधित कर सकते हैं (उदाहरण के लिए, ऑफ़लाइन उपयोग के लिए भाषा पैक डाउनलोड करें) और एक अन्य टेक्स्ट-टू-स्पीच इंजन का चयन कर सकते हैं। अधिक जानकारी के लिए कृपया इस गाइड को देखें। लैटिन में लिप्यंतरण - - मार्ग का प्रारंभिक बिंदु जोड़ने के लिए खोज का उपयोग करें या मानचित्र पर टैप करें - - गंतव्य बिंदु जोड़ने के लिए खोज का उपयोग करें या मानचित्र पर टैप करें + मार्ग की योजना बनाने के लिए एक प्रारंभिक बिंदु जोड़ें + मार्ग की योजना बनाने के लिए एक गंतव्य जोड़ें गंतव्य जोड़ें कृपया अपने सभी मानचित्र संपादनों को स्वचालित रूप से अपलोड करने के लिए OpenStreetMap पर लॉगिन करें। अधिक जानें यहां diff --git a/android/app/src/main/res/values-hu/strings.xml b/android/app/src/main/res/values-hu/strings.xml index e2fcfe7d57..38250750b5 100644 --- a/android/app/src/main/res/values-hu/strings.xml +++ b/android/app/src/main/res/values-hu/strings.xml @@ -564,14 +564,12 @@ TTS rendszert használunk a hangnavigációhoz. Sok Android-os készülék használja a Google TTS-t; töltse le vagy frissítse a Google Play áruházból (https://play.google.com/store/apps/details?id=com.google.android.tts) Egyes nyelveknél másik beszédszintetizátort vagy további nyelvi csomagot kell telepítenie az alkalmazás-áruházból (Google Play, Galaxy Store, App Gallery, FDroid). Nyissa meg a készülék beállításait → Nyelv és bevitel → Beszéd → Szöveg-beszéd átalakító kimenet. Itt kezelheti a beszédszintézis beállításokat (például nyelvi csomag letöltése kapcsolat nélküli használatra) és másik szövegfelolvasót jelölhe tki. További tájékoztatást találhat még ebben az útmutatóban. - Átírás latin betűkre + Átírás latin nyelvre Tudjon meg többet Kilépés - - Használja a keresést, vagy koppintson a térképre az útvonal kezdőpontjának hozzáadásához - - Használja a keresést, vagy koppintson a térképre egy célpont hozzáadásához + Adjon hozzá kiindulási pontot az útvonal megtervezéséhez + Adjon hozzá végpontot az útvonal tervezéséhez Eltávolítja Hozzáad megállót @@ -646,7 +644,7 @@ Soha Automatikus Maximális energiatakarékosság - Az opció bekapcsolja a diagnosztikai célú naplózást. Hasznos lehet a terméktámogatási csapatunknak, akik elhárítják az alkalmazás hibáit. Csak az Organic Maps terméktámogatásának kérésére kapcsold be ezt az opciót. + Az opció bekapcsolja a diagnosztikai célú naplózást. Hasznos lehet a support csapatunknak, akik elhárítják az alkalmazás hibáit. Csak a Organic Maps support kérésére kapcsold be ezt az opciót. Online szerkesztés Útvonaltervezési lehetőségek diff --git a/android/app/src/main/res/values-in/strings.xml b/android/app/src/main/res/values-in/strings.xml index c544cb5df2..4e2e81629c 100644 --- a/android/app/src/main/res/values-in/strings.xml +++ b/android/app/src/main/res/values-in/strings.xml @@ -556,10 +556,8 @@ Pelajari selengkapnya Keluar - - Gunakan pencarian atau ketuk pada peta untuk menambahkan titik awal rute - - Gunakan pencarian atau ketuk pada peta untuk menambahkan titik tujuan + Tambahkan titik awal untuk merencanakan rute + Tambahkan titik akhir untuk merencanakan rute Hapus Tambah perhentian diff --git a/android/app/src/main/res/values-it/strings.xml b/android/app/src/main/res/values-it/strings.xml index 7a39207a91..7875d52d46 100644 --- a/android/app/src/main/res/values-it/strings.xml +++ b/android/app/src/main/res/values-it/strings.xml @@ -570,10 +570,8 @@ Scopri di più Uscita - - Usa la ricerca o tocca la mappa per aggiungere un punto di partenza del percorso - - Usa la ricerca o tocca la mappa per aggiungere un punto di destinazione + Aggiungi un punto di partenza per pianificare un percorso + Aggiungi un punto di arrivo per pianificare un percorso Rimuovi Aggiungi sosta diff --git a/android/app/src/main/res/values-iw/strings.xml b/android/app/src/main/res/values-iw/strings.xml index 32629156e3..2f15136f35 100644 --- a/android/app/src/main/res/values-iw/strings.xml +++ b/android/app/src/main/res/values-iw/strings.xml @@ -578,10 +578,8 @@ למידע נוסף יציאה - - יש להוסיף נקודת התחלה למסלול באמצעות חיפוש או בלחיצה על המפה - - יש לבחור נקודת יעד באמצעות חיפוש או בלחיצה על המפה + יש להוסיף נקודת התחלה כדי לתכנן מסלול + יש להוסיף יעד כדי לתכנן מסלול הסרה הוסף תחנה diff --git a/android/app/src/main/res/values-ja/strings.xml b/android/app/src/main/res/values-ja/strings.xml index c537f6cc0a..a1bd28bf80 100644 --- a/android/app/src/main/res/values-ja/strings.xml +++ b/android/app/src/main/res/values-ja/strings.xml @@ -589,10 +589,8 @@ 詳細情報 出口 - - 検索を使うか、地図上をタップしてルートの出発点を追加する - - 検索を使うか、地図上をタップして目的地を追加する + ルートを計画するには出発地を追加してください + ルートを計画するには目的地を追加してください 削除 中間地点を追加 diff --git a/android/app/src/main/res/values-ko/strings.xml b/android/app/src/main/res/values-ko/strings.xml index 66b424231d..72f37ec98d 100644 --- a/android/app/src/main/res/values-ko/strings.xml +++ b/android/app/src/main/res/values-ko/strings.xml @@ -554,10 +554,8 @@ 자세히 알아보기 끝내기 - - 검색을 사용하거나 지도를 탭하여 경로 시작점을 추가합니다 - - 검색을 사용하거나 지도를 탭하여 목적지 지점을 추가합니다 + 경로 계획을 세우기 위한 시작 지점을 추가하세요 + 경로 계획을 세우기 위한 끝 지점을 추가하세요 제거 스톱 추가 diff --git a/android/app/src/main/res/values-mr/strings.xml b/android/app/src/main/res/values-mr/strings.xml index ed5435c569..08c58b7d64 100644 --- a/android/app/src/main/res/values-mr/strings.xml +++ b/android/app/src/main/res/values-mr/strings.xml @@ -551,10 +551,8 @@ अधिक जाणून घ्या बाहेर पडा - - मार्ग प्रारंभ बिंदू जोडण्यासाठी नकाशावर शोध वापरा किंवा टॅप करा - - गंतव्य बिंदू जोडण्यासाठी नकाशावर शोधा किंवा टॅप करा + मार्ग नियोजित करण्यासाठी प्रारंभ बिंदू जोडा + मार्ग नियोजित करण्यासाठी इष्टस्थान जोडा काढा स्टॉप जोडा diff --git a/android/app/src/main/res/values-nb/strings.xml b/android/app/src/main/res/values-nb/strings.xml index cf8c4437a3..103969abf8 100644 --- a/android/app/src/main/res/values-nb/strings.xml +++ b/android/app/src/main/res/values-nb/strings.xml @@ -587,10 +587,8 @@ Finn ut mer Avslutt - - Bruk søk eller trykk på kartet for å legge til et startpunkt for ruten - - Bruk søk eller trykk på kartet for å legge til et destinasjonspunkt + Angi startpunkt for å planlegge rute + Angi sluttpunkt for å planlegge rute Fjern Angi stopp diff --git a/android/app/src/main/res/values-nl/strings.xml b/android/app/src/main/res/values-nl/strings.xml index 655beac243..1cb936f423 100644 --- a/android/app/src/main/res/values-nl/strings.xml +++ b/android/app/src/main/res/values-nl/strings.xml @@ -7,9 +7,9 @@ Terug - Annuleer + Annuleren - Verwijder + Verwijderen Download kaarten Downloaden is mislukt. Tik om het opnieuw te proberen. @@ -24,17 +24,17 @@ Later - Zoek + Zoeken - Zoek op de kaart + Op de kaart zoeken U heeft momenteel alle locatieservices voor dit apparaat of deze app uitgeschakeld. Schakel ze in bij Instellingen. - Toon op de kaart + Op de kaart tonen Downloaden is mislukt - Probeer opnieuw + Opnieuw proberen Over Organic Maps Gratis voor iedereen, met liefde gemaakt @@ -43,14 +43,14 @@ • Geen batterijverlies, werkt offline - • Snel, minimalistisch, ontwikkeld door de gemeenschap + • Snel, minimalistisch, ontwikkeld door gemeenschap Open-source applicatie gemaakt door enthousiastelingen en vrijwilligers. Locatie-instellingen - Sluit + Sluiten Een hardware geaccellereerde OpenGL is nodig. Jammer genoeg wordt uw apparaat niet ondersteund. - Download + Downloaden Verwijder de USB-kabel of plaats een geheugenkaart om Organic Maps te gebruiken @@ -61,9 +61,9 @@ %s downloaden? %s updaten? - Pauzeer + Pauzeren - Ga verder + Doorgaan %s download is mislukt @@ -89,7 +89,7 @@ Kaarten opslaan in - Selecteer de map waar kaarten naar gedownload worden + Selecteer de plaats waar kaarten naar gedownload zouden moeten worden Kaarten @@ -176,25 +176,25 @@ Het bestandstype wordt niet herkend door de app:\n%1$s - Bestand openen mislukt %1$s\n\n%2$s + Faalde om bestand te openen %1$s\n\n%2$s - Wijzig + Wijzigen Je locatie is nog niet vastgesteld Sorry, instellingen voor kaartopslag zijn momenteel uitgeschakeld. - De kaart wordt nu gedownload. + Het downloaden van het land is nu aan de gang. Hey, kijk naar mijn huidige locatie op Organic Maps! %1$s of %2$s Heeft u geen offline-kaarten? Download ze hier: https://omaps.app/get - Hey, bekijk mijn pin op Organic Maps! + Hey, kijk naar mijn pin op Organic Maps! - Hey, bekijk mijn huidige locatie op Organic Maps! + Hey, kijk naar mijn huidige locatie op Organic Maps! Hoi,\n\nMomenteel ben ik hier: %1$s. Klik op deze %2$s link of deze %3$s link om de plaats op de kaart te zien.\n\nBedankt. - Deel + Delen E-mail @@ -216,7 +216,7 @@ Informatie Navigatie Zoomknoppen - Toon op de kaart + Weergave op het scherm Nachtmodus @@ -234,7 +234,7 @@ Gesproken instructies - Straatnamen aankondigen + Straatnamen bekendmaken Indien ingeschakeld, wordt de naam van de straat of afrit waar u afslaat hardop uitgesproken. @@ -253,7 +253,7 @@ 12 uur 1 dag Afstand - Bekijk op de kaart + Op kaart bekijken Website @@ -261,13 +261,13 @@ Feedback - Beoordeel de app + App beoordelen Hulp Vragen en antwoorden - Doneer + Doneren Steun het project @@ -283,7 +283,7 @@ Update alles - Annuleer alles + Alles annuleren Gedownload @@ -291,7 +291,7 @@ Bij mij in de buurt Kaarten - Download alles + Alles downloaden Aan het downloaden: Stop de navigatie om de kaart te verwijderen. @@ -300,11 +300,11 @@ Download de kaart - Probeer opnieuw + Herhalen - Verwijder kaart + Kaart verwijderen - Update kaart + Kaart bijwerken Google Play-locatieservices @@ -316,8 +316,8 @@ Niet genoeg ruimte - Schakel locatiediensten in - Bewaar + Schakel Locatie Services in + Opslaan Uw omschrijvingen (tekst of html) aanmaken @@ -367,11 +367,11 @@ De huidige gps-coördinaten kunnen niet worden gevonden. Schakel locatiediensten in om de route te berekenen. Route vinden mislukt Route samenstellen mislukt. - Kies een ander startpunt of een andere bestemming. - Kies ander startpunt + Kies een ander startpunt of andere bestemming. + Ander startpunt kiezen Route samenstellen mislukt. Startpunt kan niet worden gevonden. Kies een startpunt dat dichter bij een weg ligt. - Kies andere bestemming + Andere bestemming kiezen Route samenstellen mislukt. Bestemming kan niet worden gevonden. Kies een bestemming die dichter bij een weg ligt. Kan de tussenstop niet vinden. @@ -386,18 +386,18 @@ Om te beginnen met zoeken en om routebeschrijvingen te kunnen maken, moet u de kaart downloaden. U heeft vervolgens geen internetverbinding meer nodig. Selecteer de kaart - Toon + Tonen - Verberg + Verbergen Categorieën Geschiedenis - Sorry, geen resultaten gevonden. + Sorry, ik heb niets gevonden. Probeer een andere zoekopdracht. Zoekgeschiedenis Snel toegang tot recente zoekopdrachten. - Wis zoekgeschiedenis + Zoekgeschiedenis wissen Uw locatie - Start + Beginnen Van Route naar Navigatie is uitsluitend beschikbaar vanuit uw huidige locatie. @@ -408,10 +408,10 @@ Van Tot - Voeg schema toe - Verwijder schema + Schema toevoegen + Schema verwijderen - Elke dag (24 uur) + Elke dag (dag en nacht) Open Gesloten Sluitingstijden toevoegen @@ -420,71 +420,71 @@ Eenvoudige modus Sluitingstijden Voorbeeldwaarden - Corrigeer fout + Fout corrigeren Locatie Beschrijf het probleem gedetailleerd, zodat de OpenStreetMap-community de fout kan oplossen. Of doe het zelf op https://www.openstreetmap.org/ - Verzend + Verzenden Probleem De plaats bestaat niet Gesloten voor onderhoud Dubbele plaats - Download kaarten automatisch + Automatische download Dagelijks - 24/7 - Vandaag gesloten - Gesloten + Nacht en dag + Vrije dag vandaag + Vrije dag Vandaag Opent over %s Sluit over %s Gesloten - Bewerk openingstijden + Openingsuren bewerken Geen account bij OpenStreetMap? - Registreer bij OpenStreetMap + Registeren Log in - Log in bij OpenStreetMap + Inloggen op OpenStreetMap Wachtwoord Wachtwoord vergeten? - Log uit - Bewerk de locatie - Voeg een taal toe + Uitloggen + De locatie bewerken + Een taal toevoegen Straat Huisnummer Details - Voeg een straat toe + Een straat toevoegen Voer een straatnaam in a.u.b. - Kies een taal - Kies een straat + Een taal kiezen + Een straat kiezen Postcode Keuken - Selecteer keuken + Selecteer Keuken - E-mailadres of gebruikersnaam - Voeg telefoonnummer toe - Verdieping + Emailadres of gebruikersnaam + Telefoonnummer toevoegen + Etage Alle wijzigingen aan de kaart zullen samen met de kaart worden verwijderd. - Update kaarten + Kaarten updaten Om een route te creëren, moet je alle kaarten updaten en dan de route opnieuw plannen. - Vind een kaart + Vind de kaart Controleer je instellingen en zorg ervoor dat het apparaat verbonden is met het internet. Niet genoeg ruimte Verwijder overbodige gegevens Inlogfout. Gecontroleerde wijzigingen - Versleep de kaart om de juiste locatie van het object te selecteren. - Bewerken - Toevoegen + Trek aan de kaart om de juiste locatie van het object te selecteren. + Aan het aanpassen + Aan het toevoegen Naam van de plaats Zoals het in de plaatselijke taal geschreven staat Categorie Gedetailleerde probleemomschrijving Een ander probleem - Voeg een organisatie toe + Een organisatie toevoegen Hier kan geen object worden geplaatst Door de gemeenschap gemaakte OpenStreetMap-gegevens vanaf %s. Lees meer over hoe je de kaart kunt bewerken en bijwerken op OpenStreetMap.org @@ -493,15 +493,15 @@ %1$d van %2$d Downloaden via een mobiele gegevensverbinding? Met sommige abonnementen of bij roaming kan dit behoorlijk duur zijn. - Voer een geldig huisnummer in + Een juist huisnummer invoeren Aantal verdiepingen (max. %d) Het gebouw mag niet meer dan %d verdiepingen hebben Postcode - Voer een geldige postcode in + Voer de juiste postcode in Onbekende locatie - Stuur een notitie naar de OSM-editors + Notitie sturen naar de OSM-editors Gedetailleerde reactie Uw voorgestelde wijzigingen worden verzonden naar de OpenStreetMap-gemeenschap. Beschrijf de details die niet kunnen worden bewerkt in Organic Maps. Meer over OpenStreetMap @@ -530,17 +530,17 @@ De doorverwijsbonus die je ontvangt voor elke boeking via deze link gaat naar de ontwikkeling van Organic Maps. Details op Kayak - Bewerk bladwijzer + Bladwijzer bewerken Reactie… - Alle lokale wijzigingen weggooien? - Gooi weg - Toegevoegde locatie verwijderen? - Verwijder + Alle lokale wijzigingen herstellen? + Herstellen + Een toegevoegde locatie verwijderen? + Verwijderen Locatie bestaat niet Graag de reden voor verwijdering aangeven - Voer een geldig telefoonnummer in + Voer het juiste telefoonnummer in Voer een geldig webadres in Voer een geldig emailadres in Voer een geldig Facebook-webadres, een accountnaam of een paginanaam in @@ -548,34 +548,34 @@ Voer een geldig Twitter-webadres of gebruikersnaam in Voer een geldig VB-webadres of accountnaam in Voer een geldig LINE-webadres of LINE ID in - Voeg een plaats toe aan OpenStreetMap + Plaats toevoegen aan OpenStreetMap Wil je het naar alle gebruikers sturen? Controleer dat je geen persoonlijke gegevens hebt ingevoerd. OpenStreetMap-editors zullen de wijzigingen controleren en contact met u opnemen als ze vragen hebben. - Stop + Stoppen - Accepteer + Aanvaarden - Weiger + Weigeren Mobiel internet gebruiken om gedetailleerde informatie weer te geven? - Gebruik altijd - Alleen vandaag - Gebruik vandaag niet - Mobiel internet + Altijd Gebruiken + Enkel Vandaag + Vandaag niet Gebruiken + Mobiel Internet Mobiel internet is vereist voor het weergeven van gedetailleerde informatie over plaatsen, zoals foto\'s, prijzen en beoordelingen. - Gebruik nooit - Vraag altijd + Nooit Gebruiken + Altijd Vragen Om verkeersgegevens weer te geven, moeten de kaarten bijgewerkt worden. - Vergroot lettergrootte op de kaart + Lettergrootte op de kaart vergroten Gelieve Organic Maps bij te werken Verkeersgegevens zijn niet beschikbaar Logboekregistratie inschakelen - Algemene feedback + Algemene Feedback We gebruiken het TTS-systeem voor gesproken instructies. Vele Android toestellen gebruiken Google TTS, u kunt het downloaden of bijwerken in Google Play (https://play.google.com/store/apps/details?id=com.google.android.tts) Voor sommige talen dient u een andere spraaksynthesesoftware of een aanvullende taalpakket te installeren van de app store (Google Play, Galaxy Store, App Gallery, FDroid).\nOpen de instellingen van uw toestel → Taal en invoer → Spraak → Uitvoer voor tekst-naar-spraak.\nHier kunt u instellingen voor spraaksynthese beheren (bijvoorbeeld taalpakket downloaden voor offline gebruik) en een andere tekst-naar-spraak engine selecteren. Gelieve deze handleiding te lezen voor meer informatie. @@ -583,26 +583,24 @@ Meer informatie Uitgang - - Gebruik zoeken of tik op de kaart om een startpunt voor de route toe te voegen - - Gebruik Zoeken of tik op de kaart om een bestemmingspunt toe te voegen - Verwijder - Voeg tussenstop toe + Voeg beginpunt toe om een route te plannen + Voeg eindpunt toe om een route te plannen + Verwijderen + Tussenstop toevoegen Log in op OpenStreetMap om al je kaartbewerkingen automatisch te uploaden. Meer informatie hier. Probleem met opslagtoegang Externe opslag is niet beschikbaar, wellicht is de SD-kaart verwijderd, beschadigd of is het bestandssysteem alleen-lezen. Gelieve dit te controleren en ons te contacteren via support\@organicmaps.app Slechte opslag emuleren Ingang - Voer een geldige naam in + Voer een juiste naam in Lijsten - Verberg alles - Toon alles - Maak een nieuwe lijst + Alles verbergen + Alles weergeven + Nieuwe lijst maken - Importeer bladwijzers en tracks + Bladwijzers en tracks importeren Delen is onmogelijk wegens een toepassingsfout Deelfout Een lege lijst kan niet gedeeld worden @@ -618,7 +616,7 @@ %d bestand gevonden. Je ziet het na het converteren. Er zijn %d bestanden gevonden. Je zult ze na de conversie zien. - Zet terug + Herstellen %d plaats @@ -639,12 +637,12 @@ Deze lijst is leeg Om een bladwijzer toe te voegen, tikt u op een plaats op de kaart en vervolgens op het sterpictogram …meer - Exporteer KMZ - Exporteer GPX - Verwijder lijst + KMZ exporteren + GPX exporteren + Lijst verwijderen Publieke toegang Beperkte toegang - Voer een beschrijving in (tekst of html) + Maak een beschrijving aan (tekst of html) Privé Snelheidscamera\'s Plaatsbeschrijving @@ -659,11 +657,11 @@ Energiebesparende modus Als de energiebesparende modus is ingeschakeld, schakelt de app de energieverbruikende functies uit afhankelijk van de huidige lading van de mobiele telefoon Nooit - Wanneer batterij bijna leeg is + Auto Maximale energiebesparing Deze optie is ingeschakeld voor logboekregistraties voor diagnostische doeleinden. Het helpt bij het identificeren van problemen met de applicatie. Schakel de optie alleen in op verzoek van Organic Maps-ondersteuning. Wordt online bewerkt - Route-instellingen + Route instellingen Vermijd tolwegen @@ -671,13 +669,13 @@ Vermijd veerboten Vermijd snelwegen - Kan route niet berekenen - Helaas konden we geen route berekenen met de gekozen opties. Wijzig de instellingen en probeer het opnieuw - Configureer wegen om te vermijden - Route-instellingen ingeschakeld + Kan route niet opbouwen + Helaas konden we geen route opbouwen met de gekozen opties. Wijzig de instellingen en probeer het opnieuw + Omwegen configureren + Omweginstellingen ingeschakeld Tolweg - Onverharde weg - Veerboot + Aardeweg + Ferry Ja @@ -689,11 +687,11 @@ Capaciteit: %s U bent aangekomen! - Oké + Goed Sorteer… - Sorteer bladwijzers + Bladwijzers sorteren Standaard @@ -708,7 +706,7 @@ Een maand geleden Meer dan een maand geleden Meer dan een jaar geleden - Dicht bij mij + Naast mij Andere @@ -726,22 +724,22 @@ Parkeerplaatsen Benzinestations Geneeskunde - Zoek in de lijst + In de lijst zoeken Religieuze plaatsen - Kies een lijst + Lijst kiezen Metro-navigatie is nog niet beschikbaar in deze regio Metroroute niet gevonden Kies een begin- of eindpunt dichter bij het metrostation Hoogtes Als u gebruik wilt maken van hoogtelijnen, moet u de kaart van het gewenste gebied bijwerken of downloaden Hoogtelijnen zijn nog niet beschikbaar in deze regio - Stijging - Daling + Opstijging + Afdaling Min. hoogte Max. hoogte Moeilijkheid Afst.: - Tijd: + Op weg Zoom in om hoogtelijnen te bekijken Downloaden Download de wereldkaart @@ -793,13 +791,13 @@ Je bent verbonden met Android Auto - Ga verder op de telefoon + Doorgaan in de telefoon Naar het autoscherm Deze applicatie vereist toegang tot je locatie voor navigatiedoeleinden. - Geef toestemming + Toestemming geven Verbonden met auto @@ -808,20 +806,20 @@ Webbrowser is niet beschikbaar Volume - Exporteer alle bladwijzers en tracks + Alle bladwijzers en tracks exporteren Instellingen spraaksynthesesysteem Instellingen voor spraaksynthese zijn niet gevonden, weet je zeker dat je apparaat dit ondersteunt? Drive-though Wis de zoekopdracht - Zoom in + Inzoomen - Zoom uit + Uitzoomen Menulink - Bekijk menu + Menu bekijken Adres/blok diff --git a/android/app/src/main/res/values-pl/strings.xml b/android/app/src/main/res/values-pl/strings.xml index 5ca33d3955..4560c64fed 100644 --- a/android/app/src/main/res/values-pl/strings.xml +++ b/android/app/src/main/res/values-pl/strings.xml @@ -586,10 +586,8 @@ Dowiedz się więcej Wyjście - - Użyj funkcji wyszukiwania lub dotknij mapy, aby dodać punkt początkowy trasy - - Użyj funkcji wyszukiwania lub dotknij mapy, aby dodać punkt docelowy + Aby zaplanować trasę, dodaj punkt początkowy + Aby zaplanować trasę, dodaj punkt końcowy Usuń Dodaj postój @@ -624,22 +622,13 @@ Przywróć - %d obiekty - %d obiektów - %d obiekt - %d obiektu + %d miejsce - %d miejsca - %d miejsc - %d miejsce - %d miejsca + %d miejsc - %d trasy - %d tras - %d trasa - %d trasy + %d tras Prywatność diff --git a/android/app/src/main/res/values-pt-rBR/strings.xml b/android/app/src/main/res/values-pt-rBR/strings.xml index 74ca057ea8..8b76fd2f9c 100644 --- a/android/app/src/main/res/values-pt-rBR/strings.xml +++ b/android/app/src/main/res/values-pt-rBR/strings.xml @@ -537,10 +537,8 @@ Saber mais Saída - - Use a busca ou toque no mapa para adicionar um ponto de partida da rota - - Use a busca ou toque no mapa para adicionar um ponto de destino + Adicionar ponto de partida para planejar uma rota + Adicionar ponto final da viagem para planejar uma rota Remover Adicionar parada diff --git a/android/app/src/main/res/values-pt/strings.xml b/android/app/src/main/res/values-pt/strings.xml index e408652238..3444d82cea 100644 --- a/android/app/src/main/res/values-pt/strings.xml +++ b/android/app/src/main/res/values-pt/strings.xml @@ -561,10 +561,8 @@ Saber mais Saída - - Use a busca ou toque no mapa para adicionar um ponto de partida do percurso - - Use a busca ou toque no mapa para adicionar um ponto de destino + Adicionar ponto de partida para planear uma rota + Adicionar final da viagem para planear uma rota Remover Adicionar paragem diff --git a/android/app/src/main/res/values-ro/strings.xml b/android/app/src/main/res/values-ro/strings.xml index e686f3d635..9930809b2e 100644 --- a/android/app/src/main/res/values-ro/strings.xml +++ b/android/app/src/main/res/values-ro/strings.xml @@ -571,10 +571,8 @@ Mai multe Ieșire - - Utilizați funcția de căutare sau atingeți ușor pe hartă pentru a adăuga un punct de plecare - - Utilizați funcția de căutare sau atingeți ușor pe hartă pentru a adăuga un punct de destinație + Adaugă un punct de plecare pentru a planifica un traseu + Adaugă un punct de sosire pentru a planifica un traseu Elimină Adaugă oprire diff --git a/android/app/src/main/res/values-ru/strings.xml b/android/app/src/main/res/values-ru/strings.xml index f85bb51c9c..59ad5fece3 100644 --- a/android/app/src/main/res/values-ru/strings.xml +++ b/android/app/src/main/res/values-ru/strings.xml @@ -473,8 +473,6 @@ Эл. почта или имя пользователя Добавить телефон Этаж - - Этаж: %s Вместе с картой удалятся и внесённые вами правки на этой карте. Обновите карты Для построения маршрутов необходимо обновить все карты и построить маршрут заново. @@ -592,10 +590,8 @@ Узнать больше Выход - - Используйте поиск или коснитесь карты, чтобы добавить начальную точку маршрута - - Используйте поиск или коснитесь карты, чтобы добавить точку назначения + Добавьте стартовую точку, чтобы построить маршрут + Добавьте конечную точку, чтобы построить маршрут Удалить Заехать diff --git a/android/app/src/main/res/values-sk/strings.xml b/android/app/src/main/res/values-sk/strings.xml index 132600c0db..d53370fad0 100644 --- a/android/app/src/main/res/values-sk/strings.xml +++ b/android/app/src/main/res/values-sk/strings.xml @@ -584,10 +584,8 @@ Zistiť viac Ukončiť - - Pomocou vyhľadávania alebo ťuknutím na mapu môžete pridať východiskový bod trasy - - Pomocou vyhľadávania alebo ťuknutím na mapu môžete pridať cieľový bod + Pridaním počiatočného bodu začnite plánovať trasu + Pridaním cieľového bodu naplánujete trasu Odstrániť Pridať zastávku diff --git a/android/app/src/main/res/values-sv/strings.xml b/android/app/src/main/res/values-sv/strings.xml index a4cd33bdaf..6414c18963 100644 --- a/android/app/src/main/res/values-sv/strings.xml +++ b/android/app/src/main/res/values-sv/strings.xml @@ -552,10 +552,8 @@ Läs mer Avsluta - - Använd sökfunktionen eller tryck på kartan för att lägga till en startpunkt för rutten - - Använd sökfunktionen eller tryck på kartan för att lägga till en destinationspunkt + Lägg till startpunkt för att planera en rutt + Lägg till slutpunkt för att planera en rutt Ta bort Lägg till stopp diff --git a/android/app/src/main/res/values-sw/strings.xml b/android/app/src/main/res/values-sw/strings.xml index 129ebd0333..57c15731e6 100644 --- a/android/app/src/main/res/values-sw/strings.xml +++ b/android/app/src/main/res/values-sw/strings.xml @@ -124,10 +124,8 @@ Jua mengi zaidi Toka - - Tumia utafutaji au uguse kwenye ramani ili kuongeza mahali pa kuanzia - - Tumia utafutaji au uguse kwenye ramani ili kuongeza mahali unakoenda + Ongeza eneo la kuanzia ili kupanga njia ya kufuata + Ongeza eneo la kumalizia ili kupanga njia ya kufuata Ondoa Ongeza eneo la kusimama diff --git a/android/app/src/main/res/values-th/strings.xml b/android/app/src/main/res/values-th/strings.xml index 2bf1483519..961a71256c 100644 --- a/android/app/src/main/res/values-th/strings.xml +++ b/android/app/src/main/res/values-th/strings.xml @@ -556,10 +556,8 @@ ศึกษาเพิ่มเติม ออก - - ใช้การค้นหาหรือแตะบนแผนที่เพื่อเพิ่มจุดเริ่มต้นเส้นทาง - - ใช้การค้นหาหรือแตะบนแผนที่เพื่อเพิ่มจุดปลายทาง + เพิ่มจุดเริ่มต้นเพื่อวางแผนเส้นทาง + เพิ่มจุดสิ้นสุดเพื่อวางแผนเส้นทาง เอาออก เพิ่มจุดแวะพัก diff --git a/android/app/src/main/res/values-tr/strings.xml b/android/app/src/main/res/values-tr/strings.xml index 9c0448fcc3..e1aa081243 100644 --- a/android/app/src/main/res/values-tr/strings.xml +++ b/android/app/src/main/res/values-tr/strings.xml @@ -587,10 +587,8 @@ Daha fazla bilgi edinin Çık - - Bir rota başlangıç noktası eklemek için aramayı kullanın veya haritaya dokunun - - Bir hedef noktası eklemek için aramayı kullanın veya haritaya dokunun + Rotayı planlamak için bir başlangıç noktası ekleyin + Rotayı planlamak için bir varış noktası ekleyin Kaldır Ara nokta ekle diff --git a/android/app/src/main/res/values-uk/strings.xml b/android/app/src/main/res/values-uk/strings.xml index e14b93a7c1..95ef735640 100644 --- a/android/app/src/main/res/values-uk/strings.xml +++ b/android/app/src/main/res/values-uk/strings.xml @@ -589,10 +589,8 @@ Докладніше Вихід - - Скористайтеся пошуком або торкніться мапи, щоб додати початкову точку маршруту - - Скористайтеся пошуком або торкніться мапи, щоб додати пункт призначення + Вкажіть початкову точку для побудови маршруту + Вкажіть кінцеву точку для побудови маршруту Видалити Додати зупинку @@ -646,7 +644,7 @@ Список порожній Щоб додати нову мітку, натисніть на значок зірочки в картці об’єкта …ще - Експорт KMZ + Експорт КМЗ Експорт GPX Видалити список Публічний доступ diff --git a/android/app/src/main/res/values-vi/strings.xml b/android/app/src/main/res/values-vi/strings.xml index 2e1f7bc4d4..1ca386fdb5 100644 --- a/android/app/src/main/res/values-vi/strings.xml +++ b/android/app/src/main/res/values-vi/strings.xml @@ -554,10 +554,8 @@ Tìm hiểu thêm Lối ra - - Sử dụng tìm kiếm hoặc nhấn vào bản đồ để thêm điểm bắt đầu tuyến đường - - Sử dụng tìm kiếm hoặc nhấn vào bản đồ để thêm điểm đến + Bổ sung điểm bắt đầu để lập kế hoạch lộ trình + Bổ sung điểm kết thúc để lập kế hoạch lộ trình Xóa Thêm điểm dừng diff --git a/android/app/src/main/res/values-zh-rTW/strings.xml b/android/app/src/main/res/values-zh-rTW/strings.xml index 8200acbcbd..1e192b4763 100644 --- a/android/app/src/main/res/values-zh-rTW/strings.xml +++ b/android/app/src/main/res/values-zh-rTW/strings.xml @@ -432,8 +432,6 @@ 今天沒有營業 沒有營業 今天 - 將於 %s 後開業 - 將於 %s 後停業 已關閉 編輯營業時間 沒有 OpenStreetMap 帳號嗎? @@ -501,7 +499,7 @@ 關於 OpenStreetMap 的更多資訊 營運者 找不到合適的類別? - Organic Maps 只允許添加簡單的點類別,即無法添加城鎮、道路、湖泊、建築輪廓等類別。 請直接向OpenStreetMap.org新增此類類別。 請查看我們的指南,以了解詳細的步驟說明。 + 有機地圖僅允許添加簡單的點類別,這意味著沒有城鎮、道路、湖泊、建築物輪廓等。OpenStreetMap.org.請查看我們的指南,以了解詳細的逐步說明。 您尚未下載任何地圖 下載地圖來尋找位置和離線瀏覽。 @@ -521,7 +519,7 @@ 照片、評論、預訂 - 透過此連結進行的每次預訂收到的推薦獎金將用於開發 Organic Maps。 + 透過此連結進行的每次預訂收到的推薦獎金將用於開發有機地圖 Kayak 上的詳細資訊 編輯書籤 @@ -574,10 +572,8 @@ 瞭解更多資訊 退出 - - 使用搜尋或點擊地圖新增路線起點 - - 使用搜尋或點擊地圖新增目的地點 + 新增起點以計劃路線 + 新增終點以計劃路線 移除 新增停靠站 @@ -767,9 +763,9 @@ 我們的主要目標是構建您會喜歡的快速、注重隱私、易於使用的地圖。 - 您現在正在手機螢幕上使用 Organic Maps + 您現在正在手機螢幕上使用有機地圖 - 您現在正在汽車螢幕上使用 Organic Maps + 您現在正在汽車螢幕上使用有機地圖 您已連接到 Android Auto @@ -1935,7 +1931,7 @@ 野餐 度假酒店 旅遊景點 - 觀景點 + 視野 山屋 動物園 diff --git a/android/app/src/main/res/values-zh/strings.xml b/android/app/src/main/res/values-zh/strings.xml index ab6c5f9cf0..5c2d839f77 100644 --- a/android/app/src/main/res/values-zh/strings.xml +++ b/android/app/src/main/res/values-zh/strings.xml @@ -429,8 +429,6 @@ 今天没有营业 没有营业 今天 - 将于 %s 后开业 - 将于 %s 后停业 已关闭 编辑工作时间 在OpenStreetMap上没有账户吗? @@ -498,7 +496,7 @@ 关于 OpenStreetMap 的更多信息 运营者 找不到合适的类别? - Organic Maps 只允许添加简单的点类别,即无法添加城镇、道路、湖泊、建筑轮廓等类别。请直接向OpenStreetMap.org添加此类类别。请查看我们的指南,了解详细的步骤说明。 + 有机地图只允许添加简单的点类别,即不允许添加城镇、道路、湖泊、建筑轮廓等类别。请直接向OpenStreetMap.org添加此类类别。请查看我们的指南,了解详细的步骤说明。 您尚未下载任何地图 下载地图来查找位置和离线浏览 @@ -567,10 +565,8 @@ 了解更多 退出 - - 使用搜索或点击地图添加路线起点 - - 使用搜索或点击地图添加目的地点 + 添加起点以规划路线 + 添加终点以规划路线 移除 添加经停点 @@ -758,9 +754,9 @@ 我们的主要目标是构建您会喜欢的快速、注重隐私、易于使用的地图。 - 您现在正在手机屏幕上使用 Organic Maps + 您现在正在手机屏幕上使用有机地图 - 您现在正在汽车屏幕上使用 Organic Maps + 您现在正在汽车屏幕上使用有机地图 您已连接到 Android Auto @@ -2013,7 +2009,7 @@ 野餐地点 度假村 主题公园 - 观景点 + 观点 野外住宿小屋 动物园 diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 7cbb0988d6..12450924c4 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -495,8 +495,6 @@ Email or username Add Phone Floor - - Level: %s All of your map edits will be deleted with the map. Update Maps To create a route, you need to update all maps and then plan the route again. @@ -614,10 +612,8 @@ Learn more Exit - - Use search or tap on the map to add a route starting point - - Use search or tap on the map to add a destination point + Add a starting point to plan a route + Add a destination to plan a route Remove Add Stop @@ -764,7 +760,7 @@ Religious places Select list Subway navigation in this region is not available yet - No subway route found + Subway route is not found Please choose a start or end point closer to a subway station Contour Lines Activating contour lines requires downloading map data for this area diff --git a/data/00_NotoSansBengali-Regular.ttf b/data/00_NotoSansBengali-Regular.ttf deleted file mode 100644 index 810c3f4ec9..0000000000 Binary files a/data/00_NotoSansBengali-Regular.ttf and /dev/null differ diff --git a/data/00_NotoSansMalayalam-Regular.ttf b/data/00_NotoSansMalayalam-Regular.ttf deleted file mode 100644 index 2ac909ccad..0000000000 Binary files a/data/00_NotoSansMalayalam-Regular.ttf and /dev/null differ diff --git a/data/00_NotoSerifDevanagari-Regular.ttf b/data/00_NotoSerifDevanagari-Regular.ttf old mode 100644 new mode 100755 diff --git a/data/World.mwm b/data/World.mwm index ef0f4dcec8..6175abd131 100644 Binary files a/data/World.mwm and b/data/World.mwm differ diff --git a/data/WorldCoasts.mwm b/data/WorldCoasts.mwm index 2342445694..856dd7ed20 100644 Binary files a/data/WorldCoasts.mwm and b/data/WorldCoasts.mwm differ diff --git a/data/categories.txt b/data/categories.txt index 2d0f3d3289..74ac050c0e 100644 --- a/data/categories.txt +++ b/data/categories.txt @@ -2925,8 +2925,7 @@ fa:اثارهنری tourism-viewpoint|@category_tourism en:4Viewpoint|Vista -ru:4Смотровая площадка|Обзорная площадка -be:4Аглядальная пляцоўка +ru:4Обзорная площадка bg:пейзаж|гледка|забележителност ar:أماكن مشاهدة سياحية|سياحة|مناظر cs:3Vyhlídka|zajímavost @@ -2955,8 +2954,8 @@ th:3จุดชมวิว|การท่องเที่ยว tr:3Manzara uk:4Оглядний майданчик|4місце огляду vi:Điểm nhìn -zh-Hans:1观景点|旅游|景点 -zh-Hant:1觀景點|景觀|景點 +zh-Hans:1观点|旅游|景点 +zh-Hant:1視野|景觀|景點|觀光|3旅遊景點 el:Θέα|ξάγναντο|τουρισμός|αξιοθέατα sk:3Vyhliadka sw:Genge|utalii @@ -7434,7 +7433,7 @@ ru:Лифт tr:Asansör mr:उद्वाहक|एलिव्हेटर|लिफ्ट -@mountain +natural-peak en:Peak|mountain|mount|U+1F5FB|U+1F304 ru:Гора|вершина|пик bg:Гора|планина|връх|пик @@ -7472,10 +7471,6 @@ sw:Kilele|mlima fa:قله|کوه|کوهستان mr:शिखर -# Add at least one lang not to be skipped. -natural-peak|@mountain -en:Peak - natural-saddle|mountain_pass en:4Saddle|Pass be:4Седлавіна|5Перавал @@ -13563,7 +13558,7 @@ sk:Jaskyňa fa:غار mr:गुहा -natural-volcano|@mountain +natural-volcano en:4Volcano ru:4Вулкан bg:4Вулкан diff --git a/data/colors.txt b/data/colors.txt index 6137d4cc49..8113534214 100644 --- a/data/colors.txt +++ b/data/colors.txt @@ -623,8 +623,6 @@ 3005358626 3006477107 3006694172 -3007916315 -3008113177 3008779519 3009559935 3010346311 @@ -632,8 +630,6 @@ 3016153515 3018761472 3019640347 -3019862822 -3019870528 3019898879 3226034505 3226891606 diff --git a/data/countries.txt b/data/countries.txt index dcae7aafda..4f61bf0f08 100644 --- a/data/countries.txt +++ b/data/countries.txt @@ -1,16 +1,16 @@ { - "v": 240528, + "v": 240429, "id": "Countries", "g": [ { "id": "World", - "s": 47703757, - "sha1_base64": "lTDwB95M16ENkXV80az4chgeAU8=" + "s": 47582931, + "sha1_base64": "ygzDijL/H6Ou2Rnhyo3alZgUojs=" }, { "id": "WorldCoasts", - "s": 8582486, - "sha1_base64": "LWf8MwPMxf04FuZiMic2YQ2Cpdo=" + "s": 8581544, + "sha1_base64": "7J4CXgHGDCXGcZUOCkaakj61bHs=" }, { "id": "Abkhazia", @@ -22,8 +22,8 @@ "აფხაზეთის ავტონომიური რესპუბლიკა - Аҧсны Автономтә Республика", "საქართველო" ], - "s": 12816457, - "sha1_base64": "nw5rsmbDXnsL7qQAoTuvFUaKM8o=" + "s": 12130615, + "sha1_base64": "cXGZbU/HZwZ+/Adi651mVdCiIY4=" }, { "id": "Afghanistan", @@ -67,8 +67,8 @@ "ولایت غور", "افغانستان" ], - "s": 107481176, - "sha1_base64": "wJWtQczhZSUuQnmIe5qouc3OGoQ=" + "s": 106647648, + "sha1_base64": "rWzntgEkW18wNX4sB3j3MZuETFI=" }, { "id": "Albania", @@ -78,8 +78,8 @@ "affiliations": [ "Shqipëria" ], - "s": 48473232, - "sha1_base64": "GwMEPP8cEyN2DcQ0nyiDoMf9ALc=" + "s": 48355384, + "sha1_base64": "dWXW3Jw8keBfzMvqwSvD6uW+ndg=" }, { "id": "Algeria", @@ -109,8 +109,8 @@ "Tindouf ⵜⵉⵏⴷⵓⴼ تندوف", "Tébessa - تبسة" ], - "s": 57092480, - "sha1_base64": "1ItdrFymutq3ScVHvjSlSiAMTGc=" + "s": 57055328, + "sha1_base64": "ixCaXMxagKE2fRsomkQf1TXfM3E=" }, { "id": "Algeria_Coast", @@ -151,8 +151,8 @@ "Tizi Ouzou - ⵜⵉⵣⵉ ⵓⵣⵣⵓ - تيزي وزو", "Tlemcen - تلمسان" ], - "s": 170042574, - "sha1_base64": "UNYNch/UnS1vv0l9alv6g7vVx0A=" + "s": 169954262, + "sha1_base64": "ATnlD09V5xYxul8RnWR/TRD1u8s=" } ] }, @@ -164,8 +164,8 @@ "affiliations": [ "Andorra" ], - "s": 4081594, - "sha1_base64": "NOE9STlTD05o0DmzIngqa5/mcIE=" + "s": 4048378, + "sha1_base64": "PgON2WnRFPyh81vK0WkCs4PUIXQ=" }, { "id": "Angola", @@ -193,8 +193,8 @@ "Namibe", "Zaire" ], - "s": 65166185, - "sha1_base64": "fX/GIQNZLDiSKZRnwpaJFeIhlQA=" + "s": 64857969, + "sha1_base64": "OyZn8IOUxfIGLYzjape0JbPU0Lc=" }, { "id": "Anguilla", @@ -204,8 +204,8 @@ "affiliations": [ "Anguilla" ], - "s": 749168, - "sha1_base64": "Hgb8DhBrYuh9z9R0DcnsqzvgWnc=" + "s": 745464, + "sha1_base64": "LeLpVzYlyd8WJWEE8tZzVMz47Lg=" }, { "id": "Antigua and Barbuda", @@ -216,8 +216,8 @@ "Antigua and Barbuda", "Montserrat" ], - "s": 2563508, - "sha1_base64": "ERiqme/rzj6dGoMHpSh3rRKCRNA=" + "s": 2559092, + "sha1_base64": "q2ICGW7QRK6CiwbHRUeJSWQpqk4=" }, { "id": "Barbados", @@ -227,8 +227,8 @@ "affiliations": [ "Barbados" ], - "s": 6454554, - "sha1_base64": "IwThftjQZSc03rb9ZoHzAbJx31c=" + "s": 6450418, + "sha1_base64": "fr5x7sRGZ5OEe+e83tWW+KdZ+AA=" }, { "id": "British Virgin Islands", @@ -238,8 +238,8 @@ "affiliations": [ "British Virgin Islands" ], - "s": 1163188, - "sha1_base64": "u/nHVCQyZRgFAPLhabQXa4RU0Qo=" + "s": 1161364, + "sha1_base64": "nNr4UUy9ZHAe4H6E44yhNTYxEAg=" }, { "id": "Caribisch Nederland", @@ -257,8 +257,8 @@ "Aruba", "Curacao" ], - "s": 8284021, - "sha1_base64": "YWaF5BiZMm736t/Naz5IYPajCLk=" + "s": 8259197, + "sha1_base64": "QSQCj5uIA80E3/yCqOWy1TiEBRw=" }, { "id": "Dominica", @@ -278,8 +278,8 @@ "Saint Joseph Parish", "Saint Peter Parish" ], - "s": 3723647, - "sha1_base64": "ox77gsWuNKMAuUsNSyR0OK5PMpw=" + "s": 3723151, + "sha1_base64": "Y0hXTDMhIleN+YAUgVHaO+2E/mc=" }, { "id": "Grenada", @@ -289,8 +289,8 @@ "affiliations": [ "Grenada" ], - "s": 2676584, - "sha1_base64": "Ad3ixPOPqTtbW97pr6yEgdCUF+E=" + "s": 2665624, + "sha1_base64": "qZ4BpmYh9WAaZK64yCU3frKLZzY=" }, { "id": "Guadeloupe", @@ -302,8 +302,8 @@ "Guadeloupe", "Montserrat" ], - "s": 16806416, - "sha1_base64": "mASf/bajDbePV9cdbddec+mgrm0=" + "s": 16786968, + "sha1_base64": "TibNdoJJIeRDwOSvRLL+z/yk0Jk=" }, { "id": "Martinique", @@ -315,8 +315,8 @@ "Martinique", "Saint Lucia" ], - "s": 13380030, - "sha1_base64": "qmTFwE4RlansI+TTVb/s2t1E5z4=" + "s": 13466734, + "sha1_base64": "uPEFodI91pXQW1mB0zEm0eUAScU=" }, { "id": "Montserrat", @@ -326,8 +326,8 @@ "affiliations": [ "Montserrat" ], - "s": 579634, - "sha1_base64": "s05J4LtVdTUKFcDUfXHjoHXPZbY=" + "s": 579530, + "sha1_base64": "HjUszhnvOLiR3uPA3RVdoz+ba3A=" }, { "id": "Saint Barthelemy", @@ -337,8 +337,8 @@ "affiliations": [ "France" ], - "s": 857964, - "sha1_base64": "90BTIHTsuWHaDEEuCQSInJ4KhGQ=" + "s": 707265, + "sha1_base64": "W4Z8BCszpNV+YSOpCTBMoGUOQUs=" }, { "id": "Saint Kitts and Nevis", @@ -348,8 +348,8 @@ "affiliations": [ "Saint Kitts and Nevis" ], - "s": 1585607, - "sha1_base64": "XaKFWrbPQ57x7ZKVmb7UOaXa0Hw=" + "s": 1583055, + "sha1_base64": "1DuAgH7ZJTZjqBT9INGoIPlCPDg=" }, { "id": "Saint Lucia", @@ -360,8 +360,8 @@ "Saint Lucia", "Saint Vincent and the Grenadines" ], - "s": 4026008, - "sha1_base64": "a2/B1xaqMyEZB+NvU/kZl4fhgPA=" + "s": 4002160, + "sha1_base64": "5q01GK1mgP2OG/UuYzeuloaxDW4=" }, { "id": "Saint Martin", @@ -378,8 +378,8 @@ "Saint Martin (Dutch part)", "Sint Maarten (Netherlands)" ], - "s": 2273679, - "sha1_base64": "Xy8ClTr4JO9d18ZMPxsxhwXwmxU=" + "s": 2270287, + "sha1_base64": "8EWYL/haGyr6NiyEolCqx1pzdtk=" }, { "id": "Saint Vincent and the Grenadines", @@ -389,8 +389,8 @@ "affiliations": [ "Saint Vincent and the Grenadines" ], - "s": 2742777, - "sha1_base64": "1o7pGNp/bDEDS3TuFy+KsNlr/nM=" + "s": 2736121, + "sha1_base64": "Hqnv7yMNhmsrZyDwT3pwe0XJGxs=" }, { "id": "Trinidad and Tobago", @@ -400,8 +400,8 @@ "affiliations": [ "Trinidad and Tobago" ], - "s": 17569312, - "sha1_base64": "OdFSoLMCDfMHYMaYMmdJYW0l3WY=" + "s": 17449200, + "sha1_base64": "wK3DsgwfCAOjgrsLzfU8XXJMYQg=" }, { "id": "United States Virgin Islands", @@ -416,8 +416,8 @@ "VI", "United States of America" ], - "s": 3181917, - "sha1_base64": "scdU08REBIREORIVhs+VfRjnedc=" + "s": 3178965, + "sha1_base64": "DD7DoD0YNSc+F7MuEmjcLAY22Ek=" }, { "id": "Argentina", @@ -427,8 +427,8 @@ "affiliations": [ "Acuerdo de Campos de Hielo" ], - "s": 7511240, - "sha1_base64": "zPIagyRyem8UbbXmhvFsYFu9wX8=" + "s": 7467600, + "sha1_base64": "30M24fsZAyoPpzkzSgfYJhBr/qQ=" }, { "id": "Argentina_Buenos Aires_Buenos Aires", @@ -440,8 +440,8 @@ "Ciudad Autónoma de Buenos Aires", "Buenos Aires" ], - "s": 62184128, - "sha1_base64": "tf9jojOyH2xnimQYJKw1QyfrQlk=" + "s": 61910432, + "sha1_base64": "CWpvIUvuw+FjvurtNbAWVxr14Ns=" }, { "id": "Argentina_Buenos Aires_North", @@ -452,8 +452,8 @@ "Argentina", "Buenos Aires" ], - "s": 35130422, - "sha1_base64": "YN7IYnhkaE+CtmjvN6YuXpXn3+o=" + "s": 34881190, + "sha1_base64": "Buc2uS6F66QxAlrrxMe7H+xotBs=" }, { "id": "Argentina_Buenos Aires_South", @@ -464,8 +464,8 @@ "Argentina", "Buenos Aires" ], - "s": 51870601, - "sha1_base64": "VpKE3SOzW4JIjT3nF/sdRBgmnjk=" + "s": 51578401, + "sha1_base64": "9w7rxB6UnDx1YVrHwfzSEDJek2U=" }, { "id": "Argentina_Patagonia", @@ -480,8 +480,8 @@ "Santa Cruz", "Tierra del Fuego" ], - "s": 145015414, - "sha1_base64": "j2zA8NQRFSGvznv+yo8CO0M3bPQ=" + "s": 144152710, + "sha1_base64": "wwVNJ/fHIU6d4l5d/u4FL81IEnw=" }, { "id": "Argentina_Cuyo", @@ -495,8 +495,8 @@ "San Juan", "San Luis" ], - "s": 84373601, - "sha1_base64": "oUR8gFrs+QB69FYTmyrn8FF8zaY=" + "s": 84095881, + "sha1_base64": "7sjIWNc97CHFknES96vzES62pwE=" }, { "id": "Argentina_Mesopotamia", @@ -517,8 +517,8 @@ "Itapúa", "Misiones" ], - "s": 74318819, - "sha1_base64": "gN+1se+LVJ3ku/TjyufaEzvxyJE=" + "s": 74172035, + "sha1_base64": "lKCq4dUXIkxH8wIujvRJcNP9+OA=" }, { "id": "Argentina_Northwest", @@ -535,8 +535,8 @@ "Santiago del Estero", "Tucumán" ], - "s": 114626605, - "sha1_base64": "JbyMJVzoO1x/W20wPY1b3Lxj0EM=" + "s": 114481157, + "sha1_base64": "H/G+3Z/OLog9hgbKDTQDRcBCDp4=" }, { "id": "Argentina_Pampas", @@ -548,8 +548,8 @@ "Córdoba", "La Pampa" ], - "s": 70177115, - "sha1_base64": "8cCei5KDdBEJAl7tos2y13NLVSI=" + "s": 69738395, + "sha1_base64": "8IjzZQHFvs+pDPC/xNPGoAOCzmU=" }, { "id": "Argentina_Santa Fe", @@ -560,8 +560,8 @@ "Argentina", "Santa Fe" ], - "s": 45830602, - "sha1_base64": "anbnf1Wo0EmMvPLoW2S1mCImOUw=" + "s": 45663154, + "sha1_base64": "H4DTcbM0GsR39cC+ugr3ZjgvHH8=" } ] }, @@ -586,8 +586,8 @@ "Արագածոտնի մարզ", "Գեղարքունիք" ], - "s": 54896206, - "sha1_base64": "3Fi4OZUrFMCwEOQ4xexBVE90BGM=" + "s": 54721702, + "sha1_base64": "SKzvvvsb5l3h1WCtDUKpsk/lk1E=" }, { "id": "Austria", @@ -601,8 +601,8 @@ "Burgenland", "Österreich" ], - "s": 38718005, - "sha1_base64": "1r2K/KmYa2Na+LfUzaBhRI6bPxY=" + "s": 38505261, + "sha1_base64": "tR/xG+HSMm42pQyi0wXOuZwGSg8=" }, { "id": "Austria_Carinthia", @@ -613,8 +613,8 @@ "Kärnten", "Österreich" ], - "s": 65902068, - "sha1_base64": "js5cznHNykjkvvB0+Aoe0nFjYjA=" + "s": 65783924, + "sha1_base64": "1EPSnF7TR4znrCIrEn4pElOxHMw=" }, { "id": "Austria_Lower Austria_Wien", @@ -626,8 +626,8 @@ "Niederösterreich", "Wien" ], - "s": 125333946, - "sha1_base64": "j0f9vmF49qCKEunonUekFqLcVwo=" + "s": 125004650, + "sha1_base64": "4EDE3WAFtu4s0PLRaDGs1xfQyPY=" }, { "id": "Austria_Styria_Graz", @@ -638,8 +638,8 @@ "Österreich", "Steiermark" ], - "s": 86697398, - "sha1_base64": "F/FL6u+Yy9vNdwMC5WxnnAYY/Jw=" + "s": 86581612, + "sha1_base64": "ans6WLfGbXIErCWuq1Trk1OxWqM=" }, { "id": "Austria_Styria_Leoben", @@ -650,8 +650,8 @@ "Österreich", "Steiermark" ], - "s": 55107018, - "sha1_base64": "O7Zdk3QWFXQOYBHJeSh/2lAxQ8c=" + "s": 55009442, + "sha1_base64": "BsR2cY5Vz5VAnrV4d0PwqO4nJgs=" }, { "id": "Austria_Upper Austria_Linz", @@ -662,8 +662,8 @@ "Österreich", "Oberösterreich" ], - "s": 55177722, - "sha1_base64": "qjINkWx+im8w59cB/BUJS8qb43c=" + "s": 55113034, + "sha1_base64": "SNLRJ0V4tjGTMfsnt/fxioEAU8U=" }, { "id": "Austria_Upper Austria_Wels", @@ -674,8 +674,8 @@ "Österreich", "Oberösterreich" ], - "s": 65457324, - "sha1_base64": "TITNysR5omhWms1lVII0KZg503k=" + "s": 65328620, + "sha1_base64": "dE4CX7/FMYK8I0XzgKZOLlAy5oo=" }, { "id": "Austria_Lower Austria_West", @@ -686,8 +686,8 @@ "Österreich", "Niederösterreich" ], - "s": 119283588, - "sha1_base64": "DYwr4hOGilGCRYTQdYXamq8SaGo=" + "s": 118954908, + "sha1_base64": "cfKKbxkU882ORXHCyqbmCuyPo+Y=" }, { "id": "Austria_Tyrol", @@ -698,8 +698,8 @@ "Österreich", "Tirol" ], - "s": 83167910, - "sha1_base64": "rsIppuk3DtooMt/PtOP/pfVurVo=" + "s": 82960038, + "sha1_base64": "Mw/CXVDEc6KCNnKiIuEw6Snk5Nw=" }, { "id": "Austria_Salzburg", @@ -710,8 +710,8 @@ "Österreich", "Salzburg" ], - "s": 61033363, - "sha1_base64": "L1YsgnZuqek0k2VY+B4ZNmsT8AM=" + "s": 60913619, + "sha1_base64": "/9IB2MfvRC9qF0TnN0LR6GVC7MQ=" }, { "id": "Austria_Vorarlberg", @@ -722,8 +722,8 @@ "Österreich", "Vorarlberg" ], - "s": 37782415, - "sha1_base64": "vm2gdr6df58AopWJfKpk9fCte5I=" + "s": 37641367, + "sha1_base64": "QstMeE76/zsuT/M8q1gnV8Ct01E=" } ] }, @@ -737,8 +737,8 @@ "Coral Sea Islands Territory", "Willis Island" ], - "s": 184240, - "sha1_base64": "U5AZu0SEMD9q7VlphkcZAMBsdVE=" + "s": 184176, + "sha1_base64": "4YP4Ay/cOmvZnb8ZV91FGbiwda0=" }, { "id": "Australia_Melbourne", @@ -749,8 +749,8 @@ "Australia", "Victoria" ], - "s": 93144278, - "sha1_base64": "NXCBD3U9CX3tjXNlXcarBpzgTcQ=" + "s": 92266782, + "sha1_base64": "/lhYq9dN8QU/3HDT60ViEQNzLK4=" }, { "id": "Australia_New South Wales", @@ -764,8 +764,8 @@ "New South Wales", "Norfolk Island" ], - "s": 85940380, - "sha1_base64": "C4jSc+ALd1QBaNC8YZptWy65Iv8=" + "s": 85639620, + "sha1_base64": "ZJuFxmdZofrQFKEofU2zwRd5qfo=" }, { "id": "Australia_Northern Territory", @@ -776,8 +776,8 @@ "Australia", "Northern Territory" ], - "s": 16242799, - "sha1_base64": "pbqmA6T0jYe9beZW4cMOcC9fF8M=" + "s": 16203263, + "sha1_base64": "m2YpoAJJuP49pWbUgHMtVEyqfAY=" }, { "id": "Australia_Queensland", @@ -789,8 +789,8 @@ "Coral Sea Islands Territory", "Queensland" ], - "s": 51294510, - "sha1_base64": "ibbpYBiQ0oyxZWNFds/xatWVO9s=" + "s": 51145718, + "sha1_base64": "RAz9QiW8TsQcBNIqGn4HQWJld4g=" }, { "id": "Australia_South Australia", @@ -801,8 +801,8 @@ "Australia", "South Australia" ], - "s": 62868141, - "sha1_base64": "LKsEcpDHeRCunlrn1bdabI7Ohvk=" + "s": 62712261, + "sha1_base64": "pKYSkgmPPA9TE+zTChyuxqjuWA0=" }, { "id": "Australia_Tasmania", @@ -813,8 +813,8 @@ "Australia", "Tasmania" ], - "s": 52220494, - "sha1_base64": "uEnNwqFTh3IbkRIBU2w6P5tkkFI=" + "s": 51955526, + "sha1_base64": "hGWYIW7ozHsoT48lUHSgvIQTfMA=" }, { "id": "Australia_Victoria", @@ -825,8 +825,8 @@ "Australia", "Victoria" ], - "s": 87161183, - "sha1_base64": "PrEgNNwG3wZbZeXDavVi2oClJ6k=" + "s": 86820831, + "sha1_base64": "PlFKiM8ziem25o5crohfzCE8Fg8=" }, { "id": "Australia_Western Australia", @@ -842,8 +842,8 @@ "Cocos (Keeling) Islands", "Western Australia" ], - "s": 96379394, - "sha1_base64": "OuDmbXubHCNRD1TXFb/CLsPciaA=" + "s": 95912130, + "sha1_base64": "vz9EKadONHlTD+BCxd8srBbFJZQ=" }, { "id": "Australia_Brisbane", @@ -856,8 +856,8 @@ "France, Nouvelle-Calédonie, Récifs de Bellone (eaux territoriales)", "Queensland" ], - "s": 102682071, - "sha1_base64": "IANu4kGR0A5psyI9L6JqoHooL5Q=" + "s": 102048863, + "sha1_base64": "xSbDHzep3nELGXcHrEnnpzUlDVg=" }, { "id": "Australia_Sydney", @@ -870,8 +870,8 @@ "Jervis Bay Territory", "New South Wales" ], - "s": 144580481, - "sha1_base64": "wNKToeGA5Y6qXxP9tEmaQS9qct0=" + "s": 145101505, + "sha1_base64": "mQzYUVqK76lZZEpTOmt0nFWAiV4=" } ] }, @@ -894,8 +894,8 @@ "Մարտունու շրջան (Martuni Province)", "Ստեփանակերտ (Stepanakert - Khankendi)" ], - "s": 9199734, - "sha1_base64": "iNQnWb1BTPAoTZZ8BgLnUaX4oC0=" + "s": 9171838, + "sha1_base64": "oiKfMTJfxgviSN1LeWpgiwZAQIc=" }, { "id": "Azerbaijan", @@ -975,8 +975,8 @@ "Şəmkir rayonu", "Şərur rayonu" ], - "s": 43100197, - "sha1_base64": "Qpry1UDVd/qijh5DSf2RaHjT+4g=" + "s": 42830117, + "sha1_base64": "QLLQ6y5YONCojP0rOBPjgNRZPvA=" } ] }, @@ -993,8 +993,8 @@ "المحافظة الجنوبية", "المحافظة الشمالية" ], - "s": 8175592, - "sha1_base64": "5aTedR/bRIOVdGV4fqa2CYVrSfg=" + "s": 8123872, + "sha1_base64": "1OjGV97L0sfGUnHZdfiocnjC7/w=" }, { "id": "Bangladesh", @@ -1012,8 +1012,8 @@ "বাংলাদেশ", "চট্টগ্রাম বিভাগ" ], - "s": 319600541, - "sha1_base64": "f1vTapAgyJnmoQ0UcIG07E+HmKo=" + "s": 317451860, + "sha1_base64": "oivn49pavW9ycC7GYoQ7Woc4XUw=" }, { "id": "Belarus", @@ -1030,8 +1030,8 @@ "Беларусь", "Витебская область" ], - "s": 69129411, - "sha1_base64": "Jt9RkTDO/nWaHkdlw1YFDjcnb/A=" + "s": 68814564, + "sha1_base64": "kjYoh2n6gC5LS6U+IYITr7m2KoY=" }, { "id": "Belarus_Hrodna Region", @@ -1042,8 +1042,8 @@ "Гродненская область", "Беларусь" ], - "s": 53072202, - "sha1_base64": "EIDhmSAKXFq9dGiQvQSlzefhOto=" + "s": 52947586, + "sha1_base64": "i/zdy9y/XWIvS4LB9LZK//0n1Vo=" }, { "id": "Belarus_Brest Region", @@ -1054,8 +1054,8 @@ "Беларусь", "Брестская область" ], - "s": 58740010, - "sha1_base64": "t2Y3IXCcbJqLysacSliS53d3YXc=" + "s": 58585658, + "sha1_base64": "SwvflxPVl8tGi1/mVGRc11ChxDg=" }, { "id": "Belarus_Homiel Region", @@ -1066,8 +1066,8 @@ "Гомельская область", "Беларусь" ], - "s": 50270841, - "sha1_base64": "c++X1n8vfyIIyz3UMBAOSCaHiOI=" + "s": 50538641, + "sha1_base64": "pc49GrIdq5sfHllAMb8vLCU6Lfs=" }, { "id": "Belarus_Maglieu Region", @@ -1078,8 +1078,8 @@ "Могилёвская область", "Беларусь" ], - "s": 39221183, - "sha1_base64": "nS26o04o51+4OKAyChXRpfXKygo=" + "s": 39114823, + "sha1_base64": "ByT8PzKopUEDRtHL2NLnfe1rtdo=" }, { "id": "Belarus_Minsk Region", @@ -1094,8 +1094,8 @@ "Колодищи", "Национальный аэропорт \"Минск\"" ], - "s": 91925803, - "sha1_base64": "m+X6mhHuIZ4pWCZfaprriVgEeWA=" + "s": 91663699, + "sha1_base64": "sGl9tNR4+xPkYsX90PruBtJyDrs=" } ] }, @@ -1112,8 +1112,8 @@ "België - Belgique - Belgien", "Vlaanderen" ], - "s": 67681178, - "sha1_base64": "FLNbYQIsPEZQcdvAjK2ewrhug9Y=" + "s": 67355746, + "sha1_base64": "msxGZrJDHVxaBle4kSVyXL693To=" }, { "id": "Belgium_Antwerp", @@ -1125,8 +1125,8 @@ "Nederland - Belgique / België / Belgien", "Vlaanderen" ], - "s": 69661897, - "sha1_base64": "0Eqk1mEFFf0znZRXZw9jSEvowM0=" + "s": 69598481, + "sha1_base64": "rwywImzxlUDb5qEdYCdCKC22qto=" }, { "id": "Belgium_East Flanders", @@ -1137,8 +1137,8 @@ "België - Belgique - Belgien", "Vlaanderen" ], - "s": 71839115, - "sha1_base64": "nnV8TzzR/yJui4ePDrMGIiHYBEQ=" + "s": 71673667, + "sha1_base64": "QhOKDpHEk6MVqTn3J5gKxvuU/Hk=" }, { "id": "Belgium_Hainaut", @@ -1149,8 +1149,8 @@ "België - Belgique - Belgien", "Wallonie" ], - "s": 57698194, - "sha1_base64": "cIqjE9Ftah5nwjlh5VycAJDxNT8=" + "s": 57297938, + "sha1_base64": "DS5xSwXZt49PHcSsRg2uA+lkeDg=" }, { "id": "Belgium_Walloon Brabant", @@ -1161,8 +1161,8 @@ "België - Belgique - Belgien", "Wallonie" ], - "s": 18778764, - "sha1_base64": "PgdxEh+rLxqfQnjCpABf/0qgxqs=" + "s": 18419028, + "sha1_base64": "tX1zjoG/s1QD7fXz8r4W/sBne+M=" }, { "id": "Belgium_Namur", @@ -1173,8 +1173,8 @@ "België - Belgique - Belgien", "Wallonie" ], - "s": 29019238, - "sha1_base64": "C4PMMfUXaaeRtlCpoASGeA0UDHQ=" + "s": 28932062, + "sha1_base64": "gKljq5PJfPUKwqUf49Os3BcCdII=" }, { "id": "Belgium_Limburg", @@ -1185,8 +1185,8 @@ "België - Belgique - Belgien", "Vlaanderen" ], - "s": 49147240, - "sha1_base64": "Ca3gHWmwZTXzs9FdZcQyXLA/+8U=" + "s": 49100456, + "sha1_base64": "Af2Gd7gZSTTtqbiMTmioaf1racs=" }, { "id": "Belgium_Luxembourg", @@ -1197,8 +1197,8 @@ "België - Belgique - Belgien", "Wallonie" ], - "s": 33894248, - "sha1_base64": "mdTr+DK5VsXV/6RNgHH2GuKk3ck=" + "s": 33820352, + "sha1_base64": "AP2IQYGcDQyohsXlRdXVHKpL+xk=" }, { "id": "Belgium_Flemish Brabant", @@ -1210,8 +1210,8 @@ "Région de Bruxelles-Capitale - Brussels Hoofdstedelijk Gewest", "Vlaanderen" ], - "s": 77676530, - "sha1_base64": "0WqyyqIKtSJWvYGgQdezcwRRSYQ=" + "s": 77415194, + "sha1_base64": "ZjO7DEvry0dftUKaA6kqjGP1GcM=" }, { "id": "Belgium_Liege", @@ -1222,8 +1222,8 @@ "België - Belgique - Belgien", "Wallonie" ], - "s": 58826620, - "sha1_base64": "64YfRIv2/psOW9/G5wBDxp3I4Mc=" + "s": 58630908, + "sha1_base64": "JGSz6qVftJ6YegGRmh8Bt+D8cSc=" } ] }, @@ -1243,8 +1243,8 @@ "Stann Creek", "Toledo" ], - "s": 24636417, - "sha1_base64": "hfAggatMcDJfmkEjpfsKUBfygAs=" + "s": 24606753, + "sha1_base64": "ZcaXJV1/EAouUnUodNAtlu6I8Vo=" }, { "id": "Benin", @@ -1266,8 +1266,8 @@ "Plateau", "Zou" ], - "s": 47361708, - "sha1_base64": "bMMoH627EBatyxRF4SpMxxpyIuM=" + "s": 47300236, + "sha1_base64": "sqUU1bKoZJRlnUL4fLiW5/F6oQc=" }, { "id": "Bermuda", @@ -1277,8 +1277,8 @@ "affiliations": [ "Bermuda" ], - "s": 2053926, - "sha1_base64": "wsc8V1YhuBUYBZRgSkS8+2YNy7E=" + "s": 2049278, + "sha1_base64": "9QGUz60BBzcs5S0UCWV6ZKlqWyI=" }, { "id": "Bhutan", @@ -1308,8 +1308,8 @@ "དབང་འདུས་ཕོ་བྲང་རྫོང་ཁག་", "བསམ་གྲུབ་ལྗོངས་མཁར་རྫོང་ཁག་" ], - "s": 30686569, - "sha1_base64": "sKns2hb6GnSQgc2FELZn36YT26o=" + "s": 30458649, + "sha1_base64": "f4ZOs0xVcAZ+irDGLxZJcCtmn9g=" }, { "id": "Bolivia", @@ -1326,8 +1326,8 @@ "Pando", "Santa Cruz" ], - "s": 65930541, - "sha1_base64": "jWNzmDCxVPdeKq8DjSSMKTpWt+4=" + "s": 65725861, + "sha1_base64": "DmBHohISWsYEVmeRiVWQoOrPq8c=" }, { "id": "Bolivia_South", @@ -1342,8 +1342,8 @@ "Potosí", "Tarija" ], - "s": 77360180, - "sha1_base64": "j6RY32gNM9RgbW/lHBmIq5bG2Ms=" + "s": 76877380, + "sha1_base64": "X7Rg/IYnFJMyN1EGRV9Jz1brork=" } ] }, @@ -1359,8 +1359,8 @@ "Bosna i Hercegovina", "Federacija Bosne i Hercegovine" ], - "s": 70356372, - "sha1_base64": "igNTgR8nCc4A+3T+4/Xfkk8HmVs=" + "s": 69487188, + "sha1_base64": "nKK3PJ/tnzcFYtFF0n/gWh25Z1s=" }, { "id": "Bosnia and Herzegovina_Brcko district of Bosnia and Herzegowina", @@ -1372,8 +1372,8 @@ "Bosna i Hercegovina", "Republika Srpska" ], - "s": 2468514, - "sha1_base64": "kVyT8jw6oOn7Pg1UvqM3g3+LP5g=" + "s": 2468362, + "sha1_base64": "amGTmV4asRSDQWftNwGJVjY7pAc=" }, { "id": "Bosnia and Herzegovina_Republic of Srpska", @@ -1384,8 +1384,8 @@ "Bosna i Hercegovina", "Republika Srpska" ], - "s": 84103649, - "sha1_base64": "Vs+xE1MEV94AgeVN4shygHzV4X8=" + "s": 83138545, + "sha1_base64": "Kfpx2l0qN+iewI+Pg9hfqzM6jPI=" } ] }, @@ -1406,8 +1406,8 @@ "South-East District", "Southern District" ], - "s": 78093350, - "sha1_base64": "xBoJec4Sj4xddpxP3Mvvk+PZ+30=" + "s": 77820269, + "sha1_base64": "W7MesBgf3dHQH4uTRO1UmljIlks=" }, { "id": "Brazil", @@ -1421,8 +1421,8 @@ "Bahia", "Brasil" ], - "s": 95570390, - "sha1_base64": "N7SZA+//p+gNYjBNn7+iy8jsgaI=" + "s": 95368086, + "sha1_base64": "G0eJ4g+FyoOoSfti6TXEzgFw1bk=" }, { "id": "Brazil_Goias_North", @@ -1433,8 +1433,8 @@ "Brasil", "Goiás" ], - "s": 26610158, - "sha1_base64": "HhxhegSS2W9/gYZv0hT+hClGu9I=" + "s": 26521246, + "sha1_base64": "gmPkHj4MsWiWpvJ0QJrPiAPzcDk=" }, { "id": "Brazil_Goias_Brasilia", @@ -1446,8 +1446,8 @@ "Distrito Federal", "Goiás" ], - "s": 51901632, - "sha1_base64": "Ab5N5E7c7R+TLOkOqz53XS/vKsY=" + "s": 51803352, + "sha1_base64": "SAbyAKu38mZxaPkl69P/3WKXplY=" }, { "id": "Brazil_Mato Grosso Do Sul", @@ -1458,8 +1458,8 @@ "Brasil", "Mato Grosso do Sul" ], - "s": 27303596, - "sha1_base64": "aMW8++pUzah8oYeNGcp8AroYMmU=" + "s": 27243548, + "sha1_base64": "5Ps0cVR7rtepVUW1qBA8euUxVRw=" }, { "id": "Brazil_Mato Grosso", @@ -1470,8 +1470,8 @@ "Brasil", "Mato Grosso" ], - "s": 38024443, - "sha1_base64": "oQOEoVCeMYd0PFXhlAazwzxRQzQ=" + "s": 37875307, + "sha1_base64": "y5spEwoBxWDoMpJgeFEurkT2GaM=" }, { "id": "Brazil_North Region_East", @@ -1484,8 +1484,8 @@ "Pará", "Tocantins" ], - "s": 66149800, - "sha1_base64": "z4lXqJZGX5ZUkf7s5AyPM3Z4cvM=" + "s": 65943808, + "sha1_base64": "nT7riTfSiAZHyl9o2phvNFvgKkQ=" }, { "id": "Brazil_North Region_West", @@ -1499,8 +1499,8 @@ "Rondônia", "Roraima" ], - "s": 77190839, - "sha1_base64": "eHD/jVoaQjbnxtpKeOFY8QPVO54=" + "s": 77100135, + "sha1_base64": "3lIEEpT+j+gOIEa+7iAOXnCpdUA=" }, { "id": "Brazil_Northeast Region_East", @@ -1513,8 +1513,8 @@ "Pernambuco", "Sergipe" ], - "s": 81311235, - "sha1_base64": "fwF87pwsnOiVfffH8frha+bJe9o=" + "s": 80928731, + "sha1_base64": "faUf4Qg648TqhOxEWEfkFUnqMVc=" }, { "id": "Brazil_Northeast Region_West", @@ -1528,8 +1528,8 @@ "Pernambuco", "Piauí" ], - "s": 179509323, - "sha1_base64": "qYZllMyONSLt31LIqe3V1U++djk=" + "s": 178093907, + "sha1_base64": "X3upXB5CH0En2QrrJ8eL01p7uWc=" }, { "id": "Brazil_Paraiba", @@ -1540,8 +1540,8 @@ "Brasil", "Paraíba" ], - "s": 44320928, - "sha1_base64": "GHAz68RYKo8NfCN9tIoX7YSzqAM=" + "s": 44227936, + "sha1_base64": "TkMm5wWZTyYl0amkREwJ8viLmM8=" }, { "id": "Brazil_Parana_East", @@ -1552,8 +1552,8 @@ "Brasil", "Paraná" ], - "s": 71876140, - "sha1_base64": "xTX0Ayfot6O+TUKpPydUzW3cJWc=" + "s": 71734380, + "sha1_base64": "q2XP/0HjQP5puRr7Rl9QrVFxq+w=" }, { "id": "Brazil_Parana_West", @@ -1564,8 +1564,8 @@ "Brasil", "Paraná" ], - "s": 86715254, - "sha1_base64": "n557xths+3XcRMiMPDz/V1+6EuU=" + "s": 85921502, + "sha1_base64": "Uw8xGd3MO+7HMyIrJGzkqQoKMLA=" }, { "id": "Brazil_Rio Grande do Norte", @@ -1577,8 +1577,8 @@ "Pernambuco", "Rio Grande do Norte" ], - "s": 25718564, - "sha1_base64": "CeO/wggNwc8rOOW4S8I0N24pt3Y=" + "s": 25682340, + "sha1_base64": "hqFxukLQ7c5XpZiKOTqJsJB50Is=" }, { "id": "Brazil_Santa Catarina", @@ -1589,8 +1589,8 @@ "Brasil", "Santa Catarina" ], - "s": 125147743, - "sha1_base64": "agetlajR64Mz0ToSvFF6TFD7d04=" + "s": 124864039, + "sha1_base64": "6+MPVl5wFRggc1E8qcSqXcbZU8k=" }, { "id": "Brazil_South Region_East", @@ -1601,8 +1601,8 @@ "Brasil", "Rio Grande do Sul" ], - "s": 88875372, - "sha1_base64": "ceienvYiugFJtVoB+Ofa+uDG+AE=" + "s": 85575700, + "sha1_base64": "QuHFSieswnakyaIqw9ZhL1h8NW8=" }, { "id": "Brazil_South Region_West", @@ -1613,8 +1613,8 @@ "Brasil", "Rio Grande do Sul" ], - "s": 69826166, - "sha1_base64": "IOzLyEJE6SSCitfo2hw0hviffsA=" + "s": 69541510, + "sha1_base64": "15B3yEsQwvMU/02XPggDZGWmHJw=" }, { "id": "Brazil_Southeast Region_Espirito Santo", @@ -1625,8 +1625,8 @@ "Brasil", "Espírito Santo" ], - "s": 208446118, - "sha1_base64": "C43wRJU2bxa1jINwKJf/LM7CBxk=" + "s": 208427942, + "sha1_base64": "Bv4MnIeUI7JLK1JEGhMFCjd/Ai0=" }, { "id": "Brazil_Southeast Region_Minas Gerais_Contagem", @@ -1637,8 +1637,8 @@ "Brasil", "Minas Gerais" ], - "s": 147130704, - "sha1_base64": "Q9GktgSfVcNzC+0iSsSurRpAAuM=" + "s": 146768608, + "sha1_base64": "HsQadGqVyzTRm6g7olEG9mWMFIs=" }, { "id": "Brazil_Southeast Region_Minas Gerais_North", @@ -1649,8 +1649,8 @@ "Brasil", "Minas Gerais" ], - "s": 101809879, - "sha1_base64": "/BNKt1M3zRm0U2M8wtHuCb6RJQc=" + "s": 101607247, + "sha1_base64": "G+RY8EOGm+8ZoKk76XbK4HYu2sU=" }, { "id": "Brazil_Southeast Region_Rio de Janeiro", @@ -1661,8 +1661,8 @@ "Brasil", "Rio de Janeiro" ], - "s": 79324891, - "sha1_base64": "NAlt79/uM7BlTjqiJfM26DROmUM=" + "s": 78736259, + "sha1_base64": "LR2ZRegdPQPkcJBVFnMubBb2YGA=" }, { "id": "Brazil_Southeast Region_Sao Paulo_Campinas", @@ -1673,8 +1673,8 @@ "Brasil", "São Paulo" ], - "s": 98584237, - "sha1_base64": "5aZAIgr1mlvm5W+shCg5e7owT8A=" + "s": 98436053, + "sha1_base64": "OVSgBSCHhAJkLZOL97qo3EemVEE=" }, { "id": "Brazil_Southeast Region_Sao Paulo_City", @@ -1685,8 +1685,8 @@ "Brasil", "São Paulo" ], - "s": 164076611, - "sha1_base64": "g39QgiTP/ZXqru9ezlj7kbOIq0Q=" + "s": 163687323, + "sha1_base64": "KFSK25b85/7JNb2FEIBxvgyV454=" }, { "id": "Brazil_Southeast Region_Sao Paulo_West", @@ -1697,8 +1697,8 @@ "Brasil", "São Paulo" ], - "s": 71004669, - "sha1_base64": "nlP04x0WUxTFiDNPKCBjzP0xJyM=" + "s": 70387469, + "sha1_base64": "caNqsh4MJfvwh/QV2E3lWEiqoes=" } ] }, @@ -1710,8 +1710,8 @@ "affiliations": [ "Brunei Darussalam" ], - "s": 10117415, - "sha1_base64": "yibpXdmiQo7gM5qGu9a4e7O9G9s=" + "s": 10109671, + "sha1_base64": "xa+g0Atc99GVecH3rZWeYxTBM9s=" }, { "id": "Bulgaria", @@ -1724,8 +1724,8 @@ "affiliations": [ "България" ], - "s": 60148469, - "sha1_base64": "EPHqjJWh4hb/+vmftv+7xKVWaEE=" + "s": 59578933, + "sha1_base64": "UcL9t0O5iQXO3vgF3w964WIMvFk=" }, { "id": "Bulgaria_West", @@ -1735,8 +1735,8 @@ "affiliations": [ "България" ], - "s": 106506224, - "sha1_base64": "fBqFvS0yKvhCO9vFJrh1/rHfH+s=" + "s": 106239648, + "sha1_base64": "hgvMmLMZ7eDJKmfb9WTsfXmF2Kw=" } ] }, @@ -1761,8 +1761,8 @@ "Sahel", "Sud-Ouest" ], - "s": 69235292, - "sha1_base64": "SW+Zoc5hS9L1IGTDkvT2Xj9kiiw=" + "s": 68817844, + "sha1_base64": "5vCuX83dYwzDuCdcVPNWjsgbpiw=" }, { "id": "Burundi", @@ -1789,8 +1789,8 @@ "Rutana", "Ruyigi" ], - "s": 42761580, - "sha1_base64": "bIeWwpW3OI8jpDeQ2pH9maubGDI=" + "s": 42592780, + "sha1_base64": "Ovig9pqEANq/Mgj9CGTu0QG0kXo=" }, { "id": "Cambodia", @@ -1825,8 +1825,8 @@ "Tbong Khmum", "ព្រះរាជាណាចក្រកម្ពុជា (Cambodia)" ], - "s": 42929462, - "sha1_base64": "isPhIzVTPp72g4thgNeEa9A1REA=" + "s": 42718998, + "sha1_base64": "OS6M1U57JV3H/2jzkjQs3X00xao=" }, { "id": "Cameroon", @@ -1845,8 +1845,8 @@ "Nord", "Sud" ], - "s": 134836028, - "sha1_base64": "vT4eEhbAxqNDzhufSVO18Cu+kB4=" + "s": 133675340, + "sha1_base64": "V8X7clxPV8bLfWWHQeaXG6tL9TQ=" }, { "id": "Cameroon_West", @@ -1860,8 +1860,8 @@ "Ouest", "Sud-Ouest" ], - "s": 87328829, - "sha1_base64": "IY1urhPbZ6Vs25U5CFdCqecLX7A=" + "s": 87282309, + "sha1_base64": "0SW8iIXWLZSWYrVh4uYA0tf6ge4=" } ] }, @@ -1880,8 +1880,8 @@ "Alberta", "Canada" ], - "s": 90807748, - "sha1_base64": "jOPrUVO/RCZwwEnRCm555KZbM0k=" + "s": 90353836, + "sha1_base64": "nTq0pweTVYUSTdEEKb/H5LsrXoM=" }, { "id": "Canada_Alberta_North", @@ -1892,8 +1892,8 @@ "Alberta", "Canada" ], - "s": 133177904, - "sha1_base64": "S5wfT65Ohjp3p5zmbt4gHATbOv4=" + "s": 87530928, + "sha1_base64": "2dalnj8nNPhWmF+XjIm582RuEYg=" }, { "id": "Canada_Alberta_South", @@ -1904,8 +1904,8 @@ "Alberta", "Canada" ], - "s": 70274155, - "sha1_base64": "hyWkaQctR4viYAOlTRqIIdufFLs=" + "s": 69838747, + "sha1_base64": "9WxugtvN6URMI7DT2+rEvIJCcBs=" } ] }, @@ -1921,8 +1921,8 @@ "British Columbia", "Canada" ], - "s": 110071128, - "sha1_base64": "aUel4rJgX2ZQawGV4W3jh0aO7+Q=" + "s": 109548232, + "sha1_base64": "vAtouA54bVkJc088izFMGpZjETQ=" }, { "id": "Canada_British Columbia_Far_North", @@ -1933,8 +1933,8 @@ "British Columbia", "Canada" ], - "s": 35898513, - "sha1_base64": "XEaYlqTnftMcrUMPIW+R3JndU8w=" + "s": 35835585, + "sha1_base64": "v6fzZkBs3+y9SFBBVf25xwYGK2c=" }, { "id": "Canada_British Columbia_Islands", @@ -1945,8 +1945,8 @@ "British Columbia", "Canada" ], - "s": 79244986, - "sha1_base64": "xhymdPCB8YtF6b4YVbRJeGwncdE=" + "s": 76169426, + "sha1_base64": "HjhzrOUgQNAaLy2YUF03yDLmVlQ=" }, { "id": "Canada_British Columbia_North", @@ -1957,8 +1957,8 @@ "British Columbia", "Canada" ], - "s": 226095304, - "sha1_base64": "MBSnRpwBPvBe55uHsZteIC0TVVQ=" + "s": 226082080, + "sha1_base64": "vkvdx6yc1w0jRBku8D6xew1TrsE=" }, { "id": "Canada_British Columbia_Northeast", @@ -1969,8 +1969,8 @@ "British Columbia", "Canada" ], - "s": 94271117, - "sha1_base64": "zILtvs4eu1SyEOIfbSWyuPqcHu4=" + "s": 94267501, + "sha1_base64": "MRL/El6NIuzEqi8Im6+/svgqHMc=" }, { "id": "Canada_British Columbia_Southeast", @@ -1981,8 +1981,8 @@ "British Columbia", "Canada" ], - "s": 94915162, - "sha1_base64": "tbec+6YD35FmqkIr8Wuz13y3Ff0=" + "s": 94620042, + "sha1_base64": "zvsLN4RC1rx3lgC3ZqKidw7K7jg=" }, { "id": "Canada_British Columbia_Vancouver", @@ -1993,8 +1993,8 @@ "British Columbia", "Canada" ], - "s": 103795037, - "sha1_base64": "ysnnI9n1Q9RtJK5u1qnqIAg+jbg=" + "s": 103440925, + "sha1_base64": "R2fEKCG/qtlbjGSX6woCZYKpQxk=" } ] }, @@ -2011,8 +2011,8 @@ "Newfoundland and Labrador", "ᓄᓇᕗᑦ Nunavut" ], - "s": 59220942, - "sha1_base64": "7USZ/17yPMcZOUYKqrApAyUQ6Yw=" + "s": 59219934, + "sha1_base64": "he7qDO1tZl1e15TSRDtbGjB5dyc=" }, { "id": "Canada_Labrador_South", @@ -2023,8 +2023,8 @@ "Canada", "Newfoundland and Labrador" ], - "s": 49698733, - "sha1_base64": "aa0U2mxKdCgAfyMrxahWbGVt44Y=" + "s": 49699485, + "sha1_base64": "5m9aJwNOA+RUPHiNca8ICMV/qZA=" }, { "id": "Canada_Labrador_West", @@ -2035,8 +2035,8 @@ "Canada", "Newfoundland and Labrador" ], - "s": 57478425, - "sha1_base64": "sHsV6Y9BOi3FYd7k9jEqDEjYFKw=" + "s": 57471737, + "sha1_base64": "iog9Rvj0fDOe1lIP2seRSZD7lRI=" } ] }, @@ -2054,8 +2054,8 @@ "Manitoba", "ᓄᓇᕗᑦ Nunavut" ], - "s": 73199318, - "sha1_base64": "CwYf9vuWdvghUthSuevSlDiBcdc=" + "s": 73197110, + "sha1_base64": "ypojQyLQSJ4ztfDFkyJCjD/4T/4=" }, { "id": "Canada_Manitoba_Northwest", @@ -2066,8 +2066,8 @@ "Canada", "Manitoba" ], - "s": 53233985, - "sha1_base64": "5VFPxm+eXPVzrNdw7I82HN57T2I=" + "s": 53233289, + "sha1_base64": "9LDnW5whfKGCPBhF4ArnqS8mmU0=" }, { "id": "Canada_Manitoba_South", @@ -2078,8 +2078,8 @@ "Canada", "Manitoba" ], - "s": 50302916, - "sha1_base64": "C6nGIColV1zQkVcaXlt92P69N8c=" + "s": 50292492, + "sha1_base64": "PKXdzchzuk91p23mvCip2Ie+pVs=" }, { "id": "Canada_Manitoba_Winnipeg", @@ -2090,8 +2090,8 @@ "Canada", "Manitoba" ], - "s": 46557141, - "sha1_base64": "coF3LN0xmSwWoQBTElgZwrW0vDE=" + "s": 46473453, + "sha1_base64": "hxLnnn+2sNmmIn+ox0I3oTo8yqE=" } ] }, @@ -2106,8 +2106,8 @@ "New Brunswick", "Oromocto Indian Reserve NO. 26" ], - "s": 63266313, - "sha1_base64": "a+0lto8OPNpc/5sBe1s8S99rv5Q=" + "s": 63107496, + "sha1_base64": "ekHRdS5pU76rqQXMNYdCZECt7as=" }, { "id": "Canada_Newfoundland", @@ -2121,8 +2121,8 @@ "Canada", "Newfoundland and Labrador" ], - "s": 27537051, - "sha1_base64": "RjgF2YP2bWHU11wB/VPLzf9qXdM=" + "s": 27465315, + "sha1_base64": "W+AQziCD0tYjYUF+7bzT4bdaT4A=" }, { "id": "Canada_Newfoundland_North", @@ -2133,8 +2133,8 @@ "Canada", "Newfoundland and Labrador" ], - "s": 32773506, - "sha1_base64": "LhtHeunUd+adijP8EFelA7ymYmw=" + "s": 32767410, + "sha1_base64": "FqLtt8snUkxS332oK9zBdC0CYEg=" }, { "id": "Canada_Newfoundland_South", @@ -2148,8 +2148,8 @@ "Newfoundland and Labrador", "Île Verte" ], - "s": 26861600, - "sha1_base64": "/Xu8XwD17NENrge5IdcKFIB16Eg=" + "s": 26856744, + "sha1_base64": "H+llo0TKIQZG0KBNHYljRxlqXRc=" }, { "id": "Canada_Newfoundland_West", @@ -2160,8 +2160,8 @@ "Canada", "Newfoundland and Labrador" ], - "s": 25449046, - "sha1_base64": "favfPkg97ak+pOPdrUpaOlW9REQ=" + "s": 25448126, + "sha1_base64": "Xq47KmYwMD/KreP2eCqOHH7TddY=" } ] }, @@ -2177,8 +2177,8 @@ "Canada", "Northwest Territories" ], - "s": 67922505, - "sha1_base64": "HJVajHEwyDT1xD1NLJ2FLvrGaLI=" + "s": 67580553, + "sha1_base64": "KBsI6+7G0K1qNA9Qce1+rH8oc7A=" }, { "id": "Canada_Northwest Territories_North", @@ -2189,8 +2189,8 @@ "Canada", "Northwest Territories" ], - "s": 145008652, - "sha1_base64": "gjGMEhyyxQSMYTuHgspZYCPDx+M=" + "s": 145001836, + "sha1_base64": "g2rHsV/CdSUmb3xF+8wdSKXTC+4=" }, { "id": "Canada_Northwest Territories_Yellowknife", @@ -2201,8 +2201,8 @@ "Canada", "Northwest Territories" ], - "s": 86861100, - "sha1_base64": "o2EdhJp+qdXDFihAdViG8WK9+Qo=" + "s": 86860556, + "sha1_base64": "MghN/KTl3f/hQqkgy8zl/9r249U=" } ] }, @@ -2218,8 +2218,8 @@ "Canada", "Nova Scotia" ], - "s": 66528800, - "sha1_base64": "6jZ9MFatlB59jRyXPF4hu5wTBPg=" + "s": 66376568, + "sha1_base64": "z2urFgeV65Ie22valoRpnM/p9Go=" }, { "id": "Canada_Nova Scotia_Sydney", @@ -2231,8 +2231,8 @@ "Nova Scotia", "Prince Edward Island" ], - "s": 30237209, - "sha1_base64": "eQ3X/n0p1li2jtPKVyY6Av3Oqv8=" + "s": 30216497, + "sha1_base64": "6DemrLes5nh0Ks8gm1EAQ09BYVo=" } ] }, @@ -2248,8 +2248,8 @@ "Canada", "ᓄᓇᕗᑦ Nunavut" ], - "s": 31595953, - "sha1_base64": "lRz/BHGqsUbYNfKXNU6HSKf2NHY=" + "s": 31591257, + "sha1_base64": "f4pv6a4wQ6+7KM4t4VMLiSB1Wc4=" }, { "id": "Canada_Nunavut_South", @@ -2260,8 +2260,8 @@ "Canada", "ᓄᓇᕗᑦ Nunavut" ], - "s": 260012206, - "sha1_base64": "avc3bvjCgnMkK/cdN++fEUnzrkU=" + "s": 246965622, + "sha1_base64": "YjEGszxYd7osAaQ72g7MdOzIzLk=" } ] }, @@ -2277,8 +2277,8 @@ "Canada", "Ontario" ], - "s": 68725113, - "sha1_base64": "bm152uWaXZUvdIgBMWJzdAQZop8=" + "s": 68656801, + "sha1_base64": "QgNUOf460a3o5Vg5xFVxiht3PDQ=" }, { "id": "Canada_Ontario_Kingston", @@ -2289,8 +2289,8 @@ "Canada", "Ontario" ], - "s": 116307402, - "sha1_base64": "ZAtYnmAldi0J4sXviQgbJFTgYTY=" + "s": 116030970, + "sha1_base64": "3mq2CRCF29CC651pV2oPiLbD6eQ=" }, { "id": "Canada_Ontario_London", @@ -2301,8 +2301,8 @@ "Canada", "Ontario" ], - "s": 90571250, - "sha1_base64": "Uze4kfzae/3NG/qAwHMbtpo0920=" + "s": 90407714, + "sha1_base64": "5+DBRnDWfaWhh4WOrwKM93VVaGY=" }, { "id": "Canada_Ontario_Northeastern_Central", @@ -2313,8 +2313,8 @@ "Canada", "Ontario" ], - "s": 37157521, - "sha1_base64": "0UfIwl508FPe469FZ1vpwJeR24I=" + "s": 36751913, + "sha1_base64": "129q28JnGOJ3erLc6yktuF1Bdf0=" }, { "id": "Canada_Ontario_Northeastern_North", @@ -2327,8 +2327,8 @@ "Ontario", "ᓄᓇᕗᑦ Nunavut" ], - "s": 49540238, - "sha1_base64": "o3K/l59OnTuQgwGaVY43Oa8C7Kw=" + "s": 49557814, + "sha1_base64": "KfmDl74e8A5VLiCvF4Z67Ivd2i8=" }, { "id": "Canada_Ontario_Northeastern_S", @@ -2339,8 +2339,8 @@ "Canada", "Ontario" ], - "s": 44530321, - "sha1_base64": "fodJDvZHtZi2geCgDjDG1IueIcA=" + "s": 44523057, + "sha1_base64": "5bCc8kFAB1j9Zh/xSnlRiYtPQLo=" }, { "id": "Canada_Ontario_Northeastern_SE", @@ -2351,8 +2351,8 @@ "Canada", "Ontario" ], - "s": 29854241, - "sha1_base64": "YkWarPLlnm4ltpyTaXQLgjZhbM0=" + "s": 29846241, + "sha1_base64": "le6p0d069lWhEM60VZ7BSRimUAQ=" }, { "id": "Canada_Ontario_Northeastern_SW", @@ -2363,8 +2363,8 @@ "Canada", "Ontario" ], - "s": 50078466, - "sha1_base64": "zkMU5p3B5dJwQFAQ3RZzj4IimK4=" + "s": 50070898, + "sha1_base64": "0DiC/kD5/ycaKuFuolMqOCZjWKE=" }, { "id": "Canada_Ontario_Northeastern_Wawa", @@ -2375,8 +2375,8 @@ "Canada", "Ontario" ], - "s": 33126320, - "sha1_base64": "GwzEMYOXvnBmH2I2MqLS36fynb8=" + "s": 33121680, + "sha1_base64": "rqZHoFjaK0NuxNHFsbBns4Q314c=" }, { "id": "Canada_Ontario_Northern", @@ -2387,8 +2387,8 @@ "Canada", "Ontario" ], - "s": 49945010, - "sha1_base64": "V9HQS8YJnRxd+aATxovRcTodox8=" + "s": 49966954, + "sha1_base64": "Kv8CUpX3KYvG3xathsp1Ew9HHk0=" }, { "id": "Canada_Ontario_Northwestern", @@ -2402,8 +2402,8 @@ "Ontario", "ᓄᓇᕗᑦ Nunavut" ], - "s": 133820614, - "sha1_base64": "q7DUbIIpHGvVSS/2P4f9lDLC764=" + "s": 133822198, + "sha1_base64": "/gTCymUEf06s4F2m/ida/7K4244=" }, { "id": "Canada_Ontario_Toronto", @@ -2414,8 +2414,8 @@ "Canada", "Ontario" ], - "s": 129943431, - "sha1_base64": "Ja01IOrtgfvP5kRdN5A4GEQ2nJ4=" + "s": 129459087, + "sha1_base64": "CsbBATQ0Ni6aIwksT91dDJsDx6A=" } ] }, @@ -2428,8 +2428,8 @@ "Canada", "Prince Edward Island" ], - "s": 12011295, - "sha1_base64": "zfiCdMZK1MTJ/DylilUPlEk/z9U=" + "s": 11968231, + "sha1_base64": "9abqFfrhHfJEBsmv5o2HFaZsvTw=" }, { "id": "Canada_Quebec", @@ -2443,8 +2443,8 @@ "Canada", "Québec" ], - "s": 79260716, - "sha1_base64": "aidVzrY9O//3OSE56tAO3GHpnn4=" + "s": 79083012, + "sha1_base64": "qjy5rQbdDVnOb2hUWXcwJOVaG/A=" }, { "id": "Canada_Quebek_Far North", @@ -2458,8 +2458,8 @@ "Québec", "ᓄᓇᕗᑦ Nunavut" ], - "s": 70705587, - "sha1_base64": "dPSHOEoN4ZS03QQmV/w6TFepUg4=" + "s": 70699747, + "sha1_base64": "z+qVS8fKIrHn78KU60jr+jCRC9Y=" }, { "id": "Canada_Quebek_Montreal", @@ -2470,8 +2470,8 @@ "Canada", "Québec" ], - "s": 103390723, - "sha1_base64": "JpSxFTJjyYFiTaqebZsBag8ncJg=" + "s": 102670651, + "sha1_base64": "HTOlYK33g6tu4G896VGfVGydYGw=" }, { "id": "Canada_Quebek_Lachute", @@ -2482,8 +2482,8 @@ "Canada", "Québec" ], - "s": 56682352, - "sha1_base64": "HAkCiA1iVTvhosS4TlRcmFXAgmE=" + "s": 56547808, + "sha1_base64": "byYQS/fMsh+fHcMHurYjCLnq8MU=" }, { "id": "Canada_Quebek_North", @@ -2494,8 +2494,8 @@ "Canada", "Québec" ], - "s": 83749132, - "sha1_base64": "S7v1cv6c83pfbFg4/dNWsbqoh/Q=" + "s": 83731972, + "sha1_base64": "HoZsLGPRdBfOkQmwSGo0O5vew8g=" }, { "id": "Canada_Quebek_Southeast_Rimouski", @@ -2506,8 +2506,8 @@ "Canada", "Québec" ], - "s": 36119771, - "sha1_base64": "e/IqrhHiSEqQbknYkN12UKXPvbc=" + "s": 36107211, + "sha1_base64": "/HY7p9dr4VWEbpn37ErPyV5Kb/U=" }, { "id": "Canada_Quebek_Southeast_Saguenay", @@ -2518,8 +2518,8 @@ "Canada", "Québec" ], - "s": 65953558, - "sha1_base64": "+yB5LtlAvWV2sAqkpXq67i6qKXA=" + "s": 65918533, + "sha1_base64": "4fhRFXvM5ewkxDDA72BL8Ax50cg=" }, { "id": "Canada_Quebek_West_Chibougamau", @@ -2530,8 +2530,8 @@ "Canada", "Québec" ], - "s": 63814211, - "sha1_base64": "WNOoFE6sFDc9ho7kTMFfg/SRP7E=" + "s": 63828435, + "sha1_base64": "SCD9lXnh6QL2P+SXodYzSvZSEsg=" }, { "id": "Canada_Quebek_West_Rouyn-Noranda", @@ -2542,8 +2542,8 @@ "Canada", "Québec" ], - "s": 59768340, - "sha1_base64": "/pSyI9xDqhWNAb5h/PPPVN7FxjQ=" + "s": 59738108, + "sha1_base64": "lApKoPtQiRCUEXf6AHxgoMOpdM0=" } ] }, @@ -2559,8 +2559,8 @@ "Canada", "Saskatchewan" ], - "s": 57833933, - "sha1_base64": "YoikLgBWbawr9isx+p6mn4v2rNg=" + "s": 57372861, + "sha1_base64": "NM2UC6x2fXAPDsMNj2GBxTXunpQ=" }, { "id": "Canada_Saskatchewan_Saskatoon", @@ -2571,8 +2571,8 @@ "Canada", "Saskatchewan" ], - "s": 43221710, - "sha1_base64": "vhTY/r/CFBx6n/UzNoyEYVsWB50=" + "s": 43024046, + "sha1_base64": "e8OK+meXDIUGfy2pZ7T/k8duH6A=" }, { "id": "Canada_Saskatchewan_Regina", @@ -2583,8 +2583,8 @@ "Canada", "Saskatchewan" ], - "s": 54348775, - "sha1_base64": "L8U9ujTQyi35197GZwb8I+Wghog=" + "s": 52155063, + "sha1_base64": "K5PaCGKCb2xRiQWrSqU6qWvqqYE=" } ] }, @@ -2600,8 +2600,8 @@ "Canada", "Yukon" ], - "s": 50487070, - "sha1_base64": "ygl1dhRGiv5hBy6QfnM7+oQtuDs=" + "s": 50475798, + "sha1_base64": "5Pa+FdE793HakJLdRZRXJzUhlXQ=" }, { "id": "Canada_Yukon_Whitehorse", @@ -2612,8 +2612,8 @@ "Canada", "Yukon" ], - "s": 49460627, - "sha1_base64": "FXZEP9e6GQbfHp9xwEGoL2jCIlA=" + "s": 49455307, + "sha1_base64": "X/vq9l6DBKtAeEhWCdO8T1hc1VQ=" } ] } @@ -2630,8 +2630,8 @@ "country_name_synonyms": [ "Cabo Verde" ], - "s": 15072020, - "sha1_base64": "LUoMLCj+Hk6p0XqMrJ2n8N0fn9I=" + "s": 14975556, + "sha1_base64": "1cpdSGNkLPRXBCs/Rl2mriAAzpM=" }, { "id": "Cayman Islands", @@ -2641,8 +2641,8 @@ "affiliations": [ "Cayman Islands" ], - "s": 1261086, - "sha1_base64": "lfAFxwc67FfMZ4fEGwApAOKTax0=" + "s": 1257974, + "sha1_base64": "m21vJwzzXEfXoXvFET8uTPfdlC8=" }, { "id": "Central African Republic", @@ -2668,8 +2668,8 @@ "Sangha-Mbaéré", "Vakaga" ], - "s": 139331748, - "sha1_base64": "n8o7HQvxGkGZZ+gm7ybe7Z4gre4=" + "s": 138948036, + "sha1_base64": "fSpxeWnNqWrAODLr65FzrVNigD4=" }, { "id": "Chad", @@ -2701,8 +2701,8 @@ "Tibesti Region", "Wadi Fira Region" ], - "s": 82160164, - "sha1_base64": "Fj4JsZ3Zjjc8B0wDhEAipmPG+vc=" + "s": 80805324, + "sha1_base64": "vg+8pheDJMln+5m9wabBQfNxHAE=" }, { "id": "Colombia", @@ -2727,8 +2727,8 @@ "Santander", "Sucre" ], - "s": 108184900, - "sha1_base64": "Pk5acGM9X9G94PCEVkkB3Fh8e2o=" + "s": 107447476, + "sha1_base64": "Ec0e525LOkcMW7hs5mA4isPFDuY=" }, { "id": "Colombia_West", @@ -2751,8 +2751,8 @@ "Tolima", "Valle del Cauca" ], - "s": 115981281, - "sha1_base64": "gBJFYUWwRcUflnEaEucst+HVqOU=" + "s": 115780633, + "sha1_base64": "AjHJoTmOgCWqove+WEcrIJJ2N6I=" }, { "id": "Colombia_East", @@ -2772,8 +2772,8 @@ "Vaupés", "Vichada" ], - "s": 37240753, - "sha1_base64": "HBx+BTUUdFZSZaTsVUrqfMgASRQ=" + "s": 36833769, + "sha1_base64": "fT00dOR5B/23RGE9+wC+eDcW+NU=" } ] }, @@ -2788,8 +2788,8 @@ "Mwali", "Nzwani / أنجوان" ], - "s": 5347737, - "sha1_base64": "VQFiZMAxz18D0s5itbo1WKbC9qM=" + "s": 5341881, + "sha1_base64": "MTncXKG9Lsohay9ncJn2R6EgxP8=" }, { "id": "Congo-Brazzaville", @@ -2814,8 +2814,8 @@ "country_name_synonyms": [ "Republic of the Congo" ], - "s": 28648369, - "sha1_base64": "5HahQRG6UEg2ASS3hSdDYxP/Yus=" + "s": 28635449, + "sha1_base64": "4agLunRNDZ8QHDnbU3gEWzyMTNs=" }, { "id": "Congo-Kinshasa", @@ -2855,8 +2855,8 @@ "Tshuapa", "Équateur" ], - "s": 220860722, - "sha1_base64": "ODw2lYW6b1UxuiDD+8SEW6xXolY=" + "s": 220102770, + "sha1_base64": "B0ldeeJpA/Vk88vB0n5cvWvrons=" }, { "id": "Congo-Kinshasa_Kivu", @@ -2868,8 +2868,8 @@ "Nord-Kivu", "Sud-Kivu" ], - "s": 166135582, - "sha1_base64": "oLjPbAXHCiGF20qZk5gJ9jZ1bTE=" + "s": 165890726, + "sha1_base64": "4y0bDiW+Y2uIhk+WtW3j+oydaVc=" } ] }, @@ -2881,8 +2881,8 @@ "affiliations": [ "Cook Islands" ], - "s": 1445355, - "sha1_base64": "icf8AeU9ngzRzJyEheiycWejYew=" + "s": 1444971, + "sha1_base64": "68p0y8Cf+Rd2SELAh1tenkSlaKA=" }, { "id": "Costa Rica", @@ -2901,8 +2901,8 @@ "Puntarenas", "San José" ], - "s": 45496119, - "sha1_base64": "dQDbd33SGRhDS7TfnIn8HsQhLOI=" + "s": 45288735, + "sha1_base64": "xQ3QQrGdW2FI4zRSo5jl3w4pKXw=" }, { "id": "Croatia", @@ -2915,8 +2915,8 @@ "affiliations": [ "Hrvatska" ], - "s": 84428885, - "sha1_base64": "fLTWMK/qzlm+oDwg5QcRTfcm+NQ=" + "s": 84244901, + "sha1_base64": "n+Fj1f+nV+EVYOhXxL7FAaa7yzU=" }, { "id": "Croatia_West", @@ -2927,8 +2927,8 @@ "Hrvatska", "Italia" ], - "s": 83356366, - "sha1_base64": "DDioFOUIu5d+1OjJpNp47yTOyX0=" + "s": 83203646, + "sha1_base64": "UgB3wnwZHhjSMe3xq2kqJien1vg=" } ] }, @@ -2954,8 +2954,8 @@ "Santiago de Cuba", "Villa Clara" ], - "s": 65827944, - "sha1_base64": "2GtRHHzOrEvQqaK6bsFYKkRhFKs=" + "s": 65656856, + "sha1_base64": "6E8T46gQaPSxAR+7Ecbb0qJblb8=" }, { "id": "Cyprus", @@ -2966,8 +2966,8 @@ "British Sovereign Base Areas", "Κύπρος - Kıbrıs" ], - "s": 38645806, - "sha1_base64": "McFHaRY99eh5FUCgyZpya1p5v/0=" + "s": 38226854, + "sha1_base64": "blDgOXRBG5sie7IAPUmpRhBpXGo=" }, { "id": "Czech Republic", @@ -2984,8 +2984,8 @@ "Praha", "Česko" ], - "s": 33748869, - "sha1_base64": "HV2dQuGDmL5UuFEXTmgGnXz0hHM=" + "s": 33544933, + "sha1_base64": "50SsZml9HdBILhhsIOZa9EdIEEU=" }, { "id": "Czech_Severovychod_Pardubicky kraj", @@ -2996,8 +2996,8 @@ "Severovýchod", "Česko" ], - "s": 43623215, - "sha1_base64": "xhxnXFQNcCQpZVmY1rukNjxwLhI=" + "s": 43272679, + "sha1_base64": "fX8f8cNoFh5SneGErm81Tcrz6fE=" }, { "id": "Czech_Karlovasky kraj", @@ -3008,8 +3008,8 @@ "Severozápad", "Česko" ], - "s": 25086659, - "sha1_base64": "F3yPhyiB/qoMtQHmt8SLi0ZQTDI=" + "s": 25012315, + "sha1_base64": "+Q/e/qOwXylIS9ow27XEQay+JJI=" }, { "id": "Czech_Ustecky kraj", @@ -3020,8 +3020,8 @@ "Severozápad", "Česko" ], - "s": 56418098, - "sha1_base64": "n0o8bNCPHaV450VFT0A0W0ezCHc=" + "s": 55971378, + "sha1_base64": "gjd5app418HUHX1M08HUqZPihu0=" }, { "id": "Czech_Jihozapad_Plzensky kraj", @@ -3032,8 +3032,8 @@ "Jihozápad", "Česko" ], - "s": 58148402, - "sha1_base64": "V1bqCotyLjp2ZzRbG2HPqX3zwl0=" + "s": 57944049, + "sha1_base64": "CLIVpzF9W5PUtX2+7yM8Vr6D+hw=" }, { "id": "Czech_Severovychod_Kralovehradecky kraj", @@ -3044,8 +3044,8 @@ "Severovýchod", "Česko" ], - "s": 46635768, - "sha1_base64": "0MdOPIuZAEqALADWZh/p/qKgp4Q=" + "s": 46509200, + "sha1_base64": "bD/2KOh2SiKfIPBZKRlYRGvFjsM=" }, { "id": "Czech_Olomoucky kraj", @@ -3056,8 +3056,8 @@ "Střední Morava", "Česko" ], - "s": 50375223, - "sha1_base64": "IxGviyW8BBt4ie4NikV+ArpaA38=" + "s": 50221735, + "sha1_base64": "T7+jDB+Y+1Xz7t2ZlJ82TTk7Ry8=" }, { "id": "Czech_Zlinsky Kraj", @@ -3068,8 +3068,8 @@ "Střední Morava", "Česko" ], - "s": 43514287, - "sha1_base64": "PhrKCtWkjtPgO7PG/VIhAJKHrxk=" + "s": 43435175, + "sha1_base64": "bvwHWkj6ziXoYyNTnDGAB7QrPrg=" }, { "id": "Czech_Stredni Cechy_East", @@ -3080,8 +3080,8 @@ "Střední Čechy", "Česko" ], - "s": 61493195, - "sha1_base64": "UD/QLq2mmkdxlZQ34wGoQ/SUgJE=" + "s": 61290947, + "sha1_base64": "PeoIB/b0BGBliCSKkdKgzjrVUso=" }, { "id": "Czech_Jihozapad_Jihocesky kraj", @@ -3092,8 +3092,8 @@ "Jihozápad", "Česko" ], - "s": 77803693, - "sha1_base64": "1K0BmI+KOFZfRN258O4DZz7HDrI=" + "s": 77656165, + "sha1_base64": "hEhPNScdX6/nQ2oc8sMWEhgkXCg=" }, { "id": "Czech_Jihovychod_Kraj Vysocina", @@ -3104,8 +3104,8 @@ "Jihovýchod", "Česko" ], - "s": 58589256, - "sha1_base64": "uv+YNOMnpJ2GZKv/JQ1IEq5rmBc=" + "s": 58518016, + "sha1_base64": "o7YNHDcyuucZOcU3+yZxF9i0SwM=" }, { "id": "Czech_Severovychod_Liberecky kraj", @@ -3116,8 +3116,8 @@ "Severovýchod", "Česko" ], - "s": 37473591, - "sha1_base64": "3lYI3xFNTF2J5SjWDapvYuzqEOg=" + "s": 37343759, + "sha1_base64": "ijGcintHGAQoSFJEOQPOzoXPwA4=" }, { "id": "Czech_Stredni Cechy_West", @@ -3128,8 +3128,8 @@ "Střední Čechy", "Česko" ], - "s": 56392465, - "sha1_base64": "4A0cbyC9Q0A8D7fGdUoSN3asn/M=" + "s": 55763489, + "sha1_base64": "b4zVLVEWGN/REiaanQnaxbbOI64=" }, { "id": "Czech_Moravskoslezsko", @@ -3140,8 +3140,8 @@ "Moravskoslezsko", "Česko" ], - "s": 64680708, - "sha1_base64": "i61gYo+awqfGk1nvZ5v1+TsP87Q=" + "s": 64498764, + "sha1_base64": "E51Mcxi7QJ94DcNJufcReou+Yzc=" }, { "id": "Czech_Jihovychod_Jihomoravsky kraj", @@ -3152,8 +3152,8 @@ "Jihovýchod", "Česko" ], - "s": 81658013, - "sha1_base64": "wDwEt3g+0PyXcKE5nc/hUvBEveo=" + "s": 81366189, + "sha1_base64": "D4TogdFSBq8ZjJNTO/Q4LvAtkgY=" } ] }, @@ -3183,8 +3183,8 @@ "Côte d'Ivoire", "Ivory Coast" ], - "s": 58330969, - "sha1_base64": "P/ghFdk5UC6M/B2NS4H6TtXL8fQ=" + "s": 56500161, + "sha1_base64": "T9tmoFM31A57+Drq1anCWZYLXhE=" }, { "id": "Denmark", @@ -3198,8 +3198,8 @@ "Danmark", "Region Nordjylland" ], - "s": 53739727, - "sha1_base64": "r+FFWe1Yef7xJsT8tNoB6HsWlvY=" + "s": 53269271, + "sha1_base64": "NfaRS2lRUEzQxKVHnWz2Z1RskTg=" }, { "id": "Denmark_Central Denmark Region", @@ -3210,8 +3210,8 @@ "Danmark", "Region Midtjylland" ], - "s": 100673770, - "sha1_base64": "CIZ7kM6MWpErRNBurgb/Wi+FAQ0=" + "s": 100146474, + "sha1_base64": "Ucg/L3TehQJAl+xYLPTjx3SHGVE=" }, { "id": "Denmark_Capital Region of Denmark", @@ -3223,8 +3223,8 @@ "Region Hovedstaden", "Territorial waters of Bornholm" ], - "s": 68455502, - "sha1_base64": "YYeCiwM4aWWmTr+2ZEJnhfB8O7U=" + "s": 68332342, + "sha1_base64": "pptsGNw4NRwrI4Bbtak/esHvqRw=" }, { "id": "Denmark_Region Zealand", @@ -3235,8 +3235,8 @@ "Danmark", "Region Sjælland" ], - "s": 69711218, - "sha1_base64": "LsO2m6Yam7JObMpLEXdlRc87vpo=" + "s": 69573578, + "sha1_base64": "wb8b7/0/uFrQp8bkcNUg5kiWoeQ=" }, { "id": "Denmark_Region of Southern Denmark", @@ -3247,8 +3247,8 @@ "Danmark", "Region Syddanmark" ], - "s": 99146722, - "sha1_base64": "xlRLZrfqQQECp8aM+g56yzhJEkk=" + "s": 99288234, + "sha1_base64": "BBnr3KB6KcURxsds/YHuqs/avSs=" } ] }, @@ -3266,8 +3266,8 @@ "Obock", "Tadjourah" ], - "s": 11345877, - "sha1_base64": "I9gCW4TE/4t1fI52KGKeCXi111Q=" + "s": 11344357, + "sha1_base64": "rIlnmy4YWEH5nbe89vlJ3ur7S6M=" }, { "id": "Dominican Republic", @@ -3309,8 +3309,8 @@ "Sánchez Ramírez", "Valverde" ], - "s": 34686594, - "sha1_base64": "3+q5NlKXejPAeRTUOYmoNvFZ6cA=" + "s": 34664154, + "sha1_base64": "+XdD0L+ZvGHVefbao/jfHVgQ0XE=" }, { "id": "East Timor", @@ -3336,8 +3336,8 @@ "Timór Loro Sa'e", "Viqueque" ], - "s": 18394359, - "sha1_base64": "QdPqsUR8JfvYD3PSYFieHhweEz0=" + "s": 18389511, + "sha1_base64": "ElYueGoLQqAD1nM6VTSwuXMqRbA=" }, { "id": "Chile", @@ -3347,8 +3347,8 @@ "affiliations": [ "Acuerdo de Campos de Hielo" ], - "s": 7511240, - "sha1_base64": "zPIagyRyem8UbbXmhvFsYFu9wX8=" + "s": 7467600, + "sha1_base64": "30M24fsZAyoPpzkzSgfYJhBr/qQ=" }, { "id": "Chile_Central", @@ -3365,8 +3365,8 @@ "VI Región del Libertador General Bernardo O'Higgins", "VII Región del Maule" ], - "s": 104690125, - "sha1_base64": "oPcMTJdtUslrUpiM5ALGqu9JGb0=" + "s": 103902100, + "sha1_base64": "ji9c68fR4GqURq2v16UmAjgyRhU=" }, { "id": "Chile_North", @@ -3382,8 +3382,8 @@ "V Región de Valparaíso", "XV Región de Arica y Parinacota" ], - "s": 79128451, - "sha1_base64": "R4CJ4OyP5/XUB5dADKEsevhaqIk=" + "s": 79120130, + "sha1_base64": "cwaWR+37Ejj4URuoZ+7gePEonkM=" }, { "id": "Chile_South", @@ -3399,8 +3399,8 @@ "XII Región de Magallanes y de la Antártica Chilena", "XIV Región de Los Ríos" ], - "s": 215783464, - "sha1_base64": "kna0hImqX1UE6bE0qW/tnoM8LPI=" + "s": 214995272, + "sha1_base64": "gj4KA35LseoqukS3FhHFU7fsJXk=" } ] }, @@ -3430,8 +3430,8 @@ "Tungurahua", "Zamora Chinchipe" ], - "s": 54938546, - "sha1_base64": "F1FWCD4Rc12GJiYVFpKiSjZVjHY=" + "s": 54542953, + "sha1_base64": "1/BoCVeuwRfp0FhXKAhRqpW4kik=" }, { "id": "Ecuador_West", @@ -3458,8 +3458,8 @@ "Santa Elena", "Santo Domingo de los Tsáchilas" ], - "s": 63306747, - "sha1_base64": "d/wrMBVEmyWy47rHgXwc8JlPYRs=" + "s": 63161819, + "sha1_base64": "YmYoSbAZIf0XKZQnmdlaVmI9+xE=" } ] }, @@ -3497,8 +3497,8 @@ "‏البحيرة‎", "الإسكندرية" ], - "s": 234501397, - "sha1_base64": "t34MWGHWXaqVWuT/XKcSkM0euD8=" + "s": 234127981, + "sha1_base64": "GqcrheFCyozhhfsdKHAIxBgP67o=" }, { "id": "El Salvador", @@ -3522,8 +3522,8 @@ "Departemento de Chalatenango", "El Salvador" ], - "s": 36085224, - "sha1_base64": "7qLNRKT6VhMbneR8LDhEV9ic25g=" + "s": 35927183, + "sha1_base64": "rSCilWhpMtoesY4YcOuxhIpf1ig=" }, { "id": "Equatorial Guinea", @@ -3540,8 +3540,8 @@ "Litoral", "Wele-Nzas" ], - "s": 11938576, - "sha1_base64": "d/pWS2DutJxqqVjG6As5BldrVCw=" + "s": 11864816, + "sha1_base64": "oWD48kuN8yTyB8Bxgs2uVsxWDh0=" }, { "id": "Eritrea", @@ -3557,8 +3557,8 @@ "ዞባ ዓንሰባ", "ጋሽ-ባርካ" ], - "s": 25713747, - "sha1_base64": "AvXfIXHpBYghYoAm7JioGzrnNqY=" + "s": 25367850, + "sha1_base64": "J5/Zj3585lK72xYwBuC4nJIKQms=" }, { "id": "Estonia", @@ -3571,8 +3571,8 @@ "affiliations": [ "Eesti" ], - "s": 53178091, - "sha1_base64": "rb0Y5vfLXIEIhTja3cL2vSvDG5I=" + "s": 52998667, + "sha1_base64": "7W758QxlhCKRwQaC9CiCSEJaqbs=" }, { "id": "Estonia_East", @@ -3582,8 +3582,8 @@ "affiliations": [ "Eesti" ], - "s": 61148059, - "sha1_base64": "uubimlVvDJ15oGSwn6ADrz85K3E=" + "s": 60943811, + "sha1_base64": "APJUfAI/rNZRAdcVf/HuibgrOFM=" } ] }, @@ -3608,8 +3608,8 @@ "Tigray", "ኢትዮጵያ Ethiopia" ], - "s": 100794272, - "sha1_base64": "Ei5u7KBwLc6UgdDlgW7NRn5f+gA=" + "s": 100360664, + "sha1_base64": "FrQHv76f5QOX7ayY1TsBGMZa5wI=" }, { "id": "Faroe Islands", @@ -3626,8 +3626,8 @@ "Territorial waters of Faroe Islands", "Vága sýsla" ], - "s": 10795968, - "sha1_base64": "XCp2ph/NXNAGvyP/9lyfSiTCvRo=" + "s": 10687128, + "sha1_base64": "tOZXYRKqeMjZWdO1ISDMAzuHvdg=" }, { "id": "Federated States of Micronesia", @@ -3642,8 +3642,8 @@ "Pohnpei", "Yap" ], - "s": 2594364, - "sha1_base64": "eop0FvjUHIF4ubtEv9++CpGPm4I=" + "s": 2572372, + "sha1_base64": "os2MhaShnG4d/vjxlJrgnLMtaEo=" }, { "id": "Fiji", @@ -3656,8 +3656,8 @@ "Northern", "Viti" ], - "s": 19569670, - "sha1_base64": "2uPw1iJhqv53RBrXQEWVM5T2Tcw=" + "s": 19571830, + "sha1_base64": "iQ7U2+9m/Heowz3Mtx4DQ5tEOcg=" }, { "id": "Finland", @@ -3671,8 +3671,8 @@ "Länsi-Suomi", "Suomi" ], - "s": 39877348, - "sha1_base64": "ztPWtrd6/4kKqrxUmsqSrI+Drjo=" + "s": 39782916, + "sha1_base64": "NJyYTbl7mgP5fBOYnQVgE/oUms4=" }, { "id": "Finland_Western Finland_Tampere", @@ -3683,8 +3683,8 @@ "Länsi-Suomi", "Suomi" ], - "s": 82073348, - "sha1_base64": "q0lNKAcAQZoCYGF9GtUY+ACKoTs=" + "s": 80961716, + "sha1_base64": "1BU8eUVWcc9W1ftQSDTMRH6An+A=" }, { "id": "Finland_Northern Finland", @@ -3695,8 +3695,8 @@ "Pohjois-Suomi", "Suomi" ], - "s": 99952662, - "sha1_base64": "dg5Q6x4HOy1K8aisCpoL62P/qGQ=" + "s": 99414606, + "sha1_base64": "hF0qssz/CJhQQVtdREqT+LK7o2E=" }, { "id": "Finland_Eastern Finland_North", @@ -3707,8 +3707,8 @@ "Itä-Suomi", "Suomi" ], - "s": 114910345, - "sha1_base64": "yy79MtLvnlDI8K2tWdJyoxs7Uzg=" + "s": 114671017, + "sha1_base64": "lQDyYg6/SLpTr2MwuMXOldfd3+U=" }, { "id": "Finland_Eastern Finland_South", @@ -3719,8 +3719,8 @@ "Itä-Suomi", "Suomi" ], - "s": 70041594, - "sha1_base64": "uBpbSx4MYPyvjIavRLihgCwXf+s=" + "s": 70265786, + "sha1_base64": "ktkjzw2zdXSKdQ7ctGS04fykMUw=" }, { "id": "Finland_Southern Finland_West", @@ -3732,8 +3732,8 @@ "Suomi", "Åland" ], - "s": 85041755, - "sha1_base64": "Vjmme3thqAghop8SQHJyun+E408=" + "s": 83897603, + "sha1_base64": "77WnbgSVaf6W4QIfWOqwREoYL20=" }, { "id": "Finland_Southern Finland_Helsinki", @@ -3744,8 +3744,8 @@ "Etelä-Suomi", "Suomi" ], - "s": 111090598, - "sha1_base64": "hbIl+roWR7I1IbMUjLnVXOWPOp4=" + "s": 110559350, + "sha1_base64": "Eyfs5jW6w9VhOF5wiBPPSdWVqSI=" }, { "id": "Finland_Southern Finland_Lappeenranta", @@ -3756,8 +3756,8 @@ "Etelä-Suomi", "Suomi" ], - "s": 53425802, - "sha1_base64": "y77rUboCGjyFtvMUsJohoc+IrBA=" + "s": 53673218, + "sha1_base64": "YEFL+Zhz5Ow1rOsjEq/aWpvsKGo=" } ] }, @@ -3776,8 +3776,8 @@ "Alsace-Champagne-Ardenne-Lorraine", "France" ], - "s": 66186787, - "sha1_base64": "sqjLkOR6jAC8OsI6/0t0W0uRyAQ=" + "s": 65963019, + "sha1_base64": "WZgYTc2wclsJfDLP65SAxd16i+c=" }, { "id": "France_Alsace_Haut-Rhin", @@ -3788,8 +3788,8 @@ "Alsace-Champagne-Ardenne-Lorraine", "France" ], - "s": 47782921, - "sha1_base64": "Wq7vGZF3kmEXKXC1fF4d3kHyXl0=" + "s": 47690921, + "sha1_base64": "h8t/IDxioCVCoAcH1BzcsyTDKUU=" } ] }, @@ -3805,8 +3805,8 @@ "Aquitaine-Limousin-Poitou-Charentes", "France" ], - "s": 51704201, - "sha1_base64": "HKqhoGhO4ZLz3zlM8b5i8ioD+jk=" + "s": 51224577, + "sha1_base64": "9TE5kInvUEdnD9hr7cY6D+RAW6k=" }, { "id": "France_Aquitaine_Gironde", @@ -3817,8 +3817,8 @@ "Aquitaine-Limousin-Poitou-Charentes", "France" ], - "s": 77953354, - "sha1_base64": "q3+MS2zTME9ebsEB7+3X5KWTKy8=" + "s": 77447130, + "sha1_base64": "9FuVoOv3OU8cqD3V/RXzlSjnLQo=" }, { "id": "France_Aquitaine_Landes", @@ -3829,8 +3829,8 @@ "Aquitaine-Limousin-Poitou-Charentes", "France" ], - "s": 40172447, - "sha1_base64": "fqOVWBssygjQuzJ/P+YsxmplH4M=" + "s": 40035399, + "sha1_base64": "HmXpMNBiTxljDoRuibdIlBg+zbc=" }, { "id": "France_Aquitaine_Lot-et-Garonne", @@ -3841,8 +3841,8 @@ "Aquitaine-Limousin-Poitou-Charentes", "France" ], - "s": 36274214, - "sha1_base64": "3B+v7Vsb3lnvZDamgk4nnuvcxXY=" + "s": 35923134, + "sha1_base64": "SLzH/YUxPyqBUuGWjnH1eRofXLY=" }, { "id": "France_Aquitaine_Pyrenees-Atlantiques", @@ -3853,8 +3853,8 @@ "Aquitaine-Limousin-Poitou-Charentes", "France" ], - "s": 65591426, - "sha1_base64": "U+qLEUOUyy/Bu3PsgIexsj2z78k=" + "s": 65224769, + "sha1_base64": "NesOLZhSk+lcuUZvnEi5sAtjmYg=" } ] }, @@ -3870,8 +3870,8 @@ "Auvergne-Rhône-Alpes", "France" ], - "s": 39058232, - "sha1_base64": "tUl7hyFNoT7OchNd0vMVoWhy554=" + "s": 38923288, + "sha1_base64": "3k5wD83GZgLXHwmmFlNz4LLBcog=" }, { "id": "France_Auvergne_Cantal", @@ -3882,8 +3882,8 @@ "Auvergne-Rhône-Alpes", "France" ], - "s": 25657100, - "sha1_base64": "Zr0S+Sb28ttXBGnzYapRBWLtqL0=" + "s": 25708700, + "sha1_base64": "+6UH/YU9Rb12HOpoPxvyKALZu2I=" }, { "id": "France_Auvergne_Haute-Loire", @@ -3894,8 +3894,8 @@ "Auvergne-Rhône-Alpes", "France" ], - "s": 35483309, - "sha1_base64": "uPYdNoe62W0cZXxFLH35HonsvaE=" + "s": 35428829, + "sha1_base64": "UNU9uCrIpCWJzFSwoYt7uIJXO2M=" }, { "id": "France_Auvergne_Puy-de-Dome", @@ -3906,8 +3906,8 @@ "Auvergne-Rhône-Alpes", "France" ], - "s": 55305842, - "sha1_base64": "P+ip95divInkOWAo/D/aRW/9n/M=" + "s": 55137114, + "sha1_base64": "k3AI6K6pHxnHfg8FJfhbW+HzM74=" } ] }, @@ -3925,8 +3925,8 @@ "Guernsey", "Jersey" ], - "s": 54646482, - "sha1_base64": "49bkT0vsWXbMilfFYDFNUFrRzOQ=" + "s": 54473586, + "sha1_base64": "zG+1ETKYHM44T0cEkIPQzEwCzUk=" }, { "id": "France_Brittany_Finistere", @@ -3937,8 +3937,8 @@ "Bretagne", "France" ], - "s": 75078090, - "sha1_base64": "lH6z6jyU59igZ8OiFxxohTaNDI0=" + "s": 74895170, + "sha1_base64": "WYygMaITUg1uWH9ZpCiQ7YV3SOs=" }, { "id": "France_Brittany_Ille-et-Vilaine", @@ -3950,8 +3950,8 @@ "France", "Jersey" ], - "s": 64177378, - "sha1_base64": "Qa4/4Oa4WbAqJ9ESEDpYBFa3vYU=" + "s": 64023306, + "sha1_base64": "/rItr9cMA9k3tSLRozztECBWzUI=" }, { "id": "France_Brittany_Morbihan", @@ -3962,8 +3962,8 @@ "Bretagne", "France" ], - "s": 55973547, - "sha1_base64": "Rh1XU8kZPL3xbqlNItCuTOi8JQw=" + "s": 55905595, + "sha1_base64": "rKxk6oH0co9QezGgklFUFSL4PRE=" } ] }, @@ -3979,8 +3979,8 @@ "Bourgogne-Franche-Comté", "France" ], - "s": 44762032, - "sha1_base64": "mPWMInI5v+sGkDaul9azaPSmPJ4=" + "s": 44489968, + "sha1_base64": "6ER3mT1s0/ooM1/b/iZOnx9OL9M=" }, { "id": "France_Burgundy_Nievre", @@ -3991,8 +3991,8 @@ "Bourgogne-Franche-Comté", "France" ], - "s": 28006790, - "sha1_base64": "yLO3pbq4wQPRadO3CxyiSWd8Trs=" + "s": 27809205, + "sha1_base64": "PfBvPOIjEcKG6vXA94RTRB0JD6w=" }, { "id": "France_Burgundy_Saone-et-Loire", @@ -4003,8 +4003,8 @@ "Bourgogne-Franche-Comté", "France" ], - "s": 95020036, - "sha1_base64": "/J1amxUZfFsU2VF+kqdY7uZkudQ=" + "s": 94925468, + "sha1_base64": "oyKOMKoTzXFAsIW6T2QwTttJchk=" }, { "id": "France_Burgundy_Yonne", @@ -4015,8 +4015,8 @@ "Bourgogne-Franche-Comté", "France" ], - "s": 43954057, - "sha1_base64": "6dp4eIoUSvbl82HYDiJe2NyUlL8=" + "s": 43882129, + "sha1_base64": "43AknYdN1kbeuvj0LIQzQEDKJg4=" } ] }, @@ -4032,8 +4032,8 @@ "Centre-Val de Loire", "France" ], - "s": 28198797, - "sha1_base64": "aW6VYtSWLwi7XZ/6Fudzff2ZxEA=" + "s": 28161261, + "sha1_base64": "wEbcoL1GSGqX9KETuErbMpilRUI=" }, { "id": "France_Centre-Val de Loire_Eure-et-Loir", @@ -4044,8 +4044,8 @@ "Centre-Val de Loire", "France" ], - "s": 29752676, - "sha1_base64": "cPk++mGTiHHODb3DxNWqssMJnA4=" + "s": 29712876, + "sha1_base64": "ibdWzWVoOktrFbUNpOj1Vv9fU08=" }, { "id": "France_Centre-Val de Loire_Indre", @@ -4056,8 +4056,8 @@ "Centre-Val de Loire", "France" ], - "s": 40457199, - "sha1_base64": "/h7JQqFnc7d5+JJFcjepuGT4FMo=" + "s": 40423887, + "sha1_base64": "vEI9ZWwHnJD1WgKugiS44TyHv9U=" }, { "id": "France_Centre-Val de Loire_Indre-et-Loire", @@ -4068,8 +4068,8 @@ "Centre-Val de Loire", "France" ], - "s": 57534859, - "sha1_base64": "Krebji4huzEcS8Otv5KjbBblaps=" + "s": 57094043, + "sha1_base64": "eDOrEdNlpbjlG0iLquN3rw33xMI=" }, { "id": "France_Centre-Val de Loire_Loir-et-Cher", @@ -4080,8 +4080,8 @@ "Centre-Val de Loire", "France" ], - "s": 39402647, - "sha1_base64": "08PZZl5KF7n8AqTCVrkpeUpsfX4=" + "s": 38881519, + "sha1_base64": "Kh9LMYsMQT/VflsveeNot5rBNd0=" }, { "id": "France_Centre-Val de Loire_Loiret", @@ -4092,8 +4092,8 @@ "Centre-Val de Loire", "France" ], - "s": 54905800, - "sha1_base64": "UD5VgnaHIM09cxrzvBU3IxUFmVQ=" + "s": 54741840, + "sha1_base64": "HNlSTQMf6tJmNHl2VhPPwjWMpKc=" } ] }, @@ -4106,8 +4106,8 @@ "Alsace-Champagne-Ardenne-Lorraine", "France" ], - "s": 118032348, - "sha1_base64": "pI6G2t0FONBNAc7KAnoNgbmmLS8=" + "s": 117478588, + "sha1_base64": "cRxLbMDRi7S+cbksIHhLVhRa3lU=" }, { "id": "France_Corsica", @@ -4121,8 +4121,8 @@ "Italia", "Monaco" ], - "s": 31286526, - "sha1_base64": "BFyavRRonJgDhB6vzWa1sj4GRT0=" + "s": 31086174, + "sha1_base64": "6fAWP5WmMzpwC75LrIGgzA7ONPc=" }, { "id": "France_Free County_North", @@ -4133,8 +4133,8 @@ "Bourgogne-Franche-Comté", "France" ], - "s": 66582803, - "sha1_base64": "xp/tAXJaqSjjMnYIWpAadLIbN5w=" + "s": 66171187, + "sha1_base64": "OOcGi15Awofyjek7mcIWJ5sAofA=" }, { "id": "France_Free County_South", @@ -4145,8 +4145,8 @@ "Bourgogne-Franche-Comté", "France" ], - "s": 55826539, - "sha1_base64": "NJyqjVOqw51+qJjDgu2k0Dk0tcM=" + "s": 55697451, + "sha1_base64": "j6wxtNj5dmrktH4+MxSGt6t7ra0=" }, { "id": "France_French Guiana", @@ -4157,8 +4157,8 @@ "France", "Guyane" ], - "s": 24601977, - "sha1_base64": "jU+N9BacmiuDgAKcD0h0637TlJ0=" + "s": 24554153, + "sha1_base64": "NnR5QddulfBuVOf9MRx0OA9cxPg=" }, { "id": "France_Ile-de-France", @@ -4172,8 +4172,8 @@ "France", "Île-de-France" ], - "s": 43342022, - "sha1_base64": "wkHTl0w7VKjBCYbD5+PJPAq/CV4=" + "s": 43240558, + "sha1_base64": "f64+OFqdxDY/py1LgPgL5DhY8jY=" }, { "id": "France_Ile-de-France_Hauts-de-Seine", @@ -4184,8 +4184,8 @@ "France", "Île-de-France" ], - "s": 23714046, - "sha1_base64": "56Tms6LtspM1Qn2XqOd4W/YP/do=" + "s": 23607996, + "sha1_base64": "nfx6wRxecb9rdNYDULniFxXmQDY=" }, { "id": "France_Ile-de-France_Paris", @@ -4196,8 +4196,8 @@ "France", "Île-de-France" ], - "s": 52083356, - "sha1_base64": "RyUtLVg9V6lfslqXHX3H3KcpKD8=" + "s": 51926952, + "sha1_base64": "6whRqigL6p58sEpBuTuDNsncHyI=" }, { "id": "France_Ile-de-France_Seine-Saint-Denis", @@ -4208,8 +4208,8 @@ "France", "Île-de-France" ], - "s": 25883898, - "sha1_base64": "rkL3LXqY5dUpm2pY3O2Cb6N6A7Q=" + "s": 25797682, + "sha1_base64": "d/AyI5UBJmMp1JdkiFGGY60gXVM=" }, { "id": "France_Ile-de-France_Seine-et-Marne", @@ -4220,8 +4220,8 @@ "France", "Île-de-France" ], - "s": 60207097, - "sha1_base64": "Lm/VBNm2xxzwN3lMWvBD1AbNmFk=" + "s": 60138313, + "sha1_base64": "ey3b5QytDyWm4HSdJAvUfAP2cBQ=" }, { "id": "France_Ile-de-France_Val-dOise", @@ -4232,8 +4232,8 @@ "France", "Île-de-France" ], - "s": 32058048, - "sha1_base64": "iU8MHkLxNvwe52N9P2PKEA4YWoc=" + "s": 31967936, + "sha1_base64": "DUiHqLGKQmtpvSGMZL+V1eZYI8s=" }, { "id": "France_Ile-de-France_Val-de-Marne", @@ -4244,8 +4244,8 @@ "France", "Île-de-France" ], - "s": 24929050, - "sha1_base64": "l0uc3GK3/VB+Hi/cpHCfN/q7UWk=" + "s": 24848890, + "sha1_base64": "Rtdq83eOWC8NjPXlmyy2xqDwfeg=" }, { "id": "France_Ile-de-France_Yvelines", @@ -4256,8 +4256,8 @@ "France", "Île-de-France" ], - "s": 47776650, - "sha1_base64": "jvHzSb5M33U4p71xTO/WpbzJxX4=" + "s": 47701538, + "sha1_base64": "xW/0w7/QyYjQTyBdlYAeSkhBwTk=" } ] }, @@ -4273,8 +4273,8 @@ "France", "Languedoc-Roussillon-Midi-Pyrénées" ], - "s": 48075024, - "sha1_base64": "ozjf02ua1kgWE5Ic8Tyy4lZ4SRo=" + "s": 47812928, + "sha1_base64": "Bvj7xtcaQU/j/J8DNeYcOmm0cuU=" }, { "id": "France_Languedoc-Roussillon_Gard", @@ -4285,8 +4285,8 @@ "France", "Languedoc-Roussillon-Midi-Pyrénées" ], - "s": 53294081, - "sha1_base64": "GfH8HmL3jYM/1bjdMpgbKnV76i8=" + "s": 53224785, + "sha1_base64": "24swzaaAEe5lOiQoj/zNZAgvuoQ=" }, { "id": "France_Languedoc-Roussillon_Herault", @@ -4297,8 +4297,8 @@ "France", "Languedoc-Roussillon-Midi-Pyrénées" ], - "s": 76486835, - "sha1_base64": "R++dWri+Yvx5Kw9CxMAs0gcyLPc=" + "s": 76288795, + "sha1_base64": "uLY0ew39J2+ZVj0RLQTP3LOCFTk=" }, { "id": "France_Languedoc-Roussillon_Lozere", @@ -4309,8 +4309,8 @@ "France", "Languedoc-Roussillon-Midi-Pyrénées" ], - "s": 22853970, - "sha1_base64": "+gL3D9n/xqjWEUp8RdqJDP2KnSo=" + "s": 22825034, + "sha1_base64": "xvOOKmCnb59dRHUTjxAA7Vk578Y=" }, { "id": "France_Languedoc-Roussillon_Pyrenees-Orientales", @@ -4321,8 +4321,8 @@ "France", "Languedoc-Roussillon-Midi-Pyrénées" ], - "s": 42582967, - "sha1_base64": "HxvtCrV0kfgdvQs2oyylD7XgU7Q=" + "s": 42420167, + "sha1_base64": "af5vcwXQNcjpScivh+vHQqMXW6A=" } ] }, @@ -4335,8 +4335,8 @@ "Aquitaine-Limousin-Poitou-Charentes", "France" ], - "s": 97546773, - "sha1_base64": "joloScKC9e35jo3s9450KfPkMfw=" + "s": 96991405, + "sha1_base64": "NQBiSEvQiSJhyEaZHOe13vsMbiM=" }, { "id": "France_Lorraine", @@ -4350,8 +4350,8 @@ "Alsace-Champagne-Ardenne-Lorraine", "France" ], - "s": 49544778, - "sha1_base64": "r6dqU/PnW+LxB64oaWiVUfI3ESk=" + "s": 49465114, + "sha1_base64": "UvQ9o+2+B1B1l77bSgD6BzsyQjE=" }, { "id": "France_Lorraine_Meuse", @@ -4362,8 +4362,8 @@ "Alsace-Champagne-Ardenne-Lorraine", "France" ], - "s": 24144911, - "sha1_base64": "dnsXimURXrjZiSXMT+5U/ZznlhM=" + "s": 24109215, + "sha1_base64": "08dc1mKgGezdasr7lCKYfMVYsT4=" }, { "id": "France_Lorraine_Moselle", @@ -4374,8 +4374,8 @@ "Alsace-Champagne-Ardenne-Lorraine", "France" ], - "s": 64323811, - "sha1_base64": "Ir3whpDUBwWZ2Nz0axXmxMJzeZU=" + "s": 64246675, + "sha1_base64": "mZRiuM4OWqpOLCOZGmM9ULHj5Xg=" }, { "id": "France_Lorraine_Vosges", @@ -4386,8 +4386,8 @@ "Alsace-Champagne-Ardenne-Lorraine", "France" ], - "s": 43279393, - "sha1_base64": "5nisHnh+nr9jRij3TkplQC3Sgf4=" + "s": 43203561, + "sha1_base64": "1wVrB9HUDxPm0deUvQtTSeOgY7s=" } ] }, @@ -4403,8 +4403,8 @@ "France", "Normandie" ], - "s": 52992651, - "sha1_base64": "G3a0SVBH9p4ZhQav5NF0DZuwZQo=" + "s": 52643763, + "sha1_base64": "YYwvEjZKtfzFFRnO1z/WYukt8G0=" }, { "id": "France_Lower Normandy_Manche", @@ -4416,8 +4416,8 @@ "Jersey", "Normandie" ], - "s": 39872560, - "sha1_base64": "JDrjKSKL2h1NX1WQ8f449m2+Qtk=" + "s": 39696944, + "sha1_base64": "B0zCtb6HadYObPZbVzQTy7Kbj88=" }, { "id": "France_Lower Normandy_Orne", @@ -4428,8 +4428,8 @@ "France", "Normandie" ], - "s": 30217509, - "sha1_base64": "VEJ6kmSip5kSiY8bhRqzANszCPQ=" + "s": 30179213, + "sha1_base64": "hJ7k90+DazAeLx+rH7wQToXIoDA=" } ] }, @@ -4445,8 +4445,8 @@ "France", "Languedoc-Roussillon-Midi-Pyrénées" ], - "s": 29967117, - "sha1_base64": "xsW2gc9t5auilbEoFeDwNkKM0dQ=" + "s": 29929701, + "sha1_base64": "ejQZMMIawwErFsxNqGXB9CbAqaE=" }, { "id": "France_Midi-Pyrenees_Aveyron", @@ -4457,8 +4457,8 @@ "France", "Languedoc-Roussillon-Midi-Pyrénées" ], - "s": 54886578, - "sha1_base64": "Rh5+zx3GseUowyt2pd60t2seOPY=" + "s": 54711610, + "sha1_base64": "8fSZIApLV54awqz0Vpy8ora8Vrk=" }, { "id": "France_Midi-Pyrenees_Gers", @@ -4469,8 +4469,8 @@ "France", "Languedoc-Roussillon-Midi-Pyrénées" ], - "s": 37914214, - "sha1_base64": "KwwCNn7Z2MiiAz+Gd05tiY6si80=" + "s": 37874638, + "sha1_base64": "XnCMzZ9LOcOmeI5n9uRre0eK7jY=" }, { "id": "France_Midi-Pyrenees_Haute-Garonne", @@ -4481,8 +4481,8 @@ "France", "Languedoc-Roussillon-Midi-Pyrénées" ], - "s": 80770530, - "sha1_base64": "2aDWeYbpmxF525Y7ySEUxV9SPtE=" + "s": 80534466, + "sha1_base64": "8KWUzWFZrZ4KfpaqbhEg8qu5Hws=" }, { "id": "France_Midi-Pyrenees_Hautes-Pyrenees", @@ -4493,8 +4493,8 @@ "France", "Languedoc-Roussillon-Midi-Pyrénées" ], - "s": 47691656, - "sha1_base64": "oIu0NEu+pt3pZXGiowkdsWJXZaI=" + "s": 47476903, + "sha1_base64": "BrtbQMz6L8Ttx15TEM13l2LD34E=" }, { "id": "France_Midi-Pyrenees_Lot", @@ -4505,8 +4505,8 @@ "France", "Languedoc-Roussillon-Midi-Pyrénées" ], - "s": 36195055, - "sha1_base64": "TMTYvHwADAI5J6sdT0QeKuyQkDM=" + "s": 35919247, + "sha1_base64": "4o0goljcWfYGNROB4ihMYNO9Iws=" }, { "id": "France_Midi-Pyrenees_Tarn", @@ -4517,8 +4517,8 @@ "France", "Languedoc-Roussillon-Midi-Pyrénées" ], - "s": 36413512, - "sha1_base64": "/fHaS8dzNbNIpksQ41G7ErnocoY=" + "s": 36138471, + "sha1_base64": "TUqnc2XjtdS2KAIF3uVDB2wsJSE=" }, { "id": "France_Midi-Pyrenees_Tarn-et-Garonne", @@ -4529,8 +4529,8 @@ "France", "Languedoc-Roussillon-Midi-Pyrénées" ], - "s": 30644534, - "sha1_base64": "ViLmOZV/0FKPWm2CvhgJxqZ+OQA=" + "s": 30306934, + "sha1_base64": "V99dixuXaaXYlP9aEJwaMq8Y9BM=" } ] }, @@ -4551,8 +4551,8 @@ "France, Nouvelle-Calédonie, Île de Walpole (eaux territoriales)", "France, Nouvelle-Calédonie, Îles Loyauté (eaux territoriales)" ], - "s": 16777552, - "sha1_base64": "XdodjgkL6CUbHxigcQsq1GN4k/Y=" + "s": 16732808, + "sha1_base64": "wzIHtltrbrdeMXW12kPBdP4b3Xs=" }, { "id": "France_Nord-Pas-de-Calais", @@ -4566,8 +4566,8 @@ "France", "Nord-Pas-de-Calais-Picardie" ], - "s": 48429011, - "sha1_base64": "1KDQxYs8KVJryN9VIpnS5YT8f00=" + "s": 48231210, + "sha1_base64": "4wjCHRyGDMWz1OU+R2Y2VcP7cZc=" }, { "id": "France_Nord-Pas-de-Calais_Lille", @@ -4578,8 +4578,8 @@ "France", "Nord-Pas-de-Calais-Picardie" ], - "s": 57993066, - "sha1_base64": "wV1cpirTqFQyeBTjmDDo4BJaNis=" + "s": 57807434, + "sha1_base64": "rxFCmqYAns4FDs7MijZgTEBRTDo=" }, { "id": "France_Nord-Pas-de-Calais_Pas-de-Calais", @@ -4592,8 +4592,8 @@ "Nord-Pas-de-Calais-Picardie", "United Kingdom" ], - "s": 76345259, - "sha1_base64": "xa4orhUJ3VWbPxP8lapNoD9cWcA=" + "s": 76043011, + "sha1_base64": "80bjSLdKE5p+lKGecS8lAlC6gX8=" } ] }, @@ -4609,8 +4609,8 @@ "France", "Pays de la Loire" ], - "s": 51487113, - "sha1_base64": "9gRRDYXTi0hgspKTknAKU1mNYXc=" + "s": 51362441, + "sha1_base64": "qg3FZkeCMUu8HHmmCRJB+TOQKFk=" }, { "id": "France_Pays de la Loire_Loire-Atlantique_Saint-Nazaire", @@ -4621,8 +4621,8 @@ "France", "Pays de la Loire" ], - "s": 29489477, - "sha1_base64": "DzoG16SrGC5KAYTXV7ZfSmhMOyY=" + "s": 29459629, + "sha1_base64": "w6zTUcvl5oVmxE6aD0ihYKV6m9g=" }, { "id": "France_Pays de la Loire_Maine-et-Loire", @@ -4633,8 +4633,8 @@ "France", "Pays de la Loire" ], - "s": 59333339, - "sha1_base64": "hlKh+xhhLf/rrgxMj4FvVYFyDTk=" + "s": 59091891, + "sha1_base64": "McUbVHok0fwD6IL7UDp/1n94iQQ=" }, { "id": "France_Pays de la Loire_Mayenne", @@ -4645,8 +4645,8 @@ "France", "Pays de la Loire" ], - "s": 27461277, - "sha1_base64": "p9olignJqSPKYLZunobkg14W9t4=" + "s": 27284493, + "sha1_base64": "E7mAuR6z4sdHtMXESPhdY0AtIZc=" }, { "id": "France_Pays de la Loire_Sarthe", @@ -4657,8 +4657,8 @@ "France", "Pays de la Loire" ], - "s": 44361721, - "sha1_base64": "04+UwHEg3ynqac9xaiMt2FGvTJE=" + "s": 44310761, + "sha1_base64": "bjPKVOvNB5Pf3Ro89zpNPo8OVHo=" }, { "id": "France_Pays de la Loire_Vendee", @@ -4669,8 +4669,8 @@ "France", "Pays de la Loire" ], - "s": 70141674, - "sha1_base64": "RT46KQ1N3PeZicyCmktohrZx1S8=" + "s": 70017762, + "sha1_base64": "GxvU8gS+VuNjczE/436mGHFxr60=" } ] }, @@ -4686,8 +4686,8 @@ "France", "Nord-Pas-de-Calais-Picardie" ], - "s": 47610345, - "sha1_base64": "0navNtSjS+dyHeePNDZBqpdxkfk=" + "s": 47437057, + "sha1_base64": "dD1v5MTQYpKvW0Zh5li1QhPmfPM=" }, { "id": "France_Picardy_Oise", @@ -4698,8 +4698,8 @@ "France", "Nord-Pas-de-Calais-Picardie" ], - "s": 59304521, - "sha1_base64": "hO8Uz9mHH1yrsfhswJ/e9A40WBA=" + "s": 59095433, + "sha1_base64": "/NVeOhL/CoKmIDmjShVUECC+L/0=" }, { "id": "France_Picardy_Somme", @@ -4710,8 +4710,8 @@ "France", "Nord-Pas-de-Calais-Picardie" ], - "s": 44660824, - "sha1_base64": "CgYMox7uyigtE7lrrJ4mmpKvnos=" + "s": 44528272, + "sha1_base64": "yJQvqeU0OyQUwWMnaLoJbH9Eozw=" } ] }, @@ -4727,8 +4727,8 @@ "Aquitaine-Limousin-Poitou-Charentes", "France" ], - "s": 41297639, - "sha1_base64": "IunEnPbN2zzTEwvdor4uTxORXM0=" + "s": 41238759, + "sha1_base64": "k4DuTpj6Zh8aWM9kZmRllApZyB4=" }, { "id": "France_Poitou-Charentes_Charente-Maritime", @@ -4739,8 +4739,8 @@ "Aquitaine-Limousin-Poitou-Charentes", "France" ], - "s": 67857467, - "sha1_base64": "v1maTNynKlvaAcehdnU44OvA3Lk=" + "s": 67519883, + "sha1_base64": "7/YEzzoehkHwE8qeh3FwhrWL/B4=" }, { "id": "France_Poitou-Charentes_Deux-Sevres", @@ -4751,8 +4751,8 @@ "Aquitaine-Limousin-Poitou-Charentes", "France" ], - "s": 54040512, - "sha1_base64": "+DVeWX1EjVYBE7RATCddfG/a0iE=" + "s": 53975616, + "sha1_base64": "7oCS0qlTmZev3aMkz2mI7Z+tkOA=" }, { "id": "France_Poitou-Charentes_Vienne", @@ -4763,8 +4763,8 @@ "Aquitaine-Limousin-Poitou-Charentes", "France" ], - "s": 49103841, - "sha1_base64": "EvonzYhD9ajcTiOYNGxzFuY1JpI=" + "s": 48946889, + "sha1_base64": "7SY8qOxlkK4l2PH5994T1dCEkjI=" } ] }, @@ -4780,8 +4780,8 @@ "France", "Provence-Alpes-Côte d'Azur" ], - "s": 27788360, - "sha1_base64": "rjrlXstqeURhxXP3QikTi7Ny3JE=" + "s": 27632272, + "sha1_base64": "bKsrhzh2UppfE7Zpz+P2XX9Yxa8=" }, { "id": "France_Provence-Alpes-Cote dAzur_Bouches-du-Rhone", @@ -4792,8 +4792,8 @@ "France", "Provence-Alpes-Côte d'Azur" ], - "s": 72963793, - "sha1_base64": "GKMfyrg8sBOqtC3o3i5Oe22rTU0=" + "s": 72672161, + "sha1_base64": "sY7asP5MEqStBrdSFHLfGZm2q0A=" }, { "id": "France_Provence-Alpes-Cote dAzur_Hautes-Alpes", @@ -4804,8 +4804,8 @@ "France", "Provence-Alpes-Côte d'Azur" ], - "s": 25408334, - "sha1_base64": "H4FOBxVrLTogVeljDpujXNqd42g=" + "s": 25309726, + "sha1_base64": "dr8P1spxxOX7JvImAfnu4Y6C448=" }, { "id": "France_Provence-Alpes-Cote dAzur_Maritime Alps", @@ -4817,8 +4817,8 @@ "France", "Provence-Alpes-Côte d'Azur" ], - "s": 51290490, - "sha1_base64": "jq2FNaRymYIGekpxlIrRt+fvw7w=" + "s": 51173281, + "sha1_base64": "4YFp44osLgIFLHQqt7ly6EvlNhU=" }, { "id": "France_Provence-Alpes-Cote dAzur_Var", @@ -4829,8 +4829,8 @@ "France", "Provence-Alpes-Côte d'Azur" ], - "s": 60179490, - "sha1_base64": "rRRedK0XsYBUTmP0sdqSOAquz2g=" + "s": 60034034, + "sha1_base64": "RYKjUfSAxSNDyATOigHEOI8XxY8=" }, { "id": "France_Provence-Alpes-Cote dAzur_Vaucluse", @@ -4841,8 +4841,8 @@ "France", "Provence-Alpes-Côte d'Azur" ], - "s": 47367642, - "sha1_base64": "MSkEcLmii1c/sfVpbPcOgaxkCPg=" + "s": 47025473, + "sha1_base64": "0OW9PoqlvwpP0O2Sk/E3a7urFRw=" } ] }, @@ -4858,8 +4858,8 @@ "Auvergne-Rhône-Alpes", "France" ], - "s": 53931425, - "sha1_base64": "62ecowZKV/env0EzJLjF0R0to/k=" + "s": 53735817, + "sha1_base64": "lcYZx7u7RLUD30s4rfpZFX0rFr4=" }, { "id": "France_Rhone-Alpes_Ardeche", @@ -4870,8 +4870,8 @@ "Auvergne-Rhône-Alpes", "France" ], - "s": 46873296, - "sha1_base64": "lFEbEJCJqB0RrIuoLhkG/faPj+s=" + "s": 46744160, + "sha1_base64": "MmESOzz3mp5lvdnFzkiFG9gbQY0=" }, { "id": "France_Rhone-Alpes_Drome", @@ -4883,8 +4883,8 @@ "France", "Provence-Alpes-Côte d'Azur" ], - "s": 52303424, - "sha1_base64": "KlHHbfn2pYPetQeQbbP5os/CI/s=" + "s": 51741104, + "sha1_base64": "8dh9ZJLOHB5Pv8ckF6EeQpV+8x0=" }, { "id": "France_Rhone-Alpes_Haute-Savoie", @@ -4895,8 +4895,8 @@ "Auvergne-Rhône-Alpes", "France" ], - "s": 63680842, - "sha1_base64": "mXrX0PZOROLTonmYux4W/RHMZBw=" + "s": 63544330, + "sha1_base64": "JGIDoMtEHlSz8h6FMpECq1e0HPQ=" }, { "id": "France_Rhone-Alpes_Isere", @@ -4907,8 +4907,8 @@ "Auvergne-Rhône-Alpes", "France" ], - "s": 80382075, - "sha1_base64": "GE0KqgAMf3NToxw8z/e5qcab9D4=" + "s": 79932283, + "sha1_base64": "wugIds6wCqzgXCG0v9UYxqI/CoI=" }, { "id": "France_Rhone-Alpes_Loire", @@ -4919,8 +4919,8 @@ "Auvergne-Rhône-Alpes", "France" ], - "s": 62986232, - "sha1_base64": "wmw1x0Z2/xyV9ZRdGkIdFBSo6Uk=" + "s": 62325280, + "sha1_base64": "msNZ9FWuRkq1F/lA4r6dSljWAA4=" }, { "id": "France_Rhone-Alpes_Rhone", @@ -4931,8 +4931,8 @@ "Auvergne-Rhône-Alpes", "France" ], - "s": 80324395, - "sha1_base64": "1b1uBdHnQkg+uzvgzHj7mbxCP9A=" + "s": 79373163, + "sha1_base64": "iRQNQuPtCuoSHHqS0Ib6nTDXek8=" }, { "id": "France_Rhone-Alpes_Savoie", @@ -4943,8 +4943,8 @@ "Auvergne-Rhône-Alpes", "France" ], - "s": 50488097, - "sha1_base64": "46iJRnC90Jm74MDhRaBmiie6Hmk=" + "s": 50058201, + "sha1_base64": "kQ+64U5nLfX0HKeg3Zi8m057GT4=" } ] }, @@ -4968,8 +4968,8 @@ "La Réunion", "Mayotte" ], - "s": 39322917, - "sha1_base64": "3CiojOuafKRAH1pH8lO7+6WN6A4=" + "s": 39360317, + "sha1_base64": "l01f/rZyd+8xlF39w9bQq5EfCCE=" }, { "id": "France_Upper Normandy", @@ -4980,8 +4980,8 @@ "France", "Normandie" ], - "s": 89361411, - "sha1_base64": "U7doc4IXaCTQJZDxhr80+4l63BY=" + "s": 89072699, + "sha1_base64": "YrMVGGrGkQtthyMuGwwafma81Xk=" }, { "id": "French Polynesia", @@ -4999,8 +4999,8 @@ "France, Polynésie française, Îles du Vent (eaux territoriales)", "Polynésie française, Îles du Vent (eaux territoriales)" ], - "s": 18213709, - "sha1_base64": "YWIuHW773naH7aahPaK//VnVRy0=" + "s": 18136461, + "sha1_base64": "KvV48RlRMhp6yp5R34gZPxN42r8=" }, { "id": "Wallis and Futuna", @@ -5011,8 +5011,8 @@ "France", "France, Wallis-et-Futuna (eaux territoriales)" ], - "s": 955979, - "sha1_base64": "Gh0qMiOjL1UmQclrv4RKLhNO4OU=" + "s": 955971, + "sha1_base64": "u32nO82P0P6sQpwE5oz823cXGp0=" } ] }, @@ -5033,8 +5033,8 @@ "Ogooué-Lolo", "Woleu-Ntem" ], - "s": 28814683, - "sha1_base64": "PJ59porVT8OwB/uBnzSCtDl2RnY=" + "s": 28723931, + "sha1_base64": "f303IPxUkOPIfie5+ygHqb4jKXA=" }, { "id": "Georgia Region", @@ -5058,8 +5058,8 @@ "აჭარის ავტონომიური რესპუბლიკა", "საქართველო" ], - "s": 82878068, - "sha1_base64": "SnJ4lyQIDmFxGktMTzMwrzdWR6Q=" + "s": 82283172, + "sha1_base64": "N+iF53+Y0Y1XKSbqlS5ltFgEIII=" }, { "id": "Abkhazia", @@ -5071,8 +5071,8 @@ "აფხაზეთის ავტონომიური რესპუბლიკა - Аҧсны Автономтә Республика", "საქართველო" ], - "s": 12816457, - "sha1_base64": "nw5rsmbDXnsL7qQAoTuvFUaKM8o=" + "s": 12130615, + "sha1_base64": "cXGZbU/HZwZ+/Adi651mVdCiIY4=" }, { "id": "South Ossetia", @@ -5084,8 +5084,8 @@ "Хуссар Ирыстон - Южная Осетия", "საქართველო" ], - "s": 12342577, - "sha1_base64": "mr/9lSzG6RUwDpscE2HaPRcSxSc=" + "s": 12337617, + "sha1_base64": "CegCLkqS2IgSskkilGLQ7lKrORY=" } ] }, @@ -5106,8 +5106,8 @@ "Schaffhausen", "Zürich" ], - "s": 134435726, - "sha1_base64": "3/AghTxxLeYS6TBiDrY+sTcbVto=" + "s": 133999670, + "sha1_base64": "0NroRmHoj5D0SGsx2pAMlttGxKI=" }, { "id": "Germany_Baden-Wurttemberg_Regierungsbezirk Karlsruhe", @@ -5118,8 +5118,8 @@ "Baden-Württemberg", "Deutschland" ], - "s": 124554216, - "sha1_base64": "Mntts4c2WWqhiXtnO186b7o8ACY=" + "s": 124232208, + "sha1_base64": "Bpg0Kgji+uW1R9+38KJXBvMpcqc=" }, { "id": "Germany_Baden-Wurttemberg_Regierungsbezirk Stuttgart_Heilbronn", @@ -5130,8 +5130,8 @@ "Baden-Württemberg", "Deutschland" ], - "s": 55158844, - "sha1_base64": "g8+lxolEnL7AV+yJ0q7rIkbaiv4=" + "s": 55085732, + "sha1_base64": "2sHfIP7qQMFzPBhfGCt2fUOkcI8=" }, { "id": "Germany_Baden-Wurttemberg_Regierungsbezirk Stuttgart_Stuttgart", @@ -5142,8 +5142,8 @@ "Baden-Württemberg", "Deutschland" ], - "s": 122880695, - "sha1_base64": "4N+Q5CRkEVmS312DjVG6DfmllCY=" + "s": 122460607, + "sha1_base64": "IgcAcyMJjRit+GNRmB+CoR6rp4Y=" }, { "id": "Germany_Baden-Wurttemberg_Regierungsbezirk Tubingen", @@ -5154,8 +5154,8 @@ "Baden-Württemberg", "Deutschland" ], - "s": 99347502, - "sha1_base64": "9HRtwZbmp3gbDGNluQ2s7KjtWqc=" + "s": 98993662, + "sha1_base64": "rsBuE7k0zy+gab14Cw/ogVfqaRQ=" } ] }, @@ -5168,8 +5168,8 @@ "Berlin", "Deutschland" ], - "s": 83485357, - "sha1_base64": "4V6z2z5AJParw6bYxU6cRAvAKOE=" + "s": 83145429, + "sha1_base64": "yQSM0Cxitp6gByd5SgVw0XGr198=" }, { "id": "Germany_Brandenburg_North", @@ -5180,8 +5180,8 @@ "Brandenburg", "Deutschland" ], - "s": 87753179, - "sha1_base64": "iCySHBEwV0f/+jsd39UESA7+uzo=" + "s": 87580139, + "sha1_base64": "OLKmihfw/2gFmefk230Tr8RlNSM=" }, { "id": "Germany_Brandenburg_South", @@ -5192,8 +5192,8 @@ "Brandenburg", "Deutschland" ], - "s": 84389224, - "sha1_base64": "Z5R5pILN+UnPMmBmXA+nywe4nQg=" + "s": 84137856, + "sha1_base64": "BggQnyQBaC2QOZm1DPYhhK9Sa1Y=" }, { "id": "Germany_Free State of Bavaria", @@ -5207,8 +5207,8 @@ "Bayern", "Deutschland" ], - "s": 76587411, - "sha1_base64": "YE5c53zerSmF/ExbUrDGBssl2eA=" + "s": 76299963, + "sha1_base64": "UjrJk05u/o/3lODYUaxkWQ39bxk=" }, { "id": "Germany_Free State of Bavaria_Lower Franconia", @@ -5219,8 +5219,8 @@ "Bayern", "Deutschland" ], - "s": 88436709, - "sha1_base64": "U8O2X+zCCdkCJsqPYj4ZHVwGnUA=" + "s": 88155573, + "sha1_base64": "M0KtIItkRYTpsGdxdXKSAwdQYTc=" }, { "id": "Germany_Free State of Bavaria_Middle Franconia", @@ -5231,8 +5231,8 @@ "Bayern", "Deutschland" ], - "s": 77658794, - "sha1_base64": "IMkFAZMHYBInTgcwyRGy0BEuGxc=" + "s": 77355578, + "sha1_base64": "y/R7fU2qx+2rMaVIgEGrthjblqc=" }, { "id": "Germany_Free State of Bavaria_Swabia", @@ -5243,8 +5243,8 @@ "Bayern", "Deutschland" ], - "s": 108340207, - "sha1_base64": "vjpi8+s4uQxI4ZvqYEwODxs+Zdg=" + "s": 107966039, + "sha1_base64": "4YMGlO7XMTNIbDZHTFPMCMff3QE=" }, { "id": "Germany_Free State of Bavaria_Upper Bavaria_East", @@ -5255,8 +5255,8 @@ "Bayern", "Deutschland" ], - "s": 76825289, - "sha1_base64": "VWB+jKckWqALVhy0DdEPM/8q100=" + "s": 76540153, + "sha1_base64": "mIufNZPG6awTHm3oFy7ReVTDtHg=" }, { "id": "Germany_Free State of Bavaria_Upper Bavaria_Ingolstadt", @@ -5267,8 +5267,8 @@ "Bayern", "Deutschland" ], - "s": 36014693, - "sha1_base64": "rY8n4M5qcWYRTMwx9SPYkJVogsw=" + "s": 35895101, + "sha1_base64": "uz9kwlbRz627cpWzQGOsmcJBvdI=" }, { "id": "Germany_Free State of Bavaria_Upper Bavaria_Munchen", @@ -5279,8 +5279,8 @@ "Bayern", "Deutschland" ], - "s": 62844999, - "sha1_base64": "KJ/y8eRV33L/iUjhw//8LRk8o4Y=" + "s": 62583175, + "sha1_base64": "gWDoZesAxETjDnZTAAIUjmST6mU=" }, { "id": "Germany_Free State of Bavaria_Upper Bavaria_South", @@ -5291,8 +5291,8 @@ "Bayern", "Deutschland" ], - "s": 32838617, - "sha1_base64": "UhkIHc8IHijJtjO20qAy9n4UcdQ=" + "s": 32736129, + "sha1_base64": "dpcskf/v9fubi49TYTm34l7k1tQ=" }, { "id": "Germany_Free State of Bavaria_Upper Franconia", @@ -5303,8 +5303,8 @@ "Bayern", "Deutschland" ], - "s": 75477242, - "sha1_base64": "HnIRdYOWfLjwJIaOZKV8QUOrjKY=" + "s": 75223738, + "sha1_base64": "kVZFXcdpETbAM4AhOb2cxN9/4qs=" }, { "id": "Germany_Free State of Bavaria_Upper Palatinate", @@ -5315,8 +5315,8 @@ "Bayern", "Deutschland" ], - "s": 70912891, - "sha1_base64": "lGFTF9tiY/ukPL8jF/bEu8PDJqc=" + "s": 70538962, + "sha1_base64": "wR3efQqARPi5kjFnLvINFxBZ/qE=" } ] }, @@ -5329,8 +5329,8 @@ "Deutschland", "Hamburg" ], - "s": 39056162, - "sha1_base64": "SCCw680GFPIbPRzlxEwTVP2cquE=" + "s": 38916498, + "sha1_base64": "+ROmcupDAS+Mex8Hyrj/Bpzr934=" }, { "id": "Germany_Hesse", @@ -5344,8 +5344,8 @@ "Deutschland", "Hessen" ], - "s": 137201047, - "sha1_base64": "c1FFeCtXdIFnXuipBP9LN0ULcd4=" + "s": 136844679, + "sha1_base64": "hCwwbt9xrfqQjpaPGyvipyZVpLA=" }, { "id": "Germany_Hesse_Regierungsbezirk Giessen", @@ -5356,8 +5356,8 @@ "Deutschland", "Hessen" ], - "s": 58990883, - "sha1_base64": "NBBiCDnEBY4N+LWg6l5LEjmzIu0=" + "s": 58870035, + "sha1_base64": "tZqvJxOY3axtKP+cUB2kQO9TlfY=" }, { "id": "Germany_Hesse_Regierungsbezirk Kassel", @@ -5368,8 +5368,8 @@ "Deutschland", "Hessen" ], - "s": 89206789, - "sha1_base64": "MpW0KBywe4dVmwAj9GrInHe+4YM=" + "s": 88815781, + "sha1_base64": "ROif9PW1wxckPQ6rj3ZPNiJPGX0=" } ] }, @@ -5388,8 +5388,8 @@ "Hamburg", "Niedersachsen" ], - "s": 63593816, - "sha1_base64": "x3hmwIQN8t4PfA4U2gtt/1hpw/0=" + "s": 63742288, + "sha1_base64": "9cXKKcPiHvaPKgHb+aVJhEqX4MM=" }, { "id": "Germany_Lower Saxony_Bremen_Munster", @@ -5400,8 +5400,8 @@ "Deutschland", "Niedersachsen" ], - "s": 69863918, - "sha1_base64": "cwlGJE/bpAVGo2ljZMJdKlQoT9Q=" + "s": 69690214, + "sha1_base64": "4aY3nfb6OsCU7UxgpCGalsS+YUY=" }, { "id": "Germany_Lower Saxony_Hannover", @@ -5412,8 +5412,8 @@ "Deutschland", "Niedersachsen" ], - "s": 71930752, - "sha1_base64": "zl1DYlczr146VbT+luBt0fnXPog=" + "s": 71672376, + "sha1_base64": "KyLUHHuh6snZNxUbQ+svc55SVBA=" }, { "id": "Germany_Lower Saxony_Braunschweig", @@ -5424,8 +5424,8 @@ "Deutschland", "Niedersachsen" ], - "s": 78804899, - "sha1_base64": "MqgNf84JsCMWxq9WMPi8Q8RVgHY=" + "s": 78433675, + "sha1_base64": "1su81cRmCosQZ5m3TJ7h4JMNfhI=" }, { "id": "Germany_Lower Saxony_Oldenburg", @@ -5437,8 +5437,8 @@ "Deutschland", "Niedersachsen" ], - "s": 122834609, - "sha1_base64": "Ry5Vdeg737t9tYofaCTIvglYXyo=" + "s": 122276681, + "sha1_base64": "Tk+9gcKzdpgqNpoFWpuje7hIjvg=" } ] }, @@ -5451,8 +5451,8 @@ "Deutschland", "Mecklenburg-Vorpommern" ], - "s": 113567003, - "sha1_base64": "IgO4zcPng/sdfY0gjJpbEXn778k=" + "s": 113195011, + "sha1_base64": "Zz6s+UhYn5OewFDMnzQopx7s+3Q=" }, { "id": "Germany_North Rhine-Westphalia", @@ -5466,8 +5466,8 @@ "Deutschland", "Nordrhein-Westfalen" ], - "s": 63328099, - "sha1_base64": "w+Nr28Ft+sS8DTl9jOXZryXnPxY=" + "s": 63105475, + "sha1_base64": "yWmcrqAs2rM2OLCUS7MMJHkvpr4=" }, { "id": "Germany_North Rhine-Westphalia_Regierungsbezirk Arnsberg_Dortmund", @@ -5478,8 +5478,8 @@ "Deutschland", "Nordrhein-Westfalen" ], - "s": 91741849, - "sha1_base64": "SrzIekH89nCMKUV9ka0Al6AQ2NI=" + "s": 91565905, + "sha1_base64": "dr+gH6n6ZPSE9ug8v88rHYBywEQ=" }, { "id": "Germany_North Rhine-Westphalia_Regierungsbezirk Detmold", @@ -5490,8 +5490,8 @@ "Deutschland", "Nordrhein-Westfalen" ], - "s": 105850211, - "sha1_base64": "24nwKZiVYp9FxZjNGmpn7u0iK7A=" + "s": 105716475, + "sha1_base64": "evDeKY26rAUgneW0poBk9WNVnHI=" }, { "id": "Germany_North Rhine-Westphalia_Regierungsbezirk Dusseldorf_Dusseldorf", @@ -5502,8 +5502,8 @@ "Deutschland", "Nordrhein-Westfalen" ], - "s": 79884961, - "sha1_base64": "uGMSrWfFJyPIIfRkltsxQNDoW4c=" + "s": 79607289, + "sha1_base64": "zS5oyoQyFJIkxNaJ1IDr0leSJ1I=" }, { "id": "Germany_North Rhine-Westphalia_Regierungsbezirk Dusseldorf_Mulheim", @@ -5514,8 +5514,8 @@ "Deutschland", "Nordrhein-Westfalen" ], - "s": 65186203, - "sha1_base64": "+RjhBPQTX/E1k2EyHSXpvmKxdDU=" + "s": 65078075, + "sha1_base64": "nwxf3NXe5YIGz+tm/LHTrnh/a2M=" }, { "id": "Germany_North Rhine-Westphalia_Regierungsbezirk Dusseldorf_Wesel", @@ -5526,8 +5526,8 @@ "Deutschland", "Nordrhein-Westfalen" ], - "s": 22683365, - "sha1_base64": "ngd0IJ6ivZcclM/0lotz+gSXvro=" + "s": 22639765, + "sha1_base64": "aARfEVesuJpRV4wGo/1mQQFcXKk=" }, { "id": "Germany_North Rhine-Westphalia_Regierungsbezirk Koln_Aachen", @@ -5539,8 +5539,8 @@ "Deutschland - Belgique / België / Belgien", "Nordrhein-Westfalen" ], - "s": 82850883, - "sha1_base64": "oDdS8hJ2hSd+E7LQlC7lpQcymxg=" + "s": 82622251, + "sha1_base64": "/rBbyDdjUgScEdYfYJyuIv50uzs=" }, { "id": "Germany_North Rhine-Westphalia_Regierungsbezirk Koln_Koln", @@ -5551,8 +5551,8 @@ "Deutschland", "Nordrhein-Westfalen" ], - "s": 102314883, - "sha1_base64": "WPwMjRvlOUVxV6hOERuAAoQnKWs=" + "s": 102120075, + "sha1_base64": "Z3V2zo+6UtiwIETqhw70MqpDtJY=" }, { "id": "Germany_North Rhine-Westphalia_Regierungsbezirk Munster_Munster", @@ -5563,8 +5563,8 @@ "Deutschland", "Nordrhein-Westfalen" ], - "s": 54307562, - "sha1_base64": "yaBf8bceotqQkSyPZF5hf7RJW2g=" + "s": 54191274, + "sha1_base64": "NUpNwfzel5kmt499cgqF/3iWct4=" }, { "id": "Germany_North Rhine-Westphalia_Regierungsbezirk Munster_Recklinghausen", @@ -5575,8 +5575,8 @@ "Deutschland", "Nordrhein-Westfalen" ], - "s": 59834184, - "sha1_base64": "XHiV6NyebM9WxZCB7Srnitmwa2M=" + "s": 59725888, + "sha1_base64": "e+aWN47V6WhKbqjcK1vvC02wy+c=" } ] }, @@ -5589,8 +5589,8 @@ "Deutschland", "Rheinland-Pfalz" ], - "s": 124005359, - "sha1_base64": "D/SFAHvGdRm3TSSZ+Fp3RMtjFk8=" + "s": 123643431, + "sha1_base64": "5uYRNsmfd2QKrbzbEcLP/xgWV+s=" }, { "id": "Germany_Rhineland-Palatinate_South", @@ -5601,8 +5601,8 @@ "Deutschland", "Rheinland-Pfalz" ], - "s": 102325356, - "sha1_base64": "35iQvj0xPUFlT6Y/Z46sNjSYvnw=" + "s": 101959228, + "sha1_base64": "INU+/b5uHioSW4bN+qOgosFOj2U=" }, { "id": "Germany_Saarland", @@ -5613,8 +5613,8 @@ "Deutschland", "Saarland" ], - "s": 45169450, - "sha1_base64": "8x0hm/L3PwIXhgPrdPHMfGsEDJY=" + "s": 45082890, + "sha1_base64": "cp7j31hzby+FvUAUbmDqfgSZ15w=" }, { "id": "Germany_Saxony-Anhalt_Magdeburg", @@ -5625,8 +5625,8 @@ "Deutschland", "Sachsen-Anhalt" ], - "s": 71074021, - "sha1_base64": "M74sWlgl5dmEVkIWPArF82NzNEo=" + "s": 70655797, + "sha1_base64": "cjWEGGyB/VVngU7HoCqTpmUX9pA=" }, { "id": "Germany_Saxony-Anhalt_Halle", @@ -5637,8 +5637,8 @@ "Deutschland", "Sachsen-Anhalt" ], - "s": 65126181, - "sha1_base64": "Y+88aqBM+CcVlAUljgv2FbphkwY=" + "s": 64910117, + "sha1_base64": "AoOyAL+ekozs8vx6RPXUqhy0+8Q=" }, { "id": "Germany_Saxony_Dresden", @@ -5649,8 +5649,8 @@ "Deutschland", "Sachsen" ], - "s": 83061672, - "sha1_base64": "YxfVWKVZvCKOc2YHoQiy7lj/vrk=" + "s": 82943680, + "sha1_base64": "z28u7YaT90Aou4hLaK5rkMjNwHU=" }, { "id": "Germany_Saxony_Leipzig", @@ -5661,8 +5661,8 @@ "Deutschland", "Sachsen" ], - "s": 136657466, - "sha1_base64": "v7Ezz5qi+prRWXw3EzXWhZg5NeI=" + "s": 136431322, + "sha1_base64": "QQ3HpcQznkDryxaan0IbihKv6d4=" }, { "id": "Germany_Schleswig-Holstein_Kiel", @@ -5674,8 +5674,8 @@ "Deutschland", "Schleswig-Holstein" ], - "s": 68054596, - "sha1_base64": "VlLpfYbSYRa9FXbDcOL6TCPMhz8=" + "s": 67801316, + "sha1_base64": "nx3vUqQZUqh1LgH68ByPDMoIOIw=" }, { "id": "Germany_Schleswig-Holstein_Flensburg", @@ -5686,8 +5686,8 @@ "Deutschland", "Schleswig-Holstein" ], - "s": 63208986, - "sha1_base64": "dybJTc5iWUpw64/twJYHTwR2z6U=" + "s": 63003602, + "sha1_base64": "HI1AG1Ye581LeB1MpEvTBVXCNCM=" }, { "id": "Germany_Thuringia", @@ -5698,8 +5698,8 @@ "Deutschland", "Thüringen" ], - "s": 143230355, - "sha1_base64": "kxcBZtrKLAz7hADXurUUY2F2BAM=" + "s": 142647419, + "sha1_base64": "Mi3eHpAEYSV0hLt8SzFfz4FTBXg=" } ] }, @@ -5721,8 +5721,8 @@ "Volta Region", "Western Region" ], - "s": 81953775, - "sha1_base64": "wbr9je9x+64lkV2+a3Fi0Gio3sg=" + "s": 81633647, + "sha1_base64": "cxcwCLig5bK40Su95q8Ht0hXrtA=" }, { "id": "Gibraltar", @@ -5734,8 +5734,8 @@ "España", "Gibraltar" ], - "s": 1015867, - "sha1_base64": "/Lgvk1iO2MORk0AxTROdoetI2XY=" + "s": 1016139, + "sha1_base64": "GbJGT0q6r4AchWCLZyaAbYnRvPo=" }, { "id": "Greece", @@ -5750,8 +5750,8 @@ "Territorial waters of Greece - Gavdos and Gavdopoula", "Αποκεντρωμένη Διοίκηση Κρήτης" ], - "s": 22878026, - "sha1_base64": "7fcHwFtSgXOuKaVGeBjTaWQrGek=" + "s": 22817154, + "sha1_base64": "xtUCCB44QdEV6QOZqK4sZ2qma0o=" }, { "id": "Greece_Decentralized Administration of West Greece", @@ -5764,8 +5764,8 @@ "Shqipëria", "Αποκεντρωμένη Διοίκηση Πελοποννήσου, Δυτικής Ελλάδας και Ιονίου" ], - "s": 65392764, - "sha1_base64": "glhkq6Aq2r72hkdyoxHpu9V99qQ=" + "s": 65048620, + "sha1_base64": "GrAoj+XlrmT1wIopiW21t6JkKPI=" }, { "id": "Greece_Decentralized Administration of Aegean", @@ -5776,8 +5776,8 @@ "Ελλάδα", "Αποκεντρωμένη Διοίκηση Αιγαίου" ], - "s": 30298733, - "sha1_base64": "AqjyNKzruYRJQ0BpzMHmVyAFgVE=" + "s": 30245245, + "sha1_base64": "k1rZ36fDzvYaMO4cYeUF7ui7l6E=" }, { "id": "Greece_Decentralized Administration of Epirus - Western Macedonia", @@ -5788,8 +5788,8 @@ "Ελλάδα", "Αποκεντρωμένη Διοίκηση Ηπείρου - Δυτικής Μακεδονίας" ], - "s": 30788718, - "sha1_base64": "dN8a87yRezXKYBAJ0ML1AyFdhaI=" + "s": 30447558, + "sha1_base64": "86vpTMtwzJmG1HFdK5K1yoeZ5As=" }, { "id": "Greece_Decentralized Administration of Macedonia and Thrace", @@ -5800,8 +5800,8 @@ "Ελλάδα", "Αποκεντρωμένη Διοίκηση Μακεδονίας - Θράκης" ], - "s": 65675597, - "sha1_base64": "eMpo7ki9yzMX4DzDhlO/xWUjw9o=" + "s": 65135701, + "sha1_base64": "QR8aOcvBm1uieryaA50ePz3N7Us=" }, { "id": "Greece_Decentralized Administration of Thessaly - Central Greece", @@ -5813,8 +5813,8 @@ "Αποκεντρωμένη Διοίκηση Αττικής", "Αποκεντρωμένη Διοίκηση Θεσσαλίας - Στερεάς Ελλάδας" ], - "s": 53352867, - "sha1_base64": "Yv8eNnwHQOIuwtIlppkSlrZkRWg=" + "s": 53249683, + "sha1_base64": "viQpCemav4xrEEJ8G87Gu3Mqfe4=" }, { "id": "Greece_Decentralized Administration of Attica", @@ -5825,8 +5825,8 @@ "Ελλάδα", "Αποκεντρωμένη Διοίκηση Αττικής" ], - "s": 45135401, - "sha1_base64": "/ceaCcY+82pCkBPWLL046x4o9xQ=" + "s": 44975984, + "sha1_base64": "EGyuE0UQ3XfL2Om3V4vSg1lxsSY=" } ] }, @@ -5838,8 +5838,8 @@ "affiliations": [ "Kalaallit Nunaat" ], - "s": 36862624, - "sha1_base64": "XDADR4A2yfzMrewGHRhbm1ZnViw=" + "s": 36819776, + "sha1_base64": "4B8cEBd8bArgE9n8lUeuSQoY37w=" }, { "id": "Guatemala", @@ -5871,8 +5871,8 @@ "Totonicapán", "Zacapa" ], - "s": 119752981, - "sha1_base64": "hQLAsclOrBXkv5wFaJ6s2Zcp748=" + "s": 119504965, + "sha1_base64": "igsntKPeQzbcn3yGPkNG8R2QfSw=" }, { "id": "Guernsey", @@ -5905,8 +5905,8 @@ "Selle Rocque", "Sark" ], - "s": 2105094, - "sha1_base64": "I3uNFvj8brDPGp8HLlam2hKyOEg=" + "s": 2103438, + "sha1_base64": "dZa2sNoQPBI5scNWiz64dtT11zQ=" }, { "id": "Guinea", @@ -5924,8 +5924,8 @@ "Région de Mamou", "Région de Nzérékoré" ], - "s": 94787927, - "sha1_base64": "+kRUgvIbmNqRNtzXAQ/aRIoCsCY=" + "s": 94588103, + "sha1_base64": "KIwvDIvRNkJQ3UfE9kejdVwu+A4=" }, { "id": "Guinea-Bissau", @@ -5943,8 +5943,8 @@ "Região de Quinara", "Região de Tombali" ], - "s": 18385599, - "sha1_base64": "QFQNrllDL1Qe+76UnU60kin9lGQ=" + "s": 18383271, + "sha1_base64": "0SHSHfE3xWLODeYOKxhNIw61BO0=" }, { "id": "Guyana", @@ -5954,8 +5954,8 @@ "affiliations": [ "Guyana" ], - "s": 23863472, - "sha1_base64": "vDHoC1Rf2TYMzT2euUCuR15zO7E=" + "s": 23832112, + "sha1_base64": "M5/Uvlur184Y9FzYi2zpi4WzSlk=" }, { "id": "Haiti", @@ -5975,8 +5975,8 @@ "Département du Sud", "Département du Sud-Est" ], - "s": 53841459, - "sha1_base64": "BXrTIQqkbo9SY2KxFoQKsannohA=" + "s": 53803987, + "sha1_base64": "f0D1DhNuIbJliYC6ARAx9dPNbqQ=" }, { "id": "Honduras", @@ -6005,8 +6005,8 @@ "Valle", "Yoro" ], - "s": 72550608, - "sha1_base64": "XOv+dJWBnswse4JXC7+Y+zqTvrY=" + "s": 70852064, + "sha1_base64": "6/CwG9Nx8ceWfJRfr2wUMXiirUo=" }, { "id": "Hungary", @@ -6020,8 +6020,8 @@ "Alföld és Észak", "Magyarország" ], - "s": 113802456, - "sha1_base64": "TQMnYV78CMc55r20/9NflJinDXc=" + "s": 113076000, + "sha1_base64": "7bTe3d6fuAr8oX5QFwasuPTAvSE=" }, { "id": "Hungary_Transdanubia", @@ -6032,8 +6032,8 @@ "Dunántúl", "Magyarország" ], - "s": 111722328, - "sha1_base64": "3qr5uIaDD+aN1Jc3KQ4jUqtZRos=" + "s": 110828520, + "sha1_base64": "vg325GpU0uYJ1ZkDJ/BhtJWVhWc=" }, { "id": "Hungary_Kozep-Magyarorszag", @@ -6044,8 +6044,8 @@ "Közép-Magyarország", "Magyarország" ], - "s": 63770506, - "sha1_base64": "jRqjbjX87PdqJwBzHosYJ611C5g=" + "s": 63469642, + "sha1_base64": "j4XgnBzGxNnTDj5DnWvG7yZ0+tU=" } ] }, @@ -6057,8 +6057,8 @@ "affiliations": [ "Ísland" ], - "s": 87768347, - "sha1_base64": "JvQ3+vuc6gCY6uZUA26cA2E7F2g=" + "s": 87182707, + "sha1_base64": "ZPSvqAQpfNjRsvy7dpDa3TJXVEg=" }, { "id": "India", @@ -6072,8 +6072,8 @@ "Andaman and Nicobar Islands", "India" ], - "s": 9579311, - "sha1_base64": "bZwribyKXimuOMlpnLRS0NhthWI=" + "s": 9585383, + "sha1_base64": "SMZcEoTMmfmi0v38YkNA4kQydTg=" }, { "id": "India_Lakshadweep", @@ -6084,8 +6084,8 @@ "India", "Lakshadweep" ], - "s": 342494, - "sha1_base64": "3B77/jBgKUHmJehbZLMz2bAlgdQ=" + "s": 342158, + "sha1_base64": "+IuQZwpytHQGy7qoan5Mn0msR3o=" }, { "id": "India_Andhra Pradesh", @@ -6097,8 +6097,8 @@ "India", "Puducherry" ], - "s": 70229073, - "sha1_base64": "Q7/tVQS1/c5Eb4CI523RvIJQu8U=" + "s": 69532393, + "sha1_base64": "1af2Y0fvXDzwZthQ+7k8kNQ29Ow=" }, { "id": "India_Gujarat", @@ -6111,8 +6111,8 @@ "Union Territory of Dadra & Nagar Haveli", "Union Territory of Damman & Diu" ], - "s": 70671951, - "sha1_base64": "6vGjqI6AsZzqnwBhL9GC8hR1xVk=" + "s": 70505223, + "sha1_base64": "s8F6kJsuXwzIXEA/QzaGRa+aptg=" }, { "id": "India_Kerala", @@ -6123,8 +6123,8 @@ "India", "Kerala" ], - "s": 141195772, - "sha1_base64": "ot/pbKE8rps0hjgyRbum5xFNYIA=" + "s": 140961460, + "sha1_base64": "nQWZL7yeOwMrwxgKbBaDxCsUcyY=" }, { "id": "India_Madhya Pradesh", @@ -6135,8 +6135,8 @@ "India", "Madhya Pradesh" ], - "s": 104631419, - "sha1_base64": "tTKkwUM1WIP7VnFWPjMALgqZo4o=" + "s": 104419979, + "sha1_base64": "DnexBcCw64R4s/oI9bJZSYIoDgg=" }, { "id": "India_Rajasthan", @@ -6147,8 +6147,8 @@ "India", "Rajasthan" ], - "s": 71022139, - "sha1_base64": "5BoxLdLnUY7g1uPbEN6s+/8l7A4=" + "s": 70741803, + "sha1_base64": "bR26O1Pknht3O8CY/9YqgCCerrY=" }, { "id": "India_Tamil Nadu", @@ -6165,8 +6165,8 @@ "Sorapattu", "Tamil Nadu" ], - "s": 107513740, - "sha1_base64": "XBqdPfCHqqiZHCgqILD3gkCuGHw=" + "s": 107195428, + "sha1_base64": "nCvVjblSHwRPWq0TGK7EefKKR2E=" }, { "id": "India_Haryana", @@ -6177,8 +6177,8 @@ "Haryana", "India" ], - "s": 51585005, - "sha1_base64": "IuWoX3HjH3j92Hu7La2eH/EcHT0=" + "s": 51522373, + "sha1_base64": "/ePc2IJFUylaLMvEZvPXcd5ojyE=" }, { "id": "India_Goa", @@ -6189,8 +6189,8 @@ "Goa", "India" ], - "s": 7579717, - "sha1_base64": "A+F/WIzX+Diuk89EWyP76WHDJGU=" + "s": 7522997, + "sha1_base64": "AeVvBS/ZjoO3MG+jaTxnVQxPSs0=" }, { "id": "India_Karnataka_North", @@ -6201,8 +6201,8 @@ "India", "Karnataka" ], - "s": 46673215, - "sha1_base64": "zECnhgpyu0Thm6Rba8Mpxo5RVbs=" + "s": 46356431, + "sha1_base64": "DEiT3efL+cr9aakaRJgeD5SvdKo=" }, { "id": "India_Karnataka_South", @@ -6213,8 +6213,8 @@ "India", "Karnataka" ], - "s": 59075217, - "sha1_base64": "2XWXC5hlgpHC2P8Fr32+x0miaE8=" + "s": 58524401, + "sha1_base64": "+lFu9S87qhvdOHVdPEk1lTKlTOI=" }, { "id": "India_Maharashtra", @@ -6230,8 +6230,8 @@ "Maharashtra", "Rangadhampetha" ], - "s": 121046430, - "sha1_base64": "pXg+KmTuExWe17V+LTx34SR0qgc=" + "s": 119750598, + "sha1_base64": "MhNXavGji5QK+jlRGYYBJNEteZ0=" }, { "id": "India_Telangana", @@ -6242,8 +6242,8 @@ "India", "Telangana" ], - "s": 87429849, - "sha1_base64": "tDQtppfv0ddQV/KwPHWOZfA0kME=" + "s": 86843297, + "sha1_base64": "mVZB4JyHA5J1VkFhZCUtd0PR/E0=" }, { "id": "India_Delhi", @@ -6254,8 +6254,8 @@ "Delhi", "India" ], - "s": 19108523, - "sha1_base64": "M3ncs69k0/SBEwvKrxozNNdIKfo=" + "s": 18951243, + "sha1_base64": "dSqygSlP9++GsTG33W9OnBBfEVs=" }, { "id": "India_Uttar Pradesh", @@ -6266,8 +6266,8 @@ "Uttar Pradesh", "India" ], - "s": 164186184, - "sha1_base64": "IUiXNeqYsypOIXfsG9bz30tHfYU=" + "s": 163842888, + "sha1_base64": "vYhjBKzxXY5oKImCl/NHEezyjOk=" }, { "id": "India_Odisha", @@ -6278,8 +6278,8 @@ "India", "Odisha" ], - "s": 33908657, - "sha1_base64": "bbaztzjEPlOA0GTD9xr4qYslnUs=" + "s": 33713969, + "sha1_base64": "wipx/eU+azf4pg46DphK6GWFe4Y=" }, { "id": "India_Chhattisgarh", @@ -6290,8 +6290,8 @@ "Chhattisgarh", "India" ], - "s": 32797577, - "sha1_base64": "UsCt1RAVoK/2cKiGLY9+Sx4qu38=" + "s": 32608833, + "sha1_base64": "C1hGua7KxrYUZtwRsd6fdsPZRaE=" }, { "id": "India_Jharkhand", @@ -6302,8 +6302,8 @@ "Jharkhand", "India" ], - "s": 34498067, - "sha1_base64": "QfTgzN1/wkpSAHHO+hekJFQgq4w=" + "s": 34450419, + "sha1_base64": "K25plA40cGHq8o8XplyZUryPHI4=" }, { "id": "India_Bihar", @@ -6314,8 +6314,8 @@ "Bihar", "India" ], - "s": 73949184, - "sha1_base64": "0fBa++CViJdrmQ2o4Jvcn4jXOBw=" + "s": 73919552, + "sha1_base64": "bRgyagjhpUcd5fxc443n3lZXjYY=" }, { "id": "India_Tripura", @@ -6326,8 +6326,8 @@ "India", "Tripura" ], - "s": 14046396, - "sha1_base64": "otnZgmeXtDdiDj1PUlyniYQh4SE=" + "s": 14054972, + "sha1_base64": "1npiGYWTthzYQymZfTx6a7XPzFA=" }, { "id": "India_West Bengal", @@ -6340,8 +6340,8 @@ "India", "West Bengal" ], - "s": 100217506, - "sha1_base64": "Kgt9WhE0m2UGAwaSjATdr1UN3YI=" + "s": 99604506, + "sha1_base64": "zsIFeg3n/dd0EHcCSXJ7e7MZWNY=" }, { "id": "India_Sikkim", @@ -6352,8 +6352,8 @@ "India", "Sikkim" ], - "s": 9749371, - "sha1_base64": "+qlOs4hJYA4igGcOULcq0G4Ywck=" + "s": 9748859, + "sha1_base64": "scIEZ5AwNnN+YZ44+Q5X9/O7qWU=" }, { "id": "India_Uttarakhand", @@ -6364,8 +6364,8 @@ "Uttarakhand", "India" ], - "s": 36190691, - "sha1_base64": "BnTNZG0+KzzIzU+A7O7xeK1FGyE=" + "s": 36152819, + "sha1_base64": "edMk7SbDdIwBjBTOeAiRbn6SPfM=" }, { "id": "India_Mizoram", @@ -6376,8 +6376,8 @@ "India", "Mizoram" ], - "s": 13310386, - "sha1_base64": "lXTHmu/4AnX1V9vB/EQjT78M1uI=" + "s": 13146802, + "sha1_base64": "aE1BqXqVFqkra1e1JPIoeDud3no=" }, { "id": "India_Meghalaya", @@ -6388,8 +6388,8 @@ "India", "Meghalaya" ], - "s": 10778486, - "sha1_base64": "ckSEffM7jS8QzgjUCS6mfWpq/us=" + "s": 10774622, + "sha1_base64": "xwL4UQAiVxbx2DoLGiBRi7Ko9cQ=" }, { "id": "India_Manipur", @@ -6400,8 +6400,8 @@ "India", "Manipur" ], - "s": 11511215, - "sha1_base64": "9KmGZaS47mYbJugHShRIGFK1l18=" + "s": 11497519, + "sha1_base64": "zawVfSH1uV2IoX7nLxa/bVpfAFE=" }, { "id": "India_Nagaland", @@ -6412,8 +6412,8 @@ "India", "Nagaland" ], - "s": 9934921, - "sha1_base64": "v8J038W6UoeHayn6eL1aBnIoZFw=" + "s": 9933337, + "sha1_base64": "44Ozd8zX18PY2LqTw8TtUnzUGpc=" }, { "id": "India_Assam", @@ -6424,8 +6424,8 @@ "Assam", "India" ], - "s": 37798226, - "sha1_base64": "+mGxeNoRXs0TzwtlUArb1MRlvcM=" + "s": 37010050, + "sha1_base64": "V9iCBEnmlQ6fqXmUZO696Xm/VaM=" }, { "id": "India_Arunachal Pradesh", @@ -6436,8 +6436,8 @@ "Arunachal Pradesh", "India" ], - "s": 8726317, - "sha1_base64": "BNaGnbinSlR36LXpJ7xclCDJN30=" + "s": 8719701, + "sha1_base64": "Q6frXohhDbZapY9CNFDqbF6vsOE=" }, { "id": "India_Himachal Pradesh", @@ -6448,8 +6448,8 @@ "Himachal Pradesh", "India" ], - "s": 30508458, - "sha1_base64": "/E9ElhvWtr0nxTf2k/VzhhrOMbQ=" + "s": 30467482, + "sha1_base64": "dHjr4ZMR8b2tLak4yRSm6MuRoXo=" }, { "id": "India_Jammu and Kashmir", @@ -6460,8 +6460,8 @@ "India", "Jammu and Kashmir" ], - "s": 25552714, - "sha1_base64": "xEtzUdSvvTGzMAnVF+wK4ymB6+0=" + "s": 25534914, + "sha1_base64": "HqzgT8BbeDlY8TQYYsA/zndbVF4=" }, { "id": "India_Chandigarh", @@ -6472,8 +6472,8 @@ "India", "Union Territory of Chandīgarh" ], - "s": 1314567, - "sha1_base64": "Dby4SZBoTicvaEvdRTBIUN8hi24=" + "s": 1297415, + "sha1_base64": "/0yzF9pskqk3iF9EgVtyMgI4qcY=" }, { "id": "India_Punjab", @@ -6484,8 +6484,8 @@ "India", "Punjab" ], - "s": 49429261, - "sha1_base64": "UjJroTn62MNZxtl6D/D6w+hK18o=" + "s": 49307373, + "sha1_base64": "VUr5Ck9+n461XvCqAysrJ06D3rE=" } ] }, @@ -6511,8 +6511,8 @@ "Sulawesi Tengah", "Sulawesi Utara" ], - "s": 257128481, - "sha1_base64": "mZK/tr6b9vbomtnsxsLRDa3Tg10=" + "s": 256307521, + "sha1_base64": "zvK+qXaZfhzRAobdf4ZXydBCzm4=" }, { "id": "Indonesia_West", @@ -6534,8 +6534,8 @@ "Sumatera Selatan", "Sumatera Utara" ], - "s": 223217007, - "sha1_base64": "TewdEBUupzr9cLBH9M+AhJXTNhE=" + "s": 222825535, + "sha1_base64": "mJFjep1mY6vqUaSHG986dhLail0=" }, { "id": "Indonesia_Jawa Tengah", @@ -6547,8 +6547,8 @@ "Indonesia", "Jawa Tengah" ], - "s": 228017356, - "sha1_base64": "skeCRHgDKvk7vgaBJVfBi5z5yZk=" + "s": 226457564, + "sha1_base64": "IRY/jzmQCNCZiuLvSSVmhPs2DNQ=" }, { "id": "Indonesia_Jawa Barat", @@ -6561,8 +6561,8 @@ "Indonesia", "Jawa Barat" ], - "s": 345049473, - "sha1_base64": "1NZHhQtaSpQ2Mu3ZNC3SJVVvA1A=" + "s": 344492321, + "sha1_base64": "tnAdmtG3+O9LexKCAAc2EFLvQ9I=" }, { "id": "Indonesia_Nusa Tenggara", @@ -6577,8 +6577,8 @@ "Nusa Tenggara Barat", "Nusa Tenggara Timur" ], - "s": 151838402, - "sha1_base64": "smHACEC8/VM0bGtWRD6qFkLHstA=" + "s": 151179210, + "sha1_base64": "fP86dOYF8p/5DCQqhvZE1AuH4R4=" }, { "id": "Indonesia_Jawa Timur", @@ -6589,8 +6589,8 @@ "Indonesia", "Jawa Timur" ], - "s": 213975165, - "sha1_base64": "CM28+4UQxdnOOgvZ7Pm5BOuW90g=" + "s": 213790893, + "sha1_base64": "7GRLqYJHksbX5GKfVTGz2bUKQXI=" }, { "id": "Indonesia_East", @@ -6604,8 +6604,8 @@ "Papua Barat", "Papua" ], - "s": 55181707, - "sha1_base64": "ur0mPcr1bS7kti53evPXQEWiGME=" + "s": 54920043, + "sha1_base64": "7Jk+Vm2FJz4V2GiH/ZsQNHyKwoM=" } ] }, @@ -6626,8 +6626,8 @@ "خراسان شمالی‎", "جمهوری اسلامی‏ايران‎" ], - "s": 47391293, - "sha1_base64": "LJkIahfZPnh1w1exwsY900BpcKo=" + "s": 47166149, + "sha1_base64": "7xfsRq1i3Z0bo29gCk9OzhN1M7w=" }, { "id": "Iran_South", @@ -6650,8 +6650,8 @@ "کرمانشاه‎", "‏هرمزگان‎" ], - "s": 100678270, - "sha1_base64": "5e5hRZ3sWGANSTmiT0A3EcFETWw=" + "s": 100255822, + "sha1_base64": "81gB8qDeakdxDP/2YX5vW43kDZA=" }, { "id": "Iran_North", @@ -6675,8 +6675,8 @@ "کرمانشاه‎", "آذربایجان شرقی" ], - "s": 106874991, - "sha1_base64": "x7MN1VqohPdG8OWZn9C1pryMYeA=" + "s": 106443903, + "sha1_base64": "nq9bOLeFNhpVbjo2oBxkd92Nkk4=" } ] }, @@ -6701,8 +6701,8 @@ "الأنبار", "السليمانية" ], - "s": 69704802, - "sha1_base64": "dJtpEk/KB0VlDW76UajbHbfBSZs=" + "s": 68900546, + "sha1_base64": "UI+NxXlwHWQWMuS5r9P3lvP41xE=" }, { "id": "Iraq_South", @@ -6725,8 +6725,8 @@ "الأنبار", "القادسية" ], - "s": 54129743, - "sha1_base64": "qJ76y/8HI75hkLINmx1gR9Jut/Y=" + "s": 53809535, + "sha1_base64": "c3kFFTc6p/H6jCMFjDZ/GObnFYU=" } ] }, @@ -6740,8 +6740,8 @@ "Scotland", "United Kingdom" ], - "s": 5734034, - "sha1_base64": "ElnRZSqprDm8z4/3uSkAtNKghMQ=" + "s": 5711474, + "sha1_base64": "LaSGzyZ4uO8MyZ01bLrhqaHOYaQ=" }, { "id": "Israel Region", @@ -6756,8 +6756,8 @@ "מחוז ירושלים", "מדינת ישראל" ], - "s": 8880710, - "sha1_base64": "OHHTNlC7BthdPI4ShIT3NHn1suw=" + "s": 8844710, + "sha1_base64": "n6XVP6alxPPG3YvzmL2QYOTt/68=" }, { "id": "Israel", @@ -6774,8 +6774,8 @@ "מחוז ירושלים", "מדינת ישראל" ], - "s": 96572965, - "sha1_base64": "ahbsq2r8i6B4Pqn+/uh00aiIqd8=" + "s": 96312797, + "sha1_base64": "3UgAn32jPsg3lrfja17WXIziJNY=" } ] }, @@ -6791,8 +6791,8 @@ "Abruzzo", "Italia" ], - "s": 67915524, - "sha1_base64": "xPHraujuM8mc/3c+TNKGLrvBBAU=" + "s": 67000563, + "sha1_base64": "Vqu0bggOIAQjzG9qoJGMnKhLmAk=" }, { "id": "Italy_Aosta Valley", @@ -6803,8 +6803,8 @@ "Italia", "Valle d'Aosta/Vallée d'Aoste" ], - "s": 22381371, - "sha1_base64": "AkL1arMT/7YOMRwpzmjzfLMW+O8=" + "s": 22369699, + "sha1_base64": "TKmnq3iAp1qbZWikAqCOp24tSek=" }, { "id": "Italy_Apulia", @@ -6820,8 +6820,8 @@ "Italia", "Puglia" ], - "s": 100785892, - "sha1_base64": "z6x2e/2lB3p7IPMiPLwjyosrtBk=" + "s": 100588332, + "sha1_base64": "ikDb1jVf67OO9YiI+VWTUm9m9QA=" }, { "id": "Italy_Basilicata", @@ -6832,8 +6832,8 @@ "Basilicata", "Italia" ], - "s": 38762852, - "sha1_base64": "rj0Nq2eUVjAldQ7lqWuOrkmsMEI=" + "s": 38672740, + "sha1_base64": "1W6KtE0q8cDG9cbQxRPEIC0mrQI=" }, { "id": "Italy_Calabria", @@ -6846,8 +6846,8 @@ "Isola di Dino", "Italia" ], - "s": 40504503, - "sha1_base64": "V5kJdDapWchRWDY6iAMLNpKibJ4=" + "s": 40365743, + "sha1_base64": "f8wF3q9633NcedJlP1uxF7y++A0=" }, { "id": "Italy_Campania", @@ -6864,8 +6864,8 @@ "La Castelluccia", "Scoglio Rovigliano" ], - "s": 79518331, - "sha1_base64": "W4zJ5FQWdM+2S4tMEFTcvW/50I0=" + "s": 79295531, + "sha1_base64": "yg6Uh4apHMAADbonvbEc/QnLY2E=" }, { "id": "Italy_Emilia", @@ -6879,8 +6879,8 @@ "Emilia-Romagna", "Italia" ], - "s": 35726815, - "sha1_base64": "YboMZ/4ii/hnGA40HmF1ZHB/g2k=" + "s": 35555231, + "sha1_base64": "nOhaNvg2Q6pxIQ8yZCH50oG+ckw=" }, { "id": "Italy_Emilia-Romagna_Ferrara", @@ -6891,8 +6891,8 @@ "Emilia-Romagna", "Italia" ], - "s": 15372419, - "sha1_base64": "MQ/NO3qpmlOe23Ghj2ZesUePelU=" + "s": 15373443, + "sha1_base64": "JJlmTS5jH7vKxvGoZeSnerPDJlY=" }, { "id": "Italy_Emilia-Romagna_Forli-Cesena", @@ -6903,8 +6903,8 @@ "Emilia-Romagna", "Italia" ], - "s": 21074077, - "sha1_base64": "SgafEJTFaKb7GlGrEuNXshgQ3Pg=" + "s": 21038085, + "sha1_base64": "s0HUvtX4pL4zwoizgzv3yn9cfXg=" }, { "id": "Italy_Emilia-Romagna_Modena", @@ -6915,8 +6915,8 @@ "Emilia-Romagna", "Italia" ], - "s": 27727101, - "sha1_base64": "81og7MQbLHD5wFKTHizWbKCZkTQ=" + "s": 27669709, + "sha1_base64": "WMOAKDTHtHd91e1GuVjEssd7vcU=" }, { "id": "Italy_Emilia-Romagna_Parma", @@ -6927,8 +6927,8 @@ "Emilia-Romagna", "Italia" ], - "s": 23287780, - "sha1_base64": "RbimP5QPraC11QU0iN5ytbB9UTg=" + "s": 23216596, + "sha1_base64": "+cRH1ebl1kRWCQzgMtC7maL1Nto=" }, { "id": "Italy_Emilia-Romagna_Piacenza", @@ -6939,8 +6939,8 @@ "Emilia-Romagna", "Italia" ], - "s": 14888571, - "sha1_base64": "jd/43O7OxCuUzd9uuMT7tPJDIhg=" + "s": 14850315, + "sha1_base64": "2yYr6njaNo5XN1MBohIpQaAMUgo=" }, { "id": "Italy_Emilia-Romagna_Ravenna", @@ -6951,8 +6951,8 @@ "Emilia-Romagna", "Italia" ], - "s": 16964523, - "sha1_base64": "/DNp+9/XLM1cPsyUY+IPoP9dZTs=" + "s": 16741867, + "sha1_base64": "iSvs2ljerfCRWbSl5iqdWitmI0Q=" }, { "id": "Italy_Emilia-Romagna_Reggio Emilia", @@ -6963,8 +6963,8 @@ "Emilia-Romagna", "Italia" ], - "s": 20521188, - "sha1_base64": "KeYSIiiLzZQrO5gD6lNZggr0Utw=" + "s": 20484724, + "sha1_base64": "ur9BUMLGykRmBnoB9p/YX6bOWK4=" }, { "id": "Italy_Emilia-Romagna_Rimini", @@ -6975,8 +6975,8 @@ "Emilia-Romagna", "Italia" ], - "s": 11104377, - "sha1_base64": "1Vwf6FtxJyZ3Cz+N1m+Gi0RqtAQ=" + "s": 11064721, + "sha1_base64": "mWpvGWYQI/Zk33XqAPCXgvNs9iU=" } ] }, @@ -6992,8 +6992,8 @@ "Friuli Venezia Giulia", "Italia" ], - "s": 7505319, - "sha1_base64": "yhNLpEuiiGmFM/ubeaJ4vHokRyc=" + "s": 7498551, + "sha1_base64": "HXcd26/9pA25kV6u8QLCxN2/aJw=" }, { "id": "Italy_Friuli-Venezia Giulia_Pordenone", @@ -7004,8 +7004,8 @@ "Friuli Venezia Giulia", "Italia" ], - "s": 24498715, - "sha1_base64": "4ogs8pYY0j1wcOtHdN8QwdHw0Lo=" + "s": 24445715, + "sha1_base64": "1J8r+a5bdT080KrQHax6RUb8EdY=" }, { "id": "Italy_Friuli-Venezia Giulia_Trieste", @@ -7016,8 +7016,8 @@ "Friuli Venezia Giulia", "Italia" ], - "s": 7870544, - "sha1_base64": "ePodVTFZoI8WYKMbjW6/PbZQdiA=" + "s": 7834192, + "sha1_base64": "Iu6mKVDfH+GwgPyhx1lqHyuwjZo=" }, { "id": "Italy_Friuli-Venezia Giulia_Udine", @@ -7028,8 +7028,8 @@ "Friuli Venezia Giulia", "Italia" ], - "s": 51607648, - "sha1_base64": "lY/EI0yNvlj9jgsEACfxSsNE0A8=" + "s": 51555920, + "sha1_base64": "5yAqDtDkejvIzPyOlneS811SL1w=" } ] }, @@ -7051,8 +7051,8 @@ "country_name_synonyms": [ "Vatican City" ], - "s": 109623622, - "sha1_base64": "hP862VW3jkgZyqV8Xm67F6mOuZE=" + "s": 109093302, + "sha1_base64": "xUazTa+iRaIzpG8MZj5brrCb934=" }, { "id": "Italy_Liguria", @@ -7063,8 +7063,8 @@ "Italia", "Liguria" ], - "s": 69808536, - "sha1_base64": "8lA1K5j7Qtnrq8rxhuOC/nNwHdY=" + "s": 69486816, + "sha1_base64": "sCPxf1p1gyruhx36anNC9Z4sJjI=" }, { "id": "Italy_Lombardy", @@ -7078,8 +7078,8 @@ "Italia", "Lombardia" ], - "s": 30444334, - "sha1_base64": "oWybEAkESiLb0LYvyaTG3MWHUSw=" + "s": 30367502, + "sha1_base64": "EWq61cWNgZGzZusHOw107Bkw45Y=" }, { "id": "Italy_Lombardy_Brescia", @@ -7090,8 +7090,8 @@ "Italia", "Lombardia" ], - "s": 43574597, - "sha1_base64": "p/fJcxfM6zRQHmtEJjYvB5rq2KE=" + "s": 43448357, + "sha1_base64": "8cW82y39vQN2+Y2lpeRZ3TN6zKA=" }, { "id": "Italy_Lombardy_Como", @@ -7102,8 +7102,8 @@ "Italia", "Lombardia" ], - "s": 17350437, - "sha1_base64": "oJdrJeQ5mcCJ8y72XOE/k7gSneo=" + "s": 17317269, + "sha1_base64": "fi7LTelY9shXgiEvSOu5tvXAsx4=" }, { "id": "Italy_Lombardy_Cremona", @@ -7114,8 +7114,8 @@ "Italia", "Lombardia" ], - "s": 8169496, - "sha1_base64": "BaSMm+RnfDyQAepBXxBKL8My+Cg=" + "s": 8133232, + "sha1_base64": "Y1519W8XmrZCJNJm43FcXM3pmtQ=" }, { "id": "Italy_Lombardy_Lecco", @@ -7126,8 +7126,8 @@ "Italia", "Lombardia" ], - "s": 12703251, - "sha1_base64": "q7v3NJhUfr2bNQSuxiIwkoDzwWk=" + "s": 12694531, + "sha1_base64": "oBRlD+zPzY5VkmJBpOShhaNvsmE=" }, { "id": "Italy_Lombardy_Lodi", @@ -7138,8 +7138,8 @@ "Italia", "Lombardia" ], - "s": 7275061, - "sha1_base64": "vSrh7I1Z0ejoX3OW/DR13oXYmeU=" + "s": 7259085, + "sha1_base64": "1Z0Q0FtVfzgz+RFILN690bSozLY=" }, { "id": "Italy_Lombardy_Mantua", @@ -7150,8 +7150,8 @@ "Italia", "Lombardia" ], - "s": 8818657, - "sha1_base64": "HfISGscYyUqF9SBWHbDCWefM0Rw=" + "s": 8739233, + "sha1_base64": "weHqmM3mODU8BcX11PfpdTA6akQ=" }, { "id": "Italy_Lombardy_Milan", @@ -7162,8 +7162,8 @@ "Italia", "Lombardia" ], - "s": 40101263, - "sha1_base64": "eLqSnzeUSlNyBQZZ/pLLQVyEYy8=" + "s": 40008407, + "sha1_base64": "FTGViZRwZdZg0k1ougE32kZwI1U=" }, { "id": "Italy_Lombardy_Monza and Brianza", @@ -7174,8 +7174,8 @@ "Italia", "Lombardia" ], - "s": 12478153, - "sha1_base64": "/VMUl1B1vCpNcTfK0Fm2Fro0BZQ=" + "s": 12470529, + "sha1_base64": "tFrWVHoPhlB2twXh9v2SV0dVvyw=" }, { "id": "Italy_Lombardy_Pavia", @@ -7186,8 +7186,8 @@ "Italia", "Lombardia" ], - "s": 31711702, - "sha1_base64": "/L6XsZvxW/7XaBod1KJPZmYKCoo=" + "s": 31600110, + "sha1_base64": "WGREvhRuevjGhernLETkWmuGRbU=" }, { "id": "Italy_Lombardy_Sondrio", @@ -7198,8 +7198,8 @@ "Italia", "Lombardia" ], - "s": 20113892, - "sha1_base64": "ayi4NXJVnGgYh5zZmWjLsApzAR4=" + "s": 19981476, + "sha1_base64": "EkoW54415NDO1c7jVu4S7dbx90k=" }, { "id": "Italy_Lombardy_Varese", @@ -7210,8 +7210,8 @@ "Italia", "Lombardia" ], - "s": 18823939, - "sha1_base64": "ZzIIPAEA7Qy9fszH55qB9PJRBxs=" + "s": 18752195, + "sha1_base64": "12+tOVG8oOtvPPgaLHYSpvRJr3E=" } ] }, @@ -7224,8 +7224,8 @@ "Italia", "Marche" ], - "s": 48249473, - "sha1_base64": "lZAp/9shxQNo33QZiBhwfAZoe4M=" + "s": 48021112, + "sha1_base64": "U+kyPi5GVj7jDKlFp3mcE37c8q0=" }, { "id": "Italy_Molise", @@ -7236,8 +7236,8 @@ "Italia", "Molise" ], - "s": 14544720, - "sha1_base64": "xHUfgtUO2Q0Izi2L+LHvmppIikk=" + "s": 14534488, + "sha1_base64": "JHCxMbXaC7PQTo6XE2Hi+vRzquM=" }, { "id": "Italy_Piemont", @@ -7251,8 +7251,8 @@ "Italia", "Piemonte" ], - "s": 26343877, - "sha1_base64": "pAqu32vLbXsWNsHLux/5yLa4F98=" + "s": 26295141, + "sha1_base64": "UcxRNUP3k0IlVBGGrf5FLljjCg0=" }, { "id": "Italy_Piemont_Asti", @@ -7263,8 +7263,8 @@ "Italia", "Piemonte" ], - "s": 14832537, - "sha1_base64": "wzrqy7YI54tZQbJf3pMuupfu5Pw=" + "s": 14784481, + "sha1_base64": "RBhMhDwdKNJMbf8K0zqA83olsqA=" }, { "id": "Italy_Piemont_Biella", @@ -7275,8 +7275,8 @@ "Italia", "Piemonte" ], - "s": 13559128, - "sha1_base64": "u4kYUrkGIbuyxjmx3lPzb359q+s=" + "s": 13549272, + "sha1_base64": "pLI4suY2umW74fOr2xYjdvIytzc=" }, { "id": "Italy_Piemont_Cuneo", @@ -7287,8 +7287,8 @@ "Italia", "Piemonte" ], - "s": 59054152, - "sha1_base64": "MVevy1bm4FE8POEgrCr+btr+B+I=" + "s": 58820120, + "sha1_base64": "K3OMh7VzoSGaS5LRjr9uQiaRE5g=" }, { "id": "Italy_Piemont_Novara", @@ -7299,8 +7299,8 @@ "Italia", "Piemonte" ], - "s": 13896490, - "sha1_base64": "ZrIvIwCHwXNrYIUN1YEBPTTHOcM=" + "s": 13798114, + "sha1_base64": "Bxoklw5Aili0AKi/bQ6G73qqTlo=" }, { "id": "Italy_Piemont_Torino", @@ -7311,8 +7311,8 @@ "Italia", "Piemonte" ], - "s": 66969554, - "sha1_base64": "vILf6ZExpA+Vo7VEKfCAJl1336s=" + "s": 66768282, + "sha1_base64": "qPm1WWuv5AsnL1RT5YqyX8g9VFU=" }, { "id": "Italy_Piemont_Verbano-Cusio-Ossola", @@ -7323,8 +7323,8 @@ "Italia", "Piemonte" ], - "s": 20352235, - "sha1_base64": "URA2c0kwJEf3hfKJw8aqFu+AyMM=" + "s": 20331075, + "sha1_base64": "erzbQ2gVeUplvwb59H5pt0RVHXI=" }, { "id": "Italy_Piemont_Vercelli", @@ -7335,8 +7335,8 @@ "Italia", "Piemonte" ], - "s": 16685827, - "sha1_base64": "TB5OHlVr7SNvYNxvjq4LcbBwsnY=" + "s": 16648331, + "sha1_base64": "VQ8we4B1eqv0U6RA1FuWtN+HkVI=" } ] }, @@ -7359,8 +7359,8 @@ "Sardigna/Sardegna", "Scoglio Il Catalano" ], - "s": 82531109, - "sha1_base64": "aFZ8HbbpciRHOFy0+nQDBfWR1qA=" + "s": 82373605, + "sha1_base64": "WrhJvluRMlyZlRjo3XVW2/zbZEg=" }, { "id": "Italy_Sicily", @@ -7408,8 +7408,8 @@ "Scoglio Palumbo", "Sicilia" ], - "s": 108031883, - "sha1_base64": "k+6Po73Z17HXRo8O1aYKz3L641c=" + "s": 106908555, + "sha1_base64": "UxuFCzgbfH3b7aELSFgxfpveA40=" }, { "id": "Italy_Trentino-Alto Adige Sudtirol", @@ -7420,8 +7420,8 @@ "Italia", "Trentino-Alto Adige/Südtirol" ], - "s": 98529294, - "sha1_base64": "ayoL+qeI00quAzXiqXCqEe2SH/Q=" + "s": 98093238, + "sha1_base64": "x0+iWYuDKovZ4YYsYWeFjxLU0Gg=" }, { "id": "Italy_Tuscany_Grosseto", @@ -7438,8 +7438,8 @@ "Le Scole", "Toscana" ], - "s": 64426490, - "sha1_base64": "8CiBADKwS5don5ff1HETSVfj3KE=" + "s": 64311329, + "sha1_base64": "Z9vNpbuBYBcfBGVA64SRJhtASBA=" }, { "id": "Italy_Tuscany_Massa e Carrara", @@ -7457,8 +7457,8 @@ "Scoglio d'Africa", "Toscana" ], - "s": 117028008, - "sha1_base64": "pLFq4xOHVFi3Btd/veEXR5xGPb4=" + "s": 116564616, + "sha1_base64": "0iBsta5xSdWHr7Xrl1/bUyZidzo=" }, { "id": "Italy_Umbria", @@ -7469,8 +7469,8 @@ "Italia", "Umbria" ], - "s": 39211999, - "sha1_base64": "S3kJqbXY6kUR+HYYaOVBvkWrtps=" + "s": 39151567, + "sha1_base64": "8QAPS1JcJE5qjqeR2CSSx4YY96M=" }, { "id": "Italy_Veneto", @@ -7484,8 +7484,8 @@ "Italia", "Veneto" ], - "s": 27251772, - "sha1_base64": "os5a+rV8dehIP1c0YZyJ8NVMsIo=" + "s": 27180892, + "sha1_base64": "HqUaMthVZsk6HhPfLWBf9CFMjKo=" }, { "id": "Italy_Veneto_Padova", @@ -7496,8 +7496,8 @@ "Italia", "Veneto" ], - "s": 28115852, - "sha1_base64": "hOPrT9s8XvMiE27Nf7na+1tmQuY=" + "s": 28032700, + "sha1_base64": "b9J4nkYJWs9a+qZAT2BpuSo6bQI=" }, { "id": "Italy_Veneto_Rovigo", @@ -7508,8 +7508,8 @@ "Italia", "Veneto" ], - "s": 9097209, - "sha1_base64": "9NmBRPXvBUGbpQd4SJAmRVQ0HJE=" + "s": 9073369, + "sha1_base64": "qyvoyN2t/QSflQBXMRHHnUzp0+c=" }, { "id": "Italy_Veneto_Treviso", @@ -7520,8 +7520,8 @@ "Italia", "Veneto" ], - "s": 36210191, - "sha1_base64": "EgZwI1kLMqyR7Qyp3Z9jIgyLuKs=" + "s": 36110447, + "sha1_base64": "vLVaZpNYp8kt4CAkTkg8esQOxHs=" }, { "id": "Italy_Veneto_Venezia", @@ -7532,8 +7532,8 @@ "Italia", "Veneto" ], - "s": 27887054, - "sha1_base64": "zobiGrTdry84W7L9FoOCCzTa+XY=" + "s": 27732566, + "sha1_base64": "7kIq96sEYHOjK35F0ulQCKVykZc=" }, { "id": "Italy_Veneto_Verona", @@ -7544,8 +7544,8 @@ "Italia", "Veneto" ], - "s": 33666774, - "sha1_base64": "M8HUXaeyA+cQYhyg45qVLYTBq68=" + "s": 33571966, + "sha1_base64": "CqO8FP13F/XGsabAaa8nt8MrGNQ=" }, { "id": "Italy_Veneto_Vicenza", @@ -7556,8 +7556,8 @@ "Italia", "Veneto" ], - "s": 36815542, - "sha1_base64": "eUArMej5A7E+3oxjf+kuxUb3Liw=" + "s": 36731374, + "sha1_base64": "pmStrG2umN6SztqN5fQHAis7Zw4=" } ] } @@ -7571,8 +7571,8 @@ "affiliations": [ "Jamaica" ], - "s": 35207499, - "sha1_base64": "CEHf+8Xe3pTtlJtunP+TPDkC8Jk=" + "s": 35196515, + "sha1_base64": "6YVx213eWs/qe0YlMbveXZp3PhU=" }, { "id": "Japan", @@ -7590,8 +7590,8 @@ "三重県", "愛知県" ], - "s": 61280413, - "sha1_base64": "CEjWUwFn+h+eT2sRKyrtkAZKMYQ=" + "s": 57459613, + "sha1_base64": "LKmTdfsSQkW/2ShZNFMhzhz2DNM=" }, { "id": "Japan_Chubu Region_Aichi_Toyohashi", @@ -7602,8 +7602,8 @@ "日本", "愛知県" ], - "s": 21201785, - "sha1_base64": "GlErqaiewDrKfyJEDftUP8rhn2E=" + "s": 21191473, + "sha1_base64": "SlfgiYye56daeOmaJFOamYvhiNI=" }, { "id": "Japan_Chubu Region_Fukui", @@ -7614,8 +7614,8 @@ "日本", "福井県" ], - "s": 25569251, - "sha1_base64": "qRmC83TmrZrHnXe0Tm2l8KjTBrM=" + "s": 25418707, + "sha1_base64": "vHYPndX1y2qw6mNX0NwTfHrfORQ=" }, { "id": "Japan_Chubu Region_Gifu", @@ -7626,8 +7626,8 @@ "日本", "岐阜県" ], - "s": 29971828, - "sha1_base64": "hLZB2nLbmT9j9T2dNWWm/XGu7JY=" + "s": 29825124, + "sha1_base64": "fImZUQLaRfhy2Dw4sTCml+Qas7I=" }, { "id": "Japan_Chubu Region_Ishikawa", @@ -7638,8 +7638,8 @@ "日本", "石川県" ], - "s": 27900361, - "sha1_base64": "pQXNlOgv9OiEUW3S/BICW80+3Nc=" + "s": 27815449, + "sha1_base64": "y5e03Ev4aRTjFnzEa/UYlAJK6mo=" }, { "id": "Japan_Chubu Region_Nagano", @@ -7650,8 +7650,8 @@ "長野県", "日本" ], - "s": 51006544, - "sha1_base64": "/HM/zjnIX2SdZSu0+SMm5mzo3o4=" + "s": 50422072, + "sha1_base64": "4tR8fkuGeyu+Hn+ctgKvFWHBlgo=" }, { "id": "Japan_Chubu Region_Niigata", @@ -7663,8 +7663,8 @@ "新潟県", "石川県" ], - "s": 41503205, - "sha1_base64": "+6iQtlrJrr9KmJGBFqf7dxtSToE=" + "s": 41389725, + "sha1_base64": "3WAtK86/mZGjQ5wEEEetrNJVLvk=" }, { "id": "Japan_Chubu Region_Shizuoka", @@ -7675,8 +7675,8 @@ "静岡県", "日本" ], - "s": 93030745, - "sha1_base64": "8B05tLClKiQLn+YUdWKtKovxU40=" + "s": 92940001, + "sha1_base64": "5j048FX99JGl2PiHSYZvWCzuU+0=" }, { "id": "Japan_Chubu Region_Toyama", @@ -7688,8 +7688,8 @@ "富山県", "石川県" ], - "s": 23826274, - "sha1_base64": "ZERqk06KU7fAZtE39IAhET6/lGs=" + "s": 23750594, + "sha1_base64": "HVNGWPRdxcRl0R8mThAMoQgt3cI=" }, { "id": "Japan_Chubu Region_Yamanashi", @@ -7700,8 +7700,8 @@ "日本", "山梨県" ], - "s": 23640539, - "sha1_base64": "mEQCgk5QZ1jusQaxI06bi/K0hqk=" + "s": 23579555, + "sha1_base64": "0zLrTkpDOXlWHlbspCw7lHDoSx8=" } ] }, @@ -7717,8 +7717,8 @@ "日本", "広島県" ], - "s": 53756412, - "sha1_base64": "14ArObq/VhIOuAM/cNlVPUaCTSg=" + "s": 53712596, + "sha1_base64": "XMoZVxRqp26fUTVr2kFheG9XdXE=" }, { "id": "Japan_Chugoku Region_Okayama", @@ -7729,8 +7729,8 @@ "日本", "岡山県" ], - "s": 38803621, - "sha1_base64": "jrE1dAmmI/y66QKOoXnIh4fA++g=" + "s": 38595301, + "sha1_base64": "I4MLaU8K6qKCNb6UIcRIBx94zgw=" }, { "id": "Japan_Chugoku Region_Shimane", @@ -7741,8 +7741,8 @@ "日本", "島根県" ], - "s": 26347652, - "sha1_base64": "hfSKSsMbB9htdHEl12Z+uYb0o1A=" + "s": 25977740, + "sha1_base64": "QGXF0b+Vcob2kARREvwvPPkPHT8=" }, { "id": "Japan_Chugoku Region_Tottori", @@ -7753,8 +7753,8 @@ "鳥取県", "日本" ], - "s": 25090169, - "sha1_base64": "olv2l6kUo6FJEgPayo261oe5/NQ=" + "s": 25047705, + "sha1_base64": "EWeDOYgzOH5UhGBwOs+g3pH4KyY=" }, { "id": "Japan_Chugoku Region_Yamaguchi", @@ -7765,8 +7765,8 @@ "日本", "山口県" ], - "s": 29502180, - "sha1_base64": "t8kgR/DnRhg7OW0WdmTPgK+JFGs=" + "s": 29465764, + "sha1_base64": "5p5QNTBuXht+mfbKJVU92e0FZJA=" } ] }, @@ -7782,8 +7782,8 @@ "日本", "北海道" ], - "s": 34260466, - "sha1_base64": "AQhPBrcw3QfvhxvK6vizuewys9k=" + "s": 34268338, + "sha1_base64": "stQhYzdv9N0a69yxb/If6MKWLDE=" }, { "id": "Japan_Hokkaido Region_North", @@ -7794,8 +7794,8 @@ "日本", "北海道" ], - "s": 46195575, - "sha1_base64": "cYmoWnT4FeEG71dd4ue+gDnquXM=" + "s": 46184679, + "sha1_base64": "UluZKFJVLWHwtYAs3daL8jCkyUc=" }, { "id": "Japan_Hokkaido Region_West", @@ -7806,8 +7806,8 @@ "日本", "北海道" ], - "s": 31798371, - "sha1_base64": "XkTmJdCC/0CRs3RcTMBhW81/NWg=" + "s": 31792635, + "sha1_base64": "GfyrXoOZKgbON5XPWEwWFVPmlFQ=" }, { "id": "Japan_Hokkaido Region_Sapporo", @@ -7818,8 +7818,8 @@ "日本", "北海道" ], - "s": 62750934, - "sha1_base64": "ORa5tWUSJ9mDVHIe0Ze2exrLqtw=" + "s": 62627302, + "sha1_base64": "ZoQfZw8t85j7brkZbruutBd+r4g=" } ] }, @@ -7837,8 +7837,8 @@ "東京都", "神奈川県" ], - "s": 55410272, - "sha1_base64": "4MU6ZNaKerQiD+sxmEh6mLtj8t8=" + "s": 55080488, + "sha1_base64": "Q0YgCAd1SbOJJY7DwMcBZUBkvXA=" }, { "id": "Japan_Kanto_Gunma", @@ -7849,8 +7849,8 @@ "日本", "群馬県" ], - "s": 29666180, - "sha1_base64": "VjOl7kauj5HcShj+yVj6L+WXmFc=" + "s": 29452364, + "sha1_base64": "d7K+8BS592LOMU7GEEgDkG+4sIw=" }, { "id": "Japan_Kanto_Ibaraki", @@ -7863,8 +7863,8 @@ "千葉県", "福島県" ], - "s": 37199058, - "sha1_base64": "g33NBpwBI9TgccHLKEnWmrnnAMg=" + "s": 36901866, + "sha1_base64": "Y256E198KjTROrq1XMbYLRhGgw8=" }, { "id": "Japan_Kanto_Kanagawa", @@ -7878,8 +7878,8 @@ "東京都", "神奈川県" ], - "s": 81743390, - "sha1_base64": "qfSGMgWbAYllCIIyOCRJ5wwzrOg=" + "s": 81190638, + "sha1_base64": "UMnzclo6GuMhZd+vuVIoKz4NWkg=" }, { "id": "Japan_Kanto_Saitama", @@ -7890,8 +7890,8 @@ "日本", "埼玉県" ], - "s": 60454437, - "sha1_base64": "Fm2hOXhs4gcUpwdqagowjijbBYI=" + "s": 59971523, + "sha1_base64": "K331ULFlixcvuXhPaAKBCFsk5u4=" }, { "id": "Japan_Kanto_Tochigi", @@ -7902,8 +7902,8 @@ "日本", "栃木県" ], - "s": 34999180, - "sha1_base64": "XYCdMALTpfowQkuMsazXFKtFn9Y=" + "s": 34962652, + "sha1_base64": "cIAxUDAKLlaZLbg5atxCRQvjFas=" }, { "id": "Japan_Kanto_Tokyo", @@ -7915,8 +7915,8 @@ "日本", "東京都" ], - "s": 106358130, - "sha1_base64": "Q863yECCbEwwyLf4+1Nb8plBV1Y=" + "s": 105886182, + "sha1_base64": "NneOyXzZ21fXJClAlbE5OYoQGog=" } ] }, @@ -7933,8 +7933,8 @@ "京都府", "滋賀県" ], - "s": 75939200, - "sha1_base64": "ywvaS7rCEFr0YELr+mXBzN5RfZ8=" + "s": 75718768, + "sha1_base64": "JDIgp8QKZUDiT4V1miRoWu5IgJA=" }, { "id": "Japan_Kinki Region_Mie", @@ -7946,8 +7946,8 @@ "三重県", "愛知県" ], - "s": 30587587, - "sha1_base64": "mRtvL0QPQOrhT7DrSBLyGQTAca8=" + "s": 30494315, + "sha1_base64": "CWkRCxt97qJRLZ3dzQlGVgWRDaQ=" }, { "id": "Japan_Kinki Region_Nara", @@ -7959,8 +7959,8 @@ "奈良県", "和歌山県" ], - "s": 32511474, - "sha1_base64": "MlMlAgHw77idzzSIbD39VVZCC8I=" + "s": 32561074, + "sha1_base64": "/b3lZZkEzAPVktKsVTmB3OhqQMA=" }, { "id": "Japan_Kinki Region_Osaka_Osaka", @@ -7972,8 +7972,8 @@ "兵庫県", "大阪府" ], - "s": 83987861, - "sha1_base64": "1vpt6HvRipKxS6U+e3Pmk7vQbsU=" + "s": 82645573, + "sha1_base64": "TrtMrOy9CRQq5CovuCDC6hcQZtk=" }, { "id": "Japan_Kinki Region_Osaka_West", @@ -7984,8 +7984,8 @@ "日本", "兵庫県" ], - "s": 56613127, - "sha1_base64": "h/p9UOFknOa9GlQwzY8TYx/h36U=" + "s": 56480159, + "sha1_base64": "YwwHvQZl/oq+7fazLSDlPpksOd0=" }, { "id": "Japan_Kinki Region_Wakayama", @@ -7996,8 +7996,8 @@ "日本", "和歌山県" ], - "s": 20557274, - "sha1_base64": "rJhCIiG0JeOaMboNfHQFAYeCsic=" + "s": 20483298, + "sha1_base64": "ReomEHRebhUUq7KjPelHbycpSPU=" } ] }, @@ -8013,8 +8013,8 @@ "日本", "福岡県" ], - "s": 47497748, - "sha1_base64": "DFLUR66LG5gWY5JHrKRM313PQtI=" + "s": 47399716, + "sha1_base64": "XUqWTRT6lKTj20bqeG+uj9zF3TI=" }, { "id": "Japan_Kyushu Region_Kagoshima", @@ -8025,8 +8025,8 @@ "日本", "鹿児島県" ], - "s": 27957580, - "sha1_base64": "8VgpdaieehD9um179X9KoFioSQA=" + "s": 27888244, + "sha1_base64": "tgta3hQ9yOFNKRYfEUYYW7zPKYo=" }, { "id": "Japan_Kyushu Region_Kumamoto", @@ -8037,8 +8037,8 @@ "日本", "熊本県" ], - "s": 37765820, - "sha1_base64": "JuNjU80qFrhZLJk/Vi7PD+aEAcg=" + "s": 37715092, + "sha1_base64": "/jZAN9SWpGJIv9RE2g4jio5yCps=" }, { "id": "Japan_Kyushu Region_Miyazaki", @@ -8049,8 +8049,8 @@ "日本", "宮崎県" ], - "s": 18074506, - "sha1_base64": "H7tojCpjEPrfLZxxwiEWY7+aTR8=" + "s": 18049266, + "sha1_base64": "lsERaKCrNaodmESZKEF2fm9MSX4=" }, { "id": "Japan_Kyushu Region_Nagasaki", @@ -8061,8 +8061,8 @@ "長崎県", "日本" ], - "s": 28479011, - "sha1_base64": "wneqR1cxS+HZ0cFtUc/rxgPSU4I=" + "s": 28467299, + "sha1_base64": "sIZYi5hZbVAHqclghEIQ8JRu8Nc=" }, { "id": "Japan_Kyushu Region_Oita", @@ -8073,8 +8073,8 @@ "日本", "大分県" ], - "s": 25804619, - "sha1_base64": "KYuXBdldEeQjvxAhnVtHRzdpKm8=" + "s": 25746651, + "sha1_base64": "kresetUqVDD5cqdm3+OuSv9uzv0=" }, { "id": "Japan_Kyushu Region_Okinawa", @@ -8085,8 +8085,8 @@ "日本", "沖縄県" ], - "s": 19763254, - "sha1_base64": "x9j0Ehp1BBldsW9umdi4O5g/YG4=" + "s": 19691886, + "sha1_base64": "pnUQ0/XCS7KE1jmbe9+Poe9QgBE=" }, { "id": "Japan_Kyushu Region_Saga", @@ -8097,8 +8097,8 @@ "日本", "佐賀県" ], - "s": 28453730, - "sha1_base64": "beEdfay94rFc2axdxMB47MabrJo=" + "s": 28288762, + "sha1_base64": "IYDV17k5T489i7+xLHMf93LIBfM=" } ] }, @@ -8114,8 +8114,8 @@ "日本", "愛媛県" ], - "s": 32999841, - "sha1_base64": "3HcsGk8NU0WzJOtJsAopfrf6gt8=" + "s": 32808993, + "sha1_base64": "+/36iHZZT9sEvVc3faVrUE31LQM=" }, { "id": "Japan_Shikoku Region_Kagawa", @@ -8126,8 +8126,8 @@ "香川県", "日本" ], - "s": 14431281, - "sha1_base64": "BB841oTrvFFqYlUeE8dB3+G+BCc=" + "s": 14414025, + "sha1_base64": "5flOV5zye9TNv00VNT4tJrZM5NU=" }, { "id": "Japan_Shikoku Region_Kochi", @@ -8138,8 +8138,8 @@ "高知県", "日本" ], - "s": 19427442, - "sha1_base64": "8eX1e9vR/1EMW/Y3DI4OD/o999w=" + "s": 19409938, + "sha1_base64": "drUQLOsnCsASUITqNRFzY5MQQ9c=" }, { "id": "Japan_Shikoku Region_Tokushima", @@ -8150,8 +8150,8 @@ "日本", "徳島県" ], - "s": 21740570, - "sha1_base64": "6jeyqWGOFxoj+Kts2JeWT0FDhjA=" + "s": 21518762, + "sha1_base64": "qcBeF23y5fRkeKuRQUAtn6D8rDM=" } ] }, @@ -8167,8 +8167,8 @@ "日本", "秋田県" ], - "s": 43647006, - "sha1_base64": "13ENtX2pnN9ne1+AAr+h9ODKjRo=" + "s": 43550566, + "sha1_base64": "Z1H0tEv9pKLZ+o7cgJWq9FqoR3E=" }, { "id": "Japan_Tohoku_Aomori", @@ -8179,8 +8179,8 @@ "青森県", "日本" ], - "s": 29718099, - "sha1_base64": "19ufZx7+0pGRUgI7zDeUvvzyD78=" + "s": 29199243, + "sha1_base64": "6chrpEdlsBVSuA8Um+E4rKgmrnM=" }, { "id": "Japan_Tohoku_Fukushima", @@ -8191,8 +8191,8 @@ "日本", "福島県" ], - "s": 53500181, - "sha1_base64": "NPY8XOeBGoWofvj9Dlx/QKz9z5k=" + "s": 53143941, + "sha1_base64": "H8CIEAN6YOW6M/+HkMff4Vg3J2c=" }, { "id": "Japan_Tohoku_Iwate", @@ -8203,8 +8203,8 @@ "日本", "岩手県" ], - "s": 33851979, - "sha1_base64": "joYELMLfguD1RYXVP5Vx8lGUCRQ=" + "s": 33824115, + "sha1_base64": "H/zWtfQF3jg/rwzAgNUhGJHyEkE=" }, { "id": "Japan_Tohoku_Miyagi", @@ -8216,8 +8216,8 @@ "宮城県", "福島県" ], - "s": 63821486, - "sha1_base64": "dfZ6zZ/LaCj60TaWhQ+x4c81m8k=" + "s": 63731462, + "sha1_base64": "dd74NIk2/FD4SIeCqNcvtER1KMw=" }, { "id": "Japan_Tohoku_Yamagata", @@ -8228,8 +8228,8 @@ "日本", "山形県" ], - "s": 22202851, - "sha1_base64": "h/qwoTSuWWL3pA+gjgM+WZEKSHc=" + "s": 22199507, + "sha1_base64": "74cQ1PgBnPQl34B07oqtpxRAkhk=" } ] } @@ -8252,8 +8252,8 @@ "Queen's Rock", "The Islet" ], - "s": 2217866, - "sha1_base64": "5ocCYTf6mYVX1b/ju+1CUAwEWU0=" + "s": 2206770, + "sha1_base64": "zVkFKp0iCF/fxCbl9qKHIkyNIb4=" }, { "id": "Jordan", @@ -8275,8 +8275,8 @@ "Zarqa", "الأردن" ], - "s": 39424973, - "sha1_base64": "jbV60RpPekK9fQ139qvKM7k0p3U=" + "s": 39298205, + "sha1_base64": "C1NwoMLmNQXpElbH/47JJjZ2tk4=" }, { "id": "Kazakhstan", @@ -8295,8 +8295,8 @@ "Павлодарская область", "Карагандинская область" ], - "s": 93419739, - "sha1_base64": "AP+p/mQ9sSTrpCzelCX8tovKSdQ=" + "s": 93228827, + "sha1_base64": "bE7KCXDr7oV3XmI2kluGxZJzBIA=" }, { "id": "Kazakhstan_South", @@ -8316,8 +8316,8 @@ "Мангистауская область", "Кызылординская область" ], - "s": 206732190, - "sha1_base64": "TcBUB4b5V/J5uitTeO9+SFQWrn4=" + "s": 204005294, + "sha1_base64": "4DfAhzeW454X9OCyCcZ4ZQipFR4=" } ] }, @@ -8376,8 +8376,8 @@ "Wajir", "West Pokot" ], - "s": 261881834, - "sha1_base64": "xiaZHBD/MttG9v2qxTcFZZLfpZc=" + "s": 259560722, + "sha1_base64": "vqK6vz3BTSmb/XfEiuDB4Ih0stM=" }, { "id": "Kingdom of Lesotho", @@ -8390,8 +8390,8 @@ "country_name_synonyms": [ "Lesotho" ], - "s": 89731839, - "sha1_base64": "nPPnaPj8on/R9SaGJFnBR0uT784=" + "s": 89526775, + "sha1_base64": "XAtaLMPZMMBurMlZcMXHKWZKyQg=" }, { "id": "Kiribati", @@ -8401,8 +8401,8 @@ "affiliations": [ "Kiribati" ], - "s": 3054300, - "sha1_base64": "mR0sGbVJU397qvRQUgSiIFITlc4=" + "s": 3002090, + "sha1_base64": "195gK39sRYie2+PR87N0fcOZqZI=" }, { "id": "Kuwait", @@ -8418,8 +8418,8 @@ "الفروانية", "‏الكويت‎" ], - "s": 20781233, - "sha1_base64": "9EKVR26Ri5Ena/3vJ/ZyrAqcmQg=" + "s": 20718449, + "sha1_base64": "8YOqNoN7HZRiNZXHUtbgL0othfI=" }, { "id": "Kyrgyzstan", @@ -8440,8 +8440,8 @@ "Чуйская область", "Кыргызстан" ], - "s": 89289713, - "sha1_base64": "iTnvE6FL3zXP3CF4Jn3sl77j02Q=" + "s": 89201425, + "sha1_base64": "Vd1WP4JNvrUhk27sorzN909sDt8=" }, { "id": "Laos", @@ -8468,8 +8468,8 @@ "ສະຫວັນນະເຂດ", "ນະຄອນຫຼວງວຽງຈັນ" ], - "s": 43936484, - "sha1_base64": "ekDO1h3RNAMs64Q1EZKLSAqiEYM=" + "s": 43825052, + "sha1_base64": "W7z2nl626fvNZuInCpzta5zOx2E=" }, { "id": "Latvia", @@ -8483,8 +8483,8 @@ "Vidzeme", "Zemgale" ], - "s": 113532814, - "sha1_base64": "9S1cbGxOTYC/ruPxJmRIMsO7v38=" + "s": 113025862, + "sha1_base64": "9vtkHV5kmIOM3UMChhxoIgTY1tM=" }, { "id": "Lebanon", @@ -8519,8 +8519,8 @@ "قضاء البترون", "قضاء النبطية" ], - "s": 39054461, - "sha1_base64": "kN2jYKjRXX7vRWAsLv8nPpXcvjU=" + "s": 39001893, + "sha1_base64": "QV7e5PEsOVpXCLvoagdaZ6m9UWI=" }, { "id": "Liberia", @@ -8545,8 +8545,8 @@ "River Gee County", "Sinoe County" ], - "s": 39009659, - "sha1_base64": "IEUuaIJtYU1S4EOcRe3yijbr3Ow=" + "s": 38997755, + "sha1_base64": "f8eDRtPdLswtC9xUha7YBLjHvfI=" }, { "id": "Libya", @@ -8578,8 +8578,8 @@ "الواحات", "الزاوية" ], - "s": 66916084, - "sha1_base64": "HkqinvJtp5nV+C170i9YC2vX+rw=" + "s": 66552636, + "sha1_base64": "Io3Y/VBMNd9CvOU89zvguzRKH1M=" }, { "id": "Liechtenstein", @@ -8589,8 +8589,8 @@ "affiliations": [ "Liechtenstein" ], - "s": 3144060, - "sha1_base64": "fYRhhUXh7xF5OPdfDpxlkLkDv0M=" + "s": 3138708, + "sha1_base64": "nDjR6k6fTnIGcj9HvPo1PFSRgao=" }, { "id": "Lithuania", @@ -8607,8 +8607,8 @@ "Utenos apskritis", "Vilniaus apskritis" ], - "s": 104495685, - "sha1_base64": "vesTOwtr5J/WXmDHXtS8kFbhiuI=" + "s": 104266245, + "sha1_base64": "fEBBZ/hpDt4/r0UZcSvso3hKE70=" }, { "id": "Lithuania_West", @@ -8624,8 +8624,8 @@ "Tauragės apskritis", "Šiaulių apskritis" ], - "s": 85672716, - "sha1_base64": "aHJqeEGLTgCsGq85WVC+pX18Scw=" + "s": 85253620, + "sha1_base64": "aeuy0ncKolAWXokey88BiI35KaU=" } ] }, @@ -8637,8 +8637,8 @@ "affiliations": [ "Lëtzebuerg" ], - "s": 41006393, - "sha1_base64": "DeyLZGZDABEXKVnjKofttB3bx5s=" + "s": 40656577, + "sha1_base64": "EXG/oPB4Z6/BdvNDxmGLVeyTj7o=" }, { "id": "Macedonia", @@ -8659,8 +8659,8 @@ "country_name_synonyms": [ "North Macedonia" ], - "s": 28335708, - "sha1_base64": "F6+G9m8vNXGyiTBcqLxu8Y9BHUI=" + "s": 28174060, + "sha1_base64": "OKJkBM1f2Vo8DWsa4Klnj453SGc=" }, { "id": "Madagascar", @@ -8674,8 +8674,8 @@ "Région de Sava", "Préfecture de police de Nosy Be" ], - "s": 324288449, - "sha1_base64": "okJ4NyO5EdtV0LLscUEnuwsB4fo=" + "s": 321813025, + "sha1_base64": "fwQh4eNKfc2xQBdzdmBIRCTjr+o=" }, { "id": "Malawi", @@ -8691,8 +8691,8 @@ "Northern", "Southern" ], - "s": 140735543, - "sha1_base64": "4bPo6MXRHLVjRf47HDH2qem0PZ0=" + "s": 140522191, + "sha1_base64": "rrRc3+ujFgXnc8x8mZbw1w8Qq44=" }, { "id": "Malaysia", @@ -8738,8 +8738,8 @@ "Sarawak", "Singapura" ], - "s": 178993182, - "sha1_base64": "UtSA4KUFOYmnVx47vW28jCdWYQU=" + "s": 178144118, + "sha1_base64": "OBLBatsPqhLlGU1VvhWtU9tHi68=" }, { "id": "Maldives", @@ -8758,8 +8758,8 @@ "Medhu-Uthuru Province", "ދިވެހިރާއްޖޭގެ ޖުމުހޫރިއްޔާ" ], - "s": 3696733, - "sha1_base64": "3+SAr/dKUhveOPmJEqPEtPcyX/8=" + "s": 3673557, + "sha1_base64": "Z1Wh8+1cSFiQPoEuddbzie459nI=" }, { "id": "Mali", @@ -8778,8 +8778,8 @@ "Ségou", "Tombouctou" ], - "s": 160678072, - "sha1_base64": "3u4SivcddKbQ6yqy13F26pzPSHo=" + "s": 160177264, + "sha1_base64": "0YptF38En6mRkYVesjPFkv35Nbw=" }, { "id": "Malta", @@ -8796,8 +8796,8 @@ "Malta", "Malta" ], - "s": 6976774, - "sha1_base64": "KiWWVpld1+k98EWuJnirA9BIg5A=" + "s": 6918566, + "sha1_base64": "9ysT2e+jloLRrQXgGkP7gjQZRBQ=" }, { "id": "Marshall Islands", @@ -8808,8 +8808,8 @@ "Aolepān Aorōkin M̧ajeļ", "MH" ], - "s": 1505826, - "sha1_base64": "enffbcsvrHznpEkkNjKR+z2yIvI=" + "s": 1503954, + "sha1_base64": "WEJrknu35n9u2YMkQG9tn0tCJ+A=" }, { "id": "Mauritania", @@ -8831,8 +8831,8 @@ "إينشيري", "غيديماغا" ], - "s": 26401137, - "sha1_base64": "XhUbCbQtj24sRsyCzg4xZcXKknc=" + "s": 26361001, + "sha1_base64": "jr2b1Dg9iE9nR51i0Tk1L3crFuE=" }, { "id": "Mauritius", @@ -8867,8 +8867,8 @@ "Île Deux Frères", "Île Frégate" ], - "s": 9816484, - "sha1_base64": "11/3/1OKYvrO9oqMqyCqXpqhaaI=" + "s": 9802796, + "sha1_base64": "IhreiVq+Enezlk9PU9ofaiJzSSQ=" }, { "id": "Mexico", @@ -8887,8 +8887,8 @@ "Colima", "Estados Unidos Mexicanos" ], - "s": 74127089, - "sha1_base64": "0S4lgxsFx726aPCPqddrI6c8B5g=" + "s": 74095625, + "sha1_base64": "5sBGaAoGiDWsay2SINOKNOyAph0=" }, { "id": "Mexico_Central_East", @@ -8902,8 +8902,8 @@ "San Luis Potosí", "Tamaulipas" ], - "s": 59819434, - "sha1_base64": "6s2N2jI2PxSnlYM6zrc5pGCjZuw=" + "s": 59180626, + "sha1_base64": "VjVbFxGh2eF3zDmaI1QyuZpxSF8=" }, { "id": "Mexico_Central_West", @@ -8920,8 +8920,8 @@ "Sinaloa", "Zacatecas" ], - "s": 78256541, - "sha1_base64": "ksIiNHwvVKSRJrPzkRrYdU5mw7M=" + "s": 77974725, + "sha1_base64": "CKquw0a3nQrD06dePgIYwJJALvc=" }, { "id": "Mexico_East", @@ -8939,8 +8939,8 @@ "Veracruz de Ignacio de la Llave", "Yucatán" ], - "s": 67345250, - "sha1_base64": "20CVKbXeHF6KmIyzC+8Z1FDpNhI=" + "s": 67031138, + "sha1_base64": "5cfG7WCpIGlBTn4fpJC4+NvDroU=" }, { "id": "Mexico_Mexico", @@ -8957,8 +8957,8 @@ "Tlaxcala", "Veracruz de Ignacio de la Llave" ], - "s": 162836056, - "sha1_base64": "30Wz/fHrWuKX1eki/QMJrTeWp98=" + "s": 162787248, + "sha1_base64": "E1FEuPOh4KgRFyxENrm1C9Lt3eM=" }, { "id": "Mexico_Chihuahua", @@ -8973,8 +8973,8 @@ "Nuevo León", "Sinaloa" ], - "s": 45902775, - "sha1_base64": "VatkIU+S0czoGoHZr2ywBTxXoKM=" + "s": 45584567, + "sha1_base64": "5gW+O/KGo5GejiQyxiYrAt0p7J0=" }, { "id": "Mexico_Sonora", @@ -8988,8 +8988,8 @@ "Sinaloa", "Sonora" ], - "s": 41839462, - "sha1_base64": "/+vx9HA2tlEnTESjLSSSJ/xYjyg=" + "s": 41785238, + "sha1_base64": "AdbIrm/oE2jEhoyTmaVQ+rxa2Dk=" }, { "id": "Mexico_South", @@ -9005,8 +9005,8 @@ "Querétaro", "Veracruz de Ignacio de la Llave" ], - "s": 150814888, - "sha1_base64": "AS3L4wI0p3+hAVyTLaxCsb6vWKw=" + "s": 150629544, + "sha1_base64": "GIJ6EguZk+pP/DtwXP+0aDLPrA8=" } ] }, @@ -9020,8 +9020,8 @@ "Moldova", "Приднестровье" ], - "s": 72948322, - "sha1_base64": "SLshcUCxb4ubFC3g1syriovi6SA=" + "s": 72690002, + "sha1_base64": "Cj0NS514suyYz1AlKjcwljIDNyk=" }, { "id": "Monaco", @@ -9032,8 +9032,8 @@ "France", "Monaco" ], - "s": 806176, - "sha1_base64": "s4bHoQhBbPB+ZTVq6mC90y7//Fw=" + "s": 804848, + "sha1_base64": "koUejs8Tom7NeIdearPVOj60msY=" }, { "id": "Mongolia", @@ -9068,8 +9068,8 @@ "Говьсүмбэр", "Өвөрхангай" ], - "s": 50863907, - "sha1_base64": "UoBroiGUUwrZu5K91Zz4BaopEgc=" + "s": 50796907, + "sha1_base64": "QHFI1lcqSCO7Tc+QYK9+fRvro14=" }, { "id": "Montenegro", @@ -9079,8 +9079,8 @@ "affiliations": [ "Crna Gora" ], - "s": 30481373, - "sha1_base64": "65pCp6Da9DMDFft9WRfXV4OYBmw=" + "s": 30405717, + "sha1_base64": "lnb/oBJ32R38mD4BQQYGvLCgGDA=" }, { "id": "Morocco", @@ -9098,8 +9098,8 @@ "Maroc ⵍⵎⵖⵔⵉⴱ المغرب", "Souss-Massa ⵙⵓⵙⵙ-ⵎⴰⵙⵙⴰ سوس-ماسة" ], - "s": 12538527, - "sha1_base64": "gzLc+VqMXcxogPoTEIZgJ0bySkw=" + "s": 12519551, + "sha1_base64": "NJyY5jy0zaFKmTuXSMHQMUrLoyg=" }, { "id": "Morocco_Southern", @@ -9115,8 +9115,8 @@ "Oriental ⵜⴰⵏⴳⵎⵓⴹⵜ الشرقية", "Souss-Massa ⵙⵓⵙⵙ-ⵎⴰⵙⵙⴰ سوس-ماسة" ], - "s": 71385474, - "sha1_base64": "UhvGxh8zLLN6P28sbJWuiT8e+R4=" + "s": 71150002, + "sha1_base64": "1Lmszu7GL7qPY4oVcBgrXpWDn9o=" }, { "id": "Morocco_Doukkala-Abda", @@ -9129,8 +9129,8 @@ "Maroc ⵍⵎⵖⵔⵉⴱ المغرب", "Marrakech-Safi ⵎⵕⵕⴰⴽⵛ-ⴰⵙⴼⵉ مراكش-أسفي" ], - "s": 68675611, - "sha1_base64": "x7801Hfmh/KDg8etkZFw7kuqKbQ=" + "s": 68241011, + "sha1_base64": "gJKBDph8TOqt65Z7+wgYxHH7Cec=" }, { "id": "Morocco_Rabat-Sale-Zemmour-Zaer", @@ -9144,8 +9144,8 @@ "Rabat-Salé-Kénitra ⴻⵔⵔⴱⴰⵟ-ⵙⵍⴰ-ⵇⵏⵉⵟⵔⴰ الرباط-سلا-القنيطرة", "Tanger-Tétouan-Al Hoceima ⵟⴰⵏⵊ-ⵟⵉⵜⴰⵡⵉⵏ-ⵍⵃⵓⵙⵉⵎⴰ طنجة-تطوان-الحسيمة" ], - "s": 57488936, - "sha1_base64": "ZJJGpBHwXp8JUAypCssMTX8W/iQ=" + "s": 57177080, + "sha1_base64": "Z6i8Yt2J0d9bAywyG2/IIOKPh3U=" } ] }, @@ -9167,8 +9167,8 @@ "Sofala", "Zambézia" ], - "s": 164681263, - "sha1_base64": "PENtkzpCElineAglDmhszU5CRL0=" + "s": 163458287, + "sha1_base64": "GRu1yKoAs+vl62xOGS+2oZA1FvU=" }, { "id": "Myanmar", @@ -9193,8 +9193,8 @@ "စစ်ကိုင်းတိုင်း (Sagaing)", "ပြည်ထောင်စုမြန်မာနိုင်ငံတော်‌" ], - "s": 145710049, - "sha1_base64": "EmdBMASO7W+2tQylk7sZIA69Duw=" + "s": 144550257, + "sha1_base64": "kMsKiX6Ob/A+4KqmJHtN+gp0ocg=" }, { "id": "Namibia", @@ -9226,8 +9226,8 @@ "Zambezi Region", "ǁKaras Region" ], - "s": 108304696, - "sha1_base64": "k6c6DkAaL2uuVF5xAJ6M3I4IYiI=" + "s": 108216888, + "sha1_base64": "CPSXVOIq3TfT6NXlF1P2Rea4Aws=" }, { "id": "Nauru", @@ -9237,8 +9237,8 @@ "affiliations": [ "Naoero" ], - "s": 411166, - "sha1_base64": "ckFGrIwVcWYo5NcelYeVwb+PSA8=" + "s": 411454, + "sha1_base64": "/OJGY6S9JVbypra+aGpV0Va9vB4=" }, { "id": "Nepal", @@ -9254,8 +9254,8 @@ "सुदुर पश्चिमाञ्चल विकास क्षेत्र", "पश्चिमाञ्चल विकास क्षेत्र" ], - "s": 150945891, - "sha1_base64": "p7gd7PQpEEw8No7jtBnweuQ/3AU=" + "s": 149444747, + "sha1_base64": "xdz/8PbddG855zrceoAr5hDLEwA=" }, { "id": "Nepal_Kathmandu", @@ -9266,8 +9266,8 @@ "मध्यमाञ्चल विकास क्षेत्र", "नेपाल" ], - "s": 47423287, - "sha1_base64": "67q+SehogchSHX+C492in/mSk/0=" + "s": 47131975, + "sha1_base64": "7Qa5UUvVl7A4esd5+0TXJBgM4Cc=" }, { "id": "Nepal_Madhyamanchal", @@ -9278,8 +9278,8 @@ "मध्यमाञ्चल विकास क्षेत्र", "नेपाल" ], - "s": 72327173, - "sha1_base64": "AYzxVsWLdaxGuh3+oZUk+sUdMAo=" + "s": 72297749, + "sha1_base64": "7cWkIWHRVtsQM2Nt6dAvxLPd9P8=" }, { "id": "Nepal_Purwanchal", @@ -9290,8 +9290,8 @@ "पुर्वाञ्चल विकास क्षेत्र", "नेपाल" ], - "s": 103820735, - "sha1_base64": "rwuEwEwOEOIXOJUOcYEHEl3L4Nw=" + "s": 103610199, + "sha1_base64": "ct5pMzizl6B+Z1lqrpM7qG9JOZ4=" } ] }, @@ -9321,8 +9321,8 @@ "Región Autónoma de la Costa Caribe Sur", "Rivas" ], - "s": 51187927, - "sha1_base64": "s4idSicKylngOkRfFicsnuMTwcg=" + "s": 50055583, + "sha1_base64": "MB/zBVf0UI9t3XqHsqUvRq93+RA=" }, { "id": "Niger", @@ -9340,8 +9340,8 @@ "Tillabéri", "Zinder" ], - "s": 70187485, - "sha1_base64": "MyYa3gfK9mxtyFmX+OA7MUXZRKk=" + "s": 69968429, + "sha1_base64": "Emd6abab0H3eTDYH5sjZ/UIT6hc=" }, { "id": "Nigeria", @@ -9382,8 +9382,8 @@ "Rivers", "Taraba" ], - "s": 352355811, - "sha1_base64": "5VqcBvh8qz2Yj7nbDvutFUEUDtA=" + "s": 323733705, + "sha1_base64": "+7QRggcF9CImMf+gJdd+jqplxk8=" }, { "id": "Nigeria_North", @@ -9404,8 +9404,8 @@ "Yobe", "Zamfara" ], - "s": 169790151, - "sha1_base64": "6xGjr8uW2Zkj3WC6UB394huq5Bo=" + "s": 168289031, + "sha1_base64": "DK4MjtX4W05eyD3U/kDsMPmIuE8=" } ] }, @@ -9417,8 +9417,8 @@ "affiliations": [ "Niuē" ], - "s": 474127, - "sha1_base64": "kj+FFBg3UlM07d3pRVq0xTTLQNE=" + "s": 474183, + "sha1_base64": "0ClUHyKamJkpFqGwcwn0NW72RvA=" }, { "id": "North Korea", @@ -9439,8 +9439,8 @@ "평양직할시", "조선민주주의인민공화국" ], - "s": 68469863, - "sha1_base64": "r6DenwFJ+41c6IGhoP6Hr9O6Wh4=" + "s": 68289943, + "sha1_base64": "D3yO5gVLwBHPBSZ9V3KjxoVIWt8=" }, { "id": "Norway", @@ -9455,8 +9455,8 @@ "Norge", "Troms" ], - "s": 225911787, - "sha1_base64": "+Jzp/VKKUkRKI/UNIOrS+7KsQZE=" + "s": 225795723, + "sha1_base64": "CAvhqULn4qxMgF0MbKnx/i8PpRE=" }, { "id": "Norway_Hordaland", @@ -9467,8 +9467,8 @@ "Hordaland", "Norge" ], - "s": 76241648, - "sha1_base64": "B1/jPbEVfJLIzXfZHgMT2KKPPYg=" + "s": 76138584, + "sha1_base64": "mybIKvECOgOKY0s+FMF6deJ3d+Y=" }, { "id": "Norway_Nordland", @@ -9480,8 +9480,8 @@ "Norge", "Troms" ], - "s": 179607050, - "sha1_base64": "qKkNy7Q6ZSpmPCqs1WOJlT9l5Ww=" + "s": 179548706, + "sha1_base64": "ivd6WiOKlcFvyTb4vnxFtQQ+XHM=" }, { "id": "Norway_Svalbard", @@ -9492,8 +9492,8 @@ "Norge", "Svalbard" ], - "s": 5709373, - "sha1_base64": "RH+QQp5dXs+jf4d1XQiSb+DQJlQ=" + "s": 5641957, + "sha1_base64": "5hOp8mxhnN+qkdN5ZeUa6fdUick=" }, { "id": "Norway_Oppland", @@ -9504,8 +9504,8 @@ "Norge", "Oppland" ], - "s": 95493732, - "sha1_base64": "+cMrvMd0lTGGn04fuAzsOfhnYok=" + "s": 95431604, + "sha1_base64": "nomxWd+Hp1yD1H7mqzXx+c+jQh0=" }, { "id": "Norway_Rogaland", @@ -9516,8 +9516,8 @@ "Norge", "Rogaland" ], - "s": 61416665, - "sha1_base64": "Qb05ajOmFjDTa9Vj1cHFk82xiMs=" + "s": 61205913, + "sha1_base64": "1fx5zRI7OpWrs8abOjf5zbEieyc=" }, { "id": "Norway_Hedmark", @@ -9528,8 +9528,8 @@ "Hedmark", "Norge" ], - "s": 98743651, - "sha1_base64": "R6TTxvTQ95px2Iq20vr0+MMrx5I=" + "s": 98721803, + "sha1_base64": "3EpZeq76AYQ7QpSN+J1nEPSq+pc=" }, { "id": "Norway_Jan Mayen", @@ -9537,8 +9537,8 @@ "Jan Mayen", "Norge" ], - "s": 1166449, - "sha1_base64": "a1Xc8oCa2h5X/7qy5HV/Jret4OA=" + "s": 1165673, + "sha1_base64": "VnefoZsXAAUXrxnlRQNrSfTOhDQ=" }, { "id": "Norway_North Trondelag", @@ -9550,8 +9550,8 @@ "Norge", "Sør-Trøndelag" ], - "s": 123114438, - "sha1_base64": "BB4lc8BIW471ADZarnT+Q3pDPUU=" + "s": 122981054, + "sha1_base64": "wLqqPrcpoc2YdGFpChSzR9O1xrk=" }, { "id": "Norway_South Trondelag", @@ -9562,8 +9562,8 @@ "Norge", "Sør-Trøndelag" ], - "s": 75449129, - "sha1_base64": "WpL7cSRiRzj7dJZbP1OpIfyHwMs=" + "s": 74695865, + "sha1_base64": "R/QGUsLlhxlZAaDxqgEsZV1Dv0M=" }, { "id": "Norway_Southern", @@ -9578,8 +9578,8 @@ "Vest-Agder", "Vestfold" ], - "s": 231828119, - "sha1_base64": "ZXbrWPpgQs47uZZ3ZjeJ06ROSvw=" + "s": 230901455, + "sha1_base64": "egfFVgws4LOYPw3CECKxuG1Rk2E=" }, { "id": "Norway_Western", @@ -9591,8 +9591,8 @@ "Norge", "Sogn og Fjordane" ], - "s": 118503314, - "sha1_base64": "RwOcHnVhgGg4wYav8lppl0YNyv4=" + "s": 118152114, + "sha1_base64": "zI6evyY2QuOfbg7kPa00bgeLZms=" }, { "id": "Norway_Central", @@ -9605,8 +9605,8 @@ "Norge", "Oslo" ], - "s": 155787229, - "sha1_base64": "dvFYQUAJ/jpfZsRUc0tK/BE/j6M=" + "s": 155522797, + "sha1_base64": "72Nt3pDnqQV8etxsiVGtdRwkJG4=" }, { "id": "Norway_Bouvet Island", @@ -9617,8 +9617,8 @@ "Bouvetøya", "Norge" ], - "s": 174143, - "sha1_base64": "kCHTc/n9cw0Tp56l2v+OQ3PjIyA=" + "s": 174047, + "sha1_base64": "Ltq4kYyPBXJdPcxrvT+WMQeQirg=" } ] }, @@ -9640,8 +9640,8 @@ "‏سلطنة عمان‎", "محافظة البريمي" ], - "s": 23054867, - "sha1_base64": "xaEj3xf8FDsnxoN2G3XXSy66zrI=" + "s": 22970051, + "sha1_base64": "qSQQjprASZ6nKRQsqu8KaO9OPDs=" }, { "id": "Pakistan", @@ -9659,8 +9659,8 @@ "بلوچستان / Balochistan", "‏پاکستان‎" ], - "s": 144869037, - "sha1_base64": "E68pw3ptJiPcfMQxiZaQeXsiMrA=" + "s": 142825309, + "sha1_base64": "5TRKBk5QC9l5hbF87MD/0PPU84c=" }, { "id": "Palau", @@ -9671,8 +9671,8 @@ "Belau", "PW" ], - "s": 1480844, - "sha1_base64": "H9G2zqSnga7DcQAabQdAsYv+qEM=" + "s": 1334532, + "sha1_base64": "eGQ0hFPLvx01wkrp/D573uV0EtE=" }, { "id": "Panama", @@ -9699,8 +9699,8 @@ "Panamá", "Veraguas" ], - "s": 38137635, - "sha1_base64": "CVTCmamP4q9CFTWtA5lMOD7ZuS8=" + "s": 37600443, + "sha1_base64": "e1VTppQOC2f2M16XftmNCczKG9E=" }, { "id": "Papua New Guinea", @@ -9733,8 +9733,8 @@ "Western", "Western Highlands" ], - "s": 47403869, - "sha1_base64": "B+2/BWH45svrwmCiZWNn2Y50Nag=" + "s": 45355763, + "sha1_base64": "I9ys1gg0/ei+SnTYf2h/N93jD1g=" }, { "id": "Paraguay", @@ -9764,8 +9764,8 @@ "Presidente Hayes", "San Pedro" ], - "s": 98392908, - "sha1_base64": "QWKaWghpRGhgTGvMECSPiW+dDPo=" + "s": 97948099, + "sha1_base64": "K2sx5PABp+v2BwXYnKdaZFt6zHM=" }, { "id": "People's Republic of China", @@ -9782,8 +9782,8 @@ "中国", "安徽省" ], - "s": 44870339, - "sha1_base64": "t43UGC4KUyLKPtzKr4OStCAHU/0=" + "s": 44024707, + "sha1_base64": "5Sv6qrrS3QEHMvUie8ALpXrSpcc=" }, { "id": "China_Chongqing", @@ -9794,8 +9794,8 @@ "重庆市", "中国" ], - "s": 39773612, - "sha1_base64": "DUdJxECzVx9BqcziBTui50em9U4=" + "s": 39612892, + "sha1_base64": "Urmlt30RLyt/geQ4Umm/PQam9y8=" }, { "id": "China_Fujian", @@ -9806,8 +9806,8 @@ "中国", "福建省" ], - "s": 34714228, - "sha1_base64": "Xi3bxeR2An4bweJfOO/9uA5UKAE=" + "s": 34586732, + "sha1_base64": "AdlvlnW4NsVbPKpkZVlzESRaogw=" }, { "id": "China_Gansu", @@ -9818,8 +9818,8 @@ "中国", "甘肃省" ], - "s": 46647812, - "sha1_base64": "aI0CHmcs9ZShsogCojl4C8TVsSo=" + "s": 46359044, + "sha1_base64": "id7m1D/5bARimrpnQpbF9NTLv20=" }, { "id": "China_Guangdong", @@ -9834,8 +9834,8 @@ "country_name_synonyms": [ "Hong Kong" ], - "s": 215736169, - "sha1_base64": "sOnFuH3NwmzW1N0Ynw4LJvqAlA8=" + "s": 214715777, + "sha1_base64": "GUQ4caYZ3aojnZHyrkNVo6ESsEI=" }, { "id": "China_Guangxi", @@ -9846,8 +9846,8 @@ "广西壮族自治区", "中国" ], - "s": 44247028, - "sha1_base64": "lgRXRU8l1b3MPLlBc6O2vfDq9NM=" + "s": 43939716, + "sha1_base64": "WgM+b6LpdLlBd9SeOBJi0VokCb0=" }, { "id": "China_Guizhou", @@ -9858,8 +9858,8 @@ "贵州省", "中国" ], - "s": 32386474, - "sha1_base64": "XtOvbDOP1cWYXASKViLU8gAyoVo=" + "s": 31889146, + "sha1_base64": "yRkbEgwJ82OBiAJL6OTDE4aU6Bw=" }, { "id": "China_Hebei", @@ -9872,8 +9872,8 @@ "天津市", "河北省" ], - "s": 110599828, - "sha1_base64": "BGckyOzdGqErO+lOnDai1ariFv4=" + "s": 109986300, + "sha1_base64": "YgLwipzflLY2rfVtcn0jTs50kEQ=" }, { "id": "China_Heilongjiang", @@ -9884,8 +9884,8 @@ "中国", "黑龙江省" ], - "s": 31299707, - "sha1_base64": "xDA35qL5qkE9tjYDUCqzfofeAZU=" + "s": 31098459, + "sha1_base64": "k8LFolw3hQMPnZX61vlxDvDMV7w=" }, { "id": "China_Henan", @@ -9896,8 +9896,8 @@ "中国", "河南省" ], - "s": 56370648, - "sha1_base64": "agg2zbgTQck6HoXMT6qPjqTcSRc=" + "s": 56054856, + "sha1_base64": "iqMxaNgmoA6IMOEagD7qgbFqwSs=" }, { "id": "China_Hubei", @@ -9909,8 +9909,8 @@ "中国", "湖北省" ], - "s": 50205550, - "sha1_base64": "L2RUc3EijQxI7sRsJ6EJVBzjsq0=" + "s": 49919430, + "sha1_base64": "wMsfZDyUu1Pg/ex1O7Ffc9DLAAA=" }, { "id": "China_Hunan", @@ -9921,8 +9921,8 @@ "中国", "湖南省" ], - "s": 45786661, - "sha1_base64": "eejq/YZIkTW+WmjyTWkFidojlHs=" + "s": 45067917, + "sha1_base64": "wWqfzw3eAECf4XH5MONamFQa/Tk=" }, { "id": "China_Inner Mongolia", @@ -9933,8 +9933,8 @@ "中国", "内蒙古自治区 / Inner Mongolia" ], - "s": 52347711, - "sha1_base64": "Do+PQCehayC7d4yt/HyxqaTODZI=" + "s": 52069631, + "sha1_base64": "4lFztU2XqhbZVWysAU3cbp2jzqI=" }, { "id": "China_Jiangsu", @@ -9946,8 +9946,8 @@ "江苏省", "秦山岛" ], - "s": 90717956, - "sha1_base64": "x7JW9gzL0cFvon+UYVEjvu4yCU4=" + "s": 90268500, + "sha1_base64": "LjgT//DhoNxp8uGPhAQCPDzBB9M=" }, { "id": "China_Jiangxi", @@ -9958,8 +9958,8 @@ "中国", "江西省" ], - "s": 42100508, - "sha1_base64": "bZ8QBZB84/ZTLDkz2HdjyCJVZWE=" + "s": 41952980, + "sha1_base64": "wy/F+yag7nQnGmuyGDebH+By8TE=" }, { "id": "China_Jilin", @@ -9970,8 +9970,8 @@ "中国", "吉林省" ], - "s": 32095228, - "sha1_base64": "1xe2GaSnWvGfRvgqYu76sqj9NF4=" + "s": 31943028, + "sha1_base64": "lc1KK52RbxRBLzkta5eqW5mQIRM=" }, { "id": "China_Liaoning", @@ -9982,8 +9982,8 @@ "辽宁省", "中国" ], - "s": 34843218, - "sha1_base64": "QJlJcxT57mULzlkTDiswNicv4xA=" + "s": 34447666, + "sha1_base64": "bJBA44k2bYKS6AWqC8zIzXaO5Ec=" }, { "id": "China_Ningxia Hui", @@ -9994,8 +9994,8 @@ "宁夏回族自治区", "中国" ], - "s": 21429244, - "sha1_base64": "/GaJYygoKGtzZfuTRmMsucMOIkU=" + "s": 21394412, + "sha1_base64": "/j1n4Lt80tPoYCj1dS+pNQ7DSsY=" }, { "id": "China_Qinghai", @@ -10006,8 +10006,8 @@ "青海省", "中国" ], - "s": 29632132, - "sha1_base64": "b3XTEO0mmaOif6cxUiYhhzQjBL4=" + "s": 29538260, + "sha1_base64": "vM/6J3zolRuzsbbPuPjcxi90rg4=" }, { "id": "China_Shaanxi", @@ -10018,8 +10018,8 @@ "陕西省", "中国" ], - "s": 51029861, - "sha1_base64": "uAoU7uwgxJUpHVvTCBFcxWvmIvc=" + "s": 48152277, + "sha1_base64": "4zI03SSdEnMdnHgfMvPRHL+O+gk=" }, { "id": "China_Shandong", @@ -10030,8 +10030,8 @@ "中国", "山东省" ], - "s": 77646489, - "sha1_base64": "DdwmFN+2AH7K4F5LumRRXWSpqYU=" + "s": 77029377, + "sha1_base64": "z0Qchy58BQb9kArY9qc1Whgh8TE=" }, { "id": "China_Shanghai", @@ -10043,8 +10043,8 @@ "上海市", "浙江省" ], - "s": 24752436, - "sha1_base64": "M3/4jqjKPooSmUQDQcxipFdTAjI=" + "s": 24478188, + "sha1_base64": "C1sv5kZtUW8hYBpq09HX8v0HjXc=" }, { "id": "China_Shanxi", @@ -10055,8 +10055,8 @@ "中国", "山西省" ], - "s": 31936010, - "sha1_base64": "rgE28aHmjF9pp76lEtLhAp22auA=" + "s": 31892490, + "sha1_base64": "dDABWbv5KHI+261tPT66ADrz48Q=" }, { "id": "China_Sichuan", @@ -10067,8 +10067,8 @@ "中国", "四川省" ], - "s": 81788583, - "sha1_base64": "I89NNmPiKsffuU7qqWX4TWPAXjI=" + "s": 80817311, + "sha1_base64": "c2FSfwbOkBxZ/6BkIs9S/yt5dWg=" }, { "id": "China_Tibet Autonomous Region", @@ -10079,8 +10079,8 @@ "中国", "西藏自治区 (བོད་རང་སྐྱོང་ལྗོངས་)" ], - "s": 146192830, - "sha1_base64": "l623rRMz+90mhFx+4XoeYlloDHM=" + "s": 146186478, + "sha1_base64": "kuXiosZ9b+pw0F6YP//ZvPhrb2k=" }, { "id": "China_Xinjiang", @@ -10091,8 +10091,8 @@ "中国", "新疆维吾尔自治区" ], - "s": 69646780, - "sha1_base64": "p7B6QGq/JFG5vC2PqYLFw+qO9qY=" + "s": 69307380, + "sha1_base64": "8xugmvY/c5KrckRWnKASr8oitgE=" }, { "id": "China_Yunnan", @@ -10103,8 +10103,8 @@ "中国", "云南省" ], - "s": 81377794, - "sha1_base64": "oR7C2QcNiGXGUNnKt1qw+MzEiCw=" + "s": 80910761, + "sha1_base64": "W2Sy88iOaw/UjIkhZOqswF/cKQo=" }, { "id": "China_Zhejiang", @@ -10115,8 +10115,8 @@ "中国", "浙江省" ], - "s": 88442674, - "sha1_base64": "5tJehuplbp6JcamUyZV2FOkhcGg=" + "s": 87447666, + "sha1_base64": "yHm7xhjMM4jljgTQHZJvElBjBHs=" } ] }, @@ -10138,8 +10138,8 @@ "臺北市", "中華民國" ], - "s": 198431821, - "sha1_base64": "FRszPNkN1E2UGPOdiv+3Mi2Rkt0=" + "s": 198154685, + "sha1_base64": "I5/xbw5oT1mhfo4uQky34kRiwAw=" }, { "id": "Taiwan_South", @@ -10152,8 +10152,8 @@ "臺中市", "中華民國" ], - "s": 148073236, - "sha1_base64": "t0S52+0lYKiJbgnGtphcgTWnYlQ=" + "s": 147579908, + "sha1_base64": "woomlv+Vgiipq5T+q0mOSYVirKM=" } ] }, @@ -10180,8 +10180,8 @@ "Tumbes", "Ucayali" ], - "s": 89510651, - "sha1_base64": "0Llpm9x0hnYWk0l04TLSAGiUTl0=" + "s": 88537571, + "sha1_base64": "RTlNuqF8okABUx+v+Lxpie1S1BY=" }, { "id": "Peru_Lima", @@ -10196,8 +10196,8 @@ "Lima", "Perú" ], - "s": 55355593, - "sha1_base64": "wbdBiJxIkaaYyBgIJ1qSvW87BGQ=" + "s": 55112073, + "sha1_base64": "L3CRMdcwXVL8UrUJt7pDn3nGHcc=" }, { "id": "Peru_South", @@ -10215,8 +10215,8 @@ "Puno", "Tacna" ], - "s": 85076700, - "sha1_base64": "SZ1ag2Cm7vk3ycF9X2fxIhba6Mg=" + "s": 84911476, + "sha1_base64": "WSB3D1k8vfs3nkusBIZh1C0oTr8=" } ] }, @@ -10262,8 +10262,8 @@ "Zamboanga del Norte", "Zamboanga del Sur" ], - "s": 123295685, - "sha1_base64": "U7vNbofhol6kG6PtUlz0BkSLMkg=" + "s": 122735637, + "sha1_base64": "RixuBfGc37PzDVoFLB7W28bllnw=" }, { "id": "Philippines_Visayas", @@ -10294,8 +10294,8 @@ "Southern Leyte", "Sorsogon" ], - "s": 93357025, - "sha1_base64": "wo9jcPjEgwG/RKrikB5dph8WZlM=" + "s": 93142273, + "sha1_base64": "5h592W41xprCu8FhdyEdABRAE0Q=" }, { "id": "Philippines_Luzon_South", @@ -10318,8 +10318,8 @@ "Sorsogon", "太平島" ], - "s": 24578881, - "sha1_base64": "Ki/KuSKZgt21D8qDxG9DehmLQ9U=" + "s": 24569049, + "sha1_base64": "zKofnY4FnnWgn7pLnMC/3ZjIFFs=" }, { "id": "Philippines_Luzon_Manila", @@ -10341,8 +10341,8 @@ "Rizal", "Sorsogon" ], - "s": 145689565, - "sha1_base64": "N99/A4L2PeiMlPovdkVDKMnCwsE=" + "s": 145079717, + "sha1_base64": "80up/G3oWx/6fiFn7h0ne4esvJs=" }, { "id": "Philippines_Luzon_North", @@ -10378,8 +10378,8 @@ "Zambales", "海南省" ], - "s": 155254751, - "sha1_base64": "2KQWlDt/6p5VTHMROgAnbFUGOR8=" + "s": 154959406, + "sha1_base64": "H0aNDFE3YzyDu1QjsgIisIJ7ErQ=" } ] }, @@ -10394,8 +10394,8 @@ "country_name_synonyms": [ "Pitcairn" ], - "s": 301442, - "sha1_base64": "6seipjJyGs4Ez3Uk8UcINSYF4Zs=" + "s": 317546, + "sha1_base64": "43uBtMc0EMu4Kw9DRl0hgVwm9Ls=" }, { "id": "Poland", @@ -10410,8 +10410,8 @@ "Territorial waters of Bornholm", "województwo zachodniopomorskie" ], - "s": 84636276, - "sha1_base64": "uF2pMe1foJfkSywme3F1zZF2Ih4=" + "s": 84154868, + "sha1_base64": "SPMEMs0sPboorJQPZ5uG2v3NZHU=" }, { "id": "Poland_Pomeranian Voivodeship", @@ -10423,8 +10423,8 @@ "Territorial waters of Bornholm", "województwo pomorskie" ], - "s": 98655196, - "sha1_base64": "pHfyRh0oI5FUCB/0oF585aRN9CU=" + "s": 98327620, + "sha1_base64": "wroDGQAMrkb5+niQjX4+PfUMjB8=" }, { "id": "Poland_Podlaskie Voivodeship", @@ -10435,8 +10435,8 @@ "Polska", "województwo podlaskie" ], - "s": 69369650, - "sha1_base64": "woG5H/7nvp899not+URXK7J4jfo=" + "s": 69208418, + "sha1_base64": "iDaOEwphg3YqOrqTNuVKdzj6tbY=" }, { "id": "Poland_Masovian Voivodeship", @@ -10447,8 +10447,8 @@ "Polska", "województwo mazowieckie" ], - "s": 240399754, - "sha1_base64": "YO8tAD6IXRLCarCvmujtyGhVOFI=" + "s": 239593770, + "sha1_base64": "f2qY0y7G7saEwE0jsEwJeQw+5II=" }, { "id": "Poland_Lubusz Voivodeship", @@ -10459,8 +10459,8 @@ "Polska", "województwo lubuskie" ], - "s": 52861825, - "sha1_base64": "fXBi4jAa6bf5/bVs1MA7Kt+N+no=" + "s": 52768489, + "sha1_base64": "TbUTsJ5lO1sDM62GgWlHvFCm5WY=" }, { "id": "Poland_Lublin Voivodeship", @@ -10471,8 +10471,8 @@ "Polska", "województwo lubelskie" ], - "s": 120117031, - "sha1_base64": "O+YXhcAl1f1joMy0vANztCjtQ6g=" + "s": 120165927, + "sha1_base64": "U0yNnxJYPQTnr+IODMz91CQBPjU=" }, { "id": "Poland_Lower Silesian Voivodeship", @@ -10483,8 +10483,8 @@ "Polska", "województwo dolnośląskie" ], - "s": 134973864, - "sha1_base64": "3OIihC92pMKpb2HdVXy2oDAQ9LE=" + "s": 134613584, + "sha1_base64": "RR622f5kagmBeCVzIXQpCmRu+Fs=" }, { "id": "Poland_Warmian-Masurian Voivodeship", @@ -10495,8 +10495,8 @@ "Polska", "województwo warmińsko-mazurskie" ], - "s": 80136221, - "sha1_base64": "MWhMLTIS5wTAE/0CRo8quRLzYCs=" + "s": 79869933, + "sha1_base64": "052eBheZamwTbpiQEVWR7EhfwtI=" }, { "id": "Poland_Lodz Voivodeship", @@ -10507,8 +10507,8 @@ "Polska", "województwo łódzkie" ], - "s": 112407158, - "sha1_base64": "Zhqg8we2FZhUHgJ7U8k5oC4CSW0=" + "s": 112024070, + "sha1_base64": "uAytJWeDlVDDvZnHXFE6pyUN4Ho=" }, { "id": "Poland_Subcarpathian Voivodeship", @@ -10519,8 +10519,8 @@ "Polska", "województwo podkarpackie" ], - "s": 127597719, - "sha1_base64": "O4O+OYB+JMs7VV8Si9lw1NpR1PM=" + "s": 127085079, + "sha1_base64": "tjTcNa8MZT6gDgqvLeL9zEuBjbc=" }, { "id": "Poland_Lesser Poland Voivodeship", @@ -10531,8 +10531,8 @@ "Polska", "województwo małopolskie" ], - "s": 172176810, - "sha1_base64": "b3EqtQ/MvTPL9QKKm5ElLk5LQQA=" + "s": 171413194, + "sha1_base64": "z+q1Nnrak3O2r2XIIesqlaNDiWI=" }, { "id": "Poland_Silesian Voivodeship", @@ -10543,8 +10543,8 @@ "Polska", "województwo śląskie" ], - "s": 155199201, - "sha1_base64": "OetOT9hO5lazKx1cLtzhhM60TZA=" + "s": 157559377, + "sha1_base64": "goO6BAYrBs2s87WWdMtrPnLuclg=" }, { "id": "Poland_Kuyavian-Pomeranian Voivodeship", @@ -10555,8 +10555,8 @@ "Polska", "województwo kujawsko-pomorskie" ], - "s": 92179188, - "sha1_base64": "3QTZz4obkM7m/DsF2Xm63uQDRD4=" + "s": 92010500, + "sha1_base64": "+NkfuyecP1rrMrIDNW2PySpqqyE=" }, { "id": "Poland_Greater Poland Voivodeship", @@ -10567,8 +10567,8 @@ "Polska", "województwo wielkopolskie" ], - "s": 145852256, - "sha1_base64": "wJra+KHXHWy2ibp1F4jAJ1Ils2g=" + "s": 145602728, + "sha1_base64": "bbk+reXF81In33xF4sxCyR5FKS0=" }, { "id": "Poland_Opole Voivodeship", @@ -10579,8 +10579,8 @@ "Polska", "województwo opolskie" ], - "s": 44920288, - "sha1_base64": "dFIIkTpwdLx5NYuZYpLPix2/qp8=" + "s": 44727568, + "sha1_base64": "ZLRz1VnWFZdYkJ79tUTyFOooPzA=" }, { "id": "Poland_Swietokrzyskie Voivodeship", @@ -10591,8 +10591,8 @@ "Polska", "województwo świętokrzyskie" ], - "s": 70020692, - "sha1_base64": "5WL0rSnMcTOr7KxoJmuy16sfRuY=" + "s": 69746339, + "sha1_base64": "KNJTDMTbh2zpw9Jarz7E5kaZt0g=" } ] }, @@ -10609,8 +10609,8 @@ "Norte", "Portugal" ], - "s": 94713550, - "sha1_base64": "eqnGRpQH/RWANsGv0lFwwaJbHYs=" + "s": 94084918, + "sha1_base64": "xTyd4lN388yCHwkav3gHgDPG7Nw=" }, { "id": "Portugal_South", @@ -10624,8 +10624,8 @@ "Lisboa", "Portugal" ], - "s": 131072440, - "sha1_base64": "yzj3Ez/KY5PXKj1ABYPWgZnPlEk=" + "s": 130076807, + "sha1_base64": "6HdFV4xPy6QcHV0OnOvK5JRMVd8=" }, { "id": "Portugal_Islands", @@ -10667,8 +10667,8 @@ "Portugal", "Portugal (águas territoriais)" ], - "s": 29789964, - "sha1_base64": "ZaucBydhNuIp9XXEjsGqA8T7jNM=" + "s": 29627692, + "sha1_base64": "GpeGSTkqM4mcgmBnFxLwjq7e0Mw=" }, { "id": "Portugal_Viseu", @@ -10680,8 +10680,8 @@ "Norte", "Portugal" ], - "s": 105497159, - "sha1_base64": "cQ/52xWL1hkLiLs/Hdvwt4T2lRU=" + "s": 105122719, + "sha1_base64": "Zgvgxg8711jFIIBVu4t754nHwWg=" } ] }, @@ -10703,8 +10703,8 @@ "Umm Salal", "‏قطر‎" ], - "s": 25236300, - "sha1_base64": "AcOe0zrsu/sLEkW/Yg5nhSYoAW4=" + "s": 25152212, + "sha1_base64": "kOQeL89PFemy8NukfJLFQ19z0A0=" }, { "id": "Republic of Kosovo", @@ -10717,8 +10717,8 @@ "country_name_synonyms": [ "Kosovo" ], - "s": 30268380, - "sha1_base64": "i0Bdp+nM6h9SjFid/vyg/H4r78w=" + "s": 30209148, + "sha1_base64": "L80pWLzwD+vmRzYPKJMoyr/gs+E=" }, { "id": "Romania", @@ -10737,8 +10737,8 @@ "Tulcea", "Vrancea" ], - "s": 31107782, - "sha1_base64": "gC1hpKfIrj+Gy0MZd4FckTRGB+c=" + "s": 31012110, + "sha1_base64": "9ygsl+9xBUt5w06SEEyJqDiHwgk=" }, { "id": "Romania_Centre", @@ -10754,8 +10754,8 @@ "România", "Sibiu" ], - "s": 60467099, - "sha1_base64": "G0659ay5hKsLdQnLLI10BM/5Vf8=" + "s": 60136371, + "sha1_base64": "nJYooNLY2/zTJg7zQwZNFI4Ta54=" }, { "id": "Romania_West", @@ -10769,8 +10769,8 @@ "România", "Timiș" ], - "s": 38532190, - "sha1_base64": "jRZrG8/SbPFSSA6ufI47PCMUFz0=" + "s": 38414734, + "sha1_base64": "EkehPxho13Hl6zpeqy0nn3KRE/8=" }, { "id": "Romania_North_West", @@ -10786,8 +10786,8 @@ "Satu Mare", "Sălaj" ], - "s": 57553296, - "sha1_base64": "aUlNmUmwyGH+NHGGN/wdx5UBGcs=" + "s": 57367480, + "sha1_base64": "KMpwOx82ilBhZJT2Jf8dz8z7Svo=" }, { "id": "Romania_South_West", @@ -10802,8 +10802,8 @@ "România", "Vâlcea" ], - "s": 37632655, - "sha1_base64": "iivDd6QDNJHsz1IdXC4I3cBU9KY=" + "s": 37193535, + "sha1_base64": "Q4Xk+ab7r11L+L8Z/3EQkw39PsE=" }, { "id": "Romania_North_East", @@ -10819,8 +10819,8 @@ "Suceava", "Vaslui" ], - "s": 42847198, - "sha1_base64": "FRZn/gWg6mKpPVxZl6CoOg5oBqw=" + "s": 42769126, + "sha1_base64": "9yfPYwilYOz6v9qRjce2mGzvN3U=" }, { "id": "Romania_South", @@ -10840,8 +10840,8 @@ "România", "Teleorman" ], - "s": 59073914, - "sha1_base64": "V/dmQl73CW1wL30RP/Lw7hYhy3k=" + "s": 58831530, + "sha1_base64": "5cCSEfl6H1kMQtX7pJmGSMiIY3I=" } ] }, @@ -10861,8 +10861,8 @@ "Україна", "Республика Крым" ], - "s": 54046560, - "sha1_base64": "tpa6r60E/NUFHtY2lAi4UNBJu2c=" + "s": 53986776, + "sha1_base64": "8j/Ig8uwN9LP3b4linOS2zMUkNU=" }, { "id": "Russia_Altai Krai", @@ -10874,8 +10874,8 @@ "Российская Федерация", "Алтайский край" ], - "s": 135655628, - "sha1_base64": "aQh9SYGxX92XnXDpv0rBTVURoP8=" + "s": 135567484, + "sha1_base64": "XMOb2ggbSnvpbENJNiB/mw+ej9Y=" }, { "id": "Russia_Altai Republic", @@ -10887,8 +10887,8 @@ "Российская Федерация", "Республика Алтай" ], - "s": 71799603, - "sha1_base64": "L0W5kRR/CaOLgAEs2rfyjgrqZsw=" + "s": 71782251, + "sha1_base64": "4X5rRAMnHG7MKU8bh7AddGmYQGU=" }, { "id": "Russia_Amur Oblast", @@ -10900,8 +10900,8 @@ "Российская Федерация", "Амурская область" ], - "s": 37742107, - "sha1_base64": "lF3Fq2VDsPVYdRsL4ukw+7GIGFk=" + "s": 37703747, + "sha1_base64": "gp5XaRRaTbH0DJW2WpPWgi/5RP4=" }, { "id": "Russia_Arkhangelsk Oblast_Central", @@ -10913,8 +10913,8 @@ "Российская Федерация", "Архангельская область" ], - "s": 62360976, - "sha1_base64": "LIGVRi+GufHhtsmXgCiSJKRKipQ=" + "s": 62341984, + "sha1_base64": "axmmYdT1fzw93ByLcHjO3WhHtzA=" }, { "id": "Russia_Arkhangelsk Oblast_North", @@ -10928,8 +10928,8 @@ "Ненецкий автономный округ", "Архангельская область" ], - "s": 59519702, - "sha1_base64": "iSMy6nLMc1cnYdaHKGulHdPa6SA=" + "s": 59481830, + "sha1_base64": "L0fBsmm1u1S0HBA/jHaPrWxZYh0=" }, { "id": "Russia_Astrakhan Oblast", @@ -10941,8 +10941,8 @@ "Российская Федерация", "Астраханская область" ], - "s": 32384371, - "sha1_base64": "opq1ZYE+3D676SDFJWVc/feJgSg=" + "s": 31011635, + "sha1_base64": "3CNv49MQsu35c0nbNxT3NJIGaYk=" }, { "id": "Russia_Bashkortostan", @@ -10954,8 +10954,8 @@ "Российская Федерация", "Башкортостан" ], - "s": 99294420, - "sha1_base64": "i8ASMgViNg9P5kjZQ1f6aMljuR4=" + "s": 98186204, + "sha1_base64": "DsH+8RGxVVpXA1f/V3TCJyP7LUU=" }, { "id": "Russia_Belgorod Oblast", @@ -10967,8 +10967,8 @@ "Российская Федерация", "Белгородская область" ], - "s": 38595534, - "sha1_base64": "swIOKO/69EB0josEz7hL6hwKhT4=" + "s": 38522534, + "sha1_base64": "+U5sHMssmS8PMETuIxy4AiEq76I=" }, { "id": "Russia_Bryansk Oblast", @@ -10980,8 +10980,8 @@ "Российская Федерация", "Брянская область" ], - "s": 25872085, - "sha1_base64": "nehE+xUJr7Rgg3G+X5fApAznch0=" + "s": 25816973, + "sha1_base64": "b4RB29Ix2Y7fzftoOyKUMuJ2EHY=" }, { "id": "Russia_Buryatia", @@ -10993,8 +10993,8 @@ "Российская Федерация", "Бурятия" ], - "s": 49992117, - "sha1_base64": "1Nxmu3Jslr572k/1wERxsKUJXIQ=" + "s": 49952885, + "sha1_base64": "po2MQeFob8mtedEQgNDrBogl0ls=" }, { "id": "Russia_Chechen Republic", @@ -11006,8 +11006,8 @@ "Россия", "Российская Федерация" ], - "s": 14340792, - "sha1_base64": "igDuMAkXo3CWZM4tbq9dwFgkxKE=" + "s": 14328072, + "sha1_base64": "1NXM3MAJfdUkajpNwAQnwINeWBo=" }, { "id": "Russia_Chelyabinsk Oblast", @@ -11019,8 +11019,8 @@ "Российская Федерация", "Челябинская область" ], - "s": 79202958, - "sha1_base64": "JVieRw9mUnlaiMRnGtMzqBd58Oo=" + "s": 79077398, + "sha1_base64": "uYobihfIt8ErsUuvkz84ffqLh5k=" }, { "id": "Russia_Chukotka Autonomous Okrug", @@ -11032,8 +11032,8 @@ "Россия", "Российская Федерация" ], - "s": 119668245, - "sha1_base64": "CqXjRjf69WfJ/ocNt3gB1knJ4w0=" + "s": 119667365, + "sha1_base64": "MDWfqi86vMN435k3xmWs2VzYsCo=" }, { "id": "Russia_Chuvashia", @@ -11045,8 +11045,8 @@ "Российская Федерация", "Чувашия" ], - "s": 26007564, - "sha1_base64": "HNBTnD7MdF7CUCJYV1AMcgaCr4k=" + "s": 25990524, + "sha1_base64": "aHQZJSn29Yzp6x8l2C4Lui2yZss=" }, { "id": "Russia_Ingushetia", @@ -11058,8 +11058,8 @@ "Российская Федерация", "Ингушетия" ], - "s": 9883613, - "sha1_base64": "oRWGKKXcpnU3BiOviO4CKLsmNFU=" + "s": 9879149, + "sha1_base64": "cmicl+MkfnSjWXh0ZqWh6xqtyc0=" }, { "id": "Russia_Irkutsk Oblast", @@ -11071,8 +11071,8 @@ "Российская Федерация", "Иркутская область" ], - "s": 108932321, - "sha1_base64": "+rgUGynhFhjohErKYOw1lGwKGQc=" + "s": 108809185, + "sha1_base64": "pba73Fz+9s8E7KgpAzzOQQ3Nu9k=" }, { "id": "Russia_Ivanovo Oblast", @@ -11084,8 +11084,8 @@ "Россия", "Российская Федерация" ], - "s": 28593636, - "sha1_base64": "1fN8f5J6+PawHry1oqhzcH/TGSQ=" + "s": 28556252, + "sha1_base64": "3rem5d79Soi8XTgicW6B0jEjKU0=" }, { "id": "Russia_Jewish Autonomous Oblast", @@ -11097,8 +11097,8 @@ "Россия", "Российская Федерация" ], - "s": 13598010, - "sha1_base64": "5qXF1ZjEZJ3OYTOtH6FM5wDY/t0=" + "s": 13596474, + "sha1_base64": "EOzm+E+dywmJc2sMwFBqYvfCbKI=" }, { "id": "Russia_Kabardino-Balkaria", @@ -11110,8 +11110,8 @@ "Россия", "Российская Федерация" ], - "s": 22616756, - "sha1_base64": "9nrqYR44d4wZB4rGLHeyQTvJ2EY=" + "s": 22609588, + "sha1_base64": "M5Up+EwHlAfQxFXdlAW3emlar2M=" }, { "id": "Russia_Kaliningrad Oblast", @@ -11123,8 +11123,8 @@ "Российская Федерация", "Калининградская область" ], - "s": 25128996, - "sha1_base64": "+7UwmZgyka9dmksMoY2draZHJ0Y=" + "s": 25052452, + "sha1_base64": "1cgFHsxJnqR/O6Yq0b+DVVkbJl8=" }, { "id": "Russia_Kaluga Oblast", @@ -11136,8 +11136,8 @@ "Российская Федерация", "Калужская область" ], - "s": 36823508, - "sha1_base64": "p94F11djQXQjhU23weAs7Ybb+FQ=" + "s": 36654692, + "sha1_base64": "irEOW3TJkCo6uKcIGZb4f4Uax7c=" }, { "id": "Russia_Kamchatka Krai", @@ -11149,8 +11149,8 @@ "Российская Федерация", "Камчатский край" ], - "s": 71774301, - "sha1_base64": "v8JEt4ymayYUtrWBKMYCDgu9Lk4=" + "s": 71707269, + "sha1_base64": "KmH8wSJeOJPvDTxNOgWocwvWExs=" }, { "id": "Russia_Karachay-Cherkessia", @@ -11162,8 +11162,8 @@ "Россия", "Российская Федерация" ], - "s": 24170275, - "sha1_base64": "6uS/XvYv9ofoJi6Lg56YltYyEt8=" + "s": 24194907, + "sha1_base64": "FfjaEuiE5slKyLdiloyvRDCJkjQ=" }, { "id": "Russia_Kemerov Oblast", @@ -11175,8 +11175,8 @@ "Российская Федерация", "Кемеровская область" ], - "s": 42875550, - "sha1_base64": "e6odzMRXsXjKeWqAQhrOFUEKbBs=" + "s": 42851302, + "sha1_base64": "047V+wGTmQP3LFXQzzq4pxIVdTo=" }, { "id": "Russia_Khabarovsk Krai", @@ -11188,8 +11188,8 @@ "Российская Федерация", "Хабаровский край" ], - "s": 134159770, - "sha1_base64": "ubemWBgcp0cSX8IM65/UzV/KNnA=" + "s": 134128938, + "sha1_base64": "n4LaSy4zQHSPHeSahJPLtuvuIHU=" }, { "id": "Russia_Khakassia", @@ -11201,8 +11201,8 @@ "Россия", "Российская Федерация" ], - "s": 21055211, - "sha1_base64": "0uWW7DEuXG2mNboSu9SWW4FB2Q8=" + "s": 21023003, + "sha1_base64": "5QcFg/8BHh4bEd5+uaAxr3V0WmA=" }, { "id": "Russia_Kirov Oblast", @@ -11214,8 +11214,8 @@ "Российская Федерация", "Кировская область" ], - "s": 111568274, - "sha1_base64": "YVvTK9XNzFTBUAYtMUdB4pogt+A=" + "s": 110244242, + "sha1_base64": "/5W+65Bcxu3StzlRoYu3DwtZtIY=" }, { "id": "Russia_Komi Republic", @@ -11227,8 +11227,8 @@ "Российская Федерация", "Республика Коми" ], - "s": 98727153, - "sha1_base64": "7Bzq2G0jiP6rNGXMTBxpEpyyFa4=" + "s": 98557609, + "sha1_base64": "jXENk2bmZSxmFW4CqflEuNX88zs=" }, { "id": "Russia_Kostroma Oblast", @@ -11240,8 +11240,8 @@ "Российская Федерация", "Костромская область" ], - "s": 29021580, - "sha1_base64": "yMQnYcDb76GGSVTJVfKfcbJukMk=" + "s": 28946332, + "sha1_base64": "WApLFuD++woCd2GBE+/aQbkVfVs=" }, { "id": "Russia_Krasnodar Krai", @@ -11253,8 +11253,8 @@ "Российская Федерация", "Краснодарский край" ], - "s": 82178307, - "sha1_base64": "sQoH2ttduuI3LaZKUuNS6bM9RuU=" + "s": 81635811, + "sha1_base64": "sA1BYaY4mhWaom4Vh6v7Vu9BcSI=" }, { "id": "Russia_Krasnodar Krai_Adygeya", @@ -11267,8 +11267,8 @@ "Российская Федерация", "Краснодарский край" ], - "s": 56727722, - "sha1_base64": "XSZO/4iJbOVf0e9yPFoIqpUjGvU=" + "s": 56599002, + "sha1_base64": "a3bthtiPRyH5/cHdTzEqvDNzAgY=" }, { "id": "Russia_Krasnoyarsk Krai_North", @@ -11280,8 +11280,8 @@ "Российская Федерация", "Красноярский край" ], - "s": 37201496, - "sha1_base64": "t8pS+DW6nwsQ3Qrl8Aeww5tTy0o=" + "s": 37163248, + "sha1_base64": "kL63HFeRu98f8YgX9GWD6Ue/PRw=" }, { "id": "Russia_Krasnoyarsk Krai_South", @@ -11293,8 +11293,8 @@ "Российская Федерация", "Красноярский край" ], - "s": 71017905, - "sha1_base64": "jO1j1hmDnkjIcSkaqmn1u3w/ZDk=" + "s": 70769801, + "sha1_base64": "xsjY5srSPjpOb61G64w5HOPHcqc=" }, { "id": "Russia_Kurgan Oblast", @@ -11306,8 +11306,8 @@ "Россия", "Российская Федерация" ], - "s": 35744315, - "sha1_base64": "xqM5rIpDv3Nw3m2DjfVuNhFNqxY=" + "s": 35728587, + "sha1_base64": "/Lx3MBt9shlNIv3JlV34vDzlmts=" }, { "id": "Russia_Kursk Oblast", @@ -11319,8 +11319,8 @@ "Российская Федерация", "Курская область" ], - "s": 53081508, - "sha1_base64": "F2SdCDY48OPnvrOO7CkbCmGk2UY=" + "s": 53045476, + "sha1_base64": "ssvE44xPZf4zAwJqc0nlP7/TSiU=" }, { "id": "Russia_Leningradskaya Oblast_Karelsky", @@ -11332,8 +11332,8 @@ "Российская Федерация", "Ленинградская область" ], - "s": 45735485, - "sha1_base64": "nkDjvQ3VQQO4OmNaEwm1vhLIKAU=" + "s": 45820166, + "sha1_base64": "SQJGWfECgQmEOO7np+yRhzKdq/I=" }, { "id": "Russia_Leningradskaya Oblast_Southeast", @@ -11345,8 +11345,8 @@ "Российская Федерация", "Ленинградская область" ], - "s": 79951163, - "sha1_base64": "sqCEkbv3T1pnCJtzVRJnh9Yb670=" + "s": 79981755, + "sha1_base64": "zcARIpbH0A60rTN4aB8ylEJHcwM=" }, { "id": "Russia_Lipetsk Oblast", @@ -11358,8 +11358,8 @@ "Российская Федерация", "Липецкая область" ], - "s": 32780828, - "sha1_base64": "OCf2RC17PXMpVOQB8c8bthQkZRo=" + "s": 32706004, + "sha1_base64": "8q3fi/0nBgoSKOc+38C7dxkkGZ0=" }, { "id": "Russia_Magadan Oblast", @@ -11371,8 +11371,8 @@ "Российская Федерация", "Магаданская область" ], - "s": 69767779, - "sha1_base64": "3cI1Y5BlXzDR5RZgxvZE0n5W4Og=" + "s": 69720075, + "sha1_base64": "gBioVHPVXMrYJShMC6z+oQARATc=" }, { "id": "Russia_Mari El", @@ -11384,8 +11384,8 @@ "Российская Федерация", "Марий Эл" ], - "s": 29841739, - "sha1_base64": "+C37o26M1qVcNnzw4LEvpFyeURs=" + "s": 29812795, + "sha1_base64": "5kErnRNeIcwL/Wexxoo2DHvwZd0=" }, { "id": "Russia_Moscow Oblast_East", @@ -11397,8 +11397,8 @@ "Россия", "Российская Федерация" ], - "s": 97424423, - "sha1_base64": "vCqTb/n74JymRGVrcQvExhTxB9Q=" + "s": 96638231, + "sha1_base64": "T5YCXAPrWLQbvXzWYPs4hppWpys=" }, { "id": "Russia_Moscow Oblast_West", @@ -11411,8 +11411,8 @@ "Российская Федерация", "Москва" ], - "s": 63278426, - "sha1_base64": "am31HZNDvr9tfsIJ7g3eGQTqKv4=" + "s": 62968722, + "sha1_base64": "hP4dsOnuB7yl3fUtd+P4CEwt92A=" }, { "id": "Russia_Moscow", @@ -11425,8 +11425,8 @@ "Российская Федерация", "Москва" ], - "s": 85098224, - "sha1_base64": "MLShfedvJrCFAt+1OfsssSSRQKc=" + "s": 84720624, + "sha1_base64": "UZ/6ciLzA7bVJDPX1emXBUUgjr0=" }, { "id": "Russia_Murmansk Oblast", @@ -11438,8 +11438,8 @@ "Россия", "Российская Федерация" ], - "s": 53659415, - "sha1_base64": "7FRMNBqaA4TeBTH13+MVh4GhQ2w=" + "s": 53811127, + "sha1_base64": "7XNxkjE+RVx/ct5BkMK5Cwh1PkA=" }, { "id": "Russia_Nenets Autonomous Okrug", @@ -11451,8 +11451,8 @@ "Российская Федерация", "Ненецкий автономный округ" ], - "s": 33509283, - "sha1_base64": "Xnva1MV40F86pJJFDwtr9X6FN5A=" + "s": 33475883, + "sha1_base64": "+7TkYr+Qvd0VlHAWX1wWX1rgv9s=" }, { "id": "Russia_Nizhny Novgorod Oblast", @@ -11464,8 +11464,8 @@ "Российская Федерация", "Нижегородская область" ], - "s": 76845882, - "sha1_base64": "k+a/xlgh8gl2zbrLBUl3BxiIg5c=" + "s": 76695538, + "sha1_base64": "eBVr/9z6McLzUC0EBNkMUb3IO+g=" }, { "id": "Russia_North Ossetia-Alania", @@ -11477,8 +11477,8 @@ "Российская Федерация", "Северная Осетия - Алания" ], - "s": 11204705, - "sha1_base64": "T7pKd9jPRckraHzdRq2Za1Xdo+c=" + "s": 11199417, + "sha1_base64": "RlZ1+Mrcqfwg3CHl+C+7wwND1sE=" }, { "id": "Russia_Novgorod Oblast", @@ -11490,8 +11490,8 @@ "Российская Федерация", "Новгородская область" ], - "s": 31032997, - "sha1_base64": "xROsTDMQqqjNvv2JbxL+Ln41pNQ=" + "s": 31004621, + "sha1_base64": "ba8JSDGtL29Ee+n+uquKeGn8XK8=" }, { "id": "Russia_Novosibirsk Oblast", @@ -11503,8 +11503,8 @@ "Российская Федерация", "Новосибирская область" ], - "s": 76904081, - "sha1_base64": "hvN6zg7lMRTY+TCbG6SNJcJA5Uc=" + "s": 76800305, + "sha1_base64": "jThBEx23uQnpiM+bCt+NpytIyfc=" }, { "id": "Russia_Omsk Oblast", @@ -11516,8 +11516,8 @@ "Российская Федерация", "Омская область" ], - "s": 62575217, - "sha1_base64": "06NbNv67yl+XUgYlKGcYaOEG75Q=" + "s": 62487945, + "sha1_base64": "cXISgS7oNvo6lc2qExE1nxhdyLE=" }, { "id": "Russia_Orenburg Oblast", @@ -11529,8 +11529,8 @@ "Российская Федерация", "Оренбургская область" ], - "s": 52207704, - "sha1_base64": "zg+/QZgiErfogirh8KiJdPmW77w=" + "s": 52120296, + "sha1_base64": "JoOSUlLY0oLZza0nv/YcCwKP0Jw=" }, { "id": "Russia_Oryol Oblast", @@ -11542,8 +11542,8 @@ "Россия", "Российская Федерация" ], - "s": 20564355, - "sha1_base64": "OPCjGOHAdZoCqXP1Tgx3juuH7Sk=" + "s": 20512403, + "sha1_base64": "FV/gxprGhZCuHvOzHc1DPxl1fAM=" }, { "id": "Russia_Penza Oblast", @@ -11555,8 +11555,8 @@ "Россия", "Российская Федерация" ], - "s": 32389780, - "sha1_base64": "lMIJM2tbiaUJOrP+qFzAec9WJmc=" + "s": 32337484, + "sha1_base64": "s3NLrcioY5FFBAENAlTd22CToQs=" }, { "id": "Russia_Perm Krai_North", @@ -11568,8 +11568,8 @@ "Российская Федерация", "Пермский край" ], - "s": 39829741, - "sha1_base64": "FegoVduG0uErFydE0rXlAearL80=" + "s": 39799501, + "sha1_base64": "rC69qb3WEb/6GCNnlGAEILhZeNI=" }, { "id": "Russia_Perm Krai_South", @@ -11581,8 +11581,8 @@ "Российская Федерация", "Пермский край" ], - "s": 54098019, - "sha1_base64": "/sg71Ep05Vhd0R9tSaiPMvanOk0=" + "s": 54049995, + "sha1_base64": "BVG+c+9k+li8qQQ8zI4+oAzUmmk=" }, { "id": "Russia_Primorsky Krai", @@ -11594,8 +11594,8 @@ "Российская Федерация", "Приморский край" ], - "s": 56950016, - "sha1_base64": "Es6L33+kle/aREQz3jiQrJIBTt8=" + "s": 56966032, + "sha1_base64": "7pp7v3hSFkZiGKqwfR/b2mCkFWQ=" }, { "id": "Russia_Pskov Oblast", @@ -11607,8 +11607,8 @@ "Россия", "Российская Федерация" ], - "s": 52419544, - "sha1_base64": "iaIXUnKiq7zR1avEiqtusAfkemg=" + "s": 52365584, + "sha1_base64": "1UNWq6daxIRgZjRyYg1nXSI3ZEs=" }, { "id": "Russia_Republic of Dagestan", @@ -11620,8 +11620,8 @@ "Российская Федерация", "Дагестан" ], - "s": 44764591, - "sha1_base64": "EcYhrg5xEwm1+EE9VmqFcw328n4=" + "s": 44742311, + "sha1_base64": "uG+/m+n7SWzc8FZq4vFidPlNgtU=" }, { "id": "Russia_Republic of Kalmykia", @@ -11634,8 +11634,8 @@ "Калмыкия", "Астраханская область" ], - "s": 15565408, - "sha1_base64": "8MKGIxAd+pilchGCzo70UBi0PoE=" + "s": 15563856, + "sha1_base64": "a9uieolnMDr0I3DbudWevWQZC7g=" }, { "id": "Russia_Republic of Karelia_North", @@ -11647,8 +11647,8 @@ "Россия", "Российская Федерация" ], - "s": 66068237, - "sha1_base64": "L8PhLOSlb1sXY8UYUfxymeSm5Uc=" + "s": 66097461, + "sha1_base64": "/jyJz4SP4gR4RWkoW3mbe4jXOH4=" }, { "id": "Russia_Republic of Karelia_South", @@ -11660,8 +11660,8 @@ "Россия", "Российская Федерация" ], - "s": 67976950, - "sha1_base64": "fXOFL6SXdmD5y/aUJDk7FLGrWwU=" + "s": 68129246, + "sha1_base64": "iTSrEfdrYTeGfPhbhmHtnTY15Lo=" }, { "id": "Russia_Republic of Mordovia", @@ -11673,8 +11673,8 @@ "Российская Федерация", "Мордовия" ], - "s": 32685739, - "sha1_base64": "i8dcMCim1GgnhQdmErKSk8wj6W8=" + "s": 32599243, + "sha1_base64": "dqtyrRXO1lRqIbKrTcEVJ3ZJOHM=" }, { "id": "Russia_Rostov Oblast", @@ -11686,8 +11686,8 @@ "Россия", "Российская Федерация" ], - "s": 74230643, - "sha1_base64": "VPHK3FhoFR7Q0RMoqx73uWRXQJA=" + "s": 73907923, + "sha1_base64": "8Sj4ARyKUVtW2INxnFzN31IlkaM=" }, { "id": "Russia_Ryazan Oblast", @@ -11699,8 +11699,8 @@ "Россия", "Российская Федерация" ], - "s": 33860165, - "sha1_base64": "KE4C8bfCQDWPHfvK+0myYKxdUww=" + "s": 33757365, + "sha1_base64": "YduBMkkB3BczKF1byPGcMWBIu1g=" }, { "id": "Russia_Saint Petersburg", @@ -11713,8 +11713,8 @@ "Российская Федерация", "Ленинградская область" ], - "s": 55912443, - "sha1_base64": "2tYZLzP+gjJ5407RWqcQJ7XUqQI=" + "s": 55904275, + "sha1_base64": "OYXvLxdgtSJi90VH9f8l+GhaCpE=" }, { "id": "Russia_Sakha Republic", @@ -11726,8 +11726,8 @@ "Российская Федерация", "Республика Саха (Якутия)" ], - "s": 110075566, - "sha1_base64": "A56TjvxPUG4KYR3LTPEqyIAt95k=" + "s": 109993518, + "sha1_base64": "k3isdAGtig4J7+DEATnyjhj7OK4=" }, { "id": "Russia_Sakhalin Oblast", @@ -11739,8 +11739,8 @@ "Российская Федерация", "Сахалинская область" ], - "s": 50565550, - "sha1_base64": "YuQPseXLrT2PPikIyO+GWUD/j4c=" + "s": 50529254, + "sha1_base64": "kQk6TxrYqiQRspkKvCzixatQ1xg=" }, { "id": "Russia_Samara Oblast", @@ -11752,8 +11752,8 @@ "Россия", "Российская Федерация" ], - "s": 53286439, - "sha1_base64": "UxBXi30pH39dl/2P2lNkeRGmR5M=" + "s": 53227295, + "sha1_base64": "S0wgsjNrrSaM0HTUQ8dge1nEbY8=" }, { "id": "Russia_Saratov Oblast", @@ -11765,8 +11765,8 @@ "Российская Федерация", "Саратовская область" ], - "s": 50676127, - "sha1_base64": "rhrsHbnMbVtX68MZmOS8AZh+7is=" + "s": 50463823, + "sha1_base64": "k0xKo5/LP71W5vCMdmqACDruQhc=" }, { "id": "Russia_Smolensk Oblast", @@ -11778,8 +11778,8 @@ "Россия", "Российская Федерация" ], - "s": 41142133, - "sha1_base64": "/UBX7CiCDzxRXuudC3855oFMfCk=" + "s": 41150397, + "sha1_base64": "qEGzZUGW0E0HUj2tLEQXVUZTQ74=" }, { "id": "Russia_Stavropol Krai", @@ -11791,8 +11791,8 @@ "Российская Федерация", "Ставропольский край" ], - "s": 38340863, - "sha1_base64": "13LFW+skkQ3g6dsaWNfdF4oh1Lw=" + "s": 38264039, + "sha1_base64": "XAT7skEUR6BoPQ5Xm3iomBB8ig8=" }, { "id": "Russia_Sverdlovsk Oblast_Ekaterinburg", @@ -11804,8 +11804,8 @@ "Российская Федерация", "Свердловская область" ], - "s": 54082241, - "sha1_base64": "M93k66d/w4WjXSjG/0cosPPn/AQ=" + "s": 53984937, + "sha1_base64": "BdFDkiKx62q+lmcVXi9imbh/hIw=" }, { "id": "Russia_Sverdlovsk Oblast_North", @@ -11817,8 +11817,8 @@ "Российская Федерация", "Свердловская область" ], - "s": 54919960, - "sha1_base64": "6jmC52f0Evj1pQXKASmQsCos12k=" + "s": 54875152, + "sha1_base64": "OhOxKdIiq3i3xjGMPI1GQeKWgt0=" }, { "id": "Russia_Tambov Oblast", @@ -11830,8 +11830,8 @@ "Россия", "Российская Федерация" ], - "s": 41203565, - "sha1_base64": "JL6HgX2CyBhy822aZRya9xpkX44=" + "s": 41120805, + "sha1_base64": "ybcKvrcR6dqxhqebZH6AiKMf+p4=" }, { "id": "Russia_Tatarstan", @@ -11843,8 +11843,8 @@ "Российская Федерация", "Татарстан" ], - "s": 82951949, - "sha1_base64": "2cJwEFScZZgyYZLV5jPdSicFrh8=" + "s": 82219773, + "sha1_base64": "tsTU2OvpkKvRJX+G4slP6gCGlXk=" }, { "id": "Russia_Tomsk Oblast", @@ -11856,8 +11856,8 @@ "Российская Федерация", "Томская область" ], - "s": 38861620, - "sha1_base64": "zCugJ6v3tTTmoy6pvmqF7gxuOxg=" + "s": 38769964, + "sha1_base64": "S/lVJ+JFvGTwZzDyQV1+K5qyrfw=" }, { "id": "Russia_Tula Oblast", @@ -11869,8 +11869,8 @@ "Российская Федерация", "Тульская область" ], - "s": 30876212, - "sha1_base64": "jpaFEnPKiX1KP3bCqfbLktX2oAA=" + "s": 30739012, + "sha1_base64": "PcYVl0uvwB90iWw2MiYpLbK2km0=" }, { "id": "Russia_Tuva", @@ -11882,8 +11882,8 @@ "Российская Федерация", "Тыва" ], - "s": 25871521, - "sha1_base64": "vYnfdGTcrlOcV/8Lmd4Czh/l0x8=" + "s": 25864761, + "sha1_base64": "+oAzLjOvx8+UOgFRJrRNaDlp/0o=" }, { "id": "Russia_Tver Oblast", @@ -11895,8 +11895,8 @@ "Российская Федерация", "Тверская область" ], - "s": 71113163, - "sha1_base64": "gL7pFYzzkf1Sj2thKpL65D3Ff10=" + "s": 71002211, + "sha1_base64": "Re8d6BCdWxHOmDub7OlfO0dC2wE=" }, { "id": "Russia_Tyumen Oblast", @@ -11908,8 +11908,8 @@ "Россия", "Российская Федерация" ], - "s": 56354673, - "sha1_base64": "HvjnBE6az0lwyiOxcmHED79STsc=" + "s": 56237857, + "sha1_base64": "wUcb0+5JZWB9zZC7B6hMR1sLbjE=" }, { "id": "Russia_Udmurt Republic", @@ -11921,8 +11921,8 @@ "Российская Федерация", "Удмуртия" ], - "s": 44413190, - "sha1_base64": "98DTngKIUUtZxBE2lIyU0uEmaLI=" + "s": 43468574, + "sha1_base64": "TdNm1330Ew4DRx4N/QIUXPAyRH0=" }, { "id": "Russia_Ulyanovsk Oblast", @@ -11934,8 +11934,8 @@ "Российская Федерация", "Ульяновская область" ], - "s": 39608047, - "sha1_base64": "fIoABrZHr4eH34+QmpsHqwxcCT4=" + "s": 39477159, + "sha1_base64": "o8fIz9FtMhX3/OejaEwyLyoYYUU=" }, { "id": "Russia_Vladimir Oblast", @@ -11947,8 +11947,8 @@ "Российская Федерация", "Владимирская область" ], - "s": 57819811, - "sha1_base64": "COzSjmxSwrLmnd51REqWVF2XCyA=" + "s": 57280835, + "sha1_base64": "hGASJF4y21GjnWEmPn3NL4CR/eo=" }, { "id": "Russia_Volgograd Oblast", @@ -11960,8 +11960,8 @@ "Российская Федерация", "Волгоградская область" ], - "s": 58039112, - "sha1_base64": "KqfGrG5s+K1k4NWTHS/2Co2zTA8=" + "s": 57921864, + "sha1_base64": "TFeZHEWRqZyAA5dQSZ5KUMCgx9Y=" }, { "id": "Russia_Vologda Oblast", @@ -11973,8 +11973,8 @@ "Российская Федерация", "Вологодская область" ], - "s": 62032234, - "sha1_base64": "m5Q3Dt4/ssedfG9q6w1oJv8rMrQ=" + "s": 61945218, + "sha1_base64": "wO221vlsmO1mxNROEskWiMYcC7c=" }, { "id": "Russia_Voronezh Oblast", @@ -11986,8 +11986,8 @@ "Российская Федерация", "Воронежская область" ], - "s": 59899608, - "sha1_base64": "KqqGDgmJWyrgnUDxLiY0ehtR5b4=" + "s": 59813448, + "sha1_base64": "N8wNEJR3KZ31YquKth6XyR3D7RU=" }, { "id": "Russia_Yamalo-Nenets Autonomous Okrug", @@ -11999,8 +11999,8 @@ "Россия", "Российская Федерация" ], - "s": 44721445, - "sha1_base64": "bY5+0b4vsH6+2nLqg8hrEi6IbSE=" + "s": 44649197, + "sha1_base64": "uKsiep0mqDOVKsTcj3h6oTSYLLU=" }, { "id": "Russia_Yaroslavl Oblast", @@ -12012,8 +12012,8 @@ "Российская Федерация", "Ярославская область" ], - "s": 40941293, - "sha1_base64": "3vR2ZvSpjYZctIPuE++Q8KQCWnY=" + "s": 40899045, + "sha1_base64": "N2/GBi1Xy6SBS5+LTy5SBJMOzgo=" }, { "id": "Russia_Yugra_Khanty", @@ -12025,8 +12025,8 @@ "Россия", "Российская Федерация" ], - "s": 57658966, - "sha1_base64": "UwMiVhBzLkzHQOcUdOTSS1nMC/A=" + "s": 57506646, + "sha1_base64": "d6rC06215wMh4Kpf4G0zCobrAhU=" }, { "id": "Russia_Yugra_Surgut", @@ -12038,8 +12038,8 @@ "Россия", "Российская Федерация" ], - "s": 58804848, - "sha1_base64": "QgbF6m0PHlK66Lo7+lB2Zk2WCFQ=" + "s": 58588264, + "sha1_base64": "XEuxKIHWOTI3BrOysi9FFXZdmm0=" }, { "id": "Russia_Zabaykalsky Krai", @@ -12051,8 +12051,8 @@ "Российская Федерация", "Забайкальский край" ], - "s": 49449356, - "sha1_base64": "I5u50ZyLUHuL/GKqwAgry3fT+PE=" + "s": 49429612, + "sha1_base64": "eX4gBBnVQJoHAHIhfsNOCAt2RHs=" } ] }, @@ -12069,8 +12069,8 @@ "Rwanda", "Umujyi wa Kigali" ], - "s": 50282909, - "sha1_base64": "nMAB3cO6MGtvCuW0kmP4eujq74E=" + "s": 49308373, + "sha1_base64": "2oUfTY22tQ3CRWJgjZPCr512xSs=" }, { "id": "Sahrawi Arab Democratic Republic", @@ -12082,8 +12082,8 @@ "Maroc ⵍⵎⵖⵔⵉⴱ المغرب", "RASD" ], - "s": 13732738, - "sha1_base64": "VvrK+NMaXg+A9i34nUGO07iFMHM=" + "s": 13732746, + "sha1_base64": "J32rON9OtuEtIUh9DYOsYCxQlRQ=" }, { "id": "Saint Helena Ascension and Tristan da Cunha", @@ -12097,8 +12097,8 @@ "Saint Helena, Ascension and Tristan da Cunha", "Tristan da Cunha" ], - "s": 1899459, - "sha1_base64": "8i1wjlsE5N/Y1tH654cUo77vhQY=" + "s": 1864115, + "sha1_base64": "RApWiWCjiFihc4fz7WaG/oSSn+E=" }, { "id": "Samoa", @@ -12116,8 +12116,8 @@ "American Samoa", "Sāmoa" ], - "s": 6678773, - "sha1_base64": "R6kjfy/oTR5bUSiikThXB1fBprc=" + "s": 6675773, + "sha1_base64": "Cf7DHkNbfHg3A80bkMq4ddDWdzA=" }, { "id": "San Marino", @@ -12129,8 +12129,8 @@ "Italia", "San Marino" ], - "s": 1668298, - "sha1_base64": "uCvaK4MlaR4zf5InWaIKxhF1YX0=" + "s": 1667498, + "sha1_base64": "B3AYBiauy8RD9hHRqOxBAZQiMbk=" }, { "id": "Saudi Arabia", @@ -12148,8 +12148,8 @@ "الشرقية", "‏المملكة العربية السعودية‎" ], - "s": 58690747, - "sha1_base64": "E7NJ8pK1DjNJQmXXzhmyfiCwrAI=" + "s": 57133195, + "sha1_base64": "CfZPH2VW91LVElc/BhAmpZyWZ/c=" }, { "id": "Saudi Arabia_North", @@ -12167,8 +12167,8 @@ "المدينة المنورة", "‏المملكة العربية السعودية‎" ], - "s": 58159808, - "sha1_base64": "Ei3y/x+H3vwePBu3HNFAFWiQ8f8=" + "s": 56380280, + "sha1_base64": "3ggneKhRWL8IR37Jv286+siKa4w=" } ] }, @@ -12184,8 +12184,8 @@ "Região de Cacheu", "Senegal" ], - "s": 83595566, - "sha1_base64": "2lZon2tl7Z9ISFGmV/N4Xw42CHE=" + "s": 83464446, + "sha1_base64": "3m6PVcDaHCayVD5Zkcd87iAxsuE=" }, { "id": "Serbia", @@ -12197,8 +12197,8 @@ "Војводина", "Централна Србија" ], - "s": 195494556, - "sha1_base64": "KGvQOOemXQ5p2Xf6eBR/Q3R5WeM=" + "s": 192765628, + "sha1_base64": "t50JY77qCr6k7CB8qJbDDmF9fn0=" }, { "id": "Seychelles", @@ -12208,8 +12208,8 @@ "affiliations": [ "Sesel" ], - "s": 2962418, - "sha1_base64": "dPGE1kjgfDTiKU3FgqcDy927ccc=" + "s": 2943394, + "sha1_base64": "7IqvDjCwvjkSoMcHtvJV6c2qlw8=" }, { "id": "Sierra Leone", @@ -12223,8 +12223,8 @@ "Southern Province", "Western Area" ], - "s": 41477491, - "sha1_base64": "b3h0h/cH+zIxHvuSpBxLIsTtwb0=" + "s": 41417843, + "sha1_base64": "VLo8IyHjJGM2f9AnEXB7oXAFRdI=" }, { "id": "Singapore", @@ -12236,8 +12236,8 @@ "Malaysia", "Singapura" ], - "s": 28106988, - "sha1_base64": "G8WmwMBD0PCMNyFWs+HKJy7tuAg=" + "s": 28007236, + "sha1_base64": "Uu9YCe1uOcGYOK0RnWDRddR7q8w=" }, { "id": "Slovakia", @@ -12251,8 +12251,8 @@ "Prešovský kraj", "Slovensko" ], - "s": 51569823, - "sha1_base64": "XnXqXCvPw7PQoQmAW+BKrVmIieA=" + "s": 51466903, + "sha1_base64": "gb3zYhSBCxi3cpi5sAL4fnR+FRo=" }, { "id": "Slovakia_Region of Kosice", @@ -12263,8 +12263,8 @@ "Košický kraj", "Slovensko" ], - "s": 47279070, - "sha1_base64": "LLOQiKQXBVjvAzpC4MzDotDC0Fc=" + "s": 47169782, + "sha1_base64": "7aW1ETLN6HNpY4/IsK37FAfcdzI=" }, { "id": "Slovakia_Region of Banska Bystrica", @@ -12275,8 +12275,8 @@ "Banskobystrický kraj", "Slovensko" ], - "s": 61184440, - "sha1_base64": "BMEeJbQ7N1UQSK9P4c4QabDIRiY=" + "s": 61014392, + "sha1_base64": "MfDbWgU75IWwg7uQ4hoPo6RhnHg=" }, { "id": "Slovakia_Region of Trnava", @@ -12287,8 +12287,8 @@ "Slovensko", "Trnavský kraj" ], - "s": 27322757, - "sha1_base64": "gtsFY52+VnDp8jOM8dcXZMq5Yx8=" + "s": 27270693, + "sha1_base64": "dZ/gEUcNa/+LAfiYRKqAR8XEn/U=" }, { "id": "Slovakia_Region of Trencin", @@ -12299,8 +12299,8 @@ "Slovensko", "Trenčiansky kraj" ], - "s": 39458215, - "sha1_base64": "R9y0LKQfcbrpyD4KHJmtdgRt1LA=" + "s": 39265095, + "sha1_base64": "2HRP+AsYfCS/W6TrwiC3qx/vvGk=" }, { "id": "Slovakia_Region of Nitra", @@ -12311,8 +12311,8 @@ "Nitriansky kraj", "Slovensko" ], - "s": 27636045, - "sha1_base64": "bIB/iIsDHZtUPJaj2zHjHbvC7Go=" + "s": 27584381, + "sha1_base64": "/NXy27Vm/0FRhHb3ZZNSQ6CCOKc=" }, { "id": "Slovakia_Region of Bratislava", @@ -12323,8 +12323,8 @@ "Bratislavský kraj", "Slovensko" ], - "s": 23798805, - "sha1_base64": "0ikWKCgL1mOC7/TXHkrmZ0noi58=" + "s": 23730925, + "sha1_base64": "rTLRlhRQU5wyFjHWA/D7QDJtTTE=" }, { "id": "Slovakia_Region of Zilina", @@ -12335,8 +12335,8 @@ "Slovensko", "Žilinský kraj" ], - "s": 56038008, - "sha1_base64": "jEpn9Gc6pkqibr4dCqptvFZul8g=" + "s": 55916991, + "sha1_base64": "in/yZegGMz8KGAQQwuwpRT400Yo=" } ] }, @@ -12352,8 +12352,8 @@ "Border SI-HR", "Slovenija" ], - "s": 173712143, - "sha1_base64": "pU/efRPjc2G0lbxfZQ+FDteokHg=" + "s": 172783055, + "sha1_base64": "XOPaWLdDoR7juF5f8ENCpzn7BoE=" }, { "id": "Slovenia_West", @@ -12363,8 +12363,8 @@ "affiliations": [ "Slovenija" ], - "s": 127812596, - "sha1_base64": "gA0j+8/mBF4dixXi62oc1ONAmbI=" + "s": 126610436, + "sha1_base64": "PsVO+KFpxXnOXWZd8roGIhX841I=" } ] }, @@ -12386,8 +12386,8 @@ "Temotu Province", "Western Province" ], - "s": 15766603, - "sha1_base64": "dj4jkhBeHigfnUEn37/aiJYZGIY=" + "s": 15737626, + "sha1_base64": "hiLmT+lH4GUcysC7PYpSjpNc3ao=" }, { "id": "Somalia", @@ -12415,8 +12415,8 @@ "Togdheer", "Woqooyi Galbeed" ], - "s": 176028053, - "sha1_base64": "3PDjTb+hklKnePhZK6/W0FXG3os=" + "s": 174148365, + "sha1_base64": "+SMdyJqBh5XSACW+1UOh4n+nKGM=" }, { "id": "South Africa", @@ -12431,8 +12431,8 @@ "South Africa", "Western Cape" ], - "s": 66500331, - "sha1_base64": "M7LAbA7UE6WeV6Tcq7RM4ABvk+A=" + "s": 66289763, + "sha1_base64": "CJNEidbGNQzr3th4cY4UJvpNDPg=" }, { "id": "South Africa_Gauteng", @@ -12443,8 +12443,8 @@ "Gauteng", "South Africa" ], - "s": 43364180, - "sha1_base64": "NwrcA7O4KEZG3l4oZ/JICbUpkUk=" + "s": 43302868, + "sha1_base64": "VeFtod/KOTySyPvve5Cbe0wgL+4=" }, { "id": "South Africa_North West", @@ -12455,8 +12455,8 @@ "North West", "South Africa" ], - "s": 27557193, - "sha1_base64": "Ns/kE/rnKqEBoQ7bNGKHR24pugM=" + "s": 27526537, + "sha1_base64": "OzYwFPDz2iIGMqRdWLqWeqAKldo=" }, { "id": "South Africa_Free State", @@ -12467,8 +12467,8 @@ "Free State", "South Africa" ], - "s": 30310570, - "sha1_base64": "3uqp4QjQ1OL7O2nTed6qg8Xlm0s=" + "s": 30212402, + "sha1_base64": "LIhKvpMJpGIz2cD1v0BwMHa3CSg=" }, { "id": "South Africa_Eastern Cape", @@ -12479,8 +12479,8 @@ "Eastern Cape", "South Africa" ], - "s": 40416579, - "sha1_base64": "pOMpT5wVIqpzleg8zFkKGZ2a2Bg=" + "s": 40380587, + "sha1_base64": "sKrQ6Zhljy8lyiXs+UqEDCYLrns=" }, { "id": "South Africa_Northern Cape", @@ -12491,8 +12491,8 @@ "Northern Cape", "South Africa" ], - "s": 19916289, - "sha1_base64": "wzMOIZzEuQMja3awnYFVV48lnNE=" + "s": 19816993, + "sha1_base64": "sQor9RMexSpRG3UbVeFkyV1KHww=" }, { "id": "South Africa_Mpumalanga", @@ -12503,8 +12503,8 @@ "Mpumalanga", "South Africa" ], - "s": 32297388, - "sha1_base64": "FwvCCF0BJm+1YWlIb7d5NS/NZZE=" + "s": 32285708, + "sha1_base64": "CGlDVLnY8KFfyj5IM4wf0HYupNA=" }, { "id": "South Africa_Limpopo", @@ -12515,8 +12515,8 @@ "Limpopo", "South Africa" ], - "s": 31253266, - "sha1_base64": "YOJ56jcOm48stvRsMbX62ftFXlE=" + "s": 31160266, + "sha1_base64": "CMyHPnM0I6OQHfOu5IWwyWa5fzg=" }, { "id": "South Africa_KwaZulu-Natal", @@ -12527,8 +12527,8 @@ "KwaZulu-Natal", "South Africa" ], - "s": 100002834, - "sha1_base64": "/wo0mXoUv5uKrqWtHyPiN4o5TLo=" + "s": 99081850, + "sha1_base64": "dJYCVr5v+l86T4IRaWRMMo26oI4=" } ] }, @@ -12544,8 +12544,8 @@ "country_name_synonyms": [ "South Georgia and South Sandwich Islands" ], - "s": 12480666, - "sha1_base64": "hEQiJWw9quP9uIfg/GDb34fKjm0=" + "s": 12480162, + "sha1_base64": "nVSPYWUVImKIaqwyW6WbW33yn6I=" }, { "id": "South Ossetia", @@ -12557,8 +12557,8 @@ "Хуссар Ирыстон - Южная Осетия", "საქართველო" ], - "s": 12342577, - "sha1_base64": "mr/9lSzG6RUwDpscE2HaPRcSxSc=" + "s": 12337617, + "sha1_base64": "CegCLkqS2IgSskkilGLQ7lKrORY=" }, { "id": "South Sudan", @@ -12579,8 +12579,8 @@ "Western Equatoria", "واراب" ], - "s": 125561687, - "sha1_base64": "5hBjASBY5QXbAos02ISNzzV2PPk=" + "s": 125240159, + "sha1_base64": "sYuGxyS5z3P+xU2YbMCOBdmMaus=" }, { "id": "Spain", @@ -12595,8 +12595,8 @@ "España (mare territorial)", "España" ], - "s": 74882646, - "sha1_base64": "s+Wm46W0dgGYsCAcmo2/mPbCebQ=" + "s": 73976765, + "sha1_base64": "J7eitGTEPsjIipvhU0n31CPATJ4=" }, { "id": "Spain_Andalusia_Sevilla", @@ -12607,8 +12607,8 @@ "Andalucía", "España" ], - "s": 95049285, - "sha1_base64": "HVURmdFE1AXxzoPV6i2oLS2ubN4=" + "s": 94781181, + "sha1_base64": "/y55uFNSm2TXI8jBxixV/Szgg90=" }, { "id": "Spain_Aragon", @@ -12619,8 +12619,8 @@ "Aragón", "España" ], - "s": 95473199, - "sha1_base64": "G/ZF4WzwMs1Wt3FwF5/M/+S9jrY=" + "s": 94840431, + "sha1_base64": "QmnkULB/GmK8CC1Hv5nXwEjz7sY=" }, { "id": "Spain_Balearic Islands", @@ -12631,8 +12631,8 @@ "Illes Balears", "España" ], - "s": 43280541, - "sha1_base64": "OsQ01L9wPp/jTwO8wkqsrYMolm0=" + "s": 42830781, + "sha1_base64": "F96/WIM9oo10XWWVJ6zihyWREs0=" }, { "id": "Spain_Basque Country", @@ -12644,8 +12644,8 @@ "España", "Euskadi" ], - "s": 77589226, - "sha1_base64": "DpZNk1tRDgFu2vXh4p3FHXjpEoo=" + "s": 77414026, + "sha1_base64": "pd1qZxBTy5Yk6mPqCMWSjzhNW2M=" }, { "id": "Spain_Canary Islands", @@ -12656,8 +12656,8 @@ "Canarias", "España" ], - "s": 60833209, - "sha1_base64": "QE/95df5SsFFQwJJoaUZPZkR4Oo=" + "s": 60885241, + "sha1_base64": "KANUOz6zZ6PV+fPu9NXjQ0cPp3s=" }, { "id": "Spain_Cantabria", @@ -12668,8 +12668,8 @@ "Cantabria", "España" ], - "s": 34816287, - "sha1_base64": "suapm2sBsBQ/SSnbmbGEryZnmD0=" + "s": 34706271, + "sha1_base64": "2S5lxuK+NslKDRF/QJyxT9a7U78=" }, { "id": "Spain_Castile and Leon_West", @@ -12680,8 +12680,8 @@ "Castilla y León", "España" ], - "s": 95294168, - "sha1_base64": "fQFrKcmxzj1P6FSsLB+TlW3jSP4=" + "s": 95007608, + "sha1_base64": "2Qs7rUasDN+2mdSt8IWvFcwrl8M=" }, { "id": "Spain_Castile and Leon_East", @@ -12692,8 +12692,8 @@ "Castilla y León", "España" ], - "s": 77913702, - "sha1_base64": "jUs4P7sj00+WOhH/CLR6KJ5rnmE=" + "s": 77537966, + "sha1_base64": "8SVEZzGKZbiC3lTxPLiZUpTptW8=" }, { "id": "Spain_Castile-La Mancha", @@ -12704,8 +12704,8 @@ "Castilla-La Mancha", "España" ], - "s": 113742425, - "sha1_base64": "lCFGZtnS8gw8/FL9+XQ2JiqZYWs=" + "s": 113561897, + "sha1_base64": "57REYnEaWxpMYPSpZTioce8Bhd0=" }, { "id": "Spain_Catalonia_Provincia de Barcelona", @@ -12716,8 +12716,8 @@ "Catalunya", "España" ], - "s": 127413904, - "sha1_base64": "KpTVFIxBgh83MYTnHADylGNdxKs=" + "s": 126115680, + "sha1_base64": "QlsAc5gWkWoCCjEPgoSYw+DNNA4=" }, { "id": "Spain_Catalonia_Provincia de Girona", @@ -12728,8 +12728,8 @@ "Catalunya", "España" ], - "s": 49432583, - "sha1_base64": "9owkNtacgVWF+T/b9UsvaUnBn20=" + "s": 49093271, + "sha1_base64": "JO3ZO52NbREpJtj24umf7ilvJcM=" }, { "id": "Spain_Catalonia_Provincia de Lleida", @@ -12740,8 +12740,8 @@ "Catalunya", "España" ], - "s": 56138426, - "sha1_base64": "oQ9S+0vofjK8Bx+5Gk9tiOKs66U=" + "s": 54871954, + "sha1_base64": "B12MJMtZDR+k8/71d9HMICjEfFs=" }, { "id": "Spain_Catalonia_Provincia de Tarragona", @@ -12752,8 +12752,8 @@ "Catalunya", "España" ], - "s": 44502511, - "sha1_base64": "xkIhW0ucdlg8xklr/nbi/Q0iY0M=" + "s": 44157255, + "sha1_base64": "MHP0uF4nsd9PUOWSr8bNNUUTVH0=" }, { "id": "Spain_Ceuta", @@ -12765,8 +12765,8 @@ "España", "Maroc ⵍⵎⵖⵔⵉⴱ المغرب" ], - "s": 625388, - "sha1_base64": "+ILNShsENTiw5IZSdEatWj3xmXU=" + "s": 621908, + "sha1_base64": "MgvCKWwtZmDDZzaU2rkufpYmFpE=" }, { "id": "Spain_Community of Madrid", @@ -12777,8 +12777,8 @@ "Comunidad de Madrid", "España" ], - "s": 81522283, - "sha1_base64": "Qb/FAnIC2xztD3ZVwMVIFjAGeuY=" + "s": 81074755, + "sha1_base64": "UlNVUOw23Sjrc3GDjg11VXNczBc=" }, { "id": "Spain_Comunidad Foral de Navarra", @@ -12789,8 +12789,8 @@ "Comunidad Foral de Navarra", "España" ], - "s": 42169967, - "sha1_base64": "sH+1wwTJyeJdlIrBvzD17e3uhEg=" + "s": 42078967, + "sha1_base64": "W/ZztbPR5KrPIBoMg+lTTFk1LgE=" }, { "id": "Spain_Extremadura", @@ -12801,8 +12801,8 @@ "España", "Extremadura" ], - "s": 42572047, - "sha1_base64": "7mm22LF1L4D+BwsfeMls4R3V67M=" + "s": 42352935, + "sha1_base64": "kkom9F8WXpsAy2GFReToYlisQVw=" }, { "id": "Spain_Galicia_North", @@ -12813,8 +12813,8 @@ "España", "Galicia" ], - "s": 68221092, - "sha1_base64": "6HZsP7SsCnGYIfq+hupVeeo7cJo=" + "s": 68042756, + "sha1_base64": "7WcbtN81cg1cSYVfe64f0Ru7Fao=" }, { "id": "Spain_Galicia_South", @@ -12825,8 +12825,8 @@ "España", "Galicia" ], - "s": 45644976, - "sha1_base64": "vIzgu9XcGOfK0sITy0MGDnl3j18=" + "s": 45296744, + "sha1_base64": "qrkkAd7boVnDDSMGxC2zHNGB9r0=" }, { "id": "Spain_La Rioja", @@ -12837,8 +12837,8 @@ "España", "La Rioja" ], - "s": 17390497, - "sha1_base64": "QZliKhbZbTi+YhPUSKqTj9WFm8g=" + "s": 17087361, + "sha1_base64": "bUTXkRhWumWVXBt3Jv2mpkVED6A=" }, { "id": "Spain_Melilla", @@ -12851,8 +12851,8 @@ "Maroc ⵍⵎⵖⵔⵉⴱ المغرب", "Melilla" ], - "s": 890148, - "sha1_base64": "HGgqBiqz/myr9Xzw6CKTF0U4j+4=" + "s": 889364, + "sha1_base64": "auok+fIuUpwxfSa9XfP7VgZbFOk=" }, { "id": "Spain_Principado de Asturias", @@ -12863,8 +12863,8 @@ "España", "Principado de Asturias" ], - "s": 34807280, - "sha1_base64": "g3IYgeYPYO9XTVmagfyeObC4kyc=" + "s": 34731552, + "sha1_base64": "5kb+msAGqHTxhMk9VecdhD0E6mQ=" }, { "id": "Spain_Region de Murcia", @@ -12875,8 +12875,8 @@ "España", "Región de Murcia" ], - "s": 41990670, - "sha1_base64": "UjLh1vXXmYjqAFBU/5Kg76BlcRg=" + "s": 41915582, + "sha1_base64": "Mli1GNXAKpt/HRE7BEb+oaxjw8c=" }, { "id": "Spain_Valencian Community", @@ -12887,8 +12887,8 @@ "Comunitat Valenciana", "España" ], - "s": 124639094, - "sha1_base64": "5HXVaIZhqbqJSbgE5/b7w9FbY9w=" + "s": 123657246, + "sha1_base64": "ic0ut8PkHm2BZpJO6nTbwDNulBA=" } ] }, @@ -12908,8 +12908,8 @@ "מחוז ירושלים", "מדינת ישראל" ], - "s": 8880710, - "sha1_base64": "OHHTNlC7BthdPI4ShIT3NHn1suw=" + "s": 8844710, + "sha1_base64": "n6XVP6alxPPG3YvzmL2QYOTt/68=" }, { "id": "Palestine", @@ -12921,8 +12921,8 @@ "Area B", "Area C" ], - "s": 32678483, - "sha1_base64": "ZzxKNfyGh2yRTXofXskXNLzw2QY=" + "s": 31765243, + "sha1_base64": "W3Wgrtrx5f9IuNEUL2br7Yj7Bcg=" } ] }, @@ -12943,8 +12943,8 @@ "Western Province", "ශ්‍රී ලංකා" ], - "s": 132373554, - "sha1_base64": "tqTJe+AT4wrVUwcwPx6dNDR8j4Q=" + "s": 132209082, + "sha1_base64": "XPJH/n24epCz+mx7v3m8tQo3dtM=" }, { "id": "Sudan", @@ -12967,8 +12967,8 @@ "an-Nil al-Azraq", "ash-Shamaliyah" ], - "s": 57113460, - "sha1_base64": "pN6Kd1cGhSC9CzXS7scq5PJxSjo=" + "s": 57108780, + "sha1_base64": "5MLZSvoSIpbkPk68YvIvDcSw+yI=" }, { "id": "Sudan_West", @@ -12993,8 +12993,8 @@ "ash-Shamaliyah", "واراب" ], - "s": 140794241, - "sha1_base64": "yd95z/9qFunU+r9EryyjmehW0l0=" + "s": 140085641, + "sha1_base64": "qFDIrGxWZdmc8ps3uvQyeehUKAE=" } ] }, @@ -13016,8 +13016,8 @@ "Suriname", "Wanica" ], - "s": 30242153, - "sha1_base64": "10Ck517c/Y5zwccb3cH6aRigrvE=" + "s": 30222841, + "sha1_base64": "IqC7q3j7BLd3rQ0PFvz2uVfiBfw=" }, { "id": "Swaziland", @@ -13034,8 +13034,8 @@ "country_name_synonyms": [ "Eswatini" ], - "s": 25026190, - "sha1_base64": "22G9BjfmHODLHBD6B7ZfbanMxvw=" + "s": 24996310, + "sha1_base64": "LUaOq1viCT0rzk0ZvqFcx250Yvs=" }, { "id": "Sweden", @@ -13051,8 +13051,8 @@ "Uppsala län", "Västmanlands län" ], - "s": 61153427, - "sha1_base64": "bzfZyHem2WxMGONRXE6RklxfMh4=" + "s": 60780163, + "sha1_base64": "cKWk5zL8FzPDEH/iAonlmP2aAv4=" }, { "id": "Sweden_Stockholm", @@ -13063,8 +13063,8 @@ "Stockholms län", "Sverige" ], - "s": 62662978, - "sha1_base64": "k5qZFD5xaXDgmxVKjL1ZRCTcVQM=" + "s": 62308834, + "sha1_base64": "WyT/WWC0GOVa3Ufs/3o5CADcEDc=" }, { "id": "Sweden_Ostra Gotaland", @@ -13081,8 +13081,8 @@ "Sverige", "Territorial waters of Gotland" ], - "s": 102109366, - "sha1_base64": "a5BobUKLcwsv3cFUxzmGNDBGJck=" + "s": 101902214, + "sha1_base64": "ZjinicMBK17iWfy8lHTUaxLi8jg=" }, { "id": "Sweden_Norra Sverige", @@ -13094,8 +13094,8 @@ "Sverige", "Västerbottens län" ], - "s": 96217917, - "sha1_base64": "C0MDj21bVzv5iszlJr/K8ap8lH8=" + "s": 95654805, + "sha1_base64": "XcDXOE9IFAKc0BIUal8v+s/rjmM=" }, { "id": "Sweden_Mellannorrland", @@ -13107,8 +13107,8 @@ "Sverige", "Västernorrlands län" ], - "s": 118080516, - "sha1_base64": "4vduptTKqoZhGkFM31+68G1yfBM=" + "s": 114383644, + "sha1_base64": "rYJtlPNxHrK7CBdwCY7i3iyxpJI=" }, { "id": "Sweden_Bergslagen", @@ -13122,8 +13122,8 @@ "Sverige", "Värmlands län" ], - "s": 147216390, - "sha1_base64": "wutxfcw+OaNNbM1pmirzEJJqGFA=" + "s": 145870262, + "sha1_base64": "zFyMGkEyevgyFcSj1Zy9N/1Wg9k=" }, { "id": "Sweden_Vastra Gotaland", @@ -13136,8 +13136,8 @@ "Sverige", "Västra Götalands län" ], - "s": 123866854, - "sha1_base64": "tF7vNrH08IUsrdHzK1ZKh95aI6M=" + "s": 123460678, + "sha1_base64": "tUEQ8pP1nLtjBs7MWplpdeEjB4U=" }, { "id": "Sweden_Sodra Gotaland", @@ -13151,8 +13151,8 @@ "Sverige", "Territorial waters of Bornholm" ], - "s": 55024041, - "sha1_base64": "XCAk8An0KI2zd8lXKMpoBCrnaJw=" + "s": 54498425, + "sha1_base64": "IpnyGHSiS1lwh3b7sPJPsI9pLkY=" } ] }, @@ -13174,8 +13174,8 @@ "Schweiz, Suisse, Svizzera, Svizra", "Thurgau" ], - "s": 87307167, - "sha1_base64": "4Sjq1gonVL2aRNLc4ZfvQRnBolo=" + "s": 86892863, + "sha1_base64": "IG89KSSR0fFXvUvB5Gw/DYRTLew=" }, { "id": "Switzerland_Central", @@ -13191,8 +13191,8 @@ "Uri", "Zug" ], - "s": 49273512, - "sha1_base64": "QZaC9uz9hFAixdDqnRj+awnIOEI=" + "s": 49058160, + "sha1_base64": "+76GGGjt7eCQh3ybczP160PRvW4=" }, { "id": "Switzerland_Espace Mittelland_Bern", @@ -13209,8 +13209,8 @@ "Solothurn", "Vaud" ], - "s": 81122972, - "sha1_base64": "1Gyw9XlakXif+WXyZ57Kq6AC9Zk=" + "s": 80710732, + "sha1_base64": "pXPhQMPowzGLp08lXoIBZ1cXqMU=" }, { "id": "Switzerland_Espace Mittelland_East", @@ -13221,8 +13221,8 @@ "Bern - Berne", "Schweiz, Suisse, Svizzera, Svizra" ], - "s": 47351911, - "sha1_base64": "IHFW9STwsia0oNk/yKVUqFkyQ+w=" + "s": 47272631, + "sha1_base64": "De43KFUqmcwLShIWYJANDfFNfmE=" }, { "id": "Switzerland_Ticino", @@ -13233,8 +13233,8 @@ "Schweiz, Suisse, Svizzera, Svizra", "Ticino" ], - "s": 28478349, - "sha1_base64": "HxRUDCnYVdPYVW6tIZn+wLInvQM=" + "s": 28417357, + "sha1_base64": "U8Fq91tfGvOzTEZ8tSuG9bmhT8I=" }, { "id": "Switzerland_Northwestern", @@ -13247,8 +13247,8 @@ "Basel-Stadt", "Schweiz, Suisse, Svizzera, Svizra" ], - "s": 49658306, - "sha1_base64": "6wrrtpqfEuD95SwcJQkxTjtdTwI=" + "s": 49276274, + "sha1_base64": "PBA7E7fu4NLdkX5ogZv9b2HoFno=" }, { "id": "Switzerland_Lake Geneva region", @@ -13262,8 +13262,8 @@ "Vaud", "Valais - Wallis" ], - "s": 97057750, - "sha1_base64": "xTZnIwkd0wVi38r9oeouiT9zNDk=" + "s": 96750886, + "sha1_base64": "/yqaZrjD/IxczS0SaEWGHfKbsIU=" }, { "id": "Switzerland_Zurich", @@ -13274,8 +13274,8 @@ "Schweiz, Suisse, Svizzera, Svizra", "Zürich" ], - "s": 58064291, - "sha1_base64": "zh/hRtH8eUWFKSsYWm7sy37xncE=" + "s": 57820603, + "sha1_base64": "Y58iVdCPWcZC/QbAxPJKOlN9v0c=" } ] }, @@ -13301,8 +13301,8 @@ "UNDOF", "حمص" ], - "s": 80925560, - "sha1_base64": "v+MBEPlRYhyPpUj5M7vZzxS+ZUw=" + "s": 80687544, + "sha1_base64": "quNfKtR8TZ0eQTrHeP3rl7OwUCU=" }, { "id": "Sao Tome and Principe", @@ -13314,8 +13314,8 @@ "São Tomé Province", "São Tomé e Príncipe" ], - "s": 2918213, - "sha1_base64": "j8KWcQzM8Sqab7vufej7k+8XGXg=" + "s": 2917197, + "sha1_base64": "ktXvWN2tUMu8DEi1iJYiXGaW83s=" }, { "id": "Tajikistan", @@ -13329,8 +13329,8 @@ "Ноҳияҳои тобеи ҷумҳурӣ", "Тоҷикистон" ], - "s": 79916550, - "sha1_base64": "f9iNaDgrdmEbrxj912k+4xSxPns=" + "s": 79857422, + "sha1_base64": "jpUi9MZa/sPqCZba1p//yh0g2lo=" }, { "id": "Tanzania", @@ -13365,8 +13365,8 @@ "Unguja Kusini", "Unguja Mjini Magharibi" ], - "s": 571125259, - "sha1_base64": "ZP1VJxXS5qVilarupra5MIh9gnA=" + "s": 570422939, + "sha1_base64": "3QOAVMUniE2LClUKj0m1NBUR4r8=" }, { "id": "Thailand", @@ -13392,8 +13392,8 @@ "จังหวัดเชียงใหม่", "จังหวัดแม่ฮ่องสอน" ], - "s": 61285819, - "sha1_base64": "VaLUfRaT5qdA+gB4y5st0uqF6FY=" + "s": 61138467, + "sha1_base64": "joCmXi5zd0U9XEwEGMw4+Fl59aM=" }, { "id": "Thailand_Central", @@ -13439,8 +13439,8 @@ "จังหวัดอำนาจเจริญ", "จังหวัดพระนครศรีอยุธยา" ], - "s": 119442124, - "sha1_base64": "aVpxgdXk9AB8XZmJG4BNoLnty9A=" + "s": 119326084, + "sha1_base64": "Y9luW8dgCweUPi93WXWggZ2baBU=" }, { "id": "Thailand_South", @@ -13482,8 +13482,8 @@ "จังหวัดนครศรีธรรมราช", "จังหวัดประจวบคีรีขันธ์" ], - "s": 134750749, - "sha1_base64": "hCGlIzdB/fByEIyiKRBzA1h1bHw=" + "s": 134248469, + "sha1_base64": "nH9+Yzwm694+OOYu85aIS1LTa/w=" } ] }, @@ -13499,8 +13499,8 @@ "country_name_synonyms": [ "Bahamas" ], - "s": 14163269, - "sha1_base64": "aHslX3T5+o2lk/zynVetMezT780=" + "s": 14158605, + "sha1_base64": "50Ebfoovx2NgJbTTO3ye9VmQ0Z0=" }, { "id": "The Gambia", @@ -13519,8 +13519,8 @@ "Mansakonko", "Senegal" ], - "s": 15800768, - "sha1_base64": "OYV/ngrsdX/c3SaoV9+iSgIFU00=" + "s": 15777104, + "sha1_base64": "gb3GGLvNS32bmjU+NHLJ2baN490=" }, { "id": "Netherlands", @@ -13534,8 +13534,8 @@ "Drenthe", "Nederland" ], - "s": 43859335, - "sha1_base64": "OB6Nl4S21HuS/2pnQ4MHkfjUxgU=" + "s": 43690743, + "sha1_base64": "MySu5/oLvgtMnoL5MhYHc7+HFXM=" }, { "id": "Netherlands_Flevoland", @@ -13546,8 +13546,8 @@ "Flevoland", "Nederland" ], - "s": 25090356, - "sha1_base64": "Ohf9Hyi34BvDp4bRVKkwCXZELuc=" + "s": 25254707, + "sha1_base64": "7ly+r8impDrMLJX1yFedBMckn6w=" }, { "id": "Netherlands_Friesland", @@ -13558,8 +13558,8 @@ "Friesland", "Nederland" ], - "s": 64716904, - "sha1_base64": "6CQVAC3QTTPWWsyoEfuCWK4suZ0=" + "s": 64972952, + "sha1_base64": "5YOGwq8BrLuO5y9nHbrVujGJw8A=" }, { "id": "Netherlands_Gelderland_Nijmegen", @@ -13570,8 +13570,8 @@ "Gelderland", "Nederland" ], - "s": 39829543, - "sha1_base64": "3lXHSll7k+oGsV6Ace2f9gzQvAQ=" + "s": 39757319, + "sha1_base64": "9IL/MWhhugRfhyd6C4YsA83jDiU=" }, { "id": "Netherlands_Gelderland_North", @@ -13582,8 +13582,8 @@ "Gelderland", "Nederland" ], - "s": 67720945, - "sha1_base64": "2i/tQ4Q+6CeSbs/chvGwTxGLPfw=" + "s": 67516393, + "sha1_base64": "zASRYpOjUX03OvPJ+I4YeKwNZ7M=" }, { "id": "Netherlands_Gelderland_Zutphen", @@ -13594,8 +13594,8 @@ "Gelderland", "Nederland" ], - "s": 27521203, - "sha1_base64": "xp6qissq52MqRdkq/Yc/yw13V4o=" + "s": 27403835, + "sha1_base64": "eBEoZAOUBNZP9tUsFTf1lHfxyiQ=" }, { "id": "Netherlands_Groningen", @@ -13608,8 +13608,8 @@ "Nederland", "Niedersachsen" ], - "s": 41745935, - "sha1_base64": "gDc0+Nj2XwZSNqzlHi6DPJ4Nya8=" + "s": 41444303, + "sha1_base64": "nAn7w+96jLNcsWF9IA0fHc8gkVo=" }, { "id": "Netherlands_Limburg", @@ -13620,8 +13620,8 @@ "Limburg", "Nederland" ], - "s": 77631577, - "sha1_base64": "RN1lN2lIWtQn76Adq0RdQshJ2Rw=" + "s": 77452937, + "sha1_base64": "kTnoBKI3UM16pzyNaQQIfYp0nzM=" }, { "id": "Netherlands_North Brabant_Eindhoven", @@ -13632,8 +13632,8 @@ "Nederland", "Noord-Brabant" ], - "s": 61391807, - "sha1_base64": "NLje0ixkPStZ6j9ZUCckasrn5ZM=" + "s": 61255047, + "sha1_base64": "62jBmANj+AJcCo7qUxxDMPj1PmQ=" }, { "id": "Netherlands_North Brabant_Roosendaal", @@ -13644,8 +13644,8 @@ "Nederland", "Noord-Brabant" ], - "s": 20641594, - "sha1_base64": "cRsMGgzh+EVJgHcXNDDNfQVRoSs=" + "s": 20600617, + "sha1_base64": "hTMshTgq40gO7YHuUyck6BkCJgQ=" }, { "id": "Netherlands_North Brabant_Tiburg", @@ -13657,8 +13657,8 @@ "Nederland - Belgique / België / Belgien", "Noord-Brabant" ], - "s": 48298942, - "sha1_base64": "wI9CdnqtfET6vm1y24FoysPV7iw=" + "s": 48209670, + "sha1_base64": "vRCD/KaAJlHMgXngeMfKV/megzk=" }, { "id": "Netherlands_North Brabant_Uden", @@ -13669,8 +13669,8 @@ "Nederland", "Noord-Brabant" ], - "s": 22596465, - "sha1_base64": "YXRG3pwBmJ8PNeUZ3bWenypyo7A=" + "s": 22562313, + "sha1_base64": "TMz0I71bvuUcs0WcSyUu/m6Azw8=" }, { "id": "Netherlands_North Holland_Alkmaar", @@ -13681,8 +13681,8 @@ "Nederland", "Noord-Holland" ], - "s": 38679430, - "sha1_base64": "R6S1LnpK5ekw9d3mFClek/u/q2k=" + "s": 38585678, + "sha1_base64": "22tMFSt7ZEHkJwTfKGlP26twhdk=" }, { "id": "Netherlands_North Holland_Amsterdam", @@ -13693,8 +13693,8 @@ "Nederland", "Noord-Holland" ], - "s": 82753753, - "sha1_base64": "5ZeBuxosiSa76wubomvbKy91orA=" + "s": 82548768, + "sha1_base64": "vULZo2K9M3IvqWBVrxBR94vPZ0I=" }, { "id": "Netherlands_North Holland_Zaandam", @@ -13705,8 +13705,8 @@ "Nederland", "Noord-Holland" ], - "s": 27967162, - "sha1_base64": "c9y7qpjgUWNQExnjxiMfl559cwE=" + "s": 27893402, + "sha1_base64": "XcBqQxWj+UCEciZo29lii58w9uA=" }, { "id": "Netherlands_Overijssel_Enschede", @@ -13717,8 +13717,8 @@ "Nederland", "Overijssel" ], - "s": 41525101, - "sha1_base64": "r+XQeyZaaEi8qRGyZ2j1HtKZmVo=" + "s": 41364941, + "sha1_base64": "YSwYNS6atRrXllDFWa/x4+CBG+Y=" }, { "id": "Netherlands_Overijssel_Zwolle", @@ -13729,8 +13729,8 @@ "Nederland", "Overijssel" ], - "s": 40757981, - "sha1_base64": "mCqpCinuHR/C3iNUPQvPjOjP0g8=" + "s": 40686814, + "sha1_base64": "ehmbtzQ1kW5cnTfvWdvdjB78U/0=" }, { "id": "Netherlands_South Holland_Brielle", @@ -13741,8 +13741,8 @@ "Nederland", "Zuid-Holland" ], - "s": 21714374, - "sha1_base64": "BLeQIDsh/FxOexs7MeqD8BxbeX4=" + "s": 21669302, + "sha1_base64": "+YOlX6zHDJ3o8qNQy2uJjYS47qs=" }, { "id": "Netherlands_South Holland_Den Haag", @@ -13753,8 +13753,8 @@ "Nederland", "Zuid-Holland" ], - "s": 64296697, - "sha1_base64": "kTL26LmlQqwnCJSzLYHFdGqBprg=" + "s": 64163817, + "sha1_base64": "qEBlp5nzJ3AaZvXtNahka8auJUE=" }, { "id": "Netherlands_South Holland_Leiden", @@ -13765,8 +13765,8 @@ "Nederland", "Zuid-Holland" ], - "s": 27261075, - "sha1_base64": "pqKY4AVO/oh4Syv9waCATMCXyoU=" + "s": 27196283, + "sha1_base64": "FuyY742Oa7j41atsh/PvNv0TDuY=" }, { "id": "Netherlands_South Holland_Rotterdam", @@ -13777,8 +13777,8 @@ "Nederland", "Zuid-Holland" ], - "s": 63516556, - "sha1_base64": "ugi3MRvJ0DLTeCGyMZgeT9q65h8=" + "s": 63278716, + "sha1_base64": "w50cG16Udpv1V/6jv9PievOAlCc=" }, { "id": "Netherlands_Utrecht_Amersfoort", @@ -13789,8 +13789,8 @@ "Utrecht", "Nederland" ], - "s": 31142213, - "sha1_base64": "kUUJCzIjUyLHZimy4jicSSzJCds=" + "s": 30950213, + "sha1_base64": "YGUhE3k/LUvH3GjsbstxDtBcPHc=" }, { "id": "Netherlands_Utrecht_Utrecht", @@ -13801,8 +13801,8 @@ "Utrecht", "Nederland" ], - "s": 37672942, - "sha1_base64": "1RVNgtDXUKLg3WxNrDTN7dJFKEI=" + "s": 37634726, + "sha1_base64": "D0gyOnN5YWOYD/+lGbYn81hvMX8=" }, { "id": "Netherlands_Zeeland", @@ -13813,8 +13813,8 @@ "Nederland", "Zeeland" ], - "s": 35171150, - "sha1_base64": "fMn4bcIpdFykgCB5woofNgCsOt0=" + "s": 35107446, + "sha1_base64": "jk/0eVYnC5DpYSrW+/Hz8OGM4v8=" } ] }, @@ -13831,8 +13831,8 @@ "Région des Savanes", "Togo" ], - "s": 55625242, - "sha1_base64": "PgKXiDfuXC5uoBSfWeQMScJuQWo=" + "s": 55368522, + "sha1_base64": "JTiUHhZbpuiLfPHJusz/TaTMmZQ=" }, { "id": "Tonga", @@ -13852,8 +13852,8 @@ "Vahe Vaini", "Vavaʻu" ], - "s": 4064130, - "sha1_base64": "SqTmLJ9rT94H177wJOeq1MUQg3w=" + "s": 4048762, + "sha1_base64": "CKtwK/ErFDvO3hPT3pLsm7UyAhQ=" }, { "id": "Tunisia", @@ -13887,8 +13887,8 @@ "القيروان", "المنستير" ], - "s": 79346714, - "sha1_base64": "w/qXEUDtyO5/n6zc+S1xtCbzL6M=" + "s": 79280914, + "sha1_base64": "qDD2tjuDXgk6gdImBVuyqwlK3qA=" }, { "id": "Turkey", @@ -13909,8 +13909,8 @@ "Osmaniye", "Türkiye" ], - "s": 91244034, - "sha1_base64": "gUrynhiqVfA8I0Tn06aoeEHi9yQ=" + "s": 91038146, + "sha1_base64": "Bg7eZeXqwh6G9gTAlEA57Gr7eUc=" }, { "id": "Turkey_Southeastern Anatolia Region", @@ -13930,8 +13930,8 @@ "Şanlıurfa", "Şırnak" ], - "s": 68821070, - "sha1_base64": "meO0QSp13JACnieVrtJwnHBSgmw=" + "s": 68695374, + "sha1_base64": "wOF8OKRsNvfEZugpqHx/nwGDkqs=" }, { "id": "Turkey_Marmara Region_Istanbul", @@ -13948,8 +13948,8 @@ "Çanakkale", "İstanbul" ], - "s": 87560868, - "sha1_base64": "FqSjNaAe+rjL6OSPiWmRddI6WYc=" + "s": 86858212, + "sha1_base64": "QDoBSKlMK+h4gIGdiJpnVFC+iGs=" }, { "id": "Turkey_Marmara Region_Bursa", @@ -13969,8 +13969,8 @@ "Çanakkale", "İstanbul" ], - "s": 59447441, - "sha1_base64": "w1R4PNr37ydofi25+yALYCHcHNs=" + "s": 59280833, + "sha1_base64": "aHA0WbW18pm6EsL8Tg+ffKYJGwA=" }, { "id": "Turkey_Eastern Anatolia Region", @@ -13994,8 +13994,8 @@ "Tunceli", "Türkiye" ], - "s": 43260133, - "sha1_base64": "SK9138NR9QqbJ7RZapgvH6q2+M8=" + "s": 43038532, + "sha1_base64": "T5XW6L2sMQsLNg2qvvxlcr4eCSE=" }, { "id": "Turkey_Black Sea Region", @@ -14023,8 +14023,8 @@ "Zonguldak", "Çorum" ], - "s": 96924581, - "sha1_base64": "49w+EarwxYIWd725GL2KGIKAGxY=" + "s": 96724741, + "sha1_base64": "AH3oM1SWMb5A9/UDI8b5pDDy78c=" }, { "id": "Turkey_Central Anatolia Region_Ankara", @@ -14042,8 +14042,8 @@ "Türkiye", "Çankırı" ], - "s": 54758751, - "sha1_base64": "ZFGQprDsj4cq/AKC3gnt/QZZ6CU=" + "s": 54538471, + "sha1_base64": "Djz7vO/LzT/cjddOjIjX3F18doQ=" }, { "id": "Turkey_Central Anatolia Region_Kayseri", @@ -14059,8 +14059,8 @@ "Türkiye", "Yozgat" ], - "s": 54483796, - "sha1_base64": "dUgQqUUSZ/v1wBIyNlw9BQ+hOcY=" + "s": 54450388, + "sha1_base64": "SOOBSWrlvDT4FQxRgortImxT1Vw=" }, { "id": "Turkey_Aegean Region", @@ -14078,8 +14078,8 @@ "Uşak", "İzmir" ], - "s": 81011875, - "sha1_base64": "tB8N82qrNNEuEJxE09GxUiUZEUk=" + "s": 80656555, + "sha1_base64": "tgQ+WPUhjk9oc7RyzjenJFj8iEI=" } ] }, @@ -14096,8 +14096,8 @@ "Mary", "Türkmenistan" ], - "s": 55128830, - "sha1_base64": "0SHu3ifXxBBLKonCeaB5Va+NJik=" + "s": 54903550, + "sha1_base64": "bvLhmF35JPgWr343+iYTh7xMSEA=" }, { "id": "Turks and Caicos Islands", @@ -14109,8 +14109,8 @@ "The Bahamas", "Turks and Caicos Islands" ], - "s": 1404189, - "sha1_base64": "ljFXwPWOgvXZCsGszHQvhinDHyY=" + "s": 1403021, + "sha1_base64": "xftpbGtjqH+xfu7KmACo/r1iDOM=" }, { "id": "Tuvalu", @@ -14120,8 +14120,8 @@ "affiliations": [ "Tuvalu" ], - "s": 501613, - "sha1_base64": "4jMziCZUbiu4JlGKLq9HFFCtr+o=" + "s": 489437, + "sha1_base64": "miAO3pZ974W1svrQeYNPR0CHTs0=" }, { "id": "Uganda", @@ -14170,8 +14170,8 @@ "Uganda", "Western Region" ], - "s": 308064563, - "sha1_base64": "if1KTO3MMF25jhUBMQQK0/ECfEM=" + "s": 305132963, + "sha1_base64": "CeozJL81AJhj2k90H5to4YjtHWA=" }, { "id": "Ukraine", @@ -14185,8 +14185,8 @@ "Черкаська область", "Україна" ], - "s": 43151852, - "sha1_base64": "oCAat/hxddaIEswvpIs7gdWRL3k=" + "s": 42958747, + "sha1_base64": "s7oHRM7my8D+y4ehO+jKDtNFirQ=" }, { "id": "Ukraine_Chernihiv Oblast", @@ -14197,8 +14197,8 @@ "Україна", "Чернігівська область" ], - "s": 35386845, - "sha1_base64": "jJkLLmRVicsspyuNnGp7rPoc+A4=" + "s": 35245869, + "sha1_base64": "fmgiygU8vEUMGs6xYdR8Hjk6174=" }, { "id": "Ukraine_Chernivtsi Oblast", @@ -14209,8 +14209,8 @@ "Чернівецька область", "Україна" ], - "s": 29427002, - "sha1_base64": "zxRf1qWb6JHNPna+9CxWyZxCdII=" + "s": 29383986, + "sha1_base64": "3GLuxfMSUwWtSeJUK26v2J27grY=" }, { "id": "Ukraine_Dnipropetrovsk Oblast", @@ -14221,8 +14221,8 @@ "Україна", "Дніпропетровська область" ], - "s": 59327488, - "sha1_base64": "76l8EE6qwbr01EhtiHLfBvZzwPE=" + "s": 59236600, + "sha1_base64": "s0vrh3O1M7Py0lpBIgQKEYjWXms=" }, { "id": "Ukraine_Donetsk Oblast", @@ -14233,8 +14233,8 @@ "Україна", "Донецька область" ], - "s": 68815944, - "sha1_base64": "nvqz0fenHGyV0QL8HKWuixY/TdE=" + "s": 68811832, + "sha1_base64": "iU0aPSEOI8EQXoRZLYvAA5BzKB0=" }, { "id": "Ukraine_Ivano-Frankivsk Oblast", @@ -14245,8 +14245,8 @@ "Івано-Франківська область", "Україна" ], - "s": 38519228, - "sha1_base64": "YhyqbSjIRkCq2P+wZ4Fksmuasq0=" + "s": 38426644, + "sha1_base64": "UojsWDFmk0YE29z9X3oNrp8vqrM=" }, { "id": "Ukraine_Kharkiv Oblast", @@ -14257,8 +14257,8 @@ "Харківська область", "Україна" ], - "s": 60084775, - "sha1_base64": "Gz7oEybjfDGdI3binL5D7O1E3Go=" + "s": 59933391, + "sha1_base64": "cOVWw73jotYF9gUHqFckgBOR80Q=" }, { "id": "Ukraine_Kherson Oblast", @@ -14269,8 +14269,8 @@ "Херсонська область", "Україна" ], - "s": 21877921, - "sha1_base64": "V2P7TsyDkb0hF9DJDVKa9s/0DU8=" + "s": 21867681, + "sha1_base64": "0+ihFZXe2XtOt19F/DerkxYv9uA=" }, { "id": "Ukraine_Khmelnytskyi Oblast", @@ -14281,8 +14281,8 @@ "Хмельницька область", "Україна" ], - "s": 35794635, - "sha1_base64": "Qf3Gaa8JXlWC6fxUXwQCnQundWY=" + "s": 35629899, + "sha1_base64": "x3KcPt6cIv6ZDr6ZOVgoU3Mk7Lw=" }, { "id": "Ukraine_Kirovohrad Oblast", @@ -14293,8 +14293,8 @@ "Україна", "Кіровоградська область" ], - "s": 35335994, - "sha1_base64": "QwxKMppySwMl82XhmbZcPls1f0E=" + "s": 35288410, + "sha1_base64": "dcrZ/wBoUElLpw95vO9E/Jz4f4s=" }, { "id": "Ukraine_Kyiv Oblast", @@ -14306,8 +14306,8 @@ "Україна", "Київська область" ], - "s": 80086354, - "sha1_base64": "rLSzmmIP4v0vL3zcAfL9ZvokPnM=" + "s": 79758834, + "sha1_base64": "CTVkBwaSU+YWpc++dOlTEU99E34=" }, { "id": "Ukraine_Luhansk Oblast", @@ -14318,8 +14318,8 @@ "Україна", "Луганська область" ], - "s": 50179108, - "sha1_base64": "PZqkZE88Hs2+NdNwTqdd9ZIXg7E=" + "s": 50202541, + "sha1_base64": "0rFMK1zXJftWnNmnVudD6sC6jyw=" }, { "id": "Ukraine_Lviv Oblast", @@ -14330,8 +14330,8 @@ "Львівська область", "Україна" ], - "s": 67587915, - "sha1_base64": "5rDVTYSuJ8rHJXtgrNtblNa8+P0=" + "s": 67374475, + "sha1_base64": "mNj9vWz4qWu8OAoRV+aRKJE2zl8=" }, { "id": "Ukraine_Mykolaiv Oblast", @@ -14342,8 +14342,8 @@ "Україна", "Миколаївська область" ], - "s": 33745195, - "sha1_base64": "vLG9XAOdRkiuvpSRZVDnmajHBuE=" + "s": 33638555, + "sha1_base64": "xDmnq/ImA7m+iel2nDTwfpCIWfU=" }, { "id": "Ukraine_Odessa Oblast", @@ -14354,8 +14354,8 @@ "Україна", "Одеська область" ], - "s": 41144184, - "sha1_base64": "RMNL0cmubwXALz6WkJAYsYNnx+I=" + "s": 41104912, + "sha1_base64": "Lv+LLdEBgttUPZSBobzQ9dN7W6U=" }, { "id": "Ukraine_Poltava Oblast", @@ -14366,8 +14366,8 @@ "Полтавська область", "Україна" ], - "s": 37313767, - "sha1_base64": "uWpLxz91pYLw8HrSDpmWMqnla70=" + "s": 37270575, + "sha1_base64": "T/IzcBM5d9CIqiVActiDxVFnRYI=" }, { "id": "Ukraine_Rivne Oblast", @@ -14378,8 +14378,8 @@ "Рівненська область", "Україна" ], - "s": 29026699, - "sha1_base64": "QjRFMNfxoxk+EXJ57KDuutuKnjA=" + "s": 29319099, + "sha1_base64": "9JvUrwamdwP3zcsUQovhMX1h6c0=" }, { "id": "Ukraine_Sumy Oblast", @@ -14390,8 +14390,8 @@ "Україна", "Сумська область" ], - "s": 33082324, - "sha1_base64": "hm3NR3bbGe+L65FNbVmlYbCvjbQ=" + "s": 33035252, + "sha1_base64": "KZP2pIH/IJiYSXc+oXb0FAd3d7E=" }, { "id": "Ukraine_Ternopil Oblast", @@ -14402,8 +14402,8 @@ "Україна", "Тернопільська область" ], - "s": 31225450, - "sha1_base64": "xs5vxAvs1HLOINeYXPpBX14f488=" + "s": 31118850, + "sha1_base64": "uH41ogkz0iVKf5uPgOmnrrx9+MA=" }, { "id": "Ukraine_Vinnytsia Oblast", @@ -14414,8 +14414,8 @@ "Україна", "Вінницька область" ], - "s": 41058396, - "sha1_base64": "HldDt/Jn2Ci9tPdcm4tlYitCJH4=" + "s": 40761612, + "sha1_base64": "URsW8rGzyc0WRMQqeH7Nx7XFPE8=" }, { "id": "Ukraine_Volyn Oblast", @@ -14426,8 +14426,8 @@ "Україна", "Волинська область" ], - "s": 30523970, - "sha1_base64": "hpZd40h30WRW8VLpvzCA4JW/iKo=" + "s": 30480490, + "sha1_base64": "pF6vfCOlaI36pNU5quyu6lED4Vk=" }, { "id": "Ukraine_Zakarpattia Oblast", @@ -14438,8 +14438,8 @@ "Україна", "Закарпатська область" ], - "s": 38795566, - "sha1_base64": "DQnys6oe890zj+JHvskg56FfaT8=" + "s": 38706830, + "sha1_base64": "HwStuG8oEElMf74UHgjeQrzwVPs=" }, { "id": "Ukraine_Zaporizhia Oblast", @@ -14450,8 +14450,8 @@ "Запорізька область", "Україна" ], - "s": 32355595, - "sha1_base64": "XFT4rLLmlz8k9zsI9xVmKWGPRdQ=" + "s": 32373803, + "sha1_base64": "KRhI2LROYTyLcq82GTM0DT5ZOJI=" }, { "id": "Ukraine_Zhytomyr Oblast", @@ -14462,8 +14462,8 @@ "Житомирська область", "Україна" ], - "s": 35887397, - "sha1_base64": "1bKLhJBCCoSwuU+NMaJb6WSxbJA=" + "s": 36079821, + "sha1_base64": "SFzHJUjE2Zoqbb0CpjQOmj5QH5U=" }, { "id": "Crimea", @@ -14478,8 +14478,8 @@ "Україна", "Республика Крым" ], - "s": 54046560, - "sha1_base64": "tpa6r60E/NUFHtY2lAi4UNBJu2c=" + "s": 53986776, + "sha1_base64": "8j/Ig8uwN9LP3b4linOS2zMUkNU=" } ] }, @@ -14499,8 +14499,8 @@ "الشارقة", "الإمارات العربيّة المتّحدة" ], - "s": 89324786, - "sha1_base64": "ItIpSexeZKlMbNnYq04fyTYekD4=" + "s": 88916130, + "sha1_base64": "Y3G4ZMsi9uCm/IamAF0bI5ss+Ao=" }, { "id": "Falkland Islands", @@ -14510,8 +14510,8 @@ "affiliations": [ "Falkland Islands" ], - "s": 10580653, - "sha1_base64": "OEXxJzU/pBIZs2849ZwdiOUTuG4=" + "s": 10575445, + "sha1_base64": "nOhipQOeovJP+z6KRDuDll4Qx/I=" }, { "id": "United Kingdom", @@ -14524,8 +14524,8 @@ "affiliations": [ "British Indian Ocean Territory" ], - "s": 563575, - "sha1_base64": "in+uj0o654KFKqPu11KAccr8VNs=" + "s": 563551, + "sha1_base64": "YcmJTWmqFiGU2j+9LxuYcdfRGjo=" }, { "id": "UK_England_East Midlands", @@ -14536,8 +14536,8 @@ "England", "United Kingdom" ], - "s": 119773725, - "sha1_base64": "8nUtAxRYNqSh+Ach2Nz4mDOruVo=" + "s": 117890422, + "sha1_base64": "Dhj3ifLMkxcm4n6q6ymfh91nn9Y=" }, { "id": "UK_England_East of England_Essex", @@ -14548,8 +14548,8 @@ "England", "United Kingdom" ], - "s": 70747663, - "sha1_base64": "94rM8T515vpFpq+aQrn8mBahz0c=" + "s": 69532671, + "sha1_base64": "zYmTtftS7E7wrabQo7EnqvthOi4=" }, { "id": "UK_England_East of England_Norfolk", @@ -14560,8 +14560,8 @@ "England", "United Kingdom" ], - "s": 85467595, - "sha1_base64": "WwKpYj8xHdM1F+bv/9nZaHAx6BQ=" + "s": 84194948, + "sha1_base64": "nCR5Kb5ecl+NQKassMcDRSWzCdo=" }, { "id": "UK_England_Greater London", @@ -14572,8 +14572,8 @@ "England", "United Kingdom" ], - "s": 116521169, - "sha1_base64": "5xdjK2CRSm8Q4G2ICr/FeiqLeZg=" + "s": 113983754, + "sha1_base64": "owDa1KuvGpGYysV+0MewGrvMctg=" }, { "id": "UK_England_North East England", @@ -14584,8 +14584,8 @@ "England", "United Kingdom" ], - "s": 64121009, - "sha1_base64": "G5Uo/eIHDAlp8CtZ1Juf0cslFt8=" + "s": 63222538, + "sha1_base64": "IrzduhQt469m7M38HYK/TwmNnRI=" }, { "id": "UK_England_North West England_Manchester", @@ -14596,8 +14596,8 @@ "England", "United Kingdom" ], - "s": 116532133, - "sha1_base64": "2BrSNLLPmx42MPlvmaD/YUzwai8=" + "s": 114428958, + "sha1_base64": "50H59lifCule5sI2i/7BjFYxMwQ=" }, { "id": "UK_England_North West England_Lancaster", @@ -14608,8 +14608,8 @@ "England", "United Kingdom" ], - "s": 54597521, - "sha1_base64": "n5FWWf1/9iTF48QhGKjkQGY24ik=" + "s": 54164170, + "sha1_base64": "pjw28in8v//pG3feREdl2UZbXt4=" }, { "id": "UK_England_South East_Brighton", @@ -14620,8 +14620,8 @@ "England", "United Kingdom" ], - "s": 117642893, - "sha1_base64": "+gJlbnBZQqWz3zfnUvRMM45V/G8=" + "s": 115251670, + "sha1_base64": "lrLHEVgz5IGsNHvtcjd+aPE6TYc=" }, { "id": "UK_England_South East_Oxford", @@ -14632,8 +14632,8 @@ "England", "United Kingdom" ], - "s": 112737077, - "sha1_base64": "R1dpLJwtbrFKoPA7/DHPES1NqlI=" + "s": 110875342, + "sha1_base64": "nB7M8ABEKLeasV8RpJuXCPbh71s=" }, { "id": "UK_England_South West England_Bristol", @@ -14644,8 +14644,8 @@ "England", "United Kingdom" ], - "s": 132444455, - "sha1_base64": "99MWvmoHooNFCyKAf9ejbrp3IPU=" + "s": 130495792, + "sha1_base64": "5kp+LiUNuavCrNhJyYoKqWsUj3c=" }, { "id": "UK_England_South West England_Cornwall", @@ -14656,8 +14656,8 @@ "England", "United Kingdom" ], - "s": 74633162, - "sha1_base64": "g/mM3Nyfc/gTZzCKMruXt2vbFIU=" + "s": 73667915, + "sha1_base64": "4o7NrQMDso6pNNkdgtFUKqMllPY=" }, { "id": "UK_England_West Midlands", @@ -14668,8 +14668,8 @@ "England", "United Kingdom" ], - "s": 141018456, - "sha1_base64": "K8KUC5HJbzapFFSOsfP8G7vVs3s=" + "s": 139155681, + "sha1_base64": "Mw9qocg2YPa4ppyaR3M/SkT5yqQ=" }, { "id": "UK_England_Yorkshire and the Humber", @@ -14680,8 +14680,8 @@ "England", "United Kingdom" ], - "s": 131447431, - "sha1_base64": "6cRaAOXFWMKwqErmSIWVZ7q7R20=" + "s": 129534400, + "sha1_base64": "duEcPAqxqTeMfOxGHRB5q1Nu7sU=" }, { "id": "UK_Northern Ireland", @@ -14693,8 +14693,8 @@ "Scotland", "United Kingdom" ], - "s": 56413034, - "sha1_base64": "GIkrUocTR798PFcEcZFZv7fCl6g=" + "s": 55834962, + "sha1_base64": "xJfv1eQGuY3QkLFV9kFgeZ7TpNw=" }, { "id": "UK_Scotland_North", @@ -14705,8 +14705,8 @@ "Scotland", "United Kingdom" ], - "s": 148356270, - "sha1_base64": "VEtrhp86qChWbhmHMuKAwWUiGow=" + "s": 146822639, + "sha1_base64": "8us9GZlEieQleGpCH8cWXszBb2o=" }, { "id": "UK_Scotland_South", @@ -14718,8 +14718,8 @@ "Scotland", "United Kingdom" ], - "s": 120355027, - "sha1_base64": "GVlcxKQRdfbsES2RaPT/w4ySDSg=" + "s": 118861516, + "sha1_base64": "wLDo+vxv0jTlU2qo5MYwEAMmgds=" }, { "id": "UK_Wales", @@ -14730,8 +14730,8 @@ "United Kingdom", "Wales" ], - "s": 124107318, - "sha1_base64": "3LoMdx1trW2YOD62DXij4T6BDT8=" + "s": 122382839, + "sha1_base64": "BdfIAZxeBri3y9/c/7AoLTjJnXs=" } ] }, @@ -14746,8 +14746,8 @@ "affiliations": [ "Ireland" ], - "s": 50353640, - "sha1_base64": "jWw2VzVEAyWoXjcXtvuR0qyRNxA=" + "s": 49312135, + "sha1_base64": "g/8lJpgNFIe3uL5I/3Z2+1yMSeI=" }, { "id": "Ireland_Leinster", @@ -14757,8 +14757,8 @@ "affiliations": [ "Ireland" ], - "s": 103474868, - "sha1_base64": "zp+vyo7O9WqTgWZH106V2eg1jJQ=" + "s": 102611148, + "sha1_base64": "pUDHtVawGEuLWXT39fnezlXuVP8=" }, { "id": "Ireland_Munster", @@ -14768,8 +14768,8 @@ "affiliations": [ "Ireland" ], - "s": 72592114, - "sha1_base64": "TqGkKLxGRSJRPA6DIzsLkw/Pq6c=" + "s": 72156154, + "sha1_base64": "Yivl6ZW2bOkss72fy0YTixa2jSs=" }, { "id": "Ireland_Northern Counties", @@ -14779,8 +14779,8 @@ "affiliations": [ "Ireland" ], - "s": 31578853, - "sha1_base64": "zWhULoI/Fbyr1Q6+1xRN9Az2Sec=" + "s": 31432189, + "sha1_base64": "pRkQjY6YKLXjzQotoGPjI5RphHo=" } ] }, @@ -14800,8 +14800,8 @@ "AL", "United States of America" ], - "s": 52584038, - "sha1_base64": "BiRGp9QDkrASdngZWm4rkaaYT4Y=" + "s": 52214672, + "sha1_base64": "j7kwlLuAgeW01hxRoS/5mxuQH2w=" }, { "id": "US_Alabama_Montgomery", @@ -14813,8 +14813,8 @@ "AL", "United States of America" ], - "s": 84003618, - "sha1_base64": "jTcUIzO2jHptGzcMNbJ7NR3rlXM=" + "s": 83981884, + "sha1_base64": "5rCH3pAfo7g/hvhAFk92iNOUZDY=" } ] }, @@ -14828,8 +14828,8 @@ "AK", "United States of America" ], - "s": 328402144, - "sha1_base64": "vzeJmwVJVmbGPzL7i5gTdXfeKyQ=" + "s": 327990601, + "sha1_base64": "TI/OutsO2I4xvxruo64wAO6alVs=" }, { "id": "Arizona", @@ -14844,8 +14844,8 @@ "AZ", "United States of America" ], - "s": 84365824, - "sha1_base64": "PtLJllgw969QpekcXFAe7+jfxAs=" + "s": 84249754, + "sha1_base64": "5fJMlg2kvCSwzWVs+U8y/jVjw4g=" }, { "id": "US_Arizona_Phoenix", @@ -14857,8 +14857,8 @@ "AZ", "United States of America" ], - "s": 144135259, - "sha1_base64": "cwktoZQt12oB6waEuLos0JSjGJE=" + "s": 143282788, + "sha1_base64": "qEv5b5RPRfdv4QhBZhmzSwuP4HU=" }, { "id": "US_Arizona_Tucson", @@ -14870,8 +14870,8 @@ "AZ", "United States of America" ], - "s": 57804989, - "sha1_base64": "tfJt0y+JvWgXOrwfXpNtYovxpLI=" + "s": 57688775, + "sha1_base64": "/qSb8bipuiXxZZyAWliQohK04bM=" } ] }, @@ -14888,8 +14888,8 @@ "AR", "United States of America" ], - "s": 55627847, - "sha1_base64": "kDNLaArAYptX5AtQcXIWl0dIx48=" + "s": 53717009, + "sha1_base64": "EUgxnJksZ4UfXKripszSFI0GxOk=" }, { "id": "US_Arkansas_South", @@ -14901,8 +14901,8 @@ "AR", "United States of America" ], - "s": 36421219, - "sha1_base64": "9T9/2f4/2Jf0Z9UmKW/41feDmN8=" + "s": 36223589, + "sha1_base64": "7SRpszRZCkm5k1aGppdf6tyZjv0=" } ] }, @@ -14919,8 +14919,8 @@ "CA", "United States of America" ], - "s": 47398083, - "sha1_base64": "cxXwBJaoEk+Tebsg5M2npBA7f9s=" + "s": 47297749, + "sha1_base64": "/wxo6Exx0YGaJYNXZBE5vSyEjZc=" }, { "id": "US_California_Bakersfield_Bakersfield", @@ -14932,8 +14932,8 @@ "CA", "United States of America" ], - "s": 42993851, - "sha1_base64": "tJaej0H+XhAbeGBM9okrplnc2oM=" + "s": 42937213, + "sha1_base64": "bx47yBVCU7aiiKlnwM8rHhSzmvU=" }, { "id": "US_California_Bakersfield_Lancaster", @@ -14945,8 +14945,8 @@ "CA", "United States of America" ], - "s": 47405259, - "sha1_base64": "OlBMr0dNOsMjAAORu0oB5uSnk4c=" + "s": 47279861, + "sha1_base64": "iZs2EolGoF2On6zb5hfMQ4JnOp8=" }, { "id": "US_California_LA", @@ -14958,8 +14958,8 @@ "CA", "United States of America" ], - "s": 235282581, - "sha1_base64": "nzEJLbfxnVzAXv+HcbSUym8lOvg=" + "s": 234761031, + "sha1_base64": "U6sO3cP4+S4p105vk8n/woGb6BM=" }, { "id": "US_California_LA North", @@ -14971,8 +14971,8 @@ "CA", "United States of America" ], - "s": 70563981, - "sha1_base64": "WWAh1AYfHhoqRenq9CGC5E6Nsro=" + "s": 70018951, + "sha1_base64": "9Xt1sq5DPM306Ofe5JB4TkhY4cE=" }, { "id": "US_California_Redding", @@ -14985,8 +14985,8 @@ "Hoopa Valley Tribe", "United States of America" ], - "s": 60192773, - "sha1_base64": "JC9YJ6o1tC1xtn1Rwt+GqzMb0bI=" + "s": 60125639, + "sha1_base64": "9cpi6i6tg3o+UzxmeW0kfUqg5kU=" }, { "id": "US_California_Sacramento_Sacramento", @@ -14998,8 +14998,8 @@ "CA", "United States of America" ], - "s": 47377917, - "sha1_base64": "sbNatUb4xJBREmGC9amVo/BfPJc=" + "s": 46866207, + "sha1_base64": "rjO7J1X35zjqokmqssYk0HZUi2Q=" }, { "id": "US_California_Sacramento_Fresno", @@ -15011,8 +15011,8 @@ "CA", "United States of America" ], - "s": 49091708, - "sha1_base64": "4LsGyhmd5+IHqUluYw+oNSsAuUI=" + "s": 48349341, + "sha1_base64": "KsZ1GVKSW8GYch2skY+ixQrMfNI=" }, { "id": "US_California_Sacramento_Stockton", @@ -15024,8 +15024,8 @@ "CA", "United States of America" ], - "s": 59099741, - "sha1_base64": "ggz2ZsWZ6wRrpleg0W9eiMyf9/w=" + "s": 58541783, + "sha1_base64": "DAVSWkYi7Sqpb7jWHYShpFlG/08=" }, { "id": "US_California_San Diego", @@ -15037,8 +15037,8 @@ "CA", "United States of America" ], - "s": 93804018, - "sha1_base64": "xk/smjEXiqIewT4YMUPvNuPqnGo=" + "s": 90413052, + "sha1_base64": "fgIwo+DBAewva2hvmljf1L4fZ2Y=" }, { "id": "US_California_Santa_Clara_Santa Cruz", @@ -15050,8 +15050,8 @@ "CA", "United States of America" ], - "s": 31476740, - "sha1_base64": "pxFLbCV+SHauHofXVrZ8XWxBZwk=" + "s": 31248686, + "sha1_base64": "4//2P24TcduMpPpaOZNrI5DNiGw=" }, { "id": "US_California_Santa_Clara_Palo Alto", @@ -15063,8 +15063,8 @@ "CA", "United States of America" ], - "s": 181142460, - "sha1_base64": "trLeFnkq/ao4MYxUh4TlY+ZW4oA=" + "s": 180376878, + "sha1_base64": "kpzSSHVJbfpXZi4fNG3CqgI8g5o=" } ] }, @@ -15081,8 +15081,8 @@ "CO", "United States of America" ], - "s": 69329567, - "sha1_base64": "Zu4WEM2IY6+FFcR1zCBC7mhUjTw=" + "s": 69020593, + "sha1_base64": "NaXXwa9H/Ms//hj4uPaoTr2Do1U=" }, { "id": "US_Colorado_Denver", @@ -15094,8 +15094,8 @@ "CO", "United States of America" ], - "s": 138340062, - "sha1_base64": "lVMP3wjrObo8gTH1m2bVOWtZY5E=" + "s": 135997344, + "sha1_base64": "Ll4ZqoL9l6R5o2Tv1btUeigSzwQ=" }, { "id": "US_Colorado_South", @@ -15107,8 +15107,8 @@ "CO", "United States of America" ], - "s": 64918311, - "sha1_base64": "Wy7xD2qHTpoLIv3KnQa2+XIdoHE=" + "s": 63982185, + "sha1_base64": "dgqODQxMYXRkd6VKXJSPvWBmGLc=" } ] }, @@ -15122,8 +15122,8 @@ "CT", "United States of America" ], - "s": 161825226, - "sha1_base64": "dNEOuNhFyw7AYh2ov1atWsAbYns=" + "s": 161642668, + "sha1_base64": "9nP8F+2lqIe/nuADCWfMxBqs9C4=" }, { "id": "US_Delaware", @@ -15135,8 +15135,8 @@ "DE", "United States of America" ], - "s": 19689754, - "sha1_base64": "KD7i++zHiM+lnrQN62MrD5Rrkao=" + "s": 19630892, + "sha1_base64": "GPm0HN6IME1Loh3dqEvyvDBrfkc=" }, { "id": "Florida", @@ -15151,8 +15151,8 @@ "FL", "United States of America" ], - "s": 185331536, - "sha1_base64": "rXiC/eoM5D2KPt/dEYg1u/MgqSE=" + "s": 185079106, + "sha1_base64": "3Ounp5QlS4Q/gb67M8QqG8f4SQY=" }, { "id": "US_Florida_Miami", @@ -15164,8 +15164,8 @@ "FL", "United States of America" ], - "s": 161858075, - "sha1_base64": "SwKmVd35H1MiRs3WnAw9VmlkTR8=" + "s": 161521941, + "sha1_base64": "pfJqPCIo+ZCj6jr4nWG5JQx5s4o=" }, { "id": "US_Florida_Orlando", @@ -15177,8 +15177,8 @@ "FL", "United States of America" ], - "s": 77436992, - "sha1_base64": "OLnb6lT4LOEBfzlrNx2vFV5EaJY=" + "s": 77135298, + "sha1_base64": "6IsVHP5Grirw3dgUB3/LEgs2DVg=" }, { "id": "US_Florida_Tampa", @@ -15190,8 +15190,8 @@ "FL", "United States of America" ], - "s": 146284949, - "sha1_base64": "GQncRnuc3Eb2FLVkyF/dJ+Tk0DU=" + "s": 146060263, + "sha1_base64": "iIC1NiXJvcgL7CG58AwdlmltMD8=" }, { "id": "US_Florida_Gainesville", @@ -15203,8 +15203,8 @@ "FL", "United States of America" ], - "s": 122517386, - "sha1_base64": "H+/9DhVF1b+UMs+yT63At/QBA0k=" + "s": 122331116, + "sha1_base64": "ttz9kMQY6eqe8nUToF8YhOOGpCI=" } ] }, @@ -15221,8 +15221,8 @@ "GA", "United States of America" ], - "s": 115791875, - "sha1_base64": "X9w/JIxx5pdB+dWUlGlA/tHqOj0=" + "s": 115134061, + "sha1_base64": "noW45qQMRqkT18Yyl3WundEfXLE=" }, { "id": "US_Georgia_Macon", @@ -15234,8 +15234,8 @@ "GA", "United States of America" ], - "s": 58645798, - "sha1_base64": "ulF+B3HqzsCCM+ZZFsWz3C7GexY=" + "s": 58318360, + "sha1_base64": "4gMJPon42d09cxkK8fYjVvP1NFc=" }, { "id": "US_Georgia_North", @@ -15247,8 +15247,8 @@ "GA", "United States of America" ], - "s": 43971861, - "sha1_base64": "PvE2kTSzS3l5dwUUpK8O0JDYsnM=" + "s": 43775111, + "sha1_base64": "LJGzJpcDwBAdEwBueF0EU6/sAW4=" }, { "id": "US_Georgia_South", @@ -15260,8 +15260,8 @@ "GA", "United States of America" ], - "s": 62158454, - "sha1_base64": "Ehf53XkcNHBKmZOnzQSO4b5mtvA=" + "s": 61423120, + "sha1_base64": "w5w00ZGtW5nQ+aSOrIQ0cMWAWjY=" } ] }, @@ -15281,8 +15281,8 @@ "country_name_synonyms": [ "Guam" ], - "s": 4209181, - "sha1_base64": "hC3mVUUNCbf5/qCLNaba153zxOk=" + "s": 4230271, + "sha1_base64": "cemtvS3DHcaGNsqPhID+t+5HgeU=" }, { "id": "US_Hawaii", @@ -15294,8 +15294,8 @@ "HI", "United States of America" ], - "s": 22413734, - "sha1_base64": "XLsVegCfkhx+KaFWADMOHIGGoMQ=" + "s": 22073816, + "sha1_base64": "UAKoJLwNG4LjhIs3+veQDjpDCo0=" }, { "id": "US_Idaho", @@ -15310,8 +15310,8 @@ "ID", "United States of America" ], - "s": 50039253, - "sha1_base64": "ew76pZ+ygtZgYKABQmdDzpwxap8=" + "s": 49902471, + "sha1_base64": "Imqu4HS44rTz1sq6UvpCy9CDsVk=" }, { "id": "US_Idaho_South", @@ -15323,8 +15323,8 @@ "ID", "United States of America" ], - "s": 61525895, - "sha1_base64": "qe/fxatwE4L6H2uBfveLihbBGxI=" + "s": 61332129, + "sha1_base64": "+8Jk4I1HrL7KLn64/Wz+u5quJsQ=" } ] }, @@ -15341,8 +15341,8 @@ "IL", "United States of America" ], - "s": 48976279, - "sha1_base64": "oL6SnQkOR3FDIfYX/AXOBB2j5nw=" + "s": 48825401, + "sha1_base64": "SAQnAI3eINd2q1R729rDanbaHPI=" }, { "id": "US_Illinois_Chickago", @@ -15354,8 +15354,8 @@ "IL", "United States of America" ], - "s": 84879155, - "sha1_base64": "HudC+X2EOM6IeUNBoBrVwMYaz/Q=" + "s": 84025957, + "sha1_base64": "xhzERDEjafxO6dQyPDK9lGWCGdU=" }, { "id": "US_Illinois_Elgin", @@ -15367,8 +15367,8 @@ "IL", "United States of America" ], - "s": 46208037, - "sha1_base64": "l6wiWgegCNepy0ACpJYS2X+TKI0=" + "s": 45760015, + "sha1_base64": "izBgtwcxewJl/Oc/E5yJyn+uOQc=" }, { "id": "US_Illinois_Rockford", @@ -15380,8 +15380,8 @@ "IL", "United States of America" ], - "s": 31442217, - "sha1_base64": "/Skcxo5Pldf8H3bIvjJHWFajdoA=" + "s": 31055595, + "sha1_base64": "6ieYoCLhXzhTlf6CMIwyoXIRJh4=" }, { "id": "US_Illinois_Springfield", @@ -15393,8 +15393,8 @@ "IL", "United States of America" ], - "s": 65153712, - "sha1_base64": "9ZV7HYOWyia23eALil+J8i4B4jk=" + "s": 64928210, + "sha1_base64": "Nuq2NSrrrkl4N89dOMMMwFQ+tjs=" } ] }, @@ -15411,8 +15411,8 @@ "IN", "United States of America" ], - "s": 72055322, - "sha1_base64": "jPySrM1Ss0COvW3q2/9DY/wVTsQ=" + "s": 71655043, + "sha1_base64": "dUK50vS8j1T6iztye6HEP9WUenk=" }, { "id": "US_Indiana_Evansville", @@ -15424,8 +15424,8 @@ "IN", "United States of America" ], - "s": 35785858, - "sha1_base64": "xWYUEqw+BRdw5KMHS+i7QCrzuf4=" + "s": 35510164, + "sha1_base64": "I9DMY3+xpp0r4BMaRCo31IwACTk=" }, { "id": "US_Indiana_Indianapolis", @@ -15437,8 +15437,8 @@ "IN", "United States of America" ], - "s": 67575158, - "sha1_base64": "cyCWEI7Ga1xGyekGUCuCaSICkyM=" + "s": 67394752, + "sha1_base64": "1MB9JrWwj3ergpz5kL5F9m5Xdok=" } ] }, @@ -15455,8 +15455,8 @@ "IA", "United States of America" ], - "s": 44677714, - "sha1_base64": "OsWNTRBdWwo7OOhSty6qNvNTfmw=" + "s": 44606556, + "sha1_base64": "brVUxjLTuC0goOCuidZdz39+6rk=" }, { "id": "US_Iowa_Waterloo", @@ -15468,8 +15468,8 @@ "IA", "United States of America" ], - "s": 40746883, - "sha1_base64": "tpvjaOlCTfsltHjij6CPdn1mqLY=" + "s": 40671301, + "sha1_base64": "xEBlzTGCncdbHGGMirIQp7OL1MM=" }, { "id": "US_Iowa_West", @@ -15481,8 +15481,8 @@ "IA", "United States of America" ], - "s": 40841835, - "sha1_base64": "TCXUb+Bgk0TYJ9g+He+K1ZiT1OM=" + "s": 40764173, + "sha1_base64": "r0xdkEpg5khq06CHpYwN75KT7uM=" } ] }, @@ -15499,8 +15499,8 @@ "KS", "United States of America" ], - "s": 50668190, - "sha1_base64": "Ylrr2lOQkWBQVNvU1oKu9T/SqZU=" + "s": 50450688, + "sha1_base64": "o2T7ERxpp7kD5SY8U7110y4TXkk=" }, { "id": "US_Kansas_West", @@ -15512,8 +15512,8 @@ "KS", "United States of America" ], - "s": 29283226, - "sha1_base64": "MnMFDYJIFghaLG9SbCNydctyRaQ=" + "s": 29184452, + "sha1_base64": "cOuZ4/NdMHEPq+RXOYiAPOwWFWw=" }, { "id": "US_Kansas_Wichita", @@ -15525,8 +15525,8 @@ "KS", "United States of America" ], - "s": 37711329, - "sha1_base64": "BIovrKZJlxqkbYq3LITwxdm16yU=" + "s": 37596459, + "sha1_base64": "oX2rb1vMuJ8HB9/HtYxZU8psw9c=" } ] }, @@ -15543,8 +15543,8 @@ "KY", "United States of America" ], - "s": 59611191, - "sha1_base64": "me1bJiv+9V9D0T0ZIOYAIGwvG4k=" + "s": 59420833, + "sha1_base64": "59DLNkyBr9FO7A7vrS66CNr0mjo=" }, { "id": "US_Kentucky_West", @@ -15556,8 +15556,8 @@ "KY", "United States of America" ], - "s": 36138226, - "sha1_base64": "+VVMNrF/RRSEQuL8DIUO8V/qNPU=" + "s": 35988724, + "sha1_base64": "Y5MVqFZyeY2NoaIbtkWlH6u1xsM=" }, { "id": "US_Kentucky_Louisville", @@ -15569,8 +15569,8 @@ "KY", "United States of America" ], - "s": 41322915, - "sha1_base64": "67u/KIgUMFotUE46uIhfnZqdXn0=" + "s": 41228605, + "sha1_base64": "S0u0CCe5EO0wPPYRzBkm3KvCI/I=" } ] }, @@ -15587,8 +15587,8 @@ "LA", "United States of America" ], - "s": 50946413, - "sha1_base64": "1eS+GQxdSIgmN6gLt0najRWAkZo=" + "s": 50675383, + "sha1_base64": "CvI9I+DOByqtD3Bl1+YHogSWyak=" }, { "id": "US_Louisiana_New Orleans", @@ -15600,8 +15600,8 @@ "LA", "United States of America" ], - "s": 77084182, - "sha1_base64": "2atDCdbwoEipoFW1BiLOQfkb6TQ=" + "s": 76915856, + "sha1_base64": "/iBIFEZ2lk+4k8itIC49WyCWdJs=" } ] }, @@ -15615,8 +15615,8 @@ "ME", "United States of America" ], - "s": 96249787, - "sha1_base64": "BA6c25JjL8b/K8zKAF8B8OvDc/0=" + "s": 95629429, + "sha1_base64": "gOY6tBvrithigBEVGQELHX+kDfI=" }, { "id": "Maryland", @@ -15631,8 +15631,8 @@ "MD", "United States of America" ], - "s": 109243188, - "sha1_base64": "efPV0xYc5sPO7aijnIOonExpbno=" + "s": 109019238, + "sha1_base64": "RdJBRsvVVHOKwWdBuY6M+lIW5zY=" }, { "id": "US_Maryland_and_DC", @@ -15647,8 +15647,8 @@ "MD", "United States of America" ], - "s": 89982849, - "sha1_base64": "VBnfUMoY3loxLdoItqn+6rYztzU=" + "s": 89620907, + "sha1_base64": "CC/BbxnD+i9DPkZjOulqfhxkMCw=" } ] }, @@ -15665,8 +15665,8 @@ "MA", "United States of America" ], - "s": 82432246, - "sha1_base64": "xfvZ9fOApReAadALJzFvMsBNFa8=" + "s": 82156096, + "sha1_base64": "hx/yDjsbNTW5UqXjAkfF4MizT+8=" }, { "id": "US_Massachusetts_Central", @@ -15678,8 +15678,8 @@ "MA", "United States of America" ], - "s": 38349811, - "sha1_base64": "rmHpuQATD4RDihs13ZNzpFBoTUc=" + "s": 38288157, + "sha1_base64": "0k31RUBGwW5mPZ5BdOn0zvZWSGI=" }, { "id": "US_Massachusetts_Plymouth", @@ -15691,8 +15691,8 @@ "MA", "United States of America" ], - "s": 39976083, - "sha1_base64": "1xI2+JSVuBTPC4jCeKbiuo+ytm0=" + "s": 39949589, + "sha1_base64": "z+cPa6W7d5v1e6tWrp3w+50Yl70=" }, { "id": "US_Massachusetts_Southeastern", @@ -15704,8 +15704,8 @@ "MA", "United States of America" ], - "s": 18983240, - "sha1_base64": "wxN6uhz1I2Lk8LFkJCJZyhfCN14=" + "s": 18956210, + "sha1_base64": "ZfUmedwnmd3y9lnWYpXa2GMNDto=" }, { "id": "US_Massachusetts_West", @@ -15717,8 +15717,8 @@ "MA", "United States of America" ], - "s": 37982690, - "sha1_base64": "R6SV7Y8O6MjgO0An2TvTiLahOws=" + "s": 37898580, + "sha1_base64": "HMbctPTtrueNHs9HrQd7QErcfzQ=" } ] }, @@ -15735,8 +15735,8 @@ "MI", "United States of America" ], - "s": 88744833, - "sha1_base64": "snAQjTWtB1rcfKNyCYPWXHQRx4k=" + "s": 88113203, + "sha1_base64": "0lGDIXjlkfDbZM6BJUgj2uN9StQ=" }, { "id": "US_Michigan_North", @@ -15748,8 +15748,8 @@ "MI", "United States of America" ], - "s": 43164155, - "sha1_base64": "45CB5NY0y4IVqmK99W0kpeeeOew=" + "s": 43102141, + "sha1_base64": "V02HNuUui3l/PcpWIMu9041YtRg=" }, { "id": "US_Michigan_Grand Rapids", @@ -15767,8 +15767,8 @@ "MI", "United States of America" ], - "s": 65020192, - "sha1_base64": "/F4jEBXG+cD3WAH2Kxdgzq6vcvQ=" + "s": 63577761, + "sha1_base64": "44EVyLM9ENzkrsI2GVcVmFMpG8s=" }, { "id": "US_Michigan_Lansing", @@ -15782,8 +15782,8 @@ "MI", "United States of America" ], - "s": 68269009, - "sha1_base64": "QzMTSv2oZ4tmXZhls5RZSZawcQM=" + "s": 67723338, + "sha1_base64": "IcUl99ApTr+TYh7BGL9eFQ8oa8o=" } ] }, @@ -15800,8 +15800,8 @@ "MN", "United States of America" ], - "s": 48610940, - "sha1_base64": "3hJWAuBOi/j47JQpHmGIQnx1+5A=" + "s": 48561174, + "sha1_base64": "ypaak1VbAqUlpnbyORdtW+QYe6I=" }, { "id": "US_Minnesota_Minneapolis", @@ -15813,8 +15813,8 @@ "MN", "United States of America" ], - "s": 70395967, - "sha1_base64": "ZvTwPZE4ICfFCnrYbawuzMa/DPA=" + "s": 69333424, + "sha1_base64": "3Oy4iYPSZR8fKv9kLwWNZsuM5GU=" }, { "id": "US_Minnesota_North", @@ -15826,8 +15826,8 @@ "MN", "United States of America" ], - "s": 62846103, - "sha1_base64": "MNIQR68yKuCqhcVKJAlgkIg+168=" + "s": 62782105, + "sha1_base64": "iqYv651UQgeI3c6/ntp/KLu215o=" }, { "id": "US_Minnesota_Saint Cloud", @@ -15839,8 +15839,8 @@ "MN", "United States of America" ], - "s": 40786115, - "sha1_base64": "dWu2dCRY2CZxTIQ29Dw7MmKhvxw=" + "s": 40687501, + "sha1_base64": "wnsAajTWtAyWlFHSsnQwj74eflI=" } ] }, @@ -15857,8 +15857,8 @@ "MS", "United States of America" ], - "s": 27178961, - "sha1_base64": "2vQfoRSoIXCi8Howv3lR8+ql0AY=" + "s": 27145371, + "sha1_base64": "LOINU0f/VsMFNhyWr4fbfKO0auw=" }, { "id": "US_Mississippi_North", @@ -15870,8 +15870,8 @@ "MS", "United States of America" ], - "s": 57697968, - "sha1_base64": "yqIFRnigKzSpHDpGasnf5YEiwak=" + "s": 57515290, + "sha1_base64": "hskALCIu8xfFcXXojNVDs+1GxfQ=" } ] }, @@ -15888,8 +15888,8 @@ "MO", "United States of America" ], - "s": 20320472, - "sha1_base64": "axfPiPr41Fn70a2RAGNhXDAw2M0=" + "s": 20204522, + "sha1_base64": "8CbR6mp9rjCQmBHbQ+ZmipgPIfk=" }, { "id": "US_Missouri_Springfield", @@ -15901,8 +15901,8 @@ "MO", "United States of America" ], - "s": 39138284, - "sha1_base64": "SkLeMVSnqLyfY+di07dxdnpE9ww=" + "s": 39049510, + "sha1_base64": "gdOaZsqdWuaMu//PDkY1YfVfHJo=" }, { "id": "US_Missouri_Kansas", @@ -15914,8 +15914,8 @@ "MO", "United States of America" ], - "s": 49870117, - "sha1_base64": "eZwHwCur1jiIPd5WNvulBj0Uqa4=" + "s": 49630807, + "sha1_base64": "W0hz62IgWtn7sVxvH2gKIz2Qy5s=" }, { "id": "US_Missouri_St Louis", @@ -15927,8 +15927,8 @@ "MO", "United States of America" ], - "s": 68199229, - "sha1_base64": "UAXyOQl59+3rLviJBRhCFoAUDjU=" + "s": 67868055, + "sha1_base64": "JHIf81yT6BTy4frztL67wc7lvh8=" } ] }, @@ -15945,8 +15945,8 @@ "MT", "United States of America" ], - "s": 54510110, - "sha1_base64": "l0r8fwaA8zEqg0Uf7FHMgAVo2Rg=" + "s": 54402848, + "sha1_base64": "fDvQE5C35/1fiLOE/nF2nikJqlg=" }, { "id": "US_Montana_West", @@ -15958,8 +15958,8 @@ "MT", "United States of America" ], - "s": 48824349, - "sha1_base64": "anOyjpJnIvRV/oSLNkGY0sVgAeU=" + "s": 48769719, + "sha1_base64": "w7czZWxCf9Ujr5kwq2o3DQmilPc=" } ] }, @@ -15976,8 +15976,8 @@ "NE", "United States of America" ], - "s": 39677077, - "sha1_base64": "CxB5r2z8uRRhs/14c40TCckx5JI=" + "s": 39369559, + "sha1_base64": "63ymay5JG6F38G8iL7iqDGUA9vk=" }, { "id": "US_Nebraska_West", @@ -15989,8 +15989,8 @@ "NE", "United States of America" ], - "s": 44874828, - "sha1_base64": "E8TGAMIKlRO82+9Go7Ucy5hMaJQ=" + "s": 44448870, + "sha1_base64": "2kFcIWHZ3Qz7SFRmb+1dt9FpSYI=" } ] }, @@ -16004,8 +16004,8 @@ "NV", "United States of America" ], - "s": 103571920, - "sha1_base64": "hWdisaiGiFP9l2V16g6mTX3jcZQ=" + "s": 103348754, + "sha1_base64": "MRRspCDoWNung8sUrPT9plGAGSc=" }, { "id": "US_New Hampshire", @@ -16017,8 +16017,8 @@ "NH", "United States of America" ], - "s": 54039280, - "sha1_base64": "eIY4nTRguEf2TP8HcTfBvgKQPV0=" + "s": 53746762, + "sha1_base64": "VkiRWsgTOUlp9JiPDgKR0jAmO0U=" }, { "id": "New Jersey", @@ -16033,8 +16033,8 @@ "NJ", "United States of America" ], - "s": 66291194, - "sha1_base64": "mitFIBDCX74VHcxKq81q06OcqF0=" + "s": 65987356, + "sha1_base64": "bCSC8A8/ycujNMCI5StPz0McKPg=" }, { "id": "US_New Jersey_South", @@ -16046,8 +16046,8 @@ "NJ", "United States of America" ], - "s": 74810892, - "sha1_base64": "I4HNyHIqbELAf9rJb5QPp57oC/s=" + "s": 74457934, + "sha1_base64": "ysDsiCT4iBmR04NWnAxpFed3jfs=" } ] }, @@ -16064,8 +16064,8 @@ "NM", "United States of America" ], - "s": 70377266, - "sha1_base64": "b/IE5otnk8qX+cx+5chCMcdOH+8=" + "s": 69910340, + "sha1_base64": "aYrCpxN8XmqCyuQPYo/M+6YBBQ4=" }, { "id": "US_New Mexico_Roswell", @@ -16077,8 +16077,8 @@ "NM", "United States of America" ], - "s": 54388151, - "sha1_base64": "HRz0yc5QyP0giBrxKLKbToeUZao=" + "s": 53788769, + "sha1_base64": "xkr5J8xEOWFXzQ2pt+JB+4iZ62U=" } ] }, @@ -16096,8 +16096,8 @@ "NY", "United States of America" ], - "s": 112119544, - "sha1_base64": "lz1VxbhGufBWpK15tq6JCFrpkPg=" + "s": 111971290, + "sha1_base64": "ETTLKp1pCSCBiVoXT5ar8xOoF1I=" }, { "id": "US_New York_New York", @@ -16111,8 +16111,8 @@ "NY", "United States of America" ], - "s": 104135683, - "sha1_base64": "AMp3OHfcCPGqrBycTiHqmPdt/lM=" + "s": 103565405, + "sha1_base64": "PzNsn76UdEzWU1KBq6GAw/MgFAU=" }, { "id": "US_New York_North", @@ -16124,8 +16124,8 @@ "NY", "United States of America" ], - "s": 105277331, - "sha1_base64": "QnqiNeyKOLkokDDeB1CiixyY3Gc=" + "s": 105066981, + "sha1_base64": "Ro0PI7ld0bgqhr3hZxeCOaLXZ8Q=" }, { "id": "US_New York_West", @@ -16137,8 +16137,8 @@ "NY", "United States of America" ], - "s": 174282397, - "sha1_base64": "zqGOGFGhnoUg990UGErxPHOGMTA=" + "s": 173609063, + "sha1_base64": "lnFldDw2zcrrXMojR/QbzQMYL+c=" } ] }, @@ -16155,8 +16155,8 @@ "NC", "United States of America" ], - "s": 46151228, - "sha1_base64": "CxSglj5AarrxbeD6s6IM1tYVYXM=" + "s": 45740374, + "sha1_base64": "Uva5Oh7zmqLjOORrIhlXi0mX12Q=" }, { "id": "US_North Carolina_Asheville", @@ -16168,8 +16168,8 @@ "NC", "United States of America" ], - "s": 43042220, - "sha1_base64": "QcFxr24HCUeuqyCwu+qNnc7s2Zk=" + "s": 42799278, + "sha1_base64": "HVknE5XObiHRMQ7qZ2gDxS4MCmM=" }, { "id": "US_North Carolina_Charlotte", @@ -16181,8 +16181,8 @@ "NC", "United States of America" ], - "s": 81404078, - "sha1_base64": "rjvI9UhKKuk2WefFxkxcVL0CxA8=" + "s": 80685560, + "sha1_base64": "/OSEo8GXSWhbQzGqCeCgI3CSCKU=" }, { "id": "US_North Carolina_Greensboro", @@ -16194,8 +16194,8 @@ "NC", "United States of America" ], - "s": 58540734, - "sha1_base64": "Tvwor2+Navr0wBVhY+rxC5wHO4Q=" + "s": 58351568, + "sha1_base64": "0KznoT1EgRPEiB+zXNx8zDFiIUo=" }, { "id": "US_North Carolina_Raleigh", @@ -16207,8 +16207,8 @@ "NC", "United States of America" ], - "s": 83527191, - "sha1_base64": "FRHT86VfFMYkJR6OJmV7unwO9QM=" + "s": 83392281, + "sha1_base64": "kok+d3kxlZb38Nok7kJAoFR3ovM=" }, { "id": "US_North Carolina_Wilmington", @@ -16220,8 +16220,8 @@ "NC", "United States of America" ], - "s": 44137181, - "sha1_base64": "cBXuVu5HByOFw7RmlBHd1h3AvOk=" + "s": 43997727, + "sha1_base64": "lZYGRYuJUJd4uH17w2wYqO1tiEo=" } ] }, @@ -16238,8 +16238,8 @@ "ND", "United States of America" ], - "s": 30773393, - "sha1_base64": "ERuh1ndaLnlturSnXLcDDy0t8Lg=" + "s": 30687915, + "sha1_base64": "vdrSw44iUKLOBXou4PlBC0CymiY=" }, { "id": "US_North Dakota_East", @@ -16251,8 +16251,8 @@ "ND", "United States of America" ], - "s": 40011258, - "sha1_base64": "sOTigNjlwDXTmdV/nWThHmrkhjo=" + "s": 39825364, + "sha1_base64": "3ZLQumnfGKF9+SbWs95liBbYS0E=" }, { "id": "US_North Dakota_Minot", @@ -16264,8 +16264,8 @@ "ND", "United States of America" ], - "s": 25080153, - "sha1_base64": "EtWTk9/n6lhzwVzhhpjqD+kpjXk=" + "s": 25042211, + "sha1_base64": "IbAUFR+L61CSzR664idg+8rNGzc=" } ] }, @@ -16282,8 +16282,8 @@ "OH", "United States of America" ], - "s": 79542291, - "sha1_base64": "ofapO9iDZAlZV9gxlXTtS6vdeHM=" + "s": 78707461, + "sha1_base64": "bF0FIskP8vR8pPvl1DCf0ue3zeg=" }, { "id": "US_Ohio_Cincinnati", @@ -16295,8 +16295,8 @@ "OH", "United States of America" ], - "s": 75642936, - "sha1_base64": "OGWx6xy1pKQe9F5zr+qvK+pyxCE=" + "s": 75331306, + "sha1_base64": "ThXnhRPuVI7Ihdn3HmsWSXQzo0g=" }, { "id": "US_Ohio_Columbus", @@ -16308,8 +16308,8 @@ "OH", "United States of America" ], - "s": 56716447, - "sha1_base64": "3XIda31UVCKiT/mm0+zA+oNsfeA=" + "s": 56024393, + "sha1_base64": "t4ztJzIVROQZMa6UfSvYoBFDDls=" }, { "id": "US_Ohio_Toledo", @@ -16321,8 +16321,8 @@ "OH", "United States of America" ], - "s": 40639788, - "sha1_base64": "Db2ojf3o2/1imBsSt9nTBS9jCTM=" + "s": 40566046, + "sha1_base64": "X4Ds56biId7cgT1LPIWCw18HrVQ=" } ] }, @@ -16339,8 +16339,8 @@ "OK", "United States of America" ], - "s": 23327706, - "sha1_base64": "WGQjHqFapJR6dkFREtyr2IqRlyQ=" + "s": 23307636, + "sha1_base64": "pZZDti1F12jR4xZqLQ8Vw5E9350=" }, { "id": "US_Oklahoma_West", @@ -16352,8 +16352,8 @@ "OK", "United States of America" ], - "s": 26619265, - "sha1_base64": "91Io0EgUjDL7VX4KI2E3wuztILk=" + "s": 26533627, + "sha1_base64": "QZGJ6PjthAx+QG2jheLTyMOV3O0=" }, { "id": "US_Oklahoma_Tulsa", @@ -16365,8 +16365,8 @@ "OK", "United States of America" ], - "s": 47955108, - "sha1_base64": "rGDFqNRpyQwm6aIvqjvP6Yd3G7E=" + "s": 47786182, + "sha1_base64": "X2cJIVMnGYXWivt+qIZNbVVEXkw=" }, { "id": "US_Oklahoma_Oklahoma", @@ -16378,8 +16378,8 @@ "OK", "United States of America" ], - "s": 42528357, - "sha1_base64": "VUtw09W78W61pGDvzVFTNtQWJZE=" + "s": 42452895, + "sha1_base64": "djxeMHMvrUL3xoHttVuxRhIOhuY=" } ] }, @@ -16396,8 +16396,8 @@ "OR", "United States of America" ], - "s": 69857328, - "sha1_base64": "3yu9W440o1k2NTKegRUfNdXAN/I=" + "s": 69658170, + "sha1_base64": "WbSOUCjHY/Rn3YkWyXhEi6cqXns=" }, { "id": "US_Oregon_Portland", @@ -16409,8 +16409,8 @@ "OR", "United States of America" ], - "s": 99334490, - "sha1_base64": "D3RmsniPeWw1QUuQ3U5dV4m9RTw=" + "s": 99153492, + "sha1_base64": "l87nhrRoAxYB1ifjX698ciK72JY=" }, { "id": "US_Oregon_West", @@ -16422,8 +16422,8 @@ "OR", "United States of America" ], - "s": 57480815, - "sha1_base64": "lkMQTYhsMudukiHoa6pfJSUuHXg=" + "s": 57408265, + "sha1_base64": "PjCN3VVtmPbcwuPiriEv6Hy0akU=" } ] }, @@ -16440,8 +16440,8 @@ "PA", "United States of America" ], - "s": 70811354, - "sha1_base64": "OoWwBodG5HguoLys5nLHGzDOmAQ=" + "s": 70573132, + "sha1_base64": "oaocoZSDeCsFK2hafPONaCpX0J0=" }, { "id": "US_Pennsylvania_Pittsburgh", @@ -16453,8 +16453,8 @@ "PA", "United States of America" ], - "s": 74168911, - "sha1_base64": "N4udH7EhT41hHreP/r5r1hNagYU=" + "s": 73922321, + "sha1_base64": "2g72dghhKk0Iv4ZyNeAFG/oKiF0=" }, { "id": "US_Pennsylvania_Reading", @@ -16466,8 +16466,8 @@ "PA", "United States of America" ], - "s": 77786098, - "sha1_base64": "DI5RjcGMPLWUNH5eHbeK1mIoq6A=" + "s": 77403540, + "sha1_base64": "VntMIuq0smigAXrzycV6Mx7k9PE=" }, { "id": "US_Pennsylvania_Scranton", @@ -16479,8 +16479,8 @@ "PA", "United States of America" ], - "s": 56345304, - "sha1_base64": "VBNXhliOauUhIuwg4X6bhgtLBjI=" + "s": 55691482, + "sha1_base64": "dX4+xVOVCT3GQdhTr1qE/79qsJE=" } ] }, @@ -16495,8 +16495,8 @@ "República Dominicana", "United States of America" ], - "s": 68692937, - "sha1_base64": "jQMzTcY6GCAjrHvtZao8+gNzunk=" + "s": 68852587, + "sha1_base64": "JDmXxX4WAocYUHxcB6cu9z4epPA=" }, { "id": "US_Rhode Island", @@ -16509,8 +16509,8 @@ "RI", "United States of America" ], - "s": 31902114, - "sha1_base64": "b41lUcTPla1mYHbm0k/N6HCcLLs=" + "s": 31851764, + "sha1_base64": "8lzZ7YEiKHELMkAigoKvPaexdBk=" }, { "id": "South Carolina", @@ -16525,8 +16525,8 @@ "SC", "United States of America" ], - "s": 38892817, - "sha1_base64": "9ExB5RPMhWrV4UmH2Lgj3pbrALM=" + "s": 38719979, + "sha1_base64": "kz0/LH6//YWWIa6VW/DSLEXhuc4=" }, { "id": "US_South Carolina_Columbia", @@ -16538,8 +16538,8 @@ "SC", "United States of America" ], - "s": 68811271, - "sha1_base64": "KALpiFEr8JjNb4SM7rRDFkPdSDQ=" + "s": 68520889, + "sha1_base64": "MmL2CAeyE7v1O3BEh9lCkIgLkqA=" }, { "id": "US_South Carolina_Florence", @@ -16551,8 +16551,8 @@ "SC", "United States of America" ], - "s": 42828523, - "sha1_base64": "CngwpNU6fC8EeB+PMHjz/ThpvOY=" + "s": 42678333, + "sha1_base64": "s1sjWCmPEI25qNGBBZMQgjLt4Ew=" } ] }, @@ -16566,8 +16566,8 @@ "SD", "United States of America" ], - "s": 52034989, - "sha1_base64": "OQyCpQheB0Rua7oaZM/WeDEN+Hc=" + "s": 51818143, + "sha1_base64": "/Efua+sdDu9dhnHxmyp6Tauoayc=" }, { "id": "Tennessee", @@ -16582,8 +16582,8 @@ "TN", "United States of America" ], - "s": 82247145, - "sha1_base64": "CHjw8EhXY7TL0qQD1E9/FwUHNG8=" + "s": 81627859, + "sha1_base64": "M8A7QVKF4G9cUJj2mDLO+5c8NgI=" }, { "id": "US_Tennessee_West", @@ -16595,8 +16595,8 @@ "TN", "United States of America" ], - "s": 77075642, - "sha1_base64": "0FDO1l+2AkB4gx9uYygl3KMmClo=" + "s": 76653892, + "sha1_base64": "zkEig22pjktqyGuSW3jSb9VOMFU=" } ] }, @@ -16613,8 +16613,8 @@ "TX", "United States of America" ], - "s": 82412272, - "sha1_base64": "kkck0SZUvgTFgUvW5ttCiW2lrXU=" + "s": 81708106, + "sha1_base64": "HNtaGAGVYBjEe/V//67oAwESr20=" }, { "id": "US_Texas_Victoria", @@ -16626,8 +16626,8 @@ "TX", "United States of America" ], - "s": 28112994, - "sha1_base64": "aMzD/jtX6stXoGBsQotPCzBk72c=" + "s": 27639316, + "sha1_base64": "1uKlmcxV8LShrYewLvMsuartka8=" }, { "id": "US_Texas_Dallas", @@ -16639,8 +16639,8 @@ "TX", "United States of America" ], - "s": 148797996, - "sha1_base64": "RoZ1PGFwaoLmTGxM3HceTyQ3X6M=" + "s": 147436606, + "sha1_base64": "qSt/iPma3UFo8d7jM4ZTB9abdxM=" }, { "id": "US_Texas_Houston", @@ -16652,8 +16652,8 @@ "TX", "United States of America" ], - "s": 89681689, - "sha1_base64": "6L1else0PYY24+RNQv9xNm7Q2qE=" + "s": 88875475, + "sha1_base64": "YOsCcpi5fMfefLXzITBKP9DNhmU=" }, { "id": "US_Texas_Amarillo", @@ -16665,8 +16665,8 @@ "TX", "United States of America" ], - "s": 33427410, - "sha1_base64": "3XrEI953o36Pdgs1UWkma88L92o=" + "s": 33142700, + "sha1_base64": "LAWfIjFvyTl0l9bezpTJqYq0chU=" }, { "id": "US_Texas_Lubbock", @@ -16678,8 +16678,8 @@ "TX", "United States of America" ], - "s": 35132066, - "sha1_base64": "ct1gpJzvvlSMJvqDzxoDHoFldQc=" + "s": 35053148, + "sha1_base64": "MwgOTu90houToySmtRgyTjAu5Ow=" }, { "id": "US_Texas_San Antonio", @@ -16691,8 +16691,8 @@ "TX", "United States of America" ], - "s": 51368679, - "sha1_base64": "DBjElMOJVJ2l/lUyT2AX8U//Bkk=" + "s": 51002929, + "sha1_base64": "CouykDgO94amcRMayKL2tQaAqHw=" }, { "id": "US_Texas_Southwest", @@ -16704,8 +16704,8 @@ "TX", "United States of America" ], - "s": 36191826, - "sha1_base64": "leoyGpE9Dvffl+SJBqroUPmlRsU=" + "s": 36080084, + "sha1_base64": "eT0u56yEhPUReAv/mrs8lyDHHQ8=" }, { "id": "US_Texas_Tyler", @@ -16717,8 +16717,8 @@ "TX", "United States of America" ], - "s": 59691111, - "sha1_base64": "4R9qzVzBODp1ZY6b0M0SuLQB/HI=" + "s": 59338625, + "sha1_base64": "SoXJNax2JSLplvs4Yej7ZsoCA5E=" }, { "id": "US_Texas_Wako", @@ -16730,8 +16730,8 @@ "TX", "United States of America" ], - "s": 40946644, - "sha1_base64": "Rwtj9DgNctSIPQxaVpJOWJdzbTY=" + "s": 40198445, + "sha1_base64": "Z2kw00zRQq58YOjWSpPbWjedodk=" }, { "id": "US_Texas_West", @@ -16743,8 +16743,8 @@ "TX", "United States of America" ], - "s": 50138085, - "sha1_base64": "gpuzN1j7B04aPpE3C/QtNDtOTIk=" + "s": 49851238, + "sha1_base64": "d4WiMK8Nm+pXqoq/WNpMYePKnvQ=" } ] }, @@ -16754,8 +16754,8 @@ "Navassa Island", "United States Minor Outlying Islands" ], - "s": 820496, - "sha1_base64": "pk4RbX80rPmapVYdX7fP0JnYvYY=" + "s": 806072, + "sha1_base64": "H+sJRZtLPnCFwbHk5tKTUWiTj+0=" }, { "id": "US_Utah", @@ -16770,8 +16770,8 @@ "Utah", "UT" ], - "s": 54627300, - "sha1_base64": "P7ofgPu/XHu8o6rDsFXOJEcRr+Y=" + "s": 54241118, + "sha1_base64": "mg77hFPEclUNbzQ9yCE3HZX48FA=" }, { "id": "US_Utah_North", @@ -16783,8 +16783,8 @@ "Utah", "UT" ], - "s": 95098368, - "sha1_base64": "17m4iFtuaui9x9QadPjgg/Erf7o=" + "s": 94338842, + "sha1_base64": "0UpEBIegGr7iXuz9u3mkg4TmEsM=" } ] }, @@ -16798,8 +16798,8 @@ "Vermont", "VT" ], - "s": 37871963, - "sha1_base64": "fnwebAzgrOdvJSHBm0cbFuhGpag=" + "s": 37867622, + "sha1_base64": "FdPp9eiEyEDsOUo8zQnTBka20GI=" }, { "id": "Virginia", @@ -16814,8 +16814,8 @@ "VA", "United States of America" ], - "s": 45700317, - "sha1_base64": "8ey8QlpewLBAsRaSbxDrAo2Fsb0=" + "s": 45617335, + "sha1_base64": "u2hMDNjkpCKrKczyYJZzmns4mD8=" }, { "id": "US_Virginia_Norfolk", @@ -16827,8 +16827,8 @@ "VA", "United States of America" ], - "s": 83826309, - "sha1_base64": "d53LzS12BuZgx9gDUvvtV6S4J9g=" + "s": 83748767, + "sha1_base64": "pg9qdBg6oLvp+EE4OL8tuWXUN8w=" }, { "id": "US_Virginia_Lynchburg", @@ -16840,8 +16840,8 @@ "VA", "United States of America" ], - "s": 66306342, - "sha1_base64": "3QAHFvcm7QHy/hwX8Ke9lJ7ifAc=" + "s": 66030080, + "sha1_base64": "9E/2zv3ydu6DB2sngOx7fnlSlVE=" }, { "id": "US_Virginia_Richmond", @@ -16853,8 +16853,8 @@ "VA", "United States of America" ], - "s": 62101526, - "sha1_base64": "3HMT44zLsS55cXC7bdHwabYL8hQ=" + "s": 62016968, + "sha1_base64": "6RCKwXcURtWCBNgAjMpAdjvd5y4=" }, { "id": "US_Virginia_Alexandria", @@ -16866,8 +16866,8 @@ "VA", "United States of America" ], - "s": 82172361, - "sha1_base64": "5fBw70CyoOWMuEcimZl+kJklLxY=" + "s": 81837027, + "sha1_base64": "7mOkzIrLSKFihQpge3W/1U+fFyU=" } ] }, @@ -16886,8 +16886,8 @@ "Washington", "WA" ], - "s": 132640357, - "sha1_base64": "jlsO2bj5ZA2iCM0dV/0/Rf13fmo=" + "s": 131365111, + "sha1_base64": "AUJ3jqz03p8kyNjAB2AIF283zj0=" }, { "id": "US_Washington_Seattle", @@ -16899,8 +16899,8 @@ "Washington", "WA" ], - "s": 85991069, - "sha1_base64": "kRt+Xd98LeZ1SD9ovHWAFjwpauI=" + "s": 85547055, + "sha1_base64": "BfhWYicmPNgrvyUEnx3mh4dXaCg=" }, { "id": "US_Washington_Yakima", @@ -16912,8 +16912,8 @@ "Washington", "WA" ], - "s": 78617947, - "sha1_base64": "NLxO3IpiQCM4EsOhSRU5ku1uMNA=" + "s": 76906821, + "sha1_base64": "qdfmH53FWVoGIZwFvJliI5qLq4E=" } ] }, @@ -16927,8 +16927,8 @@ "West Virginia", "WV" ], - "s": 99429172, - "sha1_base64": "SBcAxgyjimcwMq7AYKSycz+2IyU=" + "s": 98486366, + "sha1_base64": "RQ6GDa5NX6uNULzoHWcXOglYRSw=" }, { "id": "Wisconsin", @@ -16943,8 +16943,8 @@ "Wisconsin", "WI" ], - "s": 107791018, - "sha1_base64": "1KzyDz4ekmkp/+pk51j92nBtS6g=" + "s": 107613516, + "sha1_base64": "xJsdB7kY/47jAZO/VSbgarpy+Tc=" }, { "id": "US_Wisconsin_North", @@ -16956,8 +16956,8 @@ "Wisconsin", "WI" ], - "s": 46836932, - "sha1_base64": "IC4hm4xr34BmsOLxGIhFa2WKAGg=" + "s": 46323445, + "sha1_base64": "EVrjGpTOophUOSNmsWIr9k5y9LU=" }, { "id": "US_Wisconsin_Madison", @@ -16969,8 +16969,8 @@ "Wisconsin", "WI" ], - "s": 44249164, - "sha1_base64": "kodB4em9ByR6Bwp7YwgzSPe2t7Y=" + "s": 44048654, + "sha1_base64": "7ogmjjy4usNYziiE/uJPsfuyftA=" }, { "id": "US_Wisconsin_Eau Claire", @@ -16982,8 +16982,8 @@ "Wisconsin", "WI" ], - "s": 43068955, - "sha1_base64": "YTafrIRPTaUMGSG7ZJXLO5rj5sY=" + "s": 42829677, + "sha1_base64": "rlPSNNSc4iOyzF3xSvQbJ4h0coE=" } ] }, @@ -16997,8 +16997,8 @@ "Wyoming", "WY" ], - "s": 77639738, - "sha1_base64": "KtgsRXRZV+DXjb8GBSSEjkpcEkY=" + "s": 77103692, + "sha1_base64": "HQiuu0WTfRtsEeXlnIM24D9qaYw=" } ] }, @@ -17030,8 +17030,8 @@ "Treinta y Tres", "Uruguay" ], - "s": 63972141, - "sha1_base64": "zvty24LKNafUeN7OfGagQmIlBO8=" + "s": 64136821, + "sha1_base64": "fUcHK783Eg7J53vho6IT24Ka7Ng=" }, { "id": "Uzbekistan", @@ -17056,8 +17056,8 @@ "Toshkent", "Xorazm Viloyati" ], - "s": 136480447, - "sha1_base64": "lF6zIbKoVXWBEgXTbDP8Y5JQfAc=" + "s": 136137375, + "sha1_base64": "rcEL+ty6anMGx8dExnsrSfReza0=" }, { "id": "Vanuatu", @@ -17073,8 +17073,8 @@ "Vanuatu", "Torba" ], - "s": 9421540, - "sha1_base64": "waC/yQJ6rrsGV0CLw0FMfe6qnSY=" + "s": 9264652, + "sha1_base64": "QrSLTg0TS1zmY0DqzwHckKn+Td0=" }, { "id": "Venezuela", @@ -17109,8 +17109,8 @@ "Yaracuy", "Zulia" ], - "s": 53047370, - "sha1_base64": "iL6Ttan31sGlyz806fa2HUwMvbA=" + "s": 52941730, + "sha1_base64": "Lu0Z8WwmeGzOoD62RpydylgvHIo=" }, { "id": "Venezuela_South", @@ -17131,8 +17131,8 @@ "Venezuela", "Zulia" ], - "s": 44533555, - "sha1_base64": "V9zWcK0Ko7trQ1gXYoaon2UJbMk=" + "s": 44452947, + "sha1_base64": "b6GYYvM/zv75MUs2wFIl4SbNxPc=" } ] }, @@ -17207,8 +17207,8 @@ "Tỉnh Hà Giang", "Việt Nam" ], - "s": 267176773, - "sha1_base64": "/sucPZvdRjy5qGCoyg5PIQZYLXc=" + "s": 263728829, + "sha1_base64": "FeDM2ixytrk3rLvZLCPEyHW9ATU=" }, { "id": "Yemen", @@ -17239,8 +17239,8 @@ "Ḩaḑramawt", "اليمن" ], - "s": 57460316, - "sha1_base64": "cKtbKmbY19H3alhg0f9yEFZzYj0=" + "s": 57372612, + "sha1_base64": "2r+HjtFIvVAF71u0bpMNL+x6QQ0=" }, { "id": "Zambia", @@ -17260,8 +17260,8 @@ "Western Province", "Zambia" ], - "s": 210833319, - "sha1_base64": "FhS06PE+4SW/0tONE8FDooFi9co=" + "s": 210480383, + "sha1_base64": "B94DQTGBp1N3xbVK4siCgbC+UiI=" }, { "id": "Zimbabwe", @@ -17281,16 +17281,16 @@ "Midlands Province", "Zimbabwe" ], - "s": 131971165, - "sha1_base64": "EYW+Awa7UyH69ijo+g3all1yTd4=" + "s": 131657629, + "sha1_base64": "OT7InlkTPoXkJn//yUWdZDffR+g=" }, { "id": "Antarctica", "affiliations": [ "South Georgia and South Sandwich Islands" ], - "s": 59891111, - "sha1_base64": "/66aGZxb9YVygBjueuFYkjtY+i8=" + "s": 58704807, + "sha1_base64": "kwwO2zBDa0VTIyqQURwaMthBA98=" }, { "id": "New Zealand", @@ -17303,8 +17303,8 @@ "affiliations": [ "Tokelau" ], - "s": 421391, - "sha1_base64": "LzJ5BcU/BS8il2lVJ5zKzlVGfv0=" + "s": 421407, + "sha1_base64": "AeGJjN0Svk9yoiVaNMYVJTCRefY=" }, { "id": "New Zealand North_Auckland", @@ -17318,8 +17318,8 @@ "Northland", "Waikato" ], - "s": 136680376, - "sha1_base64": "BpB3MHSJXGnzhSzTEijbhwOXo/w=" + "s": 136174672, + "sha1_base64": "jjFgzXuhSQ6veSv2qb6zaNV8QFw=" }, { "id": "New Zealand North_Wellington", @@ -17334,8 +17334,8 @@ "Taranaki", "Wellington" ], - "s": 91111846, - "sha1_base64": "fr0wsRcH1fu6zOV9+9ESn6uRmS0=" + "s": 90871885, + "sha1_base64": "CkzyNZlcXEptwMOsCgwq7u9e5AU=" }, { "id": "New Zealand South_Canterbury", @@ -17351,8 +17351,8 @@ "Tasman", "West Coast" ], - "s": 98835325, - "sha1_base64": "DsdP/h9n1096FUfNxiGIPMAOagQ=" + "s": 98330677, + "sha1_base64": "/yp4cUdFXqFXkfweb/u59G/4uLw=" }, { "id": "New Zealand South_Southland", @@ -17365,8 +17365,8 @@ "Southland", "West Coast" ], - "s": 60637978, - "sha1_base64": "RGk08yoBesq4ZkNnu+cgGFmTmsc=" + "s": 60506578, + "sha1_base64": "W5Rp0MvouFQISVTFPN7y5glLDVI=" } ] }, @@ -17390,8 +17390,8 @@ "충청남도", "충청북도" ], - "s": 168007704, - "sha1_base64": "Za01/WIqVNdvqOpyL+s0Ps7aJ0s=" + "s": 166905056, + "sha1_base64": "hBJ6fTjSSPeA3hv7F/ymQ8oY/Ws=" }, { "id": "South Korea_South", @@ -17411,8 +17411,8 @@ "전라남도", "전라북도" ], - "s": 134674088, - "sha1_base64": "J9GqeUDbmD3h+TqSJCZ8rNcsZmw=" + "s": 133931408, + "sha1_base64": "PPdsN/7bhc6GcSCMWYcwiWPxTk0=" } ] } diff --git a/data/drules_proto.bin b/data/drules_proto.bin index f4915d7bae..149a9c0278 100644 Binary files a/data/drules_proto.bin and b/data/drules_proto.bin differ diff --git a/data/drules_proto.txt b/data/drules_proto.txt index 7473c0d835..f29c38640e 100644 --- a/data/drules_proto.txt +++ b/data/drules_proto.txt @@ -25095,16 +25095,6 @@ cont { } cont { name: "highway-motorway" - element { - scale: 6 - lines { - width: 0.8 - color: 3019862822 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -25389,16 +25379,6 @@ cont { } cont { name: "highway-motorway-bridge" - element { - scale: 6 - lines { - width: 0.8 - color: 3019862822 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -25779,16 +25759,6 @@ cont { } cont { name: "highway-motorway-tunnel" - element { - scale: 6 - lines { - width: 0.8 - color: 3019862822 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -37714,16 +37684,6 @@ cont { } cont { name: "highway-trunk" - element { - scale: 6 - lines { - width: 0.8 - color: 3019862822 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -38008,16 +37968,6 @@ cont { } cont { name: "highway-trunk-bridge" - element { - scale: 6 - lines { - width: 0.8 - color: 3019862822 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -38398,16 +38348,6 @@ cont { } cont { name: "highway-trunk-tunnel" - element { - scale: 6 - lines { - width: 0.8 - color: 3019862822 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { diff --git a/data/drules_proto_default_dark.bin b/data/drules_proto_default_dark.bin index 097a96d9ab..39e7c6475c 100644 Binary files a/data/drules_proto_default_dark.bin and b/data/drules_proto_default_dark.bin differ diff --git a/data/drules_proto_default_dark.txt b/data/drules_proto_default_dark.txt index ef7d6e56f6..c993167b88 100644 --- a/data/drules_proto_default_dark.txt +++ b/data/drules_proto_default_dark.txt @@ -23415,16 +23415,6 @@ cont { } cont { name: "highway-motorway" - element { - scale: 6 - lines { - width: 0.8 - color: 3007916315 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -23720,16 +23710,6 @@ cont { } cont { name: "highway-motorway-bridge" - element { - scale: 6 - lines { - width: 0.8 - color: 3007916315 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -24121,16 +24101,6 @@ cont { } cont { name: "highway-motorway-tunnel" - element { - scale: 6 - lines { - width: 0.8 - color: 3007916315 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -35417,16 +35387,6 @@ cont { } cont { name: "highway-trunk" - element { - scale: 6 - lines { - width: 0.8 - color: 3007916315 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -35722,16 +35682,6 @@ cont { } cont { name: "highway-trunk-bridge" - element { - scale: 6 - lines { - width: 0.8 - color: 3007916315 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -36123,16 +36073,6 @@ cont { } cont { name: "highway-trunk-tunnel" - element { - scale: 6 - lines { - width: 0.8 - color: 3007916315 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { diff --git a/data/drules_proto_default_light.bin b/data/drules_proto_default_light.bin index f1244c659f..6a56fbf933 100644 Binary files a/data/drules_proto_default_light.bin and b/data/drules_proto_default_light.bin differ diff --git a/data/drules_proto_default_light.txt b/data/drules_proto_default_light.txt index 9fa599077b..9f542675e3 100644 --- a/data/drules_proto_default_light.txt +++ b/data/drules_proto_default_light.txt @@ -23415,16 +23415,6 @@ cont { } cont { name: "highway-motorway" - element { - scale: 6 - lines { - width: 0.8 - color: 3019862822 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -23709,16 +23699,6 @@ cont { } cont { name: "highway-motorway-bridge" - element { - scale: 6 - lines { - width: 0.8 - color: 3019862822 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -24099,16 +24079,6 @@ cont { } cont { name: "highway-motorway-tunnel" - element { - scale: 6 - lines { - width: 0.8 - color: 3019862822 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -35213,16 +35183,6 @@ cont { } cont { name: "highway-trunk" - element { - scale: 6 - lines { - width: 0.8 - color: 3019862822 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -35507,16 +35467,6 @@ cont { } cont { name: "highway-trunk-bridge" - element { - scale: 6 - lines { - width: 0.8 - color: 3019862822 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -35897,16 +35847,6 @@ cont { } cont { name: "highway-trunk-tunnel" - element { - scale: 6 - lines { - width: 0.8 - color: 3019862822 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { diff --git a/data/drules_proto_outdoors_dark.bin b/data/drules_proto_outdoors_dark.bin index 2d8378a265..21ef12b476 100644 Binary files a/data/drules_proto_outdoors_dark.bin and b/data/drules_proto_outdoors_dark.bin differ diff --git a/data/drules_proto_outdoors_dark.txt b/data/drules_proto_outdoors_dark.txt index 43acf047cb..3cf21cf2cb 100644 --- a/data/drules_proto_outdoors_dark.txt +++ b/data/drules_proto_outdoors_dark.txt @@ -24664,16 +24664,6 @@ cont { } cont { name: "highway-motorway" - element { - scale: 6 - lines { - width: 0.8 - color: 1296640283 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -24969,16 +24959,6 @@ cont { } cont { name: "highway-motorway-bridge" - element { - scale: 6 - lines { - width: 0.8 - color: 1296640283 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -25370,16 +25350,6 @@ cont { } cont { name: "highway-motorway-tunnel" - element { - scale: 6 - lines { - width: 0.8 - color: 1296640283 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -37634,16 +37604,6 @@ cont { } cont { name: "highway-trunk" - element { - scale: 6 - lines { - width: 0.8 - color: 1296640283 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -37939,16 +37899,6 @@ cont { } cont { name: "highway-trunk-bridge" - element { - scale: 6 - lines { - width: 0.8 - color: 1296640283 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -38340,16 +38290,6 @@ cont { } cont { name: "highway-trunk-tunnel" - element { - scale: 6 - lines { - width: 0.8 - color: 1296640283 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { diff --git a/data/drules_proto_outdoors_light.bin b/data/drules_proto_outdoors_light.bin index 2df431999f..c97c55e254 100644 Binary files a/data/drules_proto_outdoors_light.bin and b/data/drules_proto_outdoors_light.bin differ diff --git a/data/drules_proto_outdoors_light.txt b/data/drules_proto_outdoors_light.txt index 4168abe7ac..a04fb8c6bc 100644 --- a/data/drules_proto_outdoors_light.txt +++ b/data/drules_proto_outdoors_light.txt @@ -24664,16 +24664,6 @@ cont { } cont { name: "highway-motorway" - element { - scale: 6 - lines { - width: 0.8 - color: 1308586790 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -24958,16 +24948,6 @@ cont { } cont { name: "highway-motorway-bridge" - element { - scale: 6 - lines { - width: 0.8 - color: 1308586790 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -25348,16 +25328,6 @@ cont { } cont { name: "highway-motorway-tunnel" - element { - scale: 6 - lines { - width: 0.8 - color: 1308586790 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -37430,16 +37400,6 @@ cont { } cont { name: "highway-trunk" - element { - scale: 6 - lines { - width: 0.8 - color: 1308586790 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -37724,16 +37684,6 @@ cont { } cont { name: "highway-trunk-bridge" - element { - scale: 6 - lines { - width: 0.8 - color: 1308586790 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -38114,16 +38064,6 @@ cont { } cont { name: "highway-trunk-tunnel" - element { - scale: 6 - lines { - width: 0.8 - color: 1308586790 - priority: 310 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { diff --git a/data/drules_proto_vehicle_dark.bin b/data/drules_proto_vehicle_dark.bin index 8a2c37da47..ad8e6ff16d 100644 Binary files a/data/drules_proto_vehicle_dark.bin and b/data/drules_proto_vehicle_dark.bin differ diff --git a/data/drules_proto_vehicle_dark.txt b/data/drules_proto_vehicle_dark.txt index c2572ffed6..c3f7385fc9 100644 --- a/data/drules_proto_vehicle_dark.txt +++ b/data/drules_proto_vehicle_dark.txt @@ -9705,16 +9705,6 @@ cont { } cont { name: "highway-motorway" - element { - scale: 6 - lines { - width: 0.9 - color: 3008113177 - priority: 250 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -10063,16 +10053,6 @@ cont { } cont { name: "highway-motorway-bridge" - element { - scale: 6 - lines { - width: 0.9 - color: 3008113177 - priority: 250 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -10517,16 +10497,6 @@ cont { } cont { name: "highway-motorway-tunnel" - element { - scale: 6 - lines { - width: 0.9 - color: 3008113177 - priority: 250 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -20227,16 +20197,6 @@ cont { } cont { name: "highway-trunk" - element { - scale: 6 - lines { - width: 0.9 - color: 3008113177 - priority: 250 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -20585,16 +20545,6 @@ cont { } cont { name: "highway-trunk-bridge" - element { - scale: 6 - lines { - width: 0.9 - color: 3008113177 - priority: 250 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -21039,16 +20989,6 @@ cont { } cont { name: "highway-trunk-tunnel" - element { - scale: 6 - lines { - width: 0.9 - color: 3008113177 - priority: 250 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { diff --git a/data/drules_proto_vehicle_light.bin b/data/drules_proto_vehicle_light.bin index bb9736db03..04dfb6bec2 100644 Binary files a/data/drules_proto_vehicle_light.bin and b/data/drules_proto_vehicle_light.bin differ diff --git a/data/drules_proto_vehicle_light.txt b/data/drules_proto_vehicle_light.txt index ad7c1e116b..6f8fff0a86 100644 --- a/data/drules_proto_vehicle_light.txt +++ b/data/drules_proto_vehicle_light.txt @@ -9705,16 +9705,6 @@ cont { } cont { name: "highway-motorway" - element { - scale: 6 - lines { - width: 0.9 - color: 3019870528 - priority: 250 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -10041,16 +10031,6 @@ cont { } cont { name: "highway-motorway-bridge" - element { - scale: 6 - lines { - width: 0.9 - color: 3019870528 - priority: 250 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -10473,16 +10453,6 @@ cont { } cont { name: "highway-motorway-tunnel" - element { - scale: 6 - lines { - width: 0.9 - color: 3019870528 - priority: 250 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -19819,16 +19789,6 @@ cont { } cont { name: "highway-trunk" - element { - scale: 6 - lines { - width: 0.9 - color: 3019870528 - priority: 250 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -20155,16 +20115,6 @@ cont { } cont { name: "highway-trunk-bridge" - element { - scale: 6 - lines { - width: 0.9 - color: 3019870528 - priority: 250 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { @@ -20587,16 +20537,6 @@ cont { } cont { name: "highway-trunk-tunnel" - element { - scale: 6 - lines { - width: 0.9 - color: 3019870528 - priority: 250 - join: BEVELJOIN - cap: BUTTCAP - } - } element { scale: 7 lines { diff --git a/data/fonts_whitelist.txt b/data/fonts_whitelist.txt index e2f1b1bbcf..315bb3f26c 100644 --- a/data/fonts_whitelist.txt +++ b/data/fonts_whitelist.txt @@ -16,7 +16,3 @@ Latin_Extended-B /system/fonts/Roboto-Medium.ttf Latin_Extended-B 07_roboto_medium.ttf CJK_Compatibility 02_droidsans-fallback.ttf Devanagari 00_NotoSerifDevanagari-Regular.ttf -Malayalam /system/fonts/NotoSansMalayalam-Regular.ttf -Malayalam 00_NotoSansMalayalam-Regular.ttf -Bengali /system/fonts/NotoSansBengali-Regular.ttf -Bengali 00_NotoSansBengali-Regular.ttf \ No newline at end of file diff --git a/data/sound-strings/eu.json/localize.json b/data/sound-strings/eu.json/localize.json index c801ffde3a..ed1a5f1195 100644 --- a/data/sound-strings/eu.json/localize.json +++ b/data/sound-strings/eu.json/localize.json @@ -1,5 +1,5 @@ { -"make_a_slight_right_turn":"Mantendu eskuinean.", +"make_a_slight_right_turn":"Mantendu eskuinera.", "make_a_slight_right_turn_street":"NULL", "make_a_slight_right_turn_street_verb":"NULL", "make_a_right_turn":"Biratu eskuinera.", @@ -19,13 +19,13 @@ "make_a_left_turn_street":"NULL", "make_a_sharp_left_turn":"Eman bira itxia ezkerrera.", "make_a_sharp_left_turn_street":"NULL", -"make_a_u_turn":"Norabidea aldatu.", +"make_a_u_turn":"Norabidea aldaketa egin.", "make_a_u_turn_street":"NULL", "make_a_u_turn_street_verb":"NULL", "go_straight":"Zuzen jarraitu.", "exit":"Irteera.", "onto":"NULL", -"take_exit_number":"Irten", +"take_exit_number":"Irteera", "take_exit_number_street_verb":"NULL", "destination":"Zure helmugara iritsiko zara.", "you_have_reached_the_destination":"Helmugara iritsi zara.", @@ -103,5 +103,5 @@ "in_1_mile":"Milia batera", "in_1_5_miles":"Milia eta erdira", "in_2_miles":"Bi milietara", -"unknown_camera":"Kamera aurrean" +"unknown_camera":"Kamera aurrera" } diff --git a/data/strings/sound.txt b/data/strings/sound.txt index 7f5f2ce15f..5892135b66 100644 --- a/data/strings/sound.txt +++ b/data/strings/sound.txt @@ -10,7 +10,7 @@ de = Halten Sie sich rechts. el = Μείνετε δεξιά. es = Manténgase a la derecha. - eu = Mantendu eskuinean. + eu = Mantendu eskuinera. fa = با زاویه کم به راست گردش کنید. fi = Pysy oikealla. fr = Serrez à droite. @@ -390,7 +390,7 @@ de = Wenden Sie. el = Κάντε στροφή 180 μοιρών. es = Cambie de sentido. - eu = Norabidea aldatu. + eu = Norabidea aldaketa egin. fa = دور بزنید. fi = Tee U-käännös. fr = Faites demi-tour. @@ -560,7 +560,7 @@ de = Nehmen Sie die Ausfahrt auf el = Εξοδος στην es = Tome la salida - eu = Irten + eu = Irteera fa = خروجﺐﻫ fi = Poistu tielle fr = Sortie sur @@ -2867,7 +2867,7 @@ el = Κάμερα παρακάτω es = Cámara adelante es-MX = Cámara próxima - eu = Kamera aurrean + eu = Kamera aurrera fa = دوربین کنترل سرعت در نزدیکی fi = Edessä on kamera fr = Caméra devant diff --git a/data/strings/strings.txt b/data/strings/strings.txt index 7f90df86bd..c22a8919e7 100644 --- a/data/strings/strings.txt +++ b/data/strings/strings.txt @@ -75,7 +75,7 @@ lt = Atšaukti mr = रद्द करा nb = Avbryt - nl = Annuleer + nl = Annuleren pl = Anuluj pt = Cancelar pt-BR = Cancelar @@ -120,7 +120,7 @@ lt = Atšaukti atsisiuntimą mr = डाउनलोड रद्द करा nb = Avbryt nedlasting - nl = Annuleer downloaden + nl = Downloaden annuleren pl = Anuluj pobieranie pt = Cancelar descarregamento pt-BR = Cancelar download @@ -165,7 +165,7 @@ lt = Naikinti mr = हटवा nb = Slett - nl = Verwijder + nl = Verwijderen pl = Usuń pt = Eliminar pt-BR = Apagar @@ -606,7 +606,7 @@ lt = Ieškoti mr = शोधा nb = Søk - nl = Zoek + nl = Zoeken pl = Wyszukaj pt = Pesquisar pt-BR = Buscar @@ -651,7 +651,7 @@ lt = Ieškoti žemėlapio mr = नकाश्यात शोधा nb = Søk kart - nl = Zoek op de kaart + nl = Op de kaart zoeken pl = Wyszukaj mapy pt = Pesquisar mapa pt-BR = Procurar mapa @@ -786,7 +786,7 @@ lt = Rodyti žemėlapyje mr = नकाशावर दाखवा nb = Vis på kartet - nl = Toon op de kaart + nl = Op de kaart tonen pl = Wyświetl na mapie pt = Mostrar no mapa pt-BR = Mostrar no mapa @@ -831,7 +831,7 @@ lt = Atsisiųsti žemėlapį mr = नकाशा डाउनलोड करा nb = Last ned kart - nl = Download kaart + nl = Kaart downloaden pl = Pobierz mapę pt = Descarregar mapa pt-BR = Baixar mapa @@ -921,7 +921,7 @@ lt = Bandyti dar kartą mr = पुन्हा प्रयत्न करा nb = Prøv på nytt - nl = Probeer opnieuw + nl = Opnieuw proberen pl = Spróbuj ponownie pt = Tentar novamente pt-BR = Tentar novamente @@ -1144,7 +1144,7 @@ lt = • Greitas, minimalistinis, sukurtas bendruomenės mr = • जलद, मिनिमलिस्ट, समुदायाद्वारे विकसित nb = • Rask, minimalistisk, utviklet av fellesskapet - nl = • Snel, minimalistisch, ontwikkeld door de gemeenschap + nl = • Snel, minimalistisch, ontwikkeld door gemeenschap pl = • Szybki, minimalistyczny, opracowany przez społeczność pt = • Rápido, minimalista, desenvolvido pela comunidade ro = • Rapid, minimalist, dezvoltat de comunitate @@ -1275,7 +1275,7 @@ lt = Uždaryti mr = बंद nb = Lukk - nl = Sluit + nl = Sluiten pl = Zamknij pt = Fechar pt-BR = Fechar @@ -1363,7 +1363,7 @@ lt = Atsisiųsti mr = डाउनलोड करा nb = Last ned - nl = Download + nl = Downloaden pl = Pobierz pt = Descarregar pt-BR = Baixar @@ -1717,7 +1717,7 @@ lt = Pristabdyti mr = विराम द्या nb = Pause - nl = Pauzeer + nl = Pauzeren pl = Wstrzymaj pt = Pausar pt-BR = Pausar @@ -1762,7 +1762,7 @@ lt = Tęsti mr = चालू ठेवा nb = Fortsett - nl = Ga verder + nl = Doorgaan pl = Kontynuuj pt = Continuar pt-BR = Continuar @@ -2391,7 +2391,7 @@ ko = 지도가 다운로드될 곳을 선택합니다 mr = नकाशे डाउनलोड करायचे ठिकाण निवडा nb = Velg hvor du vil at kartene skal lastes ned til - nl = Selecteer de map waar kaarten naar gedownload worden + nl = Selecteer de plaats waar kaarten naar gedownload zouden moeten worden pl = Określa położenie przechowywania pobranych map pt = Selecione o local onde os mapas devem ser descarregados pt-BR = Selecione o local para onde os mapas devem ser baixados @@ -4188,7 +4188,7 @@ lt = Nepavyko atidaryti failo %1$@\n\n%2$@ mr = फाइल उघडण्यात अयशस्वी%1$@\n\n%2$@ nb = Kunne ikke åpne filen %1$@\n\n%2$@ - nl = Bestand openen mislukt %1$@\n\n%2$@ + nl = Faalde om bestand te openen %1$@\n\n%2$@ pl = Nie udało się otworzyć pliku %1$@\n\n%2$@ pt = Falha ao abrir o ficheiro %1$@\n\n%2$@ pt-BR = Falha ao abrir o arquivo %1$@\n\n%2$@ @@ -4234,7 +4234,7 @@ lt = Redaguoti mr = संपादन nb = Rediger - nl = Wijzig + nl = Wijzigen pl = Edytuj pt = Editar pt-BR = Editar @@ -4369,7 +4369,7 @@ lt = Vyksta žemėlapio atsisiuntimas. mr = नकाशा डाउनलोड होत आहे nb = Nedlasting av land pågår nå. - nl = De kaart wordt nu gedownload. + nl = Het downloaden van het land is nu aan de gang. pl = Trwa pobieranie mapy kraju. pt = O descarregamento do país está a ser feito neste momento. pt-BR = O download do país está atualmente em progresso. @@ -4457,7 +4457,7 @@ lt = Labas, pažvelk, ką aš prisegiau Organic Maps! mr = Organic Maps द्वारे एक खूणपत्र पाठवत आहे! nb = Hei, se merket mitt på Organic Maps-kartet - nl = Hey, bekijk mijn pin op Organic Maps! + nl = Hey, kijk naar mijn pin op Organic Maps! pl = Hej, spójrz na mój znacznik w Organic Maps! pt = Veja o meu marcador no mapa do Organic Maps. pt-BR = Veja o meu marcador no mapa do Organic Maps. @@ -4501,7 +4501,7 @@ lt = Labas, pažvelk į mano dabartinę vietą Organic Maps žemėlapyje! mr = Organic Maps द्वारे माझे वर्तमान स्थान पाठवत आहे! nb = Hei, se posisjonen min på Organic Maps-kartet! - nl = Hey, bekijk mijn huidige locatie op Organic Maps! + nl = Hey, kijk naar mijn huidige locatie op Organic Maps! pl = Zobacz moją aktualną lokalizację na mapie przy użyciu Organic Maps pt = Veja a minha localização atual no mapa Organic Maps! pt-BR = Veja no mapa a minha localização atual via Organic Maps! @@ -4590,7 +4590,7 @@ lt = Bendrinti mr = सामायिक nb = Del - nl = Deel + nl = Delen pl = Udostępnij pt = Partilhar pt-BR = Compartilhar @@ -4828,7 +4828,7 @@ uk = Версія Organic Maps: %@. vi = Phiên bản Organic Maps: %@ zh-Hans = Organic Maps 版本: %@ - zh-Hant = Organic Maps 版本:%@ + zh-Hant = 有機地圖版本:%@ [data_version] comment = Data version in «About» screen, %@ is replaced by a local, human readable date. @@ -5249,7 +5249,7 @@ lt = Rodyti žemėlapyje mr = नकाशावर दाखवा nb = Vis på skjermen - nl = Toon op de kaart + nl = Weergave op het scherm pl = Wyświetla na ekranie pt = Mostrar no ecrã pt-BR = Mostrar na tela @@ -5783,7 +5783,7 @@ ja = 通りの名前を発表 ko = "거리 이름 발표" nb = Kunngjør gatenavn - nl = Straatnamen aankondigen + nl = Straatnamen bekendmaken pl = Wymawiaj nazwy ulic pt = Anunciar nomes de ruas ro = Anunțați numele străzilor @@ -6536,7 +6536,7 @@ lt = Rodyti žemėlapyje mr = नकाशावर पहा nb = Vis på kartet - nl = Bekijk op de kaart + nl = Op kaart bekijken pl = Wyświetl na mapie pt = Ver no mapa pt-BR = Ver no mapa @@ -6802,7 +6802,7 @@ lt = Įvertinkite programėlę mr = ऍप मानांकित करा nb = Ranger appen - nl = Beoordeel de app + nl = App beoordelen pl = Oceń aplikację pt = Avaliar a aplicação pt-BR = Avaliar o aplicativo @@ -6936,7 +6936,7 @@ ko = 기부 lt = Aukoti nb = Donere - nl = Doneer + nl = Doneren pl = Wspomóż pt = Doar pt-BR = Doar @@ -7306,7 +7306,7 @@ lt = El. pašto paskyra nenustatyta. Ją sukonfigūruokite arba susisiekite kitu būdu: %@ mr = ईमेल वाहक सेट केलेले नाही. कृपया ते सेट करा किंवा वेगळ्या पद्धतीने आमच्याशी %@ वर संपर्क करा nb = E-postklienten har ikke blitt konfigurert. Konfigurer den eller bruk en annen måte å kontakte oss på %@ - nl = Het e-mailprogramma is niet ingesteld. Stel het programma in of neem contact met ons op via %@ + nl = De emailcliënt is niet ingesteld. Gelieve de cliënt te configureren of contact met ons op te nemen op %@ pl = Klient pocztowy nie został skonfigurowany. Proszę skonfigurować go, bądź skorzystać z innych opcji, aby się z nami skontaktować na %@ pt = O programa de email não está configurado. Por favor, configure-o ou utilize qualquer outra forma de nos contactar através de %@ pt-BR = O cliente de email não está configurado. Por favor, configure-o ou utilize qualquer outro modo para nos contatar através de %@ @@ -7351,7 +7351,7 @@ lt = Klaida siunčiant laišką mr = मेल पाठवताना त्रुटी nb = Feil ved sending av e-post - nl = E-mail verzendfout + nl = Email verzendfout pl = Błąd wysyłania wiadomości pt = Erro ao enviar o email pt-BR = Erro no envio de email @@ -7396,7 +7396,7 @@ lt = Kompaso kalibravimas mr = होकायंत्र अंशशोधन nb = Kompasskalibrering - nl = Kompaskalibratie + nl = Kompascalibratie pl = Kalibracja kompasu pt = Calibração da bússola pt-BR = Calibração da bússola @@ -7618,7 +7618,7 @@ lt = Atšaukti viską mr = सर्व रद्द nb = Avbryt alle - nl = Annuleer alles + nl = Alles annuleren pl = Anuluj wszystko pt = Cancelar tudo pt-BR = Cancelar tudo @@ -7881,7 +7881,7 @@ lt = Atsisiųsti viską mr = सर्व डाउनलोड nb = Last ned alle - nl = Download alles + nl = Alles downloaden pl = Pobierz wszystkie pt = Descarregar tudo pt-BR = Baixar tudo @@ -8011,7 +8011,7 @@ lt = Naujinti mr = अद्ययावत करा nb = Oppdatering - nl = Updaten + nl = Bijwerken pl = Aktualizacja pt = Atualizar pt-BR = Atualizar @@ -8231,7 +8231,7 @@ lt = Bandyti dar kartą mr = पुनर्प्रयत्न nb = Gjenta - nl = Probeer opnieuw + nl = Herhalen pl = Powtórz pt = Repetir pt-BR = Repetir @@ -8275,7 +8275,7 @@ lt = Naikinti žemėlapį mr = नकाशा काढून टाका nb = Slett kart - nl = Verwijder kaart + nl = Kaart verwijderen pl = Usuń mapę pt = Eliminar mapa pt-BR = Apagar mapa @@ -8319,7 +8319,7 @@ lt = Naujinti žemėlapį mr = नकाशा अद्ययावत करा nb = Oppdater kart - nl = Update kaart + nl = Kaart bijwerken pl = Aktualizuj mapę pt = Atualizar mapa pt-BR = Atualizar mapa @@ -8590,7 +8590,7 @@ lt = adresynas mr = खूणपत्र nb = bokmerk - nl = markeer + nl = markeren pl = zakładka pt = favorito pt-BR = favorito @@ -8635,7 +8635,7 @@ lt = Įjunkite vietovės tarnybas mr = कृपया स्थान सेवा सक्रिय करा nb = Aktiver posisjonstjenester - nl = Schakel locatiediensten in + nl = Schakel Locatie Services in pl = Proszę włączyć usługi lokalizacji pt = Por favor ative os serviços de localização pt-BR = Por favor, ative os Serviços de Localização @@ -8679,7 +8679,7 @@ lt = Išsaugoti mr = साठवा nb = Lagre - nl = Bewaar + nl = Opslaan pl = Zapisz pt = Guardar pt-BR = Salvar @@ -10186,7 +10186,7 @@ lt = Suderinkite jūsų pradžios tašką arba tikslą. mr = कृपया तुमचा प्रारंभ किंवा इष्टस्थानाचा बिंदू समायोजित करा. nb = Endre startpunkt eller bestemmelsessted. - nl = Kies een ander startpunt of een andere bestemming. + nl = Kies een ander startpunt of andere bestemming. pl = Zmień punkt początkowy lub docelowy. pt = Ajuste o ponto de partida ou o ponto de chegada. pt-BR = Ajuste o ponto de partida ou o ponto de chegada. @@ -10229,7 +10229,7 @@ lt = Derinti pradžios tašką mr = प्रारंभ बिंदू समायोजित करा nb = Endre startpunkt - nl = Kies ander startpunt + nl = Ander startpunt kiezen pl = Zmień punkt początkowy pt = Ajuste o ponto de partida pt-BR = Ajuste o ponto de partida @@ -10359,7 +10359,7 @@ lt = Derinti tikslą mr = इष्टस्थान समायोजित करा nb = Endre bestemmelsessted - nl = Kies andere bestemming + nl = Andere bestemming kiezen pl = Zmień punkt docelowy pt = Ajuste o ponto de chegada pt-BR = Ajuste o ponto de chegada @@ -10883,7 +10883,7 @@ lt = Rodyti mr = दाखवा nb = Vis - nl = Toon + nl = Tonen pl = Pokaż pt = Mostrar pt-BR = Mostrar @@ -10928,7 +10928,7 @@ lt = Slėpti mr = लपवा nb = Skjul - nl = Verberg + nl = Verbergen pl = Ukryj pt = Ocultar pt-BR = Ocultar @@ -11193,7 +11193,7 @@ lt = Ai! Nerasta rezultatų. mr = अरेच्चा, काहीच सापडले नाही. nb = Beklager, jeg fant ingenting. - nl = Sorry, geen resultaten gevonden. + nl = Sorry, ik heb niets gevonden. pl = Przepraszamy, nic nie znaleziono. pt = Lamento, mas não foram encontrados resultados. pt-BR = Sinto muito, nenhum resultado foi encontrado. @@ -11368,7 +11368,7 @@ lt = Valyti istoriją mr = शोध इतिहास पुसून टाका nb = Tøm søkehistorikk - nl = Wis zoekgeschiedenis + nl = Zoekgeschiedenis wissen pl = Wyczyść historię wyszukiwania pt = Limpar histórico de pesquisas pt-BR = Limpar histórico de pesquisa @@ -11493,7 +11493,7 @@ lt = Pradėti mr = सुरू करा nb = Start - nl = Start + nl = Beginnen pl = Start pt = Iniciar pt-BR = Iniciar @@ -11842,7 +11842,7 @@ lt = Planas mr = वेळापत्रक जोडा nb = Legg til tidsrom - nl = Voeg schema toe + nl = Schema toevoegen pl = Dodaj harmonogram pt = Adicionar horário ro = Adaugă planificare @@ -11884,7 +11884,7 @@ lt = Naikinti planą mr = वेळापत्रक मिटवा nb = Slett tidsrom - nl = Verwijder schema + nl = Schema verwijderen pl = Usuń harmonogram pt = Eliminar horário pt-BR = Apagar horário @@ -11928,7 +11928,7 @@ lt = Visą dieną (24 valandos) mr = दिवसभर (२४ तास) nb = Hele dagen (24 timer) - nl = Elke dag (24 uur) + nl = Elke dag (dag en nacht) pl = Całą dobę (24 godziny) pt = Todo o dia (24 horas) pt-BR = O dia todo (24 horas) @@ -12312,7 +12312,7 @@ lt = Taisyti klaidą mr = चूक सुधारा nb = Rett feil - nl = Corrigeer fout + nl = Fout corrigeren pl = Popraw błąd pt = Corrigir erro ro = Corectare greșeală @@ -12569,7 +12569,7 @@ lt = Siųsti mr = पाठवा nb = Send - nl = Verzend + nl = Verzenden pl = Wyślij pt = Enviar pt-BR = Enviar @@ -12785,7 +12785,7 @@ lt = Automatinis atsisiuntimas mr = स्वयं डाउनलोड nb = Automatisk nedlasting - nl = Download kaarten automatisch + nl = Automatische download pl = Automatyczne pobieranie pt = Descarregamento automático pt-BR = Download automático @@ -12918,7 +12918,7 @@ lt = 24/7 mr = २४/७ nb = Dag og natt - nl = 24/7 + nl = Nacht en dag pl = 24/7 pt = 24 horas por dia pt-BR = 24 horas por dia @@ -12961,7 +12961,7 @@ lt = Šiandien uždaryta mr = आज बंद nb = Fridag i dag - nl = Vandaag gesloten + nl = Vrije dag vandaag pl = Dziś nieczynne pt = Fechado hoje pt-BR = Fechado hoje @@ -13004,7 +13004,7 @@ lt = Uždaryta mr = बंद nb = Fridag - nl = Gesloten + nl = Vrije dag pl = Nieczynne pt = Fechado pt-BR = Fechado @@ -13155,7 +13155,7 @@ af = Open oor %@ ar = يفتح بعد %@ az = %@ sonra açılır - be = Адчыняецца праз %@ + be = Адкрываецца праз %@ ca = Obre en %@ de = Öffnet in %@ el = Ανοίγει σε %@ @@ -13178,8 +13178,6 @@ sk = Otvoria o %@ tr = %@ sonra açılıyor uk = Відкривається через %@ - zh-Hans = 将于 %@ 后开业 - zh-Hant = 將於 %@ 後開業 [closes_at] tags = ios @@ -13217,7 +13215,7 @@ af = Sluit oor %@ ar = يغلق في غضون %@ az = %@ sonra bağlanır - be = Зачыняецца праз %@ + be = Закрываецца праз %@ ca = Tanca en %@ de = Schließt in %@ el = Κλείνει σε %@ @@ -13240,8 +13238,6 @@ sk = Zatvoria o %@ tr = %@ sonra kapanıyor uk = Зачиняється через %@ - zh-Hans = 将于 %@ 后停业 - zh-Hant = 將於 %@ 後停業 [closed] tags = android,ios @@ -13315,7 +13311,7 @@ lt = Pridėti darbo valandas mr = उघडण्याची वेळ जोड nb = Legg til åpningstider - nl = Voeg openingstijden toe + nl = Openingsuren toevoegen pl = Dodaj godziny otwarcia pt = Adicionar horário de funcionamento pt-BR = Adicionar horário de funcionamento @@ -13359,7 +13355,7 @@ lt = Redaguoti darbo valandas mr = व्यवसायाची वेळ संपादित करा nb = Rediger åpningstider - nl = Bewerk openingstijden + nl = Openingsuren bewerken pl = Edytuj godziny otwarcia pt = Editar horário de funcionamento pt-BR = Editar horário de funcionamento @@ -13447,7 +13443,7 @@ lt = Registruokitės OpenStreetMap mr = OpenStreetMap वर नोंदणी करा nb = Registrer deg - nl = Registreer bij OpenStreetMap + nl = Registeren pl = Zarejestruj się pt = Crie uma conta no OpenStreetMap pt-BR = Abra uma conta no OpenStreetMap @@ -13617,7 +13613,7 @@ ko = OpenStreetMap에 로그인 lt = Prisijungti OpenStreetMap nb = Logg på OpenStreetMap - nl = Log in bij OpenStreetMap + nl = Inloggen op OpenStreetMap pl = Zaloguj się do OpenStreetMap pt = Entrar no OpenStreetMap pt-BR = Entrar no OpenStreetMap @@ -13790,7 +13786,7 @@ lt = Atsijungti mr = लॉग आऊट nb = Logg ut - nl = Log uit + nl = Uitloggen pl = Wyloguj pt = Terminar sessão pt-BR = Encerrar sessão @@ -13921,7 +13917,7 @@ lt = Redaguoti vietą mr = ठिकाण संपादित करा nb = Rediger stedet - nl = Bewerk de locatie + nl = De locatie bewerken pl = Edytuj miejsce pt = Editar o local pt-BR = Editar o local @@ -14008,7 +14004,7 @@ lt = Pridėti kalbą mr = भाषा जोडा nb = Legg til et språk - nl = Voeg een taal toe + nl = Een taal toevoegen pl = Dodaj język pt = Adicionar um idioma pt-BR = Adicionar um idioma @@ -14185,7 +14181,7 @@ lt = Pridėti gatvę mr = रस्ता जोडा nb = Legg til en gate - nl = Voeg een straat toe + nl = Een straat toevoegen pl = Dodaj ulicę pt = Adicionar uma rua pt-BR = Adicionar uma rua @@ -14263,7 +14259,7 @@ lt = Pasirinkite kalbą mr = भाषा निवडा nb = Velg et språk - nl = Kies een taal + nl = Een taal kiezen pl = Wybierz język pt = Escolher um idioma pt-BR = Escolher um idioma @@ -14306,7 +14302,7 @@ lt = Pasirinkite gatvę mr = रस्ता निवडा nb = Velg en gate - nl = Kies een straat + nl = Een straat kiezen pl = Wybierz ulicę pt = Escolher uma rua pt-BR = Escolher uma rua @@ -14436,7 +14432,7 @@ lt = Pasirinkti virtuvę mr = पाककृती निवडा nb = Velg matrett - nl = Selecteer keuken + nl = Selecteer Keuken pl = Wybierz kuchnię pt = Selecione a culinária pt-BR = Selecione a culinária @@ -14480,7 +14476,7 @@ lt = El. paštas arba naudotojo vardas mr = ईमेल किंवा वापरकर्तानाव nb = E-postadresse eller brukernavn - nl = E-mailadres of gebruikersnaam + nl = Emailadres of gebruikersnaam pl = Email lub nazwa użytkownika pt = Email ou nome de utilizador pt-BR = Email ou nome de usuário @@ -14559,7 +14555,7 @@ lt = Pridėti telefoną mr = फोन जोडा nb = Legg til telefon - nl = Voeg telefoonnummer toe + nl = Telefoonnummer toevoegen pl = Dodaj numer telefonu ro = Adaugă un număr ru = Добавить телефон @@ -14597,7 +14593,7 @@ lt = Aukštas mr = मजला nb = Gulv - nl = Verdieping + nl = Etage pl = Kondygnacja pt = Andar ro = Etaj @@ -14612,14 +14608,6 @@ zh-Hans = 楼层 zh-Hant = 樓層 - [level_value_generic] - tags = android,ios - comment = Building level - en = Level: %s - de = Stock: %s - fr = Niveau : %s - ru = Этаж: %s - [please_note] tags = ios en = Please note @@ -14734,7 +14722,7 @@ lt = Naujinti žemėlapius mr = नकाशे अद्ययावत करा nb = Oppdater kart - nl = Update kaarten + nl = Kaarten updaten pl = Aktualizuj mapy pt = Atualizar mapas pt-BR = Atualizar mapas @@ -14822,7 +14810,7 @@ lt = Rasti žemėlapį mr = नकाशा शोधा nb = Finn kartet - nl = Vind een kaart + nl = Vind de kaart pl = Znajdź mapę pt = Encontrar o mapa pt-BR = Encontrar o mapa @@ -15126,7 +15114,7 @@ lt = Vilkite žemėlapį, kad pasirinktumėte teisingą objekto vietą. mr = वस्तूचे योग्य स्थान निवडण्यासाठी नकाशा सरकवा. nb = Dra kartet for å velge riktig beliggenhet for objektet. - nl = Versleep de kaart om de juiste locatie van het object te selecteren. + nl = Trek aan de kaart om de juiste locatie van het object te selecteren. pl = Przeciągnij mapę, aby wybrać poprawną lokalizację obiektu. pt = Mova o mapa para selecionar o lugar correto do objeto. pt-BR = Mova o mapa para selecionar o lugar correto do objeto. @@ -15298,7 +15286,7 @@ lt = Redaguojama mr = संपादन nb = Redigerer - nl = Bewerken + nl = Aan het aanpassen pl = Edycja pt = Edição pt-BR = Edição @@ -15342,7 +15330,7 @@ lt = Pridedama mr = जोडणे nb = Legger til - nl = Toevoegen + nl = Aan het toevoegen pl = Dodawanie pt = A adicionar pt-BR = Adicionando @@ -15605,7 +15593,7 @@ lt = Pridėti verslą mr = व्यवसाय जोडा nb = Legg til organisasjon - nl = Voeg een organisatie toe + nl = Een organisatie toevoegen pl = Dodaj organizację pt = Adicionar uma organização pt-BR = Adicionar uma empresa @@ -15691,7 +15679,7 @@ lt = Keisti vietą mr = स्थान बदला nb = Endre plassering - nl = Wijzig locatie + nl = Locatie wijzigen pl = Zmień lokalizację pt = Mudar local pt-BR = Mudar local @@ -16087,7 +16075,7 @@ lt = Įveskite pastato numerį mr = एक वैध बिल्डिंग क्रमांक प्रविष्ट करा nb = Skriv riktig husnummer - nl = Voer een geldig huisnummer in + nl = Een juist huisnummer invoeren pl = Wprowadź poprawny numer domu pt = Introduza um número de endereço correto pt-BR = Informe o número correto do endereço @@ -16262,7 +16250,7 @@ lt = Įveskite ZIP kodą mr = वैध पिनकोड प्रविष्ट करा nb = Angi riktig postnummer - nl = Voer een geldige postcode in + nl = Voer de juiste postcode in pl = Podaj prawidłowy kod pocztowy pt = Introduza o código postal correto pt-BR = Informe o CEP correto @@ -16352,7 +16340,7 @@ lt = Siųsti pastabą OSM redaktoriams mr = OpenStreetMap संपादकांना एक चिठ्ठी पाठवा nb = Send et notat til OSM-redaktørene - nl = Stuur een notitie naar de OSM-editors + nl = Notitie sturen naar de OSM-editors pl = Poinformuj redaktorów OSM pt = Enviar nota aos editores OSM pt-BR = Envie uma observação para os editores do OSM @@ -16631,8 +16619,8 @@ tr = Organik Haritalar yalnızca basit nokta kategorileri eklemeye izin verir, yani kasaba, yol, göl, bina ana hatları vb. yoktur. Lütfen bu tür kategorileri doğrudan OpenStreetMap.org'a ekleyin. Adım adım ayrıntılı talimatlar için rehberimize göz atın. uk = Organic Maps дозволяють додавати до мапи лише прості типи об'єктів, тобто без міст, доріг, озер та контурів будівель. Будь ласка, додайте такі категорії на сайті OpenStreetMap.org. Ми також рекомендуємо ознайомитися із детальними інструкціями та іншими додатками для редагування карти. vi = Bản đồ không phải trả tiền chỉ cho phép thêm các danh mục điểm đơn giản, nghĩa là không có thị trấn, đường, hồ, đường viền tòa nhà, v.v. Vui lòng thêm các danh mục đó trực tiếp vào OpenStreetMap.org. Hãy xem hướng dẫn của chúng tôi để biết hướng dẫn chi tiết từng bước. - zh-Hans = Organic Maps 只允许添加简单的点类别,即无法添加城镇、道路、湖泊、建筑轮廓等类别。请直接向OpenStreetMap.org添加此类类别。请查看我们的指南,了解详细的步骤说明。 - zh-Hant = Organic Maps 只允許添加簡單的點類別,即無法添加城鎮、道路、湖泊、建築輪廓等類別。 請直接向OpenStreetMap.org新增此類類別。 請查看我們的指南,以了解詳細的步驟說明。 + zh-Hans = 有机地图只允许添加简单的点类别,即不允许添加城镇、道路、湖泊、建筑轮廓等类别。请直接向OpenStreetMap.org添加此类类别。请查看我们的指南,了解详细的步骤说明。 + zh-Hant = 有機地圖僅允許添加簡單的點類別,這意味著沒有城鎮、道路、湖泊、建築物輪廓等。OpenStreetMap.org.請查看我們的指南,以了解詳細的逐步說明。 [downloader_no_downloaded_maps_title] tags = android,ios @@ -17005,7 +16993,7 @@ lt = 3. Pasirinkite Naudojant programėlę mr = ३. "ऍप वापरत असताना" निवडा nb = 3.Velg når appen er i bruk - nl = 3. Selecteer Bij gebruik van app + nl = 3. Selecteer Terwijl Je de App Gebruikt pl = 3. Zaznacz Podczas korzystania z aplikacji pt = 3. Selecione “Durante a utilização da aplicação“ pt-BR = 3. Selecione “Durante uso do aplicativo“ @@ -17049,7 +17037,7 @@ lt = 2. Pasirinkite Privatumas mr = 2. गोपनीयता निवडा nb = 2. Velg Personvern - nl = 2. Selecteer Privacy en beveiliging + nl = 2. Selecteer Privacy pl = 2. Wybierz Prywatność pt = 2. Selecione “Privacidade e segurança“ pt-BR = 2. Selecione “Privacidade e Segurança“ @@ -17094,7 +17082,7 @@ lt = 3. Pasirinkite Vietos nustatymo paslaugos mr = 3. स्थान सेवा निवडा nb = 3. Velg Stedstjenester - nl = 3. Selecteer Locatievoorzieningen + nl = 3. Selecteer Locatiediensten pl = 3. Wybierz Usługi lokalizacji pt = 3. Selecione “Serviços de localização“ pt-BR = 3. Selecione “Serviços de Localização“ @@ -17139,7 +17127,7 @@ lt = 4. Įjunkite vietos nustatymo paslaugas mr = 4. स्थान सेवा चालू करा nb = 4. Slå på Stedstjenester - nl = 4. Locatievoorzieningen inschakelen + nl = 4. Locatiediensten inschakelen pl = 4. Włącz usługi lokalizacji pt = 4. Ative “Serviços de localização“ pt-BR = 4. Ative “Serviços de Localização“ @@ -17198,8 +17186,8 @@ tr = Veya Konum olmadan Organic Maps kullanmaya devam edin uk = Або продовжуйте використовувати Organic Maps без визначення місцезнаходження vi = Hoặc tiếp tục sử dụng Bản đồ không phải trả tiền mà không có Vị trí - zh-Hans = 或继续使用 Organic Maps,但无法定位到您目前所在的位置。 - zh-Hant = 或繼續使用 Organic Maps,但無法定位到您目前所在的位置。 + zh-Hans = 或继续使用 "有机地图 "而不定位 + zh-Hant = 或繼續使用沒有位置的有機地圖 [m] tags = android,ios @@ -17616,7 +17604,7 @@ lt = Knyga mr = पुस्तक nb = Bestill - nl = Boek + nl = Boeken pl = Zarezerwuj pt = Reservas pt-BR = Reservar @@ -17719,7 +17707,7 @@ uk = Реферальний бонус, отриманий за кожне бронювання за цим посиланням, йде на розробку Organic Maps. vi = Phần thưởng giới thiệu nhận được cho mỗi lần đặt phòng thông qua liên kết này sẽ hướng tới việc phát triển bản đồ không phải trả tiền. zh-Hans = 每次通过此链接预订所获得的推荐奖金将用于 Organic Maps 的开发。 - zh-Hant = 透過此連結進行的每次預訂收到的推薦獎金將用於開發 Organic Maps。 + zh-Hant = 透過此連結進行的每次預訂收到的推薦獎金將用於開發有機地圖 [dialog_kayak_button] comment = A confirmation button text in the explanation dialog that opens hotel details page on Kayak website. @@ -17793,7 +17781,7 @@ lt = Skambinti mr = फोन करा nb = Ring - nl = Bel + nl = Bellen pl = Zadzwoń pt = Telefonar pt-BR = Ligar @@ -17836,7 +17824,7 @@ lt = Redaguoti adresyną mr = खूणपत्र संपादित करा nb = Rediger bokmerke - nl = Bewerk bladwijzer + nl = Bladwijzer bewerken pl = Edytuj zakładkę pt = Editar favorito pt-BR = Editar favorito @@ -17963,7 +17951,7 @@ lt = Naikinti adresyną mr = खूणपत्र पुसा nb = Slett bokmerke - nl = Verwijder bladwijzer + nl = Bladwijzer verwijderen pl = Usuń zakładkę pt = Eliminar favorito pt-BR = Apagar favorito @@ -18093,7 +18081,7 @@ lt = Anuliuoti visus vietinius pakeitimus? mr = सर्व स्थानिक बदल टाकून द्यायचे? nb = Nullstille alle lokale endringer? - nl = Alle lokale wijzigingen weggooien? + nl = Alle lokale wijzigingen herstellen? pl = Usunąć wszystkie lokalne zmiany? pt = Eliminar todas as alterações locais? pt-BR = Descartar todas as modificações locais? @@ -18136,7 +18124,7 @@ lt = Anuliuoti mr = टाकून द्या nb = Nullstill - nl = Gooi weg + nl = Herstellen pl = Usuń pt = Eliminar pt-BR = Descartar @@ -18179,7 +18167,7 @@ lt = Naikinti pridėtą vietą? mr = जोडलेले ठिकाण पुसून टाकायचे? nb = Fjerne et tilføyd sted? - nl = Toegevoegde locatie verwijderen? + nl = Een toegevoegde locatie verwijderen? pl = Usunąć dodane miejsce? pt = Eliminar o local adicionado? pt-BR = Remover local adicionado? @@ -18223,7 +18211,7 @@ lt = Naikinti mr = पुसा nb = Fjern - nl = Verwijder + nl = Verwijderen pl = Usuń pt = Eliminar pt-BR = Remover @@ -18385,7 +18373,7 @@ lt = Įveskite telefono numerį mr = वैध संपर्क क्रमांक प्रविष्ट करा nb = Skriv riktig telefonnummer - nl = Voer een geldig telefoonnummer in + nl = Voer het juiste telefoonnummer in pl = Wprowadź poprawny numer telefonu pt = Introduza um número de telefone correto pt-BR = Digite um número de telefone correto @@ -18657,7 +18645,7 @@ lt = Naujinti mr = अद्ययावत करा nb = Oppdatere - nl = Update + nl = Updaten pl = Aktualizuj pt = Atualizar pt-BR = Atualizar @@ -18702,7 +18690,7 @@ lt = Pridėti vietą į OpenStreetMap mr = OpenStreetMap मध्ये ठिकाण जोडा nb = Legg til sted i OpenStreetMap - nl = Voeg een plaats toe aan OpenStreetMap + nl = Plaats toevoegen aan OpenStreetMap pl = Dodaj miejsce do OpenStreetMap pt = Adicionar um local no OpenStreetMap pt-BR = Adicionar um local no OpenStreetMap @@ -18872,7 +18860,7 @@ lt = Stabdyti mr = थांबा nb = Stopp - nl = Stop + nl = Stoppen pt = Parar ro = Oprește ru = Cтоп @@ -18957,7 +18945,7 @@ lt = Išjungti mr = बंद करा nb = Deaktiver - nl = Schakel uit + nl = Uitschakelen pl = Wyłącz pt = Desativar pt-BR = Desabilitar @@ -19133,7 +19121,7 @@ lt = Priimti mr = स्वीकारा nb = Godta - nl = Accepteer + nl = Aanvaarden pl = Zaakceptuj pt = Aceitar pt-BR = Aceitar @@ -19178,7 +19166,7 @@ lt = Atmesti mr = नाकारा nb = Avvis - nl = Weiger + nl = Weigeren pl = Odrzuć pt = Recusar pt-BR = Declinar @@ -19310,7 +19298,7 @@ lt = Visada naudoti mr = नेहमी वापरा nb = Bruk alltid - nl = Gebruik altijd + nl = Altijd Gebruiken pl = Stosuj zawsze pt = Utilizar sempre pt-BR = Utilizar sempre @@ -19353,7 +19341,7 @@ lt = Tik šiandien mr = फक्त आज nb = Bare i dag - nl = Alleen vandaag + nl = Enkel Vandaag pl = Tylko dzisiaj pt = Apenas hoje pt-BR = Apenas hoje @@ -19396,7 +19384,7 @@ lt = Šiandien nenaudoti mr = आज वापरू नका nb = Ikke bruk i dag - nl = Gebruik vandaag niet + nl = Vandaag niet Gebruiken pl = Nie stosuj dzisiaj pt = Não utilizar hoje pt-BR = Não utilizar hoje @@ -19440,7 +19428,7 @@ lt = Mobilusis internetas mr = मोबाइल इंटरनेट nb = Mobilt Internett - nl = Mobiel internet + nl = Mobiel Internet pl = Dane mobilne pt = Dados móveis pt-BR = Internet móvel @@ -19529,7 +19517,7 @@ lt = Niekada nenaudoti mr = कधीही वापरू नका nb = Aldri bruk - nl = Gebruik nooit + nl = Nooit Gebruiken pl = Nigdy nie stosuj pt = Nunca utilizar pt-BR = Nunca utilizar @@ -19573,7 +19561,7 @@ lt = Visada klausti mr = नेहमी विचारा nb = Alltid spør - nl = Vraag altijd + nl = Altijd Vragen pl = Zawsze pytaj pt = Perguntar sempre pt-BR = Perguntar sempre @@ -19660,7 +19648,7 @@ lt = Padidinti šrifto dydi žemėlapyje mr = नकाशावर टंकाचा (फॉन्टचा) आकार वाढवा nb = Forstørr skriften på kartet - nl = Vergroot lettergrootte op de kaart + nl = Lettergrootte op de kaart vergroten pl = Powiększ rozmiar czcionki na mapie pt = Aumentar tamanho da fonte no mapa pt-BR = Aumentar tamanho da fonte no mapa @@ -19879,7 +19867,7 @@ lt = Bendrasis atsiliepimas mr = सामान्य अभिप्राय nb = Generell tilbakemelding - nl = Algemene feedback + nl = Algemene Feedback pl = Ogólne uwagi pt = Opinão geral pt-BR = Opinão geral @@ -20050,7 +20038,7 @@ fr-CA = Translittération vers l'alphabet latin he = תעתיק לאותיות לטיניות hi = लैटिन में लिप्यंतरण - hu = Átírás latin betűkre + hu = Átírás latin nyelvre id = Transliterasi ke dalam bahasa Latin it = Trascrizione in latino ja = ラテン文字への翻字 @@ -20165,95 +20153,93 @@ [routing_add_start_point] tags = android,ios - comment = User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". - en = Use search or tap on the map to add a route starting point - af = Gebruik soek of tik op die kaart om 'n roetebeginpunt by te voeg - ar = استخدام البحث أو النقر على الخريطة لإضافة نقطة بداية الطريق - az = Marşrutun başlanğıc nöqtəsi əlavə etmək üçün axtarışdan istifadə edin və ya xəritədə klikləyin - be = Скарыстайцеся пошукам або націсніце на мапе, каб дадаць пачатак маршруту - bg = Използвайте търсене или докоснете картата, за да добавите начална точка на маршрута - ca = Utilitzeu la cerca o toqueu el mapa per afegir un punt de partida de la ruta - cs = Pomocí vyhledávání nebo klepnutím na mapu přidejte výchozí bod trasy - da = Brug søgning eller tryk på kortet for at tilføje et startpunkt for en rute - de = Verwende die Suche oder tippe auf die Karte, um einen Routenstartpunkt hinzuzufügen - el = Χρησιμοποιήστε την αναζήτηση ή πατήστε στο χάρτη για να προσθέσετε ένα σημείο εκκίνησης της διαδρομής - es = Busca o toca en el mapa para añadir el origen de la ruta - et = Marsruudi alguspunkti lisamiseks kasutage otsingut või puudutage kaarti - eu = Erabili bilaketa edo sakatu mapan ibilbidearen abiapuntua gehitzeko - fa = برای افزودن نقطه شروع مسیر، از جستجو استفاده کنید یا روی نقشه ضربه بزنید - fi = Käytä hakua tai napauta karttaa lisätäksesi reitin lähtöpisteen - fr = Utilise la recherche ou tape sur la carte pour ajouter un point de départ d'itinéraire - he = יש להוסיף נקודת התחלה למסלול באמצעות חיפוש או בלחיצה על המפה - hi = मार्ग का प्रारंभिक बिंदु जोड़ने के लिए खोज का उपयोग करें या मानचित्र पर टैप करें - hu = Használja a keresést, vagy koppintson a térképre az útvonal kezdőpontjának hozzáadásához - id = Gunakan pencarian atau ketuk pada peta untuk menambahkan titik awal rute - it = Usa la ricerca o tocca la mappa per aggiungere un punto di partenza del percorso - ja = 検索を使うか、地図上をタップしてルートの出発点を追加する - ko = 검색을 사용하거나 지도를 탭하여 경로 시작점을 추가합니다 - lt = Naudokite paiešką arba bakstelėkite žemėlapyje, kad pridėtumėte maršruto pradžios tašką - mr = मार्ग प्रारंभ बिंदू जोडण्यासाठी नकाशावर शोध वापरा किंवा टॅप करा - nb = Bruk søk eller trykk på kartet for å legge til et startpunkt for ruten - nl = Gebruik zoeken of tik op de kaart om een startpunt voor de route toe te voegen - pl = Użyj funkcji wyszukiwania lub dotknij mapy, aby dodać punkt początkowy trasy - pt = Use a busca ou toque no mapa para adicionar um ponto de partida do percurso - pt-BR = Use a busca ou toque no mapa para adicionar um ponto de partida da rota - ro = Utilizați funcția de căutare sau atingeți ușor pe hartă pentru a adăuga un punct de plecare - ru = Используйте поиск или коснитесь карты, чтобы добавить начальную точку маршрута - sk = Pomocou vyhľadávania alebo ťuknutím na mapu môžete pridať východiskový bod trasy - sv = Använd sökfunktionen eller tryck på kartan för att lägga till en startpunkt för rutten - sw = Tumia utafutaji au uguse kwenye ramani ili kuongeza mahali pa kuanzia - th = ใช้การค้นหาหรือแตะบนแผนที่เพื่อเพิ่มจุดเริ่มต้นเส้นทาง - tr = Bir rota başlangıç noktası eklemek için aramayı kullanın veya haritaya dokunun - uk = Скористайтеся пошуком або торкніться мапи, щоб додати початкову точку маршруту - vi = Sử dụng tìm kiếm hoặc nhấn vào bản đồ để thêm điểm bắt đầu tuyến đường - zh-Hans = 使用搜索或点击地图添加路线起点 - zh-Hant = 使用搜尋或點擊地圖新增路線起點 + en = Add a starting point to plan a route + af = Voeg ’n beginpunt toe om ’n roete te beplan + ar = أضف نقطة البداية لتخطيط المسار + az = Marşrutu planlaşdırmaq üçün başlanğıc nöqtəsi əlavə edin + be = Дадайце пункт адпраўлення, каб пракласці маршрут + bg = Добавяне на начална точка за планиране на маршрут + ca = Afegiu un punt inical per a planificar una ruta + cs = Zadejte výchozí bod pro plánování trasy + da = Tilføj startpunkt for at planlægge en rute + de = Fügen Sie einen Startpunkt hinzu, um eine Route zu planen + el = Προσθέστε αφετηρία για να σχεδιάσετε μια διαδρομή + es = Buscar un origen para el plan de ruta + et = Marsruudi planeerimiseks lisa lähtepunkt + eu = Gehitu abiapuntu bat ibilbide bat antolatzeko + fa = یک نقطه شروع برای برنامه ریزی یک مسیر اضافه کنید + fi = Lisää alkupiste reitin suunnittelua varten + fr = Ajouter un point de départ pour planifier un itinéraire + he = יש להוסיף נקודת התחלה כדי לתכנן מסלול + hi = मार्ग की योजना बनाने के लिए एक प्रारंभिक बिंदु जोड़ें + hu = Adjon hozzá kiindulási pontot az útvonal megtervezéséhez + id = Tambahkan titik awal untuk merencanakan rute + it = Aggiungi un punto di partenza per pianificare un percorso + ja = ルートを計画するには出発地を追加してください + ko = 경로 계획을 세우기 위한 시작 지점을 추가하세요 + lt = Pridėkite pradžios tašką, kad planuotumėte maršrutą + mr = मार्ग नियोजित करण्यासाठी प्रारंभ बिंदू जोडा + nb = Angi startpunkt for å planlegge rute + nl = Voeg beginpunt toe om een route te plannen + pl = Aby zaplanować trasę, dodaj punkt początkowy + pt = Adicionar ponto de partida para planear uma rota + pt-BR = Adicionar ponto de partida para planejar uma rota + ro = Adaugă un punct de plecare pentru a planifica un traseu + ru = Добавьте стартовую точку, чтобы построить маршрут + sk = Pridaním počiatočného bodu začnite plánovať trasu + sv = Lägg till startpunkt för att planera en rutt + sw = Ongeza eneo la kuanzia ili kupanga njia ya kufuata + th = เพิ่มจุดเริ่มต้นเพื่อวางแผนเส้นทาง + tr = Rotayı planlamak için bir başlangıç noktası ekleyin + uk = Вкажіть початкову точку для побудови маршруту + vi = Bổ sung điểm bắt đầu để lập kế hoạch lộ trình + zh-Hans = 添加起点以规划路线 + zh-Hant = 新增起點以計劃路線 [routing_add_finish_point] tags = android,ios - comment = User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". - en = Use search or tap on the map to add a destination point - af = Gebruik soek of tik op die kaart om 'n bestemmingspunt by te voeg - ar = استخدام البحث أو النقر على الخريطة لإضافة نقطة وجهة - az = Təyinat nöqtəsi əlavə etmək üçün axtarışdan istifadə edin və ya xəritədə klikləyin - be = Скарыстайцеся пошукам або націсніце на мапе, каб дадаць пункт прызначэння - bg = Използвайте търсене или докоснете картата, за да добавите точка на дестинация - ca = Utilitzeu la cerca o toqueu el mapa per afegir un punt de destinació - cs = Pomocí vyhledávání nebo klepnutím na mapu přidejte cílový bod - da = Brug søgning eller tryk på kortet for at tilføje et destinationspunkt - de = Verwende die Suche oder tippe auf die Karte, um einen Zielpunkt hinzuzufügen - el = Χρησιμοποιήστε την αναζήτηση ή πατήστε στο χάρτη για να προσθέσετε ένα σημείο προορισμού - es = Busca o toca en el mapa para añadir el destino - et = Kasutage otsingut või koputage kaardil sihtkoha lisamiseks - eu = Erabili bilaketa edo sakatu mapan helmuga puntu bat gehitzeko - fa = برای افزودن نقطه مقصد، از جستجو استفاده کنید یا روی نقشه ضربه بزنید - fi = Käytä hakua tai napauta karttaa lisätäksesi kohdepisteen. - fr = Utilise la recherche ou tape sur la carte pour ajouter un point de destination - he = יש לבחור נקודת יעד באמצעות חיפוש או בלחיצה על המפה - hi = गंतव्य बिंदु जोड़ने के लिए खोज का उपयोग करें या मानचित्र पर टैप करें - hu = Használja a keresést, vagy koppintson a térképre egy célpont hozzáadásához - id = Gunakan pencarian atau ketuk pada peta untuk menambahkan titik tujuan - it = Usa la ricerca o tocca la mappa per aggiungere un punto di destinazione - ja = 検索を使うか、地図上をタップして目的地を追加する - ko = 검색을 사용하거나 지도를 탭하여 목적지 지점을 추가합니다 - lt = Naudokite paiešką arba bakstelėkite žemėlapyje, kad pridėtumėte paskirties tašką - mr = गंतव्य बिंदू जोडण्यासाठी नकाशावर शोधा किंवा टॅप करा - nb = Bruk søk eller trykk på kartet for å legge til et destinasjonspunkt - nl = Gebruik Zoeken of tik op de kaart om een bestemmingspunt toe te voegen - pl = Użyj funkcji wyszukiwania lub dotknij mapy, aby dodać punkt docelowy - pt = Use a busca ou toque no mapa para adicionar um ponto de destino - pt-BR = Use a busca ou toque no mapa para adicionar um ponto de destino - ro = Utilizați funcția de căutare sau atingeți ușor pe hartă pentru a adăuga un punct de destinație - ru = Используйте поиск или коснитесь карты, чтобы добавить точку назначения - sk = Pomocou vyhľadávania alebo ťuknutím na mapu môžete pridať cieľový bod - sv = Använd sökfunktionen eller tryck på kartan för att lägga till en destinationspunkt - sw = Tumia utafutaji au uguse kwenye ramani ili kuongeza mahali unakoenda - th = ใช้การค้นหาหรือแตะบนแผนที่เพื่อเพิ่มจุดปลายทาง - tr = Bir hedef noktası eklemek için aramayı kullanın veya haritaya dokunun - uk = Скористайтеся пошуком або торкніться мапи, щоб додати пункт призначення - vi = Sử dụng tìm kiếm hoặc nhấn vào bản đồ để thêm điểm đến - zh-Hans = 使用搜索或点击地图添加目的地点 - zh-Hant = 使用搜尋或點擊地圖新增目的地點 + en = Add a destination to plan a route + af = Voeg ’n rigting by om ’n roete te beplan + ar = أضف النهاية لتخطيط المسار + az = Marşrutu planlaşdırmaq üçün təyinat əlavə edin + be = Дадайце пункт прызначэння, каб пракласці маршрут + bg = Добавяне на крайна точка за планиране на маршрут + ca = Afegeiu la destinació per a planificar la ruta + cs = Zadejte cílový bod pro plánování trasy + da = Tilføj slutpunkt for at planlægge en rute + de = Fügen Sie ein Ziel hinzu, um eine Route zu planen + el = Προσθέστε τελικό προορισμό, για να σχεδιάσετε μια διαδρομή + es = Buscar un destino para el plan de ruta + et = Marsruudi planeerimiseks lisa sihtkoht + eu = Gehitu helmuga bat ibilbide bat antolatzeko + fa = یک مقصد برای برنامه ریزی یک مسیر اضافه کنید + fi = Lisää määränpää reitin suunnittelua varten + fr = Ajouter un point d'arrivée pour planifier un itinéraire + he = יש להוסיף יעד כדי לתכנן מסלול + hi = मार्ग की योजना बनाने के लिए एक गंतव्य जोड़ें + hu = Adjon hozzá végpontot az útvonal tervezéséhez + id = Tambahkan titik akhir untuk merencanakan rute + it = Aggiungi un punto di arrivo per pianificare un percorso + ja = ルートを計画するには目的地を追加してください + ko = 경로 계획을 세우기 위한 끝 지점을 추가하세요 + lt = Pridėkite tikslo tašką, kad planuotumėte maršrutą + mr = मार्ग नियोजित करण्यासाठी इष्टस्थान जोडा + nb = Angi sluttpunkt for å planlegge rute + nl = Voeg eindpunt toe om een route te plannen + pl = Aby zaplanować trasę, dodaj punkt końcowy + pt = Adicionar final da viagem para planear uma rota + pt-BR = Adicionar ponto final da viagem para planejar uma rota + ro = Adaugă un punct de sosire pentru a planifica un traseu + ru = Добавьте конечную точку, чтобы построить маршрут + sk = Pridaním cieľového bodu naplánujete trasu + sv = Lägg till slutpunkt för att planera en rutt + sw = Ongeza eneo la kumalizia ili kupanga njia ya kufuata + th = เพิ่มจุดสิ้นสุดเพื่อวางแผนเส้นทาง + tr = Rotayı planlamak için bir varış noktası ekleyin + uk = Вкажіть кінцеву точку для побудови маршруту + vi = Bổ sung điểm kết thúc để lập kế hoạch lộ trình + zh-Hans = 添加终点以规划路线 + zh-Hant = 新增終點以計劃路線 [planning_route_manage_route] tags = ios @@ -20284,7 +20270,7 @@ lt = Tvarkyti maršrutą mr = मार्ग व्यवस्थापन nb = Administrere rute - nl = Beheer route + nl = Route beheren pl = Zarządzaj trasą pt = Gerir rota pt-BR = Gerenciar rota @@ -20328,7 +20314,7 @@ lt = Planas mr = नियोजन nb = Planlegge - nl = Plan + nl = Plannen pl = Zaplanuj pt = Planear pt-BR = Planejar @@ -20372,7 +20358,7 @@ lt = Šalinti mr = काढा nb = Fjern - nl = Verwijder + nl = Verwijderen pl = Usuń pt = Remover pt-BR = Remover @@ -20461,7 +20447,7 @@ lt = Pridėti sustojimą mr = स्टॉप जोडा nb = Angi stopp - nl = Voeg tussenstop toe + nl = Tussenstop toevoegen pl = Dodaj postój pt = Adicionar paragem pt-BR = Adicionar parada @@ -20869,7 +20855,7 @@ lt = Įveskite teisingą pavadinimą mr = कृपया योग्य नाव प्रविष्ट करा nb = Skriv inn korrekt navn - nl = Voer een geldige naam in + nl = Voer een juiste naam in pl = Wprowadź poprawną nazwę pt = Introduza um nome correto pt-BR = Por favor, digite um nome correto @@ -20962,7 +20948,7 @@ lt = Slėpti visus mr = सर्व लपवा nb = Skjul alle - nl = Verberg alles + nl = Alles verbergen pl = Ukryj wszystkie pt = Ocultar tudo pt-BR = Ocultar tudo @@ -21008,7 +20994,7 @@ lt = Rodyti visus mr = सर्व दाखवा nb = Vis alle - nl = Toon alles + nl = Alles weergeven pl = Pokaż wszystkie pt = Mostrar tudo pt-BR = Exibir tudo @@ -21115,7 +21101,7 @@ lt = Kurti naują sąrašą mr = नवीन यादी जोडा nb = Opprett ny liste - nl = Maak een nieuwe lijst + nl = Nieuwe lijst maken pl = Utwórz nową listę pt = Criar nova lista pt-BR = Criar nova lista @@ -21132,14 +21118,14 @@ zh-Hant = 創建新列表 [bookmarks_import] - tags = android,ios + tags = android comment = Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files en = Import Bookmarks and Tracks af = Voer leidrade en snitte in ar = استيراد الإشارات المرجعية والمسارات az = Əlfəcinləri və fraqmentləri idxal edin be = Імпартаваць закладкі і cцежкі - bg = Импортиране на отметки и маршрути + bg = Импортиране на отметки и песни ca = Importa marcadors i les traces cs = Import záložek a stop da = Importer bogmærker og spor @@ -21161,7 +21147,7 @@ lt = Žymeklių ir takelių importavimas mr = बुकमार्क आणि ट्रॅक आयात करा nb = Importer bokmerker og spor - nl = Importeer bladwijzers en tracks + nl = Bladwijzers en tracks importeren pl = Importuj zakładki i trasy pt = Importar favoritos e trilhas ro = Importați marcaje și piese @@ -21205,7 +21191,7 @@ lt = Slėpti ekraną mr = पटल (स्क्रीन) लपवा nb = Skjul skjerm - nl = Verberg scherm + nl = Scherm Verbergen pl = Ukryj ekran pt = Ocultar ecrã pt-BR = Ocultar tela @@ -22057,7 +22043,7 @@ lt = Konvertuoti mr = रूपांतरित करा nb = Konvertere - nl = Zet om + nl = Omzetten pl = Konwertuj pt = Converter pt-BR = Converter @@ -22149,7 +22135,7 @@ lt = Kai kurie failai nebuvo konvertuoti. mr = काही फायली रूपांतरित झाल्या नाहीत. nb = Noen filer ble ikke konvertert. - nl = Sommige bestanden zijn niet geconverteerd. + nl = Sommige bestanden werden niet geconverteerd. pl = Sommige bestanden waren niet geconverteerd. pt = Alguns ficheiros não foram convertidos. pt-BR = Alguns arquivos não foram convertidos. @@ -22194,7 +22180,7 @@ lt = Atkurti mr = पूर्ववत् करा nb = Restaurere - nl = Zet terug + nl = Herstellen pl = Przywróć pt = Restaurar pt-BR = Restaurar @@ -22255,10 +22241,7 @@ mr = %d वस्तू nb = %d sted nl = %d plaats - pl:few = %d obiekty - pl:many = %d obiektów - pl:one = %d obiekt - pl:other = %d obiektu + pl = %d miejsce pt-BR:one = %d objeto pt-BR:other = %d objetos pt:one = %d objeto @@ -22324,10 +22307,7 @@ mr:other = %d ठिकाणे nb = %d steder nl = %d plaatsen - pl:few = %d miejsca - pl:many = %d miejsc - pl:one = %d miejsce - pl:other = %d miejsca + pl = %d miejsc pt-BR:one = %d lugar pt-BR:other = %d lugares pt:one = %d lugar @@ -22389,10 +22369,7 @@ mr = %d ट्रॅक nb = %d stier nl = %d tracks - pl:few = %d trasy - pl:many = %d tras - pl:one = %d trasa - pl:other = %d trasy + pl = %d tras pt-BR:one = %d percurso pt-BR:other = %d percursos pt:one = %d percurso @@ -22550,7 +22527,7 @@ zh-Hant = 使用條款 [button_layer_traffic] - tags = android + tags = android,ios en = Traffic af = Verkeer ar = حركة مرور @@ -22975,7 +22952,7 @@ lt = Eksportuoti KMZ mr = KMZ निर्यात करा nb = Eksporter KMZ - nl = Exporteer KMZ + nl = KMZ exporteren pl = Eksportuj KMZ pt = Exportar KMZ ro = Export KMZ @@ -22985,7 +22962,7 @@ sw = Hamisha KMZ th = ส่งออก KMZ tr = KMZ'yi Dışa Aktar - uk = Експорт KMZ + uk = Експорт КМЗ vi = Xuất KMZ zh-Hans = 导出 KMZ zh-Hant = 出口KMZ @@ -23019,7 +22996,7 @@ lt = GPX eksportavimas mr = GPX निर्यात करा nb = Eksporter GPX - nl = Exporteer GPX + nl = GPX exporteren pl = Eksport GPX pt = Exportar GPX ro = Exportați GPX @@ -23063,7 +23040,7 @@ lt = Naikinti sąrašą mr = यादी मिटवा nb = Slett liste - nl = Verwijder lijst + nl = Lijst verwijderen pl = Usuń listę pt = Eliminar lista pt-BR = Deletar lista @@ -23107,7 +23084,7 @@ lt = Slėpti nuo žemėlapio mr = नकाशावरून लपवा nb = Skjul fra kart - nl = Verberg van de kaart + nl = Van de kaart verbergen pl = Ukryj mapy pt = Remover do mapa pt-BR = Esconder do mapa @@ -23242,7 +23219,7 @@ lt = Įveskite aprašymą(tekstas arba html) mr = वर्णन लिहा (मजकूर किंवा html) nb = Lag en beskrivelse (text or html) - nl = Voer een beschrijving in (tekst of html) + nl = Maak een beschrijving aan (tekst of html) pl = Dodaj opis (tekst lub html) pt = Introduza uma descrição (texto ou html) pt-BR = Digite uma descrição (texto ou html) @@ -23377,7 +23354,7 @@ lt = Atsisiųsti mr = डाउनलोड करा nb = Last ned - nl = Download + nl = Downloaden pl = Pobierz pt = Descarregar pt-BR = Baixar @@ -23836,7 +23813,7 @@ lt = Automatinis mr = स्वयंचलित nb = Automatisk - nl = Wanneer batterij bijna leeg is + nl = Auto pl = Automatycznie pt = Automático pt-BR = Automático @@ -23920,7 +23897,7 @@ fr = Cette option est activée pour l'identification des actions à des fins de diagnostic. Cela aide l’équipe à identifier les problèmes liés à l’application. Activez cette option uniquement à la demande du support Organic Maps. he = הפעל אפשרות זו כדי לתעד ובאופן ידני לשלוח אלינו פרטים דיאגנוסטיים על הבעיה שלך בעזרת הכפתור "דווח על באג" בתפריט עזרה. הפרטים עשויים לכלול מידע על מיקום. hi = सहायता संवाद में "बग की रिपोर्ट करें" का उपयोग करके हमें अपनी समस्या के बारे में विस्तृत डायग्नोस्टिक लॉग रिकॉर्ड करने और मैन्युअल रूप से भेजने के लिए इस विकल्प को अस्थायी रूप से सक्षम करें। लॉग में स्थान की जानकारी शामिल हो सकती है. - hu = Az opció bekapcsolja a diagnosztikai célú naplózást. Hasznos lehet a terméktámogatási csapatunknak, akik elhárítják az alkalmazás hibáit. Csak az Organic Maps terméktámogatásának kérésére kapcsold be ezt az opciót. + hu = Az opció bekapcsolja a diagnosztikai célú naplózást. Hasznos lehet a support csapatunknak, akik elhárítják az alkalmazás hibáit. Csak a Organic Maps support kérésére kapcsold be ezt az opciót. id = Opsi ini mengaktifkan pencatatan untuk tujuan diagnostik. Bisa amat membantu bagi staf dukungan kami yang memecahkan masalah dalam aplikasi. Aktifkan opsi ini hanya saat diminta oleh dukungan Organic Maps. it = L'opzione attiva i registri per scopi diagnostici. Può essere utile al nostro team per risolvere i problemi dell'app. Abilita temporaneamente questa opzione per registrare e inviarci registri dettagliati sul tuo problema. ja = このオプションは診断目的でのデータ記録を有効にします。これはこのアプリケーションのトラブルシューティングを担当する当社のサポートスタッフの助けになります。このオプションはOrganic Mapsにリクエストされた場合にのみ有効にしてください。 @@ -24019,7 +23996,7 @@ lt = Maršruto pasirinkimo parinktis mr = मार्गशोधी पर्याय nb = Kjørealternativer - nl = Route-instellingen + nl = Route instellingen pl = Ustawienia nawigacji pt = Configurações de direção pt-BR = Opções de trajeto @@ -24245,7 +24222,7 @@ lt = Nepavyko apskaičiuoti maršruto mr = मार्गाची गणना करण्यात अक्षम nb = Kan ikke beregne rute - nl = Kan route niet berekenen + nl = Kan route niet opbouwen pl = Brak możliwości zbudowania trasy pt = Não foi possível calcular a rota pt-BR = Incapaz de calcular rota @@ -24291,7 +24268,7 @@ lt = Deja, mums nepavyko rasti maršruto tikriausiai dėl jūsų pasirinktų parinkčių. Pakeiskite jas ir bandykite dar kartą. mr = दुर्दैवाने, आम्ही मार्ग शोधू शकलो नाही. ह्याचे कारण कदाचित तुम्ही निवडलेले पर्याय असावे. कृपया सेटिंग बदला आणि पुन्हा प्रयत्न करा. nb = Dessverre kunne vi ikke finne en rute sannsynligvis på grunn av dine definerte alternativer. Vennligst endre innstillingene og prøv igjen - nl = Helaas konden we geen route berekenen met de gekozen opties. Wijzig de instellingen en probeer het opnieuw + nl = Helaas konden we geen route opbouwen met de gekozen opties. Wijzig de instellingen en probeer het opnieuw pl = Wyznaczanie trasy nie powiodło się. Przyczyną mogą być ustawienia nawigacji lub niekompletne dane OpenStreetMap. Zmień ustawienia i spróbuj ponownie pt = Infelizmente não foi possível criar o percurso com as opções selecionadas. Altere as opções e tente novamente pt-BR = Infelizmente, não conseguimos encontrar uma rota, provavelmente por causa das opções escolhidas. Por favor, altere as configurações e tente novamente @@ -24337,7 +24314,7 @@ lt = Apibrėžti vengiamus kelius mr = टाळण्याचे मार्ग निवडा nb = Definer veier som skal unngås - nl = Configureer wegen om te vermijden + nl = Omwegen configureren pl = Dostosuj ścieżkę objazdu pt = Definir as estradas a evitar pt-BR = Definir as estradas a serem evitadas @@ -24382,7 +24359,7 @@ lt = Maršruto pasirinkimo parinktys įjungtos mr = मार्गशोधी पर्याय चालू केले nb = Kjørealternativer aktivert - nl = Route-instellingen ingeschakeld + nl = Omweginstellingen ingeschakeld pl = Ustawienia objazdu są włączone pt = Configurações de direção ativadas pt-BR = Opções de direção ativadas @@ -24470,7 +24447,7 @@ lt = Neasfaltuoas kelias mr = कच्चे मार्ग nb = Uasfaltert vei - nl = Onverharde weg + nl = Aardeweg pl = Droga gruntowa pt = Estrada não pavimentada pt-BR = Pista não pavimentada @@ -24514,7 +24491,7 @@ lt = Kelionė keltu mr = जल मार्ग nb = Fergeovergang - nl = Veerboot + nl = Ferry pl = Przeprawa promowa pt = Ferry pt-BR = Balsa @@ -24558,7 +24535,7 @@ lt = Pirmyn mr = चल जाऊया nb = La oss begynne - nl = Laten we gaan + nl = Kom op pl = Jedźmy pt = Começar pt-BR = Vamos @@ -24602,7 +24579,7 @@ lt = Tikslas mr = इष्टस्थान nb = Destinasjon - nl = Bestemming + nl = Doel pl = Meta pt = Destino pt-BR = Destino @@ -24647,7 +24624,7 @@ lt = Centruoti mr = पुनरकेंद्रित करा nb = Sentrer - nl = Centreer + nl = Centreren pl = Wyśrodkuj pt = Recentrar pt-BR = Re-centralizar @@ -25115,7 +25092,7 @@ lt = Nepavyko sukurti maršruto iki jūsų tikslo. Pasirinkite kitą tašką mr = तुमच्या इष्टस्थानापर्यंत मार्ग तयार करण्यात अक्षम. कृपया दुसरे ठिकाण निवडा. nb = Kan ikke planlegge rute til din nåværende posisjon. Vennligst velg en annen posisjon - nl = Kan route naar het eindpunt niet opbouwen. Kies een ander eindpunt + nl = Kan route naar het eindpunt niet opbouwen. Kies een andere punt pl = Brak możliwości zbudowania trasy do punktu końcowego. Wybierz inny pt = Não foi possível calcular o percurso para o destino. Escolha outro pt-BR = Incapaz de traçar rota para o seu destino. Por favor, escolha outro ponto de destino @@ -25431,7 +25408,7 @@ lt = Gerai mr = ठीक आहे nb = Ok - nl = Oké + nl = Goed pl = Ok pt = Ok pt-BR = Tudo bem @@ -25703,7 +25680,7 @@ lt = Rikiuoti adresyną mr = खूणपत्रे क्रमाने लावा nb = Sortere merker - nl = Sorteer bladwijzers + nl = Bladwijzers sorteren pl = Sortuj znaczniki pt = Ordenar favoritos pt-BR = Ordenar favoritos @@ -25748,7 +25725,7 @@ lt = Rikiuoti numatytai mr = डिफॉल्ट क्रमाने लावा nb = Sortere som standard - nl = Standaard sortering + nl = Standaard sorteren pl = Sortuj domyślnie pt = Ordenação predefinida pt-BR = Ordenar por padrão @@ -25925,7 +25902,7 @@ lt = Rūšiuoti pagal pavadinimą mr = नावानुसार क्रमवारी लावा nb = Sorter etter navn - nl = Sorteer op naam + nl = Sorteren op naam pl = Sortuj według nazwy pt = Ordenar por nome pt-BR = Classificar por nome @@ -26375,7 +26352,7 @@ lt = Arti manęs mr = माझ्या जवळ nb = Nær meg - nl = Dicht bij mij + nl = Naast mij pl = W pobliżu pt = Perto de mim pt-BR = Próximo de mim @@ -27084,7 +27061,7 @@ lt = Ieškoti sąraše mr = यादीत शोधा nb = Søk på lista - nl = Zoek in de lijst + nl = In de lijst zoeken pl = Wyszukaj na liście pt = Pesquisar na lista pt-BR = Buscar na lista @@ -27173,7 +27150,7 @@ lt = Pasirinkti sąrašą mr = यादी निवडा nb = Velge liste - nl = Kies een lijst + nl = Lijst kiezen pl = Wybierz listę pt = Selecionar lista pt-BR = Escolher a lista @@ -27237,8 +27214,8 @@ [dialog_pedestrian_route_is_long_header] tags = android,ios - en = No subway route found - en-GB = No metro route found + en = Subway route is not found + en-GB = Metro route is not found af = Moltreinroete nie gevind ar = لم يتم العثور على مترو الانفاق az = Metro marşrutu tapılmadı @@ -27667,7 +27644,7 @@ lt = Pakilimas mr = चढण nb = Stigning - nl = Stijging + nl = Opstijging pl = Wejście pt = Subida ro = Urcare @@ -27711,7 +27688,7 @@ lt = Nusileidimas mr = उतरण nb = Nedstigning - nl = Daling + nl = Afdaling pl = Zejście pt = Descida ro = Coborâre @@ -27934,7 +27911,7 @@ lt = Laikas: mr = वेळ: nb = I rute - nl = Tijd: + nl = Op weg pl = Trasa: pt = Tempo: pt-BR = Tempo: @@ -28530,7 +28507,7 @@ lt = Naujinti (%@) mr = अद्ययावत करा (%@) nb = Oppdater (%@) - nl = Werk bij (%@) + nl = Bijwerken (%@) pl = Zaktualizuj (%@) pt = Atualizar (%@) pt-BR = Atualizar (%@) @@ -28578,7 +28555,7 @@ lt = Atnaujinsiu vėliau mr = नंतर स्वतः अद्ययावत करा nb = Oppdater manuelt senere - nl = Werk later handmatig bij + nl = Later handmatig bijwerken pl = Zaktualizuj ręcznie później pt = Atualizar manualmente mais tarde pt-BR = Atualizar manualmente mais tarde @@ -29329,8 +29306,8 @@ tr = Artık telefon ekranında Organic Maps kullanıyorsunuz uk = Зараз ви використовуєте Organic Maps на екрані телефону vi = Bạn hiện đang sử dụng bản đồ không phải trả tiền trên màn hình điện thoại - zh-Hans = 您现在正在手机屏幕上使用 Organic Maps - zh-Hant = 您現在正在手機螢幕上使用 Organic Maps + zh-Hans = 您现在正在手机屏幕上使用有机地图 + zh-Hant = 您現在正在手機螢幕上使用有機地圖 [car_used_on_the_car_screen] comment = Text on the phone placeholder screen that maps are displayed on the car screen @@ -29374,8 +29351,8 @@ tr = Şu anda araç ekranında Organic Maps kullanıyorsunuz uk = Ви використовуєте Organic Maps на екрані автомобіля vi = Bạn hiện đang sử dụng bản đồ không phải trả tiền trên màn hình ô tô - zh-Hans = 您现在正在汽车屏幕上使用 Organic Maps - zh-Hant = 您現在正在汽車螢幕上使用 Organic Maps + zh-Hans = 您现在正在汽车屏幕上使用有机地图 + zh-Hant = 您現在正在汽車螢幕上使用有機地圖 [aa_connected_title] comment = Displayed on the phone screen. Android Auto connected @@ -29451,7 +29428,7 @@ ko = 전화기에서 계속 mr = फोनवर सुरू ठेवा nb = Fortsett i telefonen - nl = Ga verder op de telefoon + nl = Doorgaan in de telefoon pl = Kontynuuj na telefonie pt = Continuar no telemóvel pt-BR = Continuar no celular @@ -29586,7 +29563,7 @@ ko = 권한 부여 mr = परवानग्या द्या nb = Gi tillatelser - nl = Geef toestemming + nl = Toestemming geven pl = Przyznaj uprawnienia pt = Conceder permissão pt-BR = Conceder permissão @@ -29813,7 +29790,7 @@ lt = Eksportuoti visas žymes ir takelius mr = सर्व बुकमार्क आणि ट्रॅक निर्यात करा nb = Eksporter alle bokmerker og spor - nl = Exporteer alle bladwijzers en tracks + nl = Alle bladwijzers en tracks exporteren pl = Eksportuj wszystkie zakładki i ścieżki pt = Exportar todos os favoritos e trilhos pt-BR = Exportar todos os favoritos e trilhas @@ -29859,7 +29836,7 @@ lt = Keisti spalvą mr = रंग बदला nb = Endre farge - nl = Verander kleur + nl = Kleur veranderen pl = Zmień kolor pt = Muda de cor pt-BR = Mudança de cor @@ -30132,7 +30109,7 @@ lt = Priartinti vaizdą mr = प्रतिमेचे दृष्य रूप मोठे करा nb = Zoom inn - nl = Zoom in + nl = Inzoomen pl = Powiększ pt = Ampliar pt-BR = Ampliar @@ -30179,7 +30156,7 @@ lt = Padidinti mastelį mr = झूम कमी करा nb = Zoom ut - nl = Zoom uit + nl = Uitzoomen pl = Pomniejsz pt = Diminuir o zoom ro = A micsora @@ -30270,7 +30247,7 @@ lt = Peržiūrėti meniu mr = मेनू पहा nb = Vis meny - nl = Bekijk menu + nl = Menu bekijken pl = Wyświetl menu pt = Ver menu pt-BR = Exibir menu @@ -30317,7 +30294,7 @@ lt = "iCloud" sinchronizavimo įjungimas mr = iCloud सिंक्रोनाइझेशन सक्षम करा nb = Aktiver iCloud-synkronisering - nl = Schakel iCloud-synchronisatie in + nl = iCloud-synchronisatie inschakelen pl = Włącz synchronizację iCloud pt = Ativar a sincronização do iCloud pt-BR = Ativar a sincronização do iCloud @@ -30503,7 +30480,7 @@ lt = Įjungti mr = सक्षम करा nb = Aktivere - nl = Schakel in + nl = inschakelen pl = Włącz pt = Ativar ro = Activați diff --git a/data/strings/types_strings.txt b/data/strings/types_strings.txt index 095d97a503..caf9c50bda 100644 --- a/data/strings/types_strings.txt +++ b/data/strings/types_strings.txt @@ -30523,7 +30523,6 @@ af = Uitkykpunt ar = نقطة منظر az = Baxın - be = Аглядальная пляцоўка cs = Vyhlídka da = Udsigtspunkt de = Aussichtspunkt @@ -30554,8 +30553,8 @@ tr = Manzara uk = Оглядний майданчик vi = Điểm nhìn - zh-Hans = 观景点 - zh-Hant = 觀景點 + zh-Hans = 观点 + zh-Hant = 視野 [type.tourism.wilderness_hut] comment = Typically more basic, not staffed and free (compared to alpine_hut). diff --git a/data/styles/default/include/Roads.mapcss b/data/styles/default/include/Roads.mapcss index 04bd2755cc..83691b4690 100644 --- a/data/styles/default/include/Roads.mapcss +++ b/data/styles/default/include/Roads.mapcss @@ -2,8 +2,8 @@ 1.Z-INDEX ROADS 2.WORLD LEVEL ROAD 4-9 ZOOM -3.TRUNK & MOTORWAY 6-22 ZOOM - 3.1 Trunk & Motorway 6-22 ZOOM +3.TRUNK & MOTORWAY 7-22 ZOOM + 3.1 Trunk & Motorway 7-22 ZOOM 3.2 Trunk & Motorway tunnel 12-22 ZOOM 3.3 Trunk & Motorway bridge 13-22 ZOOM 4.PRIMARY 8-22 ZOOM @@ -71,11 +71,8 @@ line|z9[highway=world_towns_level], line|z9[highway=world_level] {width: 0.8;} -/* 3.TRUNK & MOTORWAY 6-22 ZOOM */ +/* 3.TRUNK & MOTORWAY 7-22 ZOOM */ -line|z6[highway=trunk], -line|z6[highway=motorway], -{color: @trunk0; opacity: 0.3;} line|z7-9[highway=trunk], line|z7-9[highway=motorway], {color: @trunk0; opacity: 0.7;} @@ -108,11 +105,8 @@ line|z14-[highway=motorway_link][bridge?]::bridgeblack, line|z14-[highway=trunk_link][bridge?]::bridgeblack, {casing-linecap: butt; casing-color: @bridge_casing; casing-opacity: 0.7;} -/* 3.1 Trunk & Motorway 6-22 ZOOM */ +/* 3.1 Trunk & Motorway 7-22 ZOOM */ -line|z6[highway=trunk], -line|z6[highway=motorway], -{width: 0.8;} line|z7[highway=trunk], line|z7[highway=motorway] {width: 0.9;} diff --git a/data/styles/default/include/priorities_3_FG.prio.txt b/data/styles/default/include/priorities_3_FG.prio.txt index c61f4fce1b..b460d63c8b 100644 --- a/data/styles/default/include/priorities_3_FG.prio.txt +++ b/data/styles/default/include/priorities_3_FG.prio.txt @@ -74,18 +74,18 @@ railway-tram-bridge # line z13- railway-tram-tunnel # line z13- === 320 -highway-motorway # line z6- (also has pathtext z10-, shield::shield z10-) -highway-motorway-bridge # line z6- (also has line::bridgeblack z13-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) -highway-motorway-tunnel # line z6- (also has line(casing) z12-, pathtext z10-, shield::shield z10-) -highway-trunk # line z6- (also has pathtext z10-, shield::shield z10-) -highway-trunk-bridge # line z6- (also has line::bridgeblack z13-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) -highway-trunk-tunnel # line z6- (also has line(casing) z12-, pathtext z10-, shield::shield z10-) +highway-motorway # line z7- (also has pathtext z10-, shield::shield z10-) +highway-motorway-bridge # line z7- (also has line::bridgeblack z13-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) +highway-motorway-tunnel # line z7- (also has line(casing) z12-, pathtext z10-, shield::shield z10-) +highway-trunk # line z7- (also has pathtext z10-, shield::shield z10-) +highway-trunk-bridge # line z7- (also has line::bridgeblack z13-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) +highway-trunk-tunnel # line z7- (also has line(casing) z12-, pathtext z10-, shield::shield z10-) highway-world_level # line z4-9 highway-world_towns_level # line z6-9 === 310 -# highway-motorway-tunnel # line(casing) z12- (also has line z6-, pathtext z10-, shield::shield z10-) -# highway-trunk-tunnel # line(casing) z12- (also has line z6-, pathtext z10-, shield::shield z10-) +# highway-motorway-tunnel # line(casing) z12- (also has line z7-, pathtext z10-, shield::shield z10-) +# highway-trunk-tunnel # line(casing) z12- (also has line z7-, pathtext z10-, shield::shield z10-) # === 309 highway-primary # line z8- (also has pathtext z10-, shield::shield z10-) @@ -309,7 +309,7 @@ highway-path-tunnel # line z14- (also has line:: highway-bridleway-bridge::bridgewhite # line::bridgewhite z15- (also has line z14-, line::bridgeblack z17-, pathtext z15-) highway-cycleway-bridge::bridgewhite # line::bridgewhite z15- (also has line z13-, line::bridgeblack z17-, pathtext z15-) highway-footway-bridge::bridgewhite # line::bridgewhite z15- (also has line z15-, line::bridgeblack z17-, pathtext z15-) -highway-motorway-bridge::bridgewhite # line::bridgewhite z13- (also has line z6-, line::bridgeblack z13-, pathtext z10-, shield::shield z10-) +highway-motorway-bridge::bridgewhite # line::bridgewhite z13- (also has line z7-, line::bridgeblack z13-, pathtext z10-, shield::shield z10-) highway-motorway_link-bridge::bridgewhite # line::bridgewhite z14- (also has line z10-, line::bridgeblack z14-, pathtext z10-, shield::shield z10-) highway-path-bridge::bridgewhite # line::bridgewhite z15- (also has line z14-, line::bridgeblack z17-, pathtext z15-) highway-pedestrian-bridge::bridgewhite # line::bridgewhite z13- (also has line z13-, line::bridgeblack z14-, pathtext z14-) @@ -324,7 +324,7 @@ highway-steps-bridge::bridgewhite # line::bridgewhite z15- (al highway-tertiary-bridge::bridgewhite # line::bridgewhite z14- (also has line z11-, line::bridgeblack z14-, pathtext z12-, shield::shield z13-) highway-tertiary_link-bridge::bridgewhite # line::bridgewhite z14- (also has line z14-, line::bridgeblack z14-, pathtext z18-) highway-track-bridge::bridgewhite # line::bridgewhite z15- (also has line z14-, line::bridgeblack z17-, pathtext z15-) -highway-trunk-bridge::bridgewhite # line::bridgewhite z13- (also has line z6-, line::bridgeblack z13-, pathtext z10-, shield::shield z10-) +highway-trunk-bridge::bridgewhite # line::bridgewhite z13- (also has line z7-, line::bridgeblack z13-, pathtext z10-, shield::shield z10-) highway-trunk_link-bridge::bridgewhite # line::bridgewhite z14- (also has line z10-, line::bridgeblack z14-, pathtext z10-, shield::shield z10-) highway-unclassified-bridge::bridgewhite # line::bridgewhite z14- (also has line z11-, line::bridgeblack z14-, pathtext z13-) railway-abandoned-bridge::bridgewhite # line::bridgewhite z16- (also has line z16-, line::bridgeblack z16-) @@ -343,7 +343,7 @@ railway-subway-bridge::bridgewhite # line::bridgewhite z13- (al highway-bridleway-bridge::bridgeblack # line::bridgeblack z17- (also has line z14-, line::bridgewhite z15-, pathtext z15-) highway-cycleway-bridge::bridgeblack # line::bridgeblack z17- (also has line z13-, line::bridgewhite z15-, pathtext z15-) highway-footway-bridge::bridgeblack # line::bridgeblack z17- (also has line z15-, line::bridgewhite z15-, pathtext z15-) -highway-motorway-bridge::bridgeblack # line::bridgeblack z13- (also has line z6-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) +highway-motorway-bridge::bridgeblack # line::bridgeblack z13- (also has line z7-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) highway-motorway_link-bridge::bridgeblack # line::bridgeblack z14- (also has line z10-, line::bridgewhite z14-, pathtext z10-, shield::shield z10-) highway-path-bridge::bridgeblack # line::bridgeblack z17- (also has line z14-, line::bridgewhite z15-, pathtext z15-) highway-pedestrian-bridge::bridgeblack # line::bridgeblack z14- (also has line z13-, line::bridgewhite z13-, pathtext z14-) @@ -358,7 +358,7 @@ highway-steps-bridge::bridgeblack # line::bridgeblack z17- (al highway-tertiary-bridge::bridgeblack # line::bridgeblack z14- (also has line z11-, line::bridgewhite z14-, pathtext z12-, shield::shield z13-) highway-tertiary_link-bridge::bridgeblack # line::bridgeblack z14- (also has line z14-, line::bridgewhite z14-, pathtext z18-) highway-track-bridge::bridgeblack # line::bridgeblack z17- (also has line z14-, line::bridgewhite z15-, pathtext z15-) -highway-trunk-bridge::bridgeblack # line::bridgeblack z13- (also has line z6-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) +highway-trunk-bridge::bridgeblack # line::bridgeblack z13- (also has line z7-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) highway-trunk_link-bridge::bridgeblack # line::bridgeblack z14- (also has line z10-, line::bridgewhite z14-, pathtext z10-, shield::shield z10-) highway-unclassified-bridge::bridgeblack # line::bridgeblack z14- (also has line z11-, line::bridgewhite z14-, pathtext z13-) railway-abandoned-bridge::bridgeblack # line::bridgeblack z16- (also has line z16-, line::bridgewhite z16-) diff --git a/data/styles/default/include/priorities_4_overlays.prio.txt b/data/styles/default/include/priorities_4_overlays.prio.txt index 7b791132b2..72f1fd8b4f 100644 --- a/data/styles/default/include/priorities_4_overlays.prio.txt +++ b/data/styles/default/include/priorities_4_overlays.prio.txt @@ -78,20 +78,20 @@ amenity-ferry_terminal # icon z11- (also has captio railway-station # icon z12- (also has caption(optional) z12-) === 6800 -highway-motorway # pathtext z10- (also has shield::shield z10-, line z6-) -highway-motorway-bridge # pathtext z10- (also has shield::shield z10-, line z6-, line::bridgeblack z13-, line::bridgewhite z13-) -highway-motorway-tunnel # pathtext z10- (also has shield::shield z10-, line z6-, line(casing) z12-) -highway-trunk # pathtext z10- (also has shield::shield z10-, line z6-) -highway-trunk-bridge # pathtext z10- (also has shield::shield z10-, line z6-, line::bridgeblack z13-, line::bridgewhite z13-) -highway-trunk-tunnel # pathtext z10- (also has shield::shield z10-, line z6-, line(casing) z12-) +highway-motorway # pathtext z10- (also has shield::shield z10-, line z7-) +highway-motorway-bridge # pathtext z10- (also has shield::shield z10-, line z7-, line::bridgeblack z13-, line::bridgewhite z13-) +highway-motorway-tunnel # pathtext z10- (also has shield::shield z10-, line z7-, line(casing) z12-) +highway-trunk # pathtext z10- (also has shield::shield z10-, line z7-) +highway-trunk-bridge # pathtext z10- (also has shield::shield z10-, line z7-, line::bridgeblack z13-, line::bridgewhite z13-) +highway-trunk-tunnel # pathtext z10- (also has shield::shield z10-, line z7-, line(casing) z12-) === 6750 -highway-motorway::shield # shield::shield z10- (also has pathtext z10-, line z6-) -highway-motorway-bridge::shield # shield::shield z10- (also has pathtext z10-, line z6-, line::bridgeblack z13-, line::bridgewhite z13-) -highway-motorway-tunnel::shield # shield::shield z10- (also has pathtext z10-, line z6-, line(casing) z12-) -highway-trunk::shield # shield::shield z10- (also has pathtext z10-, line z6-) -highway-trunk-bridge::shield # shield::shield z10- (also has pathtext z10-, line z6-, line::bridgeblack z13-, line::bridgewhite z13-) -highway-trunk-tunnel::shield # shield::shield z10- (also has pathtext z10-, line z6-, line(casing) z12-) +highway-motorway::shield # shield::shield z10- (also has pathtext z10-, line z7-) +highway-motorway-bridge::shield # shield::shield z10- (also has pathtext z10-, line z7-, line::bridgeblack z13-, line::bridgewhite z13-) +highway-motorway-tunnel::shield # shield::shield z10- (also has pathtext z10-, line z7-, line(casing) z12-) +highway-trunk::shield # shield::shield z10- (also has pathtext z10-, line z7-) +highway-trunk-bridge::shield # shield::shield z10- (also has pathtext z10-, line z7-, line::bridgeblack z13-, line::bridgewhite z13-) +highway-trunk-tunnel::shield # shield::shield z10- (also has pathtext z10-, line z7-, line(casing) z12-) === 6740 boundary-aboriginal_lands # caption z10-16 (also has area z10-16) diff --git a/data/styles/outdoors/include/Roads.mapcss b/data/styles/outdoors/include/Roads.mapcss index 58c84c91a0..4866ac9270 100644 --- a/data/styles/outdoors/include/Roads.mapcss +++ b/data/styles/outdoors/include/Roads.mapcss @@ -3,9 +3,6 @@ /* Make all roads more contrast */ -line|z6[highway=trunk], -line|z6[highway=motorway], -{opacity: 0.7;} line|z7-[highway=trunk], line|z7-[highway=motorway], line|z10-[highway=motorway_link], diff --git a/data/styles/outdoors/include/priorities_3_FG.prio.txt b/data/styles/outdoors/include/priorities_3_FG.prio.txt index 24ee35f0ca..53872b107b 100644 --- a/data/styles/outdoors/include/priorities_3_FG.prio.txt +++ b/data/styles/outdoors/include/priorities_3_FG.prio.txt @@ -74,18 +74,18 @@ railway-tram-bridge # line z13- railway-tram-tunnel # line z13- === 320 -highway-motorway # line z6- (also has pathtext z10-, shield::shield z10-) -highway-motorway-bridge # line z6- (also has line::bridgeblack z13-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) -highway-motorway-tunnel # line z6- (also has line(casing) z12-, pathtext z10-, shield::shield z10-) -highway-trunk # line z6- (also has pathtext z10-, shield::shield z10-) -highway-trunk-bridge # line z6- (also has line::bridgeblack z13-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) -highway-trunk-tunnel # line z6- (also has line(casing) z12-, pathtext z10-, shield::shield z10-) +highway-motorway # line z7- (also has pathtext z10-, shield::shield z10-) +highway-motorway-bridge # line z7- (also has line::bridgeblack z13-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) +highway-motorway-tunnel # line z7- (also has line(casing) z12-, pathtext z10-, shield::shield z10-) +highway-trunk # line z7- (also has pathtext z10-, shield::shield z10-) +highway-trunk-bridge # line z7- (also has line::bridgeblack z13-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) +highway-trunk-tunnel # line z7- (also has line(casing) z12-, pathtext z10-, shield::shield z10-) highway-world_level # line z4-9 highway-world_towns_level # line z6-9 === 310 -# highway-motorway-tunnel # line(casing) z12- (also has line z6-, pathtext z10-, shield::shield z10-) -# highway-trunk-tunnel # line(casing) z12- (also has line z6-, pathtext z10-, shield::shield z10-) +# highway-motorway-tunnel # line(casing) z12- (also has line z7-, pathtext z10-, shield::shield z10-) +# highway-trunk-tunnel # line(casing) z12- (also has line z7-, pathtext z10-, shield::shield z10-) # === 309 highway-primary # line z8- (also has pathtext z10-, shield::shield z10-) @@ -309,7 +309,7 @@ highway-path-tunnel # line z11- (also has line:: highway-bridleway-bridge::bridgewhite # line::bridgewhite z15- (also has line z11-, line::bridgeblack z17-, pathtext z13-) highway-cycleway-bridge::bridgewhite # line::bridgewhite z15- (also has line z11-, line::bridgeblack z17-, pathtext z13-) highway-footway-bridge::bridgewhite # line::bridgewhite z15- (also has line z11-, line::bridgeblack z17-, pathtext z13-) -highway-motorway-bridge::bridgewhite # line::bridgewhite z13- (also has line z6-, line::bridgeblack z13-, pathtext z10-, shield::shield z10-) +highway-motorway-bridge::bridgewhite # line::bridgewhite z13- (also has line z7-, line::bridgeblack z13-, pathtext z10-, shield::shield z10-) highway-motorway_link-bridge::bridgewhite # line::bridgewhite z14- (also has line z10-, line::bridgeblack z14-, pathtext z10-, shield::shield z10-) highway-path-bridge::bridgewhite # line::bridgewhite z15- (also has line z11-, line::bridgeblack z17-, pathtext z13-) highway-pedestrian-bridge::bridgewhite # line::bridgewhite z13- (also has line z13-, line::bridgeblack z14-, pathtext z14-) @@ -324,7 +324,7 @@ highway-steps-bridge::bridgewhite # line::bridgewhite z15- (al highway-tertiary-bridge::bridgewhite # line::bridgewhite z14- (also has line z11-, line::bridgeblack z14-, pathtext z12-, shield::shield z13-) highway-tertiary_link-bridge::bridgewhite # line::bridgewhite z14- (also has line z14-, line::bridgeblack z14-, pathtext z18-) highway-track-bridge::bridgewhite # line::bridgewhite z15- (also has line z11-, line::bridgeblack z17-, pathtext z13-) -highway-trunk-bridge::bridgewhite # line::bridgewhite z13- (also has line z6-, line::bridgeblack z13-, pathtext z10-, shield::shield z10-) +highway-trunk-bridge::bridgewhite # line::bridgewhite z13- (also has line z7-, line::bridgeblack z13-, pathtext z10-, shield::shield z10-) highway-trunk_link-bridge::bridgewhite # line::bridgewhite z14- (also has line z10-, line::bridgeblack z14-, pathtext z10-, shield::shield z10-) highway-unclassified-bridge::bridgewhite # line::bridgewhite z14- (also has line z11-, line::bridgeblack z14-, pathtext z13-) railway-abandoned-bridge::bridgewhite # line::bridgewhite z16- (also has line z13-, line::bridgeblack z16-) @@ -343,7 +343,7 @@ railway-subway-bridge::bridgewhite # line::bridgewhite z13- (al highway-bridleway-bridge::bridgeblack # line::bridgeblack z17- (also has line z11-, line::bridgewhite z15-, pathtext z13-) highway-cycleway-bridge::bridgeblack # line::bridgeblack z17- (also has line z11-, line::bridgewhite z15-, pathtext z13-) highway-footway-bridge::bridgeblack # line::bridgeblack z17- (also has line z11-, line::bridgewhite z15-, pathtext z13-) -highway-motorway-bridge::bridgeblack # line::bridgeblack z13- (also has line z6-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) +highway-motorway-bridge::bridgeblack # line::bridgeblack z13- (also has line z7-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) highway-motorway_link-bridge::bridgeblack # line::bridgeblack z14- (also has line z10-, line::bridgewhite z14-, pathtext z10-, shield::shield z10-) highway-path-bridge::bridgeblack # line::bridgeblack z17- (also has line z11-, line::bridgewhite z15-, pathtext z13-) highway-pedestrian-bridge::bridgeblack # line::bridgeblack z14- (also has line z13-, line::bridgewhite z13-, pathtext z14-) @@ -358,7 +358,7 @@ highway-steps-bridge::bridgeblack # line::bridgeblack z17- (al highway-tertiary-bridge::bridgeblack # line::bridgeblack z14- (also has line z11-, line::bridgewhite z14-, pathtext z12-, shield::shield z13-) highway-tertiary_link-bridge::bridgeblack # line::bridgeblack z14- (also has line z14-, line::bridgewhite z14-, pathtext z18-) highway-track-bridge::bridgeblack # line::bridgeblack z17- (also has line z11-, line::bridgewhite z15-, pathtext z13-) -highway-trunk-bridge::bridgeblack # line::bridgeblack z13- (also has line z6-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) +highway-trunk-bridge::bridgeblack # line::bridgeblack z13- (also has line z7-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) highway-trunk_link-bridge::bridgeblack # line::bridgeblack z14- (also has line z10-, line::bridgewhite z14-, pathtext z10-, shield::shield z10-) highway-unclassified-bridge::bridgeblack # line::bridgeblack z14- (also has line z11-, line::bridgewhite z14-, pathtext z13-) railway-abandoned-bridge::bridgeblack # line::bridgeblack z16- (also has line z13-, line::bridgewhite z16-) diff --git a/data/styles/outdoors/include/priorities_4_overlays.prio.txt b/data/styles/outdoors/include/priorities_4_overlays.prio.txt index 51c785860a..148c2317b9 100644 --- a/data/styles/outdoors/include/priorities_4_overlays.prio.txt +++ b/data/styles/outdoors/include/priorities_4_overlays.prio.txt @@ -78,20 +78,20 @@ amenity-ferry_terminal # icon z11- (also has captio railway-station # icon z12- (also has caption(optional) z12-) === 6800 -highway-motorway # pathtext z10- (also has shield::shield z10-, line z6-) -highway-motorway-bridge # pathtext z10- (also has shield::shield z10-, line z6-, line::bridgeblack z13-, line::bridgewhite z13-) -highway-motorway-tunnel # pathtext z10- (also has shield::shield z10-, line z6-, line(casing) z12-) -highway-trunk # pathtext z10- (also has shield::shield z10-, line z6-) -highway-trunk-bridge # pathtext z10- (also has shield::shield z10-, line z6-, line::bridgeblack z13-, line::bridgewhite z13-) -highway-trunk-tunnel # pathtext z10- (also has shield::shield z10-, line z6-, line(casing) z12-) +highway-motorway # pathtext z10- (also has shield::shield z10-, line z7-) +highway-motorway-bridge # pathtext z10- (also has shield::shield z10-, line z7-, line::bridgeblack z13-, line::bridgewhite z13-) +highway-motorway-tunnel # pathtext z10- (also has shield::shield z10-, line z7-, line(casing) z12-) +highway-trunk # pathtext z10- (also has shield::shield z10-, line z7-) +highway-trunk-bridge # pathtext z10- (also has shield::shield z10-, line z7-, line::bridgeblack z13-, line::bridgewhite z13-) +highway-trunk-tunnel # pathtext z10- (also has shield::shield z10-, line z7-, line(casing) z12-) === 6750 -highway-motorway::shield # shield::shield z10- (also has pathtext z10-, line z6-) -highway-motorway-bridge::shield # shield::shield z10- (also has pathtext z10-, line z6-, line::bridgeblack z13-, line::bridgewhite z13-) -highway-motorway-tunnel::shield # shield::shield z10- (also has pathtext z10-, line z6-, line(casing) z12-) -highway-trunk::shield # shield::shield z10- (also has pathtext z10-, line z6-) -highway-trunk-bridge::shield # shield::shield z10- (also has pathtext z10-, line z6-, line::bridgeblack z13-, line::bridgewhite z13-) -highway-trunk-tunnel::shield # shield::shield z10- (also has pathtext z10-, line z6-, line(casing) z12-) +highway-motorway::shield # shield::shield z10- (also has pathtext z10-, line z7-) +highway-motorway-bridge::shield # shield::shield z10- (also has pathtext z10-, line z7-, line::bridgeblack z13-, line::bridgewhite z13-) +highway-motorway-tunnel::shield # shield::shield z10- (also has pathtext z10-, line z7-, line(casing) z12-) +highway-trunk::shield # shield::shield z10- (also has pathtext z10-, line z7-) +highway-trunk-bridge::shield # shield::shield z10- (also has pathtext z10-, line z7-, line::bridgeblack z13-, line::bridgewhite z13-) +highway-trunk-tunnel::shield # shield::shield z10- (also has pathtext z10-, line z7-, line(casing) z12-) === 6740 boundary-aboriginal_lands # caption z10-16 (also has area z10-16) diff --git a/data/styles/vehicle/include/Roads.mapcss b/data/styles/vehicle/include/Roads.mapcss index 2abb8253ea..0b84e05e2f 100644 --- a/data/styles/vehicle/include/Roads.mapcss +++ b/data/styles/vehicle/include/Roads.mapcss @@ -2,8 +2,8 @@ 1.Z-INDEX ROADS 2.WORLD LEVEL ROAD 4-9 ZOOM -3.TRUNK & MOTORWAY 6-22 ZOOM - 3.1 Trunk & Motorway 6-22 ZOOM +3.TRUNK & MOTORWAY 7-22 ZOOM + 3.1 Trunk & Motorway 7-22 ZOOM 3.2 Trunk & Motorway tunnel 12-22 ZOOM 3.3 Trunk & Motorway bridge 13-22 ZOOM 4.PRIMARY 8-22 ZOOM @@ -70,11 +70,8 @@ line|z9[highway=world_towns_level], line|z9[highway=world_level] {width: 1.2;} -/* 3.TRUNK & MOTORWAY 6-22 ZOOM */ +/* 3.TRUNK & MOTORWAY 7-22 ZOOM */ -line|z6[highway=trunk], -line|z6[highway=motorway], -{color: @trunk0; opacity: 0.3;} line|z7-[highway=trunk], line|z7-[highway=motorway], {color: @trunk0; opacity: 0.7;} @@ -96,11 +93,8 @@ line|z14-[highway=motorway_link][bridge?]::bridgeblack, line|z14-[highway=trunk_link][bridge?]::bridgeblack, {casing-linecap: butt;casing-color:@bridge_casing; casing-opacity: 0.7;} -/* 3.1 Trunk & Motorway 6-22 ZOOM */ +/* 3.1 Trunk & Motorway 7-22 ZOOM */ -line|z6[highway=trunk], -line|z6[highway=motorway], -{width: 0.9;} line|z7[highway=trunk], line|z7[highway=motorway] {width: 1.05;} diff --git a/data/styles/vehicle/include/priorities_3_FG.prio.txt b/data/styles/vehicle/include/priorities_3_FG.prio.txt index 5f8a41ba47..d0ae8468e7 100644 --- a/data/styles/vehicle/include/priorities_3_FG.prio.txt +++ b/data/styles/vehicle/include/priorities_3_FG.prio.txt @@ -39,22 +39,22 @@ railway-tram-bridge # line z16- (also has line:: railway-tram-tunnel # line z16- (also has line::centerline z16-) === 260 -highway-motorway # line z6- (also has line(casing) z14-, pathtext z10-, shield::shield z10-) -highway-motorway-bridge # line z6- (also has line::bridgeblack z13-, line::bridgewhite z13-, line(casing) z14-, pathtext z10-, shield::shield z10-) -highway-motorway-tunnel # line z6- (also has line(casing) z12-, pathtext z10-, shield::shield z10-) -highway-trunk # line z6- (also has line(casing) z14-, pathtext z10-, shield::shield z10-) -highway-trunk-bridge # line z6- (also has line::bridgeblack z13-, line::bridgewhite z13-, line(casing) z14-, pathtext z10-, shield::shield z10-) -highway-trunk-tunnel # line z6- (also has line(casing) z12-, pathtext z10-, shield::shield z10-) +highway-motorway # line z7- (also has line(casing) z14-, pathtext z10-, shield::shield z10-) +highway-motorway-bridge # line z7- (also has line::bridgeblack z13-, line::bridgewhite z13-, line(casing) z14-, pathtext z10-, shield::shield z10-) +highway-motorway-tunnel # line z7- (also has line(casing) z12-, pathtext z10-, shield::shield z10-) +highway-trunk # line z7- (also has line(casing) z14-, pathtext z10-, shield::shield z10-) +highway-trunk-bridge # line z7- (also has line::bridgeblack z13-, line::bridgewhite z13-, line(casing) z14-, pathtext z10-, shield::shield z10-) +highway-trunk-tunnel # line z7- (also has line(casing) z12-, pathtext z10-, shield::shield z10-) highway-world_level # line z4-9 highway-world_towns_level # line z6-9 === 250 -# highway-motorway # line(casing) z14- (also has line z6-, pathtext z10-, shield::shield z10-) -# highway-motorway-bridge # line(casing) z14- (also has line z6-, line::bridgeblack z13-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) -# highway-motorway-tunnel # line(casing) z12- (also has line z6-, pathtext z10-, shield::shield z10-) -# highway-trunk # line(casing) z14- (also has line z6-, pathtext z10-, shield::shield z10-) -# highway-trunk-bridge # line(casing) z14- (also has line z6-, line::bridgeblack z13-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) -# highway-trunk-tunnel # line(casing) z12- (also has line z6-, pathtext z10-, shield::shield z10-) +# highway-motorway # line(casing) z14- (also has line z7-, pathtext z10-, shield::shield z10-) +# highway-motorway-bridge # line(casing) z14- (also has line z7-, line::bridgeblack z13-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) +# highway-motorway-tunnel # line(casing) z12- (also has line z7-, pathtext z10-, shield::shield z10-) +# highway-trunk # line(casing) z14- (also has line z7-, pathtext z10-, shield::shield z10-) +# highway-trunk-bridge # line(casing) z14- (also has line z7-, line::bridgeblack z13-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-) +# highway-trunk-tunnel # line(casing) z12- (also has line z7-, pathtext z10-, shield::shield z10-) # === 249 highway-footway-crossing # line z18- @@ -277,7 +277,7 @@ railway-preserved-bridge # line z16- (also has line:: railway-preserved-tunnel # line z16- === 120 -highway-motorway-bridge::bridgewhite # line::bridgewhite z13- (also has line z6-, line::bridgeblack z13-, line(casing) z14-, pathtext z10-, shield::shield z10-) +highway-motorway-bridge::bridgewhite # line::bridgewhite z13- (also has line z7-, line::bridgeblack z13-, line(casing) z14-, pathtext z10-, shield::shield z10-) highway-motorway_link-bridge::bridgewhite # line::bridgewhite z14- (also has line z10-, line::bridgeblack z14-, line(casing) z14-, pathtext z10-, shield::shield z10-) highway-primary-bridge::bridgewhite # line::bridgewhite z14- (also has line z8-, line::bridgeblack z14-, line(casing) z14-, pathtext z10-, shield::shield z10-) highway-primary_link-bridge::bridgewhite # line::bridgewhite z14- (also has line z11-, line::bridgeblack z14-, line(casing) z14-, pathtext z11-, shield::shield z11-) @@ -286,7 +286,7 @@ highway-secondary-bridge::bridgewhite # line::bridgewhite z14- (al highway-secondary_link-bridge::bridgewhite # line::bridgewhite z14- (also has line z13-, line::bridgeblack z14-, line(casing) z14-, pathtext z16-) highway-tertiary-bridge::bridgewhite # line::bridgewhite z14- (also has line z11-, line::bridgeblack z14-, line(casing) z15-, pathtext z12-, shield::shield z13-) highway-tertiary_link-bridge::bridgewhite # line::bridgewhite z14- (also has line z14-, line::bridgeblack z14-, line(casing) z15-, pathtext z18-) -highway-trunk-bridge::bridgewhite # line::bridgewhite z13- (also has line z6-, line::bridgeblack z13-, line(casing) z14-, pathtext z10-, shield::shield z10-) +highway-trunk-bridge::bridgewhite # line::bridgewhite z13- (also has line z7-, line::bridgeblack z13-, line(casing) z14-, pathtext z10-, shield::shield z10-) highway-trunk_link-bridge::bridgewhite # line::bridgewhite z14- (also has line z10-, line::bridgeblack z14-, line(casing) z14-, pathtext z10-, shield::shield z10-) highway-unclassified-bridge::bridgewhite # line::bridgewhite z14- (also has line z11-, line::bridgeblack z14-, pathtext z14-) railway-abandoned-bridge::bridgewhite # line::bridgewhite z16- (also has line z16-, line::bridgeblack z16-) @@ -302,7 +302,7 @@ railway-rail-utility-bridge::bridgewhite # line::bridgewhite z14- (al railway-subway-bridge::bridgewhite # line::bridgewhite z14- (also has line z13-, line::bridgeblack z16-, line::dash z16-) === 110 -highway-motorway-bridge::bridgeblack # line::bridgeblack z13- (also has line z6-, line::bridgewhite z13-, line(casing) z14-, pathtext z10-, shield::shield z10-) +highway-motorway-bridge::bridgeblack # line::bridgeblack z13- (also has line z7-, line::bridgewhite z13-, line(casing) z14-, pathtext z10-, shield::shield z10-) highway-motorway_link-bridge::bridgeblack # line::bridgeblack z14- (also has line z10-, line::bridgewhite z14-, line(casing) z14-, pathtext z10-, shield::shield z10-) highway-primary-bridge::bridgeblack # line::bridgeblack z14- (also has line z8-, line::bridgewhite z14-, line(casing) z14-, pathtext z10-, shield::shield z10-) highway-primary_link-bridge::bridgeblack # line::bridgeblack z14- (also has line z11-, line::bridgewhite z14-, line(casing) z14-, pathtext z11-, shield::shield z11-) @@ -311,7 +311,7 @@ highway-secondary-bridge::bridgeblack # line::bridgeblack z14- (al highway-secondary_link-bridge::bridgeblack # line::bridgeblack z14- (also has line z13-, line::bridgewhite z14-, line(casing) z14-, pathtext z16-) highway-tertiary-bridge::bridgeblack # line::bridgeblack z14- (also has line z11-, line::bridgewhite z14-, line(casing) z15-, pathtext z12-, shield::shield z13-) highway-tertiary_link-bridge::bridgeblack # line::bridgeblack z14- (also has line z14-, line::bridgewhite z14-, line(casing) z15-, pathtext z18-) -highway-trunk-bridge::bridgeblack # line::bridgeblack z13- (also has line z6-, line::bridgewhite z13-, line(casing) z14-, pathtext z10-, shield::shield z10-) +highway-trunk-bridge::bridgeblack # line::bridgeblack z13- (also has line z7-, line::bridgewhite z13-, line(casing) z14-, pathtext z10-, shield::shield z10-) highway-trunk_link-bridge::bridgeblack # line::bridgeblack z14- (also has line z10-, line::bridgewhite z14-, line(casing) z14-, pathtext z10-, shield::shield z10-) highway-unclassified-bridge::bridgeblack # line::bridgeblack z14- (also has line z11-, line::bridgewhite z14-, pathtext z14-) railway-abandoned-bridge::bridgeblack # line::bridgeblack z16- (also has line z16-, line::bridgewhite z16-) diff --git a/data/styles/vehicle/include/priorities_4_overlays.prio.txt b/data/styles/vehicle/include/priorities_4_overlays.prio.txt index c80e64ee68..0df19c9aa1 100644 --- a/data/styles/vehicle/include/priorities_4_overlays.prio.txt +++ b/data/styles/vehicle/include/priorities_4_overlays.prio.txt @@ -16,20 +16,20 @@ highway-speed_camera # icon z13- === 4400 -highway-motorway::shield # shield::shield z10- (also has pathtext z10-, line z6-, line(casing) z14-) -highway-motorway-bridge::shield # shield::shield z10- (also has pathtext z10-, line z6-, line::bridgeblack z13-, line::bridgewhite z13-, line(casing) z14-) -highway-motorway-tunnel::shield # shield::shield z10- (also has pathtext z10-, line z6-, line(casing) z12-) -highway-trunk::shield # shield::shield z10- (also has pathtext z10-, line z6-, line(casing) z14-) -highway-trunk-bridge::shield # shield::shield z10- (also has pathtext z10-, line z6-, line::bridgeblack z13-, line::bridgewhite z13-, line(casing) z14-) -highway-trunk-tunnel::shield # shield::shield z10- (also has pathtext z10-, line z6-, line(casing) z12-) +highway-motorway::shield # shield::shield z10- (also has pathtext z10-, line z7-, line(casing) z14-) +highway-motorway-bridge::shield # shield::shield z10- (also has pathtext z10-, line z7-, line::bridgeblack z13-, line::bridgewhite z13-, line(casing) z14-) +highway-motorway-tunnel::shield # shield::shield z10- (also has pathtext z10-, line z7-, line(casing) z12-) +highway-trunk::shield # shield::shield z10- (also has pathtext z10-, line z7-, line(casing) z14-) +highway-trunk-bridge::shield # shield::shield z10- (also has pathtext z10-, line z7-, line::bridgeblack z13-, line::bridgewhite z13-, line(casing) z14-) +highway-trunk-tunnel::shield # shield::shield z10- (also has pathtext z10-, line z7-, line(casing) z12-) === 4360 -highway-motorway # pathtext z10- (also has shield::shield z10-, line z6-, line(casing) z14-) -highway-motorway-bridge # pathtext z10- (also has shield::shield z10-, line z6-, line::bridgeblack z13-, line::bridgewhite z13-, line(casing) z14-) -highway-motorway-tunnel # pathtext z10- (also has shield::shield z10-, line z6-, line(casing) z12-) -highway-trunk # pathtext z10- (also has shield::shield z10-, line z6-, line(casing) z14-) -highway-trunk-bridge # pathtext z10- (also has shield::shield z10-, line z6-, line::bridgeblack z13-, line::bridgewhite z13-, line(casing) z14-) -highway-trunk-tunnel # pathtext z10- (also has shield::shield z10-, line z6-, line(casing) z12-) +highway-motorway # pathtext z10- (also has shield::shield z10-, line z7-, line(casing) z14-) +highway-motorway-bridge # pathtext z10- (also has shield::shield z10-, line z7-, line::bridgeblack z13-, line::bridgewhite z13-, line(casing) z14-) +highway-motorway-tunnel # pathtext z10- (also has shield::shield z10-, line z7-, line(casing) z12-) +highway-trunk # pathtext z10- (also has shield::shield z10-, line z7-, line(casing) z14-) +highway-trunk-bridge # pathtext z10- (also has shield::shield z10-, line z7-, line::bridgeblack z13-, line::bridgewhite z13-, line(casing) z14-) +highway-trunk-tunnel # pathtext z10- (also has shield::shield z10-, line z7-, line(casing) z12-) === 4350 highway-primary # pathtext z10- (also has shield::shield z10-, line z8-, line(casing) z14-) diff --git a/data/visibility.txt b/data/visibility.txt index 91ceadf5c6..16e9bdb8e3 100644 --- a/data/visibility.txt +++ b/data/visibility.txt @@ -426,9 +426,9 @@ world 000000000000000000000 + bridge 000000000000111111111 - tunnel 000000000000111111111 - {} - motorway 000000111111111111111 + - bridge 000000111111111111111 - - tunnel 000000111111111111111 - + motorway 000000011111111111111 + + bridge 000000011111111111111 - + tunnel 000000011111111111111 - {} motorway_junction 000000000000000111111 - motorway_link 000000000011111111111 + @@ -503,9 +503,9 @@ world 000000000000000000000 + tunnel 000000000000000000000 - {} traffic_signals 000000000000000000000 - - trunk 000000111111111111111 + - bridge 000000111111111111111 - - tunnel 000000111111111111111 - + trunk 000000011111111111111 + + bridge 000000011111111111111 - + tunnel 000000011111111111111 - {} trunk_link 000000000011111111111 + bridge 000000000011111111111 - diff --git a/docs/INSTALL.md b/docs/INSTALL.md index d67a15cce6..868a1ae36f 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -5,6 +5,7 @@ - [Desktop](#desktop-app) - [Android](#android-app) - [iOS](#ios-app) +- [Map data and styles](#map-data-and-styles) ## System requirements @@ -664,3 +665,6 @@ Select "OMaps" product scheme. - Choose either "iPhone _" or "iPad _" to run in the Simulator. Compile and run the project ("Product" → "Run"). + +## Map data and styles +See readme for the [map generator](https://github.com/organicmaps/organicmaps/blob/master/docs/MAPS.md) and [styles](https://github.com/organicmaps/organicmaps/blob/master/docs/STYLES.md) if you need to customize the map files and styles diff --git a/docs/TRANSLATIONS.md b/docs/TRANSLATIONS.md index 99daf084d8..0bcb6fa42c 100644 --- a/docs/TRANSLATIONS.md +++ b/docs/TRANSLATIONS.md @@ -1,14 +1,5 @@ # Translations -## Help us to review/proofread translations - -You can join our [GitHub translation teams](https://github.com/orgs/organicmaps/teams/translations/teams), -so any contributor can tag all teams (or a specific language team) to get help with the review. - -Please respond in the relevant [GitHub discussion](https://github.com/orgs/organicmaps/discussions/8538), or let us know at hello@organicmaps.app - -## Contribute translations directly - Adding and updating translations is easy! 1. Change the translation file you want, e.g. [strings.txt](../data/strings/strings.txt) ([raw text version](https://raw.githubusercontent.com/organicmaps/organicmaps/master/data/strings/strings.txt)) 2. Commit your changes diff --git a/drape/CMakeLists.txt b/drape/CMakeLists.txt index d21ba6a090..1ccbb923a1 100644 --- a/drape/CMakeLists.txt +++ b/drape/CMakeLists.txt @@ -9,6 +9,8 @@ set(SRC batcher.hpp batcher_helpers.cpp batcher_helpers.hpp + bidi.cpp + bidi.hpp binding_info.cpp binding_info.hpp buffer_base.cpp diff --git a/drape/bidi.cpp b/drape/bidi.cpp new file mode 100644 index 0000000000..1af23c3242 --- /dev/null +++ b/drape/bidi.cpp @@ -0,0 +1,105 @@ +#include "drape/bidi.hpp" + +#include "base/logging.hpp" +#include "base/scope_guard.hpp" + +// ICU includes. +#include +#include +#include + +namespace bidi +{ + +using StringT = strings::UniString; + +StringT log2vis(StringT const & str) +{ + uint32_t const usize = static_cast(str.size()); + + buffer_vector ustr(usize); + bool isAscii = true; + bool hasExtendedChars = false; + for (uint32_t i = 0; i < usize; ++i) + { + auto const c = str[i]; + if (c >= 0x80) + isAscii = false; + + // As an example of extended chars: https://www.openstreetmap.org/node/5680098021 + if (c > 0xFFFF) + { + hasExtendedChars = true; + ustr[i] = ' '; + } + else + ustr[i] = c; + } + if (isAscii) + return str; + + // Remove non-drawable chars if any, or drape will not draw a string otherwise. + StringT out; + auto const ResultString = [&str, &out, hasExtendedChars]() -> StringT const & + { + if (hasExtendedChars) + { + out = str; + out.erase_if([](strings::UniChar c) { return c > 0xFFFF; }); + return out; + } + else + return str; + }; + + UBiDi * bidi = ubidi_open(); + SCOPE_GUARD(closeBidi, [bidi]() { ubidi_close(bidi); }); + + UErrorCode errorCode = U_ZERO_ERROR; + + ubidi_setPara(bidi, ustr.data(), usize, UBIDI_DEFAULT_LTR, nullptr, &errorCode); + + UBiDiDirection const direction = ubidi_getDirection(bidi); + if (direction == UBIDI_LTR || direction == UBIDI_NEUTRAL) + return ResultString(); + + int32_t const buffSize = usize * 2; + buffer_vector buff(buffSize); + + auto actualSize = u_shapeArabic(ustr.data(), usize, buff.data(), buffSize, + U_SHAPE_LETTERS_SHAPE_TASHKEEL_ISOLATED, &errorCode); + if (errorCode != U_ZERO_ERROR) + { + LOG(LWARNING, ("u_shapeArabic failed, icu error:", errorCode)); + return ResultString(); + } + ASSERT(actualSize >= 0 && actualSize < buffSize && buff[actualSize] == 0, (actualSize, buffSize)); + + icu::UnicodeString shaped(buff.data(), actualSize); + ubidi_setPara(bidi, shaped.getTerminatedBuffer(), shaped.length(), direction, nullptr, &errorCode); + + actualSize = ubidi_writeReordered(bidi, buff.data(), buffSize, 0, &errorCode); + if (errorCode != U_ZERO_ERROR) + { + LOG(LWARNING, ("ubidi_writeReordered failed, icu error:", errorCode)); + return ResultString(); + } + ASSERT_EQUAL(actualSize >= 0 && actualSize < buffSize && buff[actualSize], 0, (actualSize, buffSize)); + + out.assign(buff.data(), buff.data() + actualSize); + return out; +} + +StringT log2vis(std::string_view utf8) +{ + auto uni = strings::MakeUniString(utf8); + if (utf8.size() == uni.size()) + { + // obvious ASCII + return uni; + } + else + return log2vis(uni); +} + +} // namespace bidi diff --git a/drape/bidi.hpp b/drape/bidi.hpp new file mode 100644 index 0000000000..4080bf7c46 --- /dev/null +++ b/drape/bidi.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include "base/string_utils.hpp" + +namespace bidi +{ + +strings::UniString log2vis(strings::UniString const & str); +strings::UniString log2vis(std::string_view utf8); + +} // namespace bidi diff --git a/drape/drape_tests/CMakeLists.txt b/drape/drape_tests/CMakeLists.txt index 568eacbb6f..268c0b9de2 100644 --- a/drape/drape_tests/CMakeLists.txt +++ b/drape/drape_tests/CMakeLists.txt @@ -3,6 +3,7 @@ project(drape_tests) set(SRC attribute_provides_tests.cpp batcher_tests.cpp + bidi_tests.cpp bingind_info_tests.cpp buffer_tests.cpp dummy_texture.hpp diff --git a/drape/drape_tests/bidi_tests.cpp b/drape/drape_tests/bidi_tests.cpp new file mode 100644 index 0000000000..7f78b355e7 --- /dev/null +++ b/drape/drape_tests/bidi_tests.cpp @@ -0,0 +1,46 @@ +#include "testing/testing.hpp" + +#include "drape/bidi.hpp" + +#include + + +UNIT_TEST(Bidi_Smoke) +{ + std::string base = "\u0686\u0631\u0645\u0647\u064A\u0646"; + strings::UniString in = strings::MakeUniString(base); + strings::UniString out1 = bidi::log2vis(in); + std::string out = "\uFEE6\uFEF4\uFEEC\uFEE3\uFEAE\uFB7C"; + strings::UniString out2 = strings::MakeUniString(out); + TEST_EQUAL(out1, out2, ()); +} + +UNIT_TEST(Bidi_Combine) +{ + { + // https://www.w3.org/TR/alreq/#h_ligatures + strings::UniChar arr[] = { 0x644, 0x627 }; + strings::UniString s(arr, arr + ARRAY_SIZE(arr)); + + TEST_EQUAL(bidi::log2vis(s).size(), 1, ()); + } +} + +UNIT_TEST(Bidi_Print) +{ + auto const PrintTransform = [](std::string const & utf8) + { + auto const s = strings::MakeUniString(utf8); + for (auto const ucp : s) + std::cout << std::hex << static_cast(ucp) << ", "; + + std::cout << std::endl; + for (auto const ucp : bidi::log2vis(s)) + std::cout << std::hex << static_cast(ucp) << ", "; + + std::cout << std::endl; + }; + + PrintTransform("گُلهاالحلّة"); + PrintTransform("ക്ക"); +} diff --git a/drape/drape_tests/font_texture_tests.cpp b/drape/drape_tests/font_texture_tests.cpp index 54dc2de478..5382406d8d 100644 --- a/drape/drape_tests/font_texture_tests.cpp +++ b/drape/drape_tests/font_texture_tests.cpp @@ -1,4 +1,3 @@ -/* This test crashes with ASSERT_NOT_EQUAL(CurrentApiVersion, dp::ApiVersion::Invalid, ()); in gl_functions.cpp #include "drape/drape_tests/dummy_texture.hpp" #include "drape/drape_tests/gl_mock_functions.hpp" #include "drape/drape_tests/img.hpp" @@ -95,7 +94,7 @@ UNIT_TEST(UploadingGlyphs) uint32_t constexpr kTextureSize = 1024; GlyphManager mng(args); DummyGlyphIndex index(m2::PointU(kTextureSize, kTextureSize), make_ref(&mng)); - size_t count = 1; // invalid symbol glyph has been mapped internally. + size_t count = 1; // invalid symbol glyph has mapped internally. count += (index.MapResource(GlyphKey(0x58)) != nullptr) ? 1 : 0; count += (index.MapResource(GlyphKey(0x59)) != nullptr) ? 1 : 0; count += (index.MapResource(GlyphKey(0x61)) != nullptr) ? 1 : 0; @@ -131,4 +130,3 @@ UNIT_TEST(UploadingGlyphs) RunTestLoop("UploadingGlyphs", std::bind(&UploadedRender::Render, &r, _1)); DrapeRoutine::Shutdown(); } -*/ \ No newline at end of file diff --git a/drape/drape_tests/glyph_mng_tests.cpp b/drape/drape_tests/glyph_mng_tests.cpp index 5101eee776..3844fd1be5 100644 --- a/drape/drape_tests/glyph_mng_tests.cpp +++ b/drape/drape_tests/glyph_mng_tests.cpp @@ -2,6 +2,7 @@ #include "drape/drape_tests/img.hpp" +#include "drape/bidi.hpp" #include "drape/font_constants.hpp" #include "drape/glyph_manager.hpp" #include "drape/harfbuzz_shaping.hpp" @@ -26,6 +27,7 @@ namespace glyph_mng_tests class GlyphRenderer { FT_Library m_freetypeLibrary; + strings::UniString m_bidiToDraw; std::string m_utf8; int m_fontPixelSize; char const * m_lang; @@ -56,6 +58,7 @@ public: void SetString(std::string const & s, int fontPixelSize, char const * lang) { + m_bidiToDraw = bidi::log2vis(strings::MakeUniString(s)); m_utf8 = s; m_fontPixelSize = fontPixelSize; m_lang = lang; @@ -77,7 +80,7 @@ public: return 255.f * alpha; } - void RenderGlyphs(QPaintDevice * device) const + void RenderGlyphs(QPaintDevice * device) { QPainter painter(device); painter.fillRect(QRectF(0.0, 0.0, device->width(), device->height()), Qt::white); @@ -87,14 +90,12 @@ public: std::cout << "Total width: " << shapedText.m_lineWidthInPixels << '\n'; std::cout << "Max height: " << shapedText.m_maxLineHeightInPixels << '\n'; - int constexpr kLineStartX = 10; - int constexpr kLineMarginY = 50; - QPoint pen(kLineStartX, kLineMarginY); + QPoint pen(10, 50); for (auto const & glyph : shapedText.m_glyphs) { constexpr bool kUseSdfBitmap = false; - dp::GlyphImage img = m_mng->GetGlyphImage(glyph.m_key, m_fontPixelSize, kUseSdfBitmap); + dp::GlyphImage img = m_mng->GetGlyphImage(glyph.m_font, glyph.m_glyphId, m_fontPixelSize, kUseSdfBitmap); auto const w = img.m_width; auto const h = img.m_height; @@ -103,35 +104,10 @@ public: { QPoint currentPen = pen; currentPen.rx() += glyph.m_xOffset; - // Image is drawn at the top left origin, text metrics returns bottom left origin. - currentPen.ry() -= glyph.m_yOffset + h; + currentPen.ry() -= glyph.m_yOffset; painter.drawImage(currentPen, CreateImage(w, h, img.m_data->data()), QRect(0, 0, w, h)); } - pen += QPoint(glyph.m_xAdvance, glyph.m_yAdvance /* 0 for horizontal texts */); - - img.Destroy(); - } - - pen.rx() = kLineStartX; - pen.ry() += kLineMarginY; - - for (auto const & glyph : shapedText.m_glyphs) - { - constexpr bool kUseSdfBitmap = true; - auto img = m_mng->GetGlyphImage(glyph.m_key, m_fontPixelSize, kUseSdfBitmap); - - auto const w = img.m_width; - auto const h = img.m_height; - // Spaces do not have images. - if (w && h) - { - QPoint currentPen = pen; - currentPen.rx() += glyph.m_xOffset; - currentPen.ry() -= glyph.m_yOffset + h; - painter.drawImage(currentPen, CreateImage(w, h, img.m_data->data()), - QRect(dp::kSdfBorder, dp::kSdfBorder, w - 2 * dp::kSdfBorder, h - 2 * dp::kSdfBorder)); - } - pen += QPoint(glyph.m_xAdvance, glyph.m_yAdvance /* 0 for horizontal texts */); + pen += QPoint(glyph.m_xAdvance, 0); img.Destroy(); } @@ -139,8 +115,7 @@ public: //////////////////////////////////////////////////////////////////////////// // Manual rendering using HB functions. { - pen.rx() = kLineStartX; - pen.ry() += kLineMarginY; + QPoint hbPen(10, 100); auto const hbLanguage = hb_language_from_string(m_lang, -1); @@ -227,12 +202,12 @@ public: // Empty images are possible for space characters. if (width != 0 && height != 0) { - QPoint currentPen = pen; + QPoint currentPen = hbPen; currentPen.rx() += x_offset; currentPen.ry() -= y_offset; painter.drawImage(currentPen, CreateImage(width, height, buffer), QRect(kSdfSpread, kSdfSpread, width - 2*kSdfSpread, height - 2*kSdfSpread)); } - pen += QPoint(x_advance, y_advance); + hbPen += QPoint(x_advance, y_advance); } // Tidy up. @@ -245,9 +220,7 @@ public: ////////////////////////////////////////////////////////////////// // QT text renderer. { - pen.rx() = kLineStartX; - pen.ry() += kLineMarginY; - + QPoint pen(10, 150); //QFont font("Noto Naskh Arabic"); QFont font("Roboto"); font.setPixelSize(m_fontPixelSize); @@ -256,6 +229,26 @@ public: painter.drawText(pen, QString::fromUtf8(m_utf8.c_str(), m_utf8.size())); } + ////////////////////////////////////////////////////////////////// + // Old drape renderer. + pen = QPoint(10, 200); + for (auto c : m_bidiToDraw) + { + auto g = m_mng->GetGlyph(c); + + if (g.m_image.m_data) + { + uint8_t * d = SharedBufferManager::GetRawPointer(g.m_image.m_data); + QPoint currentPen = pen; + currentPen.rx() += g.m_metrics.m_xOffset; + currentPen.ry() -= g.m_metrics.m_yOffset; + painter.drawImage(currentPen, CreateImage(g.m_image.m_width, g.m_image.m_height, d), + QRect(dp::kSdfBorder, dp::kSdfBorder, g.m_image.m_width - 2 * dp::kSdfBorder, g.m_image.m_height - 2 * dp::kSdfBorder)); + } + pen += QPoint(g.m_metrics.m_xAdvance, g.m_metrics.m_yAdvance); + + g.m_image.Destroy(); + } } private: @@ -272,7 +265,7 @@ UNIT_TEST(GlyphLoadingTest) constexpr int fontSize = 27; - renderer.SetString("Строка", fontSize, "ru"); + renderer.SetString("Тестовая строка", fontSize, "ru"); RunTestLoop("ru", std::bind(&GlyphRenderer::RenderGlyphs, &renderer, _1)); renderer.SetString("ØŒÆ", fontSize, "en"); diff --git a/drape/dynamic_texture.hpp b/drape/dynamic_texture.hpp index fa05e2400d..e19dd00c83 100644 --- a/drape/dynamic_texture.hpp +++ b/drape/dynamic_texture.hpp @@ -26,24 +26,26 @@ public: return m_indexer->MapResource(static_cast(key), newResource); } - void Create(ref_ptr context, Params const & params) override + void Create(ref_ptr context, Params const & params) override { ASSERT(Base::IsPowerOfTwo(params.m_width, params.m_height), (params.m_width, params.m_height)); Base::Create(context, params); } - void Create(ref_ptr context, Params const & params, ref_ptr data) override + void Create(ref_ptr context, Params const & params, + ref_ptr data) override { ASSERT(Base::IsPowerOfTwo(params.m_width, params.m_height), (params.m_width, params.m_height)); Base::Create(context, params, data); } - void UpdateState(ref_ptr context) override + void UpdateState(ref_ptr context) override { // Create texture before first uploading. if (!m_isInitialized) { - std::vector initData(m_params.m_width * m_params.m_height * GetBytesPerPixel(m_params.m_format), 0); + std::vector initData(m_params.m_width * m_params.m_height * + GetBytesPerPixel(m_params.m_format), 0); Create(context, m_params, initData.data()); m_isInitialized = true; } diff --git a/drape/font_texture.cpp b/drape/font_texture.cpp index 71159dc41a..36bf795634 100644 --- a/drape/font_texture.cpp +++ b/drape/font_texture.cpp @@ -87,17 +87,25 @@ GlyphIndex::GlyphIndex(m2::PointU const & size, ref_ptr mng) , m_mng(mng) { ASSERT(m_mng != nullptr, ()); + + // Cache predefined glyphs. + bool newResource; + (void)MapResource(GlyphKey{0}, newResource); + constexpr strings::UniChar kFirstAsciiChar {32}; + constexpr strings::UniChar kLastAsciiChar {126}; + for (strings::UniChar ascii = kFirstAsciiChar; ascii < kLastAsciiChar; ++ascii) + (void)MapResource(GlyphKey{ascii}, newResource); } GlyphIndex::~GlyphIndex() { std::lock_guard lock(m_mutex); - for (auto & [rect, glyph] : m_pendingNodes) - glyph.m_image.Destroy(); + for (auto & node : m_pendingNodes) + node.second.m_image.Destroy(); m_pendingNodes.clear(); } -std::vector> GlyphIndex::MapResources(TGlyphs const & keys, +std::vector> GlyphIndex::MapResources(std::vector const & keys, bool & hasNewResources) { std::vector> info; @@ -115,44 +123,44 @@ std::vector> GlyphIndex::MapResources(TGlyphs con return info; } -ref_ptr GlyphIndex::MapResource(GlyphFontAndId const & key, bool & newResource) +ref_ptr GlyphIndex::MapResource(GlyphKey const & key, bool & newResource) { newResource = false; - if (auto const found = m_index.find(key); found != m_index.end()) - return make_ref(&found->second); + auto it = m_index.find(key); + if (it != m_index.end()) + return make_ref(&it->second); newResource = true; - constexpr bool kUseSdf = true; - GlyphImage glyphImage = m_mng->GetGlyphImage(key, dp::kBaseFontSizePixels, kUseSdf); + Glyph glyph = m_mng->GetGlyph(key.GetUnicodePoint()); m2::RectU r; - if (!m_packer.PackGlyph(glyphImage.m_width, glyphImage.m_height, r)) + if (!m_packer.PackGlyph(glyph.m_image.m_width, glyph.m_image.m_height, r)) { - glyphImage.Destroy(); - - LOG(LWARNING, ("Glyphs packer could not pack a glyph with fontIndex =", key.m_fontIndex, - "glyphId =", key.m_glyphId, "w =", glyphImage.m_width, "h =", glyphImage.m_height, - "packerSize =", m_packer.GetSize())); - - // TODO(AB): Is it a valid invalid glyph? - GlyphFontAndId constexpr kInvalidGlyphKey{0, 0}; - if (auto const found = m_index.find(kInvalidGlyphKey); found != m_index.end()) + glyph.m_image.Destroy(); + if (glyph.m_metrics.m_isValid) { - newResource = false; - return make_ref(&found->second); + LOG(LWARNING, ("Glyphs packer could not pack a glyph", key.GetUnicodePoint(), + "w =", glyph.m_image.m_width, "h =", glyph.m_image.m_height, + "packerSize =", m_packer.GetSize())); } - LOG(LERROR, ("Invalid glyph was not found in the index")); + auto const & invalidGlyph = m_mng->GetInvalidGlyph(); + auto invalidGlyphIndex = m_index.find(GlyphKey(invalidGlyph.m_code)); + if (invalidGlyphIndex != m_index.end()) + { + newResource = false; + return make_ref(&invalidGlyphIndex->second); + } return nullptr; } - auto res = m_index.emplace(key, GlyphInfo{m_packer.MapTextureCoords(r)}); + auto res = m_index.emplace(key, GlyphInfo(m_packer.MapTextureCoords(r), glyph.m_metrics)); ASSERT(res.second, ()); { std::lock_guard lock(m_mutex); - m_pendingNodes.emplace_back(r, Glyph{std::move(glyphImage), key}); + m_pendingNodes.emplace_back(r, std::move(glyph)); } return make_ref(&res.first->second); @@ -189,13 +197,12 @@ void GlyphIndex::UploadResources(ref_ptr context, ref_ptrMarkGlyphReady(it->second.m_key); + m_mng->MarkGlyphReady(it->second); - if (it->second.m_image.m_data) - ++it; - else + if (!it->second.m_image.m_data) it = pendingNodes.erase(it); + else + ++it; } if (pendingNodes.empty()) @@ -203,11 +210,15 @@ void GlyphIndex::UploadResources(ref_ptr context, ref_ptrUploadData(context, zeroPoint.x, zeroPoint.y, rect.SizeX(), rect.SizeY(), make_ref(srcMemory)); diff --git a/drape/font_texture.hpp b/drape/font_texture.hpp index ac25ad0948..c512bdc30c 100644 --- a/drape/font_texture.hpp +++ b/drape/font_texture.hpp @@ -6,7 +6,6 @@ #include #include -#include // std::tie #include namespace dp @@ -29,21 +28,39 @@ private: bool m_isFull = false; }; -class GlyphKey : public GlyphFontAndId, public Texture::Key +class GlyphKey : public Texture::Key { public: - Texture::ResourceType GetType() const override { return Texture::ResourceType::Glyph; } -}; - -// TODO(AB): Make Texture::ResourceInfo non-abstract and use it here directly. -class GlyphInfo : public Texture::ResourceInfo -{ -public: - explicit GlyphInfo(m2::RectF const & texRect) - : ResourceInfo(texRect) + explicit GlyphKey(strings::UniChar unicodePoint) + : m_unicodePoint(unicodePoint) {} Texture::ResourceType GetType() const override { return Texture::ResourceType::Glyph; } + strings::UniChar GetUnicodePoint() const { return m_unicodePoint; } + + bool operator<(GlyphKey const & g) const + { + return m_unicodePoint < g.m_unicodePoint; + } + +private: + strings::UniChar m_unicodePoint; +}; + +class GlyphInfo : public Texture::ResourceInfo +{ +public: + GlyphInfo(m2::RectF const & texRect, GlyphMetrics const & metrics) + : ResourceInfo(texRect) + , m_metrics(metrics) + {} + ~GlyphInfo() override = default; + + Texture::ResourceType GetType() const override { return Texture::ResourceType::Glyph; } + GlyphMetrics const & GetMetrics() const { return m_metrics; } + +private: + GlyphMetrics m_metrics; }; class GlyphIndex @@ -53,8 +70,8 @@ public: ~GlyphIndex(); // This function can return nullptr. - ref_ptr MapResource(GlyphFontAndId const & key, bool & newResource); - std::vector> MapResources(TGlyphs const & keys, bool & hasNewResources); + ref_ptr MapResource(GlyphKey const & key, bool & newResource); + std::vector> MapResources(std::vector const & keys, bool & hasNewResources); void UploadResources(ref_ptr context, ref_ptr texture); bool CanBeGlyphPacked(uint32_t glyphsCount) const; @@ -66,7 +83,7 @@ private: GlyphPacker m_packer; ref_ptr m_mng; - using ResourceMapping = std::map; + using ResourceMapping = std::map; using PendingNode = std::pair; using PendingNodes = std::vector; @@ -87,10 +104,10 @@ public: ~FontTexture() override { Reset(); } - ref_ptr MapResource(GlyphFontAndId const & key, bool & hasNewResources) const + std::vector> FindResources(std::vector const & keys, bool & hasNewResources) const { ASSERT(m_indexer != nullptr, ()); - return m_indexer->MapResource(key, hasNewResources); + return m_indexer->MapResources(keys, hasNewResources); } bool HasEnoughSpace(uint32_t newKeysCount) const override diff --git a/drape/glyph.hpp b/drape/glyph.hpp index 39d9b858b4..d94fa28b19 100644 --- a/drape/glyph.hpp +++ b/drape/glyph.hpp @@ -1,13 +1,20 @@ #pragma once #include "base/assert.hpp" -#include "base/buffer_vector.hpp" #include "base/shared_buffer_manager.hpp" - -#include // std::tie +#include "base/string_utils.hpp" namespace dp { +struct GlyphMetrics +{ + float m_xAdvance; + float m_yAdvance; + float m_xOffset; + float m_yOffset; + bool m_isValid; +}; + struct GlyphImage { ~GlyphImage() @@ -15,7 +22,6 @@ struct GlyphImage ASSERT_NOT_EQUAL(m_data.use_count(), 1, ("Probably you forgot to call Destroy()")); } - // TODO(AB): Get rid of manual call to Destroy. void Destroy() { if (m_data != nullptr) @@ -31,39 +37,12 @@ struct GlyphImage SharedBufferManager::shared_buffer_ptr_t m_data; }; -struct GlyphFontAndId -{ - int16_t m_fontIndex; - uint16_t m_glyphId; - - // Required only for buffer_vector's internal T m_static[N]; - GlyphFontAndId() = default; - - constexpr GlyphFontAndId(int16_t fontIndex, uint16_t glyphId) : m_fontIndex(fontIndex), m_glyphId(glyphId) {} - - bool operator==(GlyphFontAndId const & other) const - { - return m_fontIndex == other.m_fontIndex && m_glyphId == other.m_glyphId; - } - - bool operator<(GlyphFontAndId const & other) const - { - return std::tie(m_fontIndex, m_glyphId) < std::tie (other.m_fontIndex, other.m_glyphId); - } -}; - - -// 50 glyphs should fit most of the strings based on tests in Switzerland and China. -using TGlyphs = buffer_vector; - struct Glyph { - Glyph(GlyphImage && image, GlyphFontAndId key) - : m_image(image), m_key(key) - {} - + GlyphMetrics m_metrics; GlyphImage m_image; - GlyphFontAndId m_key; + int m_fontIndex; + strings::UniChar m_code; }; } // namespace dp diff --git a/drape/glyph_manager.cpp b/drape/glyph_manager.cpp index 0bf9ce8a6c..3614cf395d 100644 --- a/drape/glyph_manager.cpp +++ b/drape/glyph_manager.cpp @@ -18,16 +18,16 @@ #include #include + #include #include #include -#include #include #include FT_FREETYPE_H #include FT_MODULE_H #include FT_SYSTEM_H -#include FT_SIZES_H +#include FT_STROKER_H #include FT_TYPES_H #undef __FTERRORS_H__ @@ -136,10 +136,6 @@ public: FT_Error const err = FT_Open_Face(lib, &args, 0, &m_fontFace); if (err || !IsValid()) MYTHROW(InvalidFontException, (g_FT_Errors[err].m_code, g_FT_Errors[err].m_message)); - - // The same font size is used to render all glyphs to textures and to shape them. - FT_Set_Pixel_Sizes(m_fontFace, kBaseFontSizePixels, kBaseFontSizePixels); - FT_Activate_Size(m_fontFace->size); } ~Font() @@ -155,6 +151,40 @@ public: bool HasGlyph(strings::UniChar unicodePoint) const { return FT_Get_Char_Index(m_fontFace, unicodePoint) != 0; } + Glyph GetGlyph(strings::UniChar unicodePoint, uint32_t glyphHeight) const + { + FREETYPE_CHECK(FT_Set_Pixel_Sizes(m_fontFace, 0, glyphHeight)); + + // FT_LOAD_RENDER with FT_RENDER_MODE_SDF uses bsdf driver that is around 3x times faster + // than sdf driver, activated by FT_LOAD_DEFAULT + FT_RENDER_MODE_SDF + FREETYPE_CHECK(FT_Load_Glyph(m_fontFace, FT_Get_Char_Index(m_fontFace, unicodePoint), FT_LOAD_RENDER)); + FT_GlyphSlot const & glyph = m_fontFace->glyph; + FREETYPE_CHECK(FT_Render_Glyph(glyph, FT_RENDER_MODE_SDF)); + + FT_Bitmap const bitmap = glyph->bitmap; + + SharedBufferManager::shared_buffer_ptr_t data; + if (bitmap.buffer != nullptr) + { + data = SharedBufferManager::instance().reserveSharedBuffer(bitmap.rows * bitmap.pitch); + std::memcpy(data->data(), bitmap.buffer, data->size()); + } + + // Glyph image has SDF borders that should be taken into an account. + float const xAdvance = glyph->advance.x >> 6; + float const yAdvance = glyph->advance.y >> 6; + float const xOffset = glyph->metrics.horiBearingX >> 6; + // yOffset uses bottom left coordinate in calculations. + float const yOffset = (glyph->metrics.horiBearingY - glyph->metrics.height) >> 6; + + Glyph result { + .m_metrics = {xAdvance, yAdvance, xOffset, yOffset, true}, + .m_image = {bitmap.width, bitmap.rows, data}, + .m_code = unicodePoint, + }; + return result; + } + GlyphImage GetGlyphImage(uint16_t glyphId, int pixelHeight, bool sdf) const { FREETYPE_CHECK(FT_Set_Pixel_Sizes(m_fontFace, 0, pixelHeight)); @@ -207,23 +237,23 @@ public: static void Close(FT_Stream) {} - void MarkGlyphReady(uint16_t glyphId) + void MarkGlyphReady(strings::UniChar code) { - m_readyGlyphs.emplace(glyphId); + m_readyGlyphs.emplace(code); } - bool IsGlyphReady(uint16_t glyphId) const + bool IsGlyphReady(strings::UniChar code) const { - return m_readyGlyphs.find(glyphId) != m_readyGlyphs.end(); + return m_readyGlyphs.find(code) != m_readyGlyphs.end(); } std::string GetName() const { return std::string(m_fontFace->family_name) + ':' + m_fontFace->style_name; } - // This code is not thread safe. void Shape(hb_buffer_t * hbBuffer, int fontPixelSize, int fontIndex, text::TextMetrics & outMetrics) { + // TODO(AB): This code is not thread safe. + // TODO(AB): Do not set the same font size every time. - // TODO(AB): Use hb_font_set_scale to scale the same size font in HB instead of changing it in Freetype. FREETYPE_CHECK(FT_Set_Pixel_Sizes(m_fontFace, 0 /* pixel_width */, fontPixelSize /* pixel_height */)); if (!m_harfbuzzFont) m_harfbuzzFont = hb_ft_font_create(m_fontFace, nullptr); @@ -244,41 +274,29 @@ public: // TODO(AB): Check for missing glyph ID? auto const glyphId = static_cast(glyphInfo[i].codepoint); + // TODO(AB): Load each glyph only once for the given font size? Or is run cache more efficient? FT_Int32 constexpr flags = FT_LOAD_DEFAULT; FREETYPE_CHECK(FT_Load_Glyph(m_fontFace, glyphId, flags)); auto const & currPos = glyphPos[i]; + // TODO(AB): Use floats for subpixel precision? + hb_position_t const xOffset = (currPos.x_offset + static_cast(m_fontFace->glyph->metrics.horiBearingX)) >> 6; + hb_position_t const yOffset = (currPos.y_offset + static_cast(m_fontFace->glyph->metrics.horiBearingY)) >> 6; + hb_position_t const xAdvance = currPos.x_advance >> 6; + auto const height = static_cast(m_fontFace->glyph->metrics.height >> 6); - auto const & metrics = m_fontFace->glyph->metrics; - auto const xOffset = (currPos.x_offset + static_cast(metrics.horiBearingX)) >> 6; - // The original Drape code expects a bottom, not a top offset in its calculations. - auto const yOffset = (currPos.y_offset + static_cast(metrics.horiBearingY) - metrics.height) >> 6; - int32_t const xAdvance = currPos.x_advance >> 6; - // yAdvance is always zero for horizontal text layouts. - // This height gives 16 instead of expected 22-23. - // int32_t const height = metrics.height >> 6; - - outMetrics.AddGlyphMetrics(static_cast(fontIndex), glyphId, xOffset, yOffset, xAdvance, GetLineHeigthPixels()); + outMetrics.AddGlyphMetrics(static_cast(fontIndex), glyphId, xOffset, yOffset, xAdvance, height); } } - int32_t GetLineHeigthPixels() const - { - auto const vertAdvance = m_fontFace->glyph->metrics.vertAdvance; - auto const yMax = vertAdvance && vertAdvance < m_fontFace->bbox.yMax ? vertAdvance : m_fontFace->bbox.yMax; - int32_t const bboxYMax = FT_MulFix(yMax, m_fontFace->size->metrics.y_scale) >> 6; - int32_t const bboxYMmin = FT_MulFix(m_fontFace->bbox.yMin, m_fontFace->size->metrics.y_scale) >> 6; - return bboxYMax - bboxYMmin; - } - private: ReaderPtr m_fontReader; FT_StreamRec_ m_stream; FT_Face m_fontFace; - std::set m_readyGlyphs; + std::set m_readyGlyphs; - hb_font_t * m_harfbuzzFont {nullptr}; + hb_font_t* m_harfbuzzFont {nullptr}; }; // Information about single unicode block. @@ -334,31 +352,19 @@ struct GlyphManager::Impl { DISALLOW_COPY_AND_MOVE(Impl); - Impl() - { - m_harfbuzzBuffer = hb_buffer_create(); - } + Impl() = default; ~Impl() { m_fonts.clear(); if (m_library) FREETYPE_CHECK(FT_Done_FreeType(m_library)); - - hb_buffer_destroy(m_harfbuzzBuffer); } FT_Library m_library; TUniBlocks m_blocks; TUniBlockIter m_lastUsedBlock; std::vector> m_fonts; - - // Required to use std::string_view as a search key for std::unordered_map::find(). - struct StringHash : public std::hash { using is_transparent = void; }; - - // TODO(AB): Compare performance with std::map. - std::unordered_map> m_textMetricsCache; - hb_buffer_t * m_harfbuzzBuffer; }; // Destructor is defined where pimpl's destructor is already known. @@ -514,6 +520,8 @@ GlyphManager::GlyphManager(Params const & params) LOG_SHORT(LDEBUG, (b.m_name, "is in", params.m_fonts[ind])); } } + + } int GlyphManager::GetFontIndex(strings::UniChar unicodePoint) @@ -581,30 +589,63 @@ int GlyphManager::FindFontIndexInBlock(UnicodeBlock const & block, strings::UniC return kInvalidFont; } -void GlyphManager::MarkGlyphReady(GlyphFontAndId key) +Glyph GlyphManager::GetGlyph(strings::UniChar unicodePoint) { - ASSERT_GREATER_OR_EQUAL(key.m_fontIndex, 0, ()); - ASSERT_LESS(key.m_fontIndex, static_cast(m_impl->m_fonts.size()), ()); - m_impl->m_fonts[key.m_fontIndex]->MarkGlyphReady(key.m_glyphId); + int const fontIndex = GetFontIndex(unicodePoint); + if (fontIndex == kInvalidFont) + return GetInvalidGlyph(); + + auto const & f = m_impl->m_fonts[fontIndex]; + Glyph glyph = f->GetGlyph(unicodePoint, kBaseFontSizePixels); + glyph.m_fontIndex = fontIndex; + return glyph; } -bool GlyphManager::AreGlyphsReady(TGlyphs const & glyphs) const +void GlyphManager::MarkGlyphReady(Glyph const & glyph) { - for (auto [fontIndex, glyphId] : glyphs) - { - ASSERT_NOT_EQUAL(fontIndex, kInvalidFont, ()); + ASSERT_GREATER_OR_EQUAL(glyph.m_fontIndex, 0, ()); + ASSERT_LESS(glyph.m_fontIndex, static_cast(m_impl->m_fonts.size()), ()); + m_impl->m_fonts[glyph.m_fontIndex]->MarkGlyphReady(glyph.m_code); +} - if (!m_impl->m_fonts[fontIndex]->IsGlyphReady(glyphId)) +bool GlyphManager::AreGlyphsReady(strings::UniString const & str) const +{ + for (auto const & code : str) + { + int const fontIndex = GetFontIndexImmutable(code); + if (fontIndex == kInvalidFont) + return false; + + if (!m_impl->m_fonts[fontIndex]->IsGlyphReady(code)) return false; } return true; } -// TODO(AB): Check and support invalid glyphs. -GlyphImage GlyphManager::GetGlyphImage(GlyphFontAndId key, int pixelHeight, bool sdf) const +Glyph const & GlyphManager::GetInvalidGlyph() const { - return m_impl->m_fonts[key.m_fontIndex]->GetGlyphImage(key.m_glyphId, pixelHeight, sdf); + static bool s_inited = false; + static Glyph s_glyph; + + if (!s_inited) + { + strings::UniChar constexpr kInvalidGlyphCode = 0x9; + int constexpr kFontId = 0; + ASSERT(!m_impl->m_fonts.empty(), ()); + s_glyph = m_impl->m_fonts[kFontId]->GetGlyph(kInvalidGlyphCode, kBaseFontSizePixels); + s_glyph.m_metrics.m_isValid = false; + s_glyph.m_fontIndex = kFontId; + s_glyph.m_code = kInvalidGlyphCode; + s_inited = true; + } + + return s_glyph; +} + +GlyphImage GlyphManager::GetGlyphImage(int fontIndex, uint16_t glyphId, int pixelHeight, bool sdf) +{ + return m_impl->m_fonts[fontIndex]->GetGlyphImage(glyphId, pixelHeight, sdf); } namespace @@ -620,70 +661,48 @@ hb_language_t OrganicMapsLanguageToHarfbuzzLanguage(int8_t lang) } } // namespace -// This method is NOT multithreading-safe. text::TextMetrics GlyphManager::ShapeText(std::string_view utf8, int fontPixelHeight, int8_t lang) { -#ifdef DEBUG - static int const fontSize = fontPixelHeight; - ASSERT_EQUAL(fontSize, fontPixelHeight, - ("Cache relies on the same font height/metrics for each glyph", fontSize, fontPixelHeight)); -#endif - - // A simple cache greatly speeds up text metrics calculation. It has 80+% hit ratio in most scenarios. - if (auto const found = m_impl->m_textMetricsCache.find(utf8); found != m_impl->m_textMetricsCache.end()) - return found->second; - - const auto [text, segments] = harfbuzz_shaping::GetTextSegments(utf8); + auto const runs = harfbuzz_shaping::GetTextSegments(utf8); // TODO(AB): Optimize language conversion. hb_language_t const hbLanguage = OrganicMapsLanguageToHarfbuzzLanguage(lang); text::TextMetrics allGlyphs; - // TODO(AB): Check if it's slower or faster. - allGlyphs.m_glyphs.reserve(icu::UnicodeString{false, text.data(), static_cast(text.size())}.countChar32()); - for (auto const & substring : segments) + // TODO(AB): Cache runs. + // TODO(AB): Cache buffer. + hb_buffer_t *buf = hb_buffer_create(); + for (auto const & substring : runs.m_segments) { - hb_buffer_clear_contents(m_impl->m_harfbuzzBuffer); + hb_buffer_clear_contents(buf); // TODO(AB): Some substrings use different fonts. - hb_buffer_add_utf16(m_impl->m_harfbuzzBuffer, reinterpret_cast(text.data()), - static_cast(text.size()), substring.m_start, substring.m_length); - hb_buffer_set_direction(m_impl->m_harfbuzzBuffer, substring.m_direction); - hb_buffer_set_script(m_impl->m_harfbuzzBuffer, substring.m_script); - hb_buffer_set_language(m_impl->m_harfbuzzBuffer, hbLanguage); + // TODO(AB): Will surrogates work properly? Would it be safer to convert/use utf-32? + //std::u16string_view const sv{runs.text.data() + substring.m_start, static_cast(substring.m_length)}; + hb_buffer_add_utf16(buf, reinterpret_cast(runs.m_text.data()), static_cast(runs.m_text.size()), + substring.m_start, substring.m_length); + hb_buffer_set_direction(buf, substring.m_direction); + hb_buffer_set_script(buf, substring.m_script); + hb_buffer_set_language(buf, hbLanguage); - auto u32CharacterIter{text.begin() + substring.m_start}; - auto const end{u32CharacterIter + substring.m_length}; - do + // TODO(AB): Check not only the first character to determine font for the run, but all chars. + auto firstCharacterIter{runs.m_text.begin() + substring.m_start}; + auto const firstCharacterUnicode = utf8::unchecked::next16(firstCharacterIter); + + int const fontIndex = GetFontIndex(firstCharacterUnicode); + if (fontIndex < 0) { - auto const u32Character = utf8::unchecked::next16(u32CharacterIter); - // TODO(AB): Mapping characters to fonts can be optimized. - int const fontIndex = GetFontIndex(u32Character); - if (fontIndex < 0) - LOG(LWARNING, ("No font was found for character", NumToHex(u32Character))); - else - { - // TODO(AB): Mapping font only by the first character in a string may fail in theory in some cases. - m_impl->m_fonts[fontIndex]->Shape(m_impl->m_harfbuzzBuffer, fontPixelHeight, fontIndex, allGlyphs); - break; - } - } while (u32CharacterIter != end); - } + // TODO(AB): Add missing glyph character's metrics + LOG(LWARNING, ("Skip run because no font was found for character", NumToHex(firstCharacterUnicode))); + continue; + } - if (allGlyphs.m_glyphs.empty()) - LOG(LWARNING, ("No glyphs were found in all fonts for string", utf8)); - - // Empirically measured, may need more tuning. - size_t constexpr kMaxCacheSize = 50000; - if (m_impl->m_textMetricsCache.size() > kMaxCacheSize) - { - LOG(LINFO, ("Clearing text metrics cache")); - // TODO(AB): Is there a better way? E.g. clear a half of the cache? - m_impl->m_textMetricsCache.clear(); + m_impl->m_fonts[fontIndex]->Shape(buf, fontPixelHeight, fontIndex, allGlyphs); } - - m_impl->m_textMetricsCache.emplace(utf8, allGlyphs); + // Tidy up. + // TODO(AB): avoid recreating buffer each time. + hb_buffer_destroy(buf); return allGlyphs; } diff --git a/drape/glyph_manager.hpp b/drape/glyph_manager.hpp index 7b94373304..2ce6a5df05 100644 --- a/drape/glyph_manager.hpp +++ b/drape/glyph_manager.hpp @@ -1,9 +1,12 @@ #pragma once +#include "base/shared_buffer_manager.hpp" +#include "base/string_utils.hpp" + #include "drape/glyph.hpp" -#include "base/string_utils.hpp" - +#include +#include #include #include @@ -16,19 +19,13 @@ namespace text { struct GlyphMetrics { - GlyphFontAndId m_key; - + int16_t m_font; + uint16_t m_glyphId; // TODO(AB): Store original font units or floats? int32_t m_xOffset; int32_t m_yOffset; int32_t m_xAdvance; - // yAdvance is used only in vertical text layouts and is 0 for horizontal texts. - int32_t m_yAdvance {0}; - - bool operator==(GlyphMetrics const & other) const - { - return m_key == other.m_key; - } + // yAdvance is used only in vertical text layouts. }; // TODO(AB): Move to a separate file? @@ -40,12 +37,7 @@ struct TextMetrics void AddGlyphMetrics(int16_t font, uint16_t glyphId, int32_t xOffset, int32_t yOffset, int32_t xAdvance, int32_t height) { - m_glyphs.push_back({{font, glyphId}, xOffset, yOffset, xAdvance}); - - if (m_glyphs.size() == 1) - xAdvance -= xOffset; - // if (yOffset > 0) - // height += yOffset; // TODO(AB): Is it needed? Is it correct? + m_glyphs.push_back({font, glyphId, xOffset, yOffset, xAdvance}); m_lineWidthInPixels += xAdvance; m_maxLineHeightInPixels = std::max(m_maxLineHeightInPixels, height); } @@ -67,8 +59,12 @@ public: explicit GlyphManager(Params const & params); ~GlyphManager(); - void MarkGlyphReady(GlyphFontAndId key); - bool AreGlyphsReady(TGlyphs const & str) const; + Glyph GetGlyph(strings::UniChar unicodePoints); + + void MarkGlyphReady(Glyph const & glyph); + bool AreGlyphsReady(strings::UniString const & str) const; + + Glyph const & GetInvalidGlyph() const; int GetFontIndex(strings::UniChar unicodePoint); int GetFontIndex(std::u16string_view sv); @@ -76,7 +72,7 @@ public: text::TextMetrics ShapeText(std::string_view utf8, int fontPixelHeight, int8_t lang); text::TextMetrics ShapeText(std::string_view utf8, int fontPixelHeight, char const * lang); - GlyphImage GetGlyphImage(GlyphFontAndId key, int pixelHeight, bool sdf) const; + GlyphImage GetGlyphImage(int fontIndex, uint16_t glyphId, int pixelHeight, bool sdf); private: // Immutable version can be called from any thread and doesn't require internal synchronization. diff --git a/drape/texture.cpp b/drape/texture.cpp index c5e1618b66..16f2d1b88f 100644 --- a/drape/texture.cpp +++ b/drape/texture.cpp @@ -14,7 +14,8 @@ void Texture::Create(ref_ptr context, Params const & params m_hwTexture->Create(context, params); } -void Texture::Create(ref_ptr context, Params const & params, ref_ptr data) +void Texture::Create(ref_ptr context, Params const & params, + ref_ptr data) { if (AllocateTexture(context, params.m_allocator)) m_hwTexture->Create(context, params, data); diff --git a/drape/texture_manager.cpp b/drape/texture_manager.cpp index 06130e6e11..e54443a4c8 100644 --- a/drape/texture_manager.cpp +++ b/drape/texture_manager.cpp @@ -44,6 +44,18 @@ float constexpr kGlyphAreaCoverage = 0.9f; std::string const kSymbolTextures[] = { "symbols" }; uint32_t constexpr kDefaultSymbolsIndex = 0; +void MultilineTextToUniString(TextureManager::TMultilineText const & text, strings::UniString & outString) +{ + size_t cnt = 0; + for (strings::UniString const & str : text) + cnt += str.size(); + + outString.clear(); + outString.reserve(cnt); + for (strings::UniString const & str : text) + outString.append(str.begin(), str.end()); +} + template void ParseColorsList(std::string const & colorsFile, ToDo toDo) { @@ -154,15 +166,45 @@ m2::RectF const & TextureManager::BaseRegion::GetTexRect() const return m_info->GetTexRect(); } +float TextureManager::GlyphRegion::GetOffsetX() const +{ + ASSERT(m_info->GetType() == Texture::ResourceType::Glyph, ()); + return ref_ptr(m_info)->GetMetrics().m_xOffset; +} + +float TextureManager::GlyphRegion::GetOffsetY() const +{ + ASSERT(m_info->GetType() == Texture::ResourceType::Glyph, ()); + return ref_ptr(m_info)->GetMetrics().m_yOffset; +} + +float TextureManager::GlyphRegion::GetAdvanceX() const +{ + ASSERT(m_info->GetType() == Texture::ResourceType::Glyph, ()); + return ref_ptr(m_info)->GetMetrics().m_xAdvance; +} + +float TextureManager::GlyphRegion::GetAdvanceY() const +{ + ASSERT(m_info->GetType() == Texture::ResourceType::Glyph, ()); + return ref_ptr(m_info)->GetMetrics().m_yAdvance; +} + m2::PointU TextureManager::StippleRegion::GetMaskPixelSize() const { ASSERT(m_info->GetType() == Texture::ResourceType::StipplePen, ()); return ref_ptr(m_info)->GetMaskPixelSize(); } +//uint32_t TextureManager::StippleRegion::GetPatternPixelLength() const +//{ +// ASSERT(m_info->GetType() == Texture::ResourceType::StipplePen, ()); +// return ref_ptr(m_info)->GetPatternPixelLength(); +//} + void TextureManager::Release() { - m_glyphGroups.clear(); + m_hybridGlyphGroups.clear(); m_symbolTextures.clear(); m_stipplePenTexture.reset(); @@ -229,13 +271,13 @@ void TextureManager::UpdateGlyphTextures(ref_ptr context) ref_ptr TextureManager::AllocateGlyphTexture() { std::lock_guard const lock(m_glyphTexturesMutex); - // TODO(AB): Would a bigger texture be better? m2::PointU size(kGlyphsTextureSize, kGlyphsTextureSize); m_glyphTextures.push_back(make_unique_dp(size, make_ref(m_glyphManager), make_ref(m_textureAllocator))); return make_ref(m_glyphTextures.back()); } -void TextureManager::GetRegionBase(ref_ptr tex, BaseRegion & region, Texture::Key const & key) +void TextureManager::GetRegionBase(ref_ptr tex, TextureManager::BaseRegion & region, + Texture::Key const & key) { bool isNew = false; region.SetResourceInfo(tex != nullptr ? tex->FindResource(key, isNew) : nullptr); @@ -245,56 +287,96 @@ void TextureManager::GetRegionBase(ref_ptr tex, BaseRegion & region, Te m_nothingToUpload.clear(); } -uint32_t TextureManager::GetNumberOfGlyphsNotInGroup(std::vector const & glyphs, GlyphGroup const & group) +void TextureManager::GetGlyphsRegions(ref_ptr tex, strings::UniString const & text, TGlyphsBuffer & regions) { - uint32_t count = 0; - auto const end = group.m_glyphKeys.end(); - for (auto const & glyph : glyphs) + ASSERT(tex != nullptr, ()); + + std::vector keys; + keys.reserve(text.size()); + for (auto const c : text) + keys.emplace_back(c); + + bool hasNew = false; + auto resourcesInfo = tex->FindResources(keys, hasNew); + ASSERT_EQUAL(text.size(), resourcesInfo.size(), ()); + + regions.reserve(resourcesInfo.size()); + for (auto const & info : resourcesInfo) { - if (group.m_glyphKeys.find(glyph.m_key) == end) - ++count; + GlyphRegion reg; + reg.SetResourceInfo(info); + reg.SetTexture(tex); + ASSERT(reg.IsValid(), ()); + + regions.push_back(std::move(reg)); } - return count; + if (hasNew) + m_nothingToUpload.clear(); } -size_t TextureManager::FindHybridGlyphsGroup(std::vector const & glyphs) +uint32_t TextureManager::GetNumberOfUnfoundCharacters(strings::UniString const & text, HybridGlyphGroup const & group) { - if (m_glyphGroups.empty()) + uint32_t cnt = 0; + for (auto const c : text) { - m_glyphGroups.emplace_back(); + if (group.m_glyphs.find(c) == group.m_glyphs.end()) + cnt++; + } + + return cnt; +} + +void TextureManager::MarkCharactersUsage(strings::UniString const & text, HybridGlyphGroup & group) +{ + for (auto const & c : text) + group.m_glyphs.emplace(c); +} + +size_t TextureManager::FindHybridGlyphsGroup(strings::UniString const & text) +{ + if (m_hybridGlyphGroups.empty()) + { + m_hybridGlyphGroups.push_back(HybridGlyphGroup()); return 0; } - GlyphGroup & group = m_glyphGroups.back(); + HybridGlyphGroup & group = m_hybridGlyphGroups.back(); bool hasEnoughSpace = true; + if (group.m_texture != nullptr) + hasEnoughSpace = group.m_texture->HasEnoughSpace(static_cast(text.size())); - // TODO(AB): exclude spaces and repeated glyphs if necessary to get a precise size. - if (group.m_texture) - hasEnoughSpace = group.m_texture->HasEnoughSpace(static_cast(glyphs.size())); - - // If we have got the only texture (in most cases it is), we can omit checking of glyphs usage. + // If we have got the only hybrid texture (in most cases it is) + // we can omit checking of glyphs usage. if (hasEnoughSpace) { - size_t const glyphsCount = group.m_glyphKeys.size() + glyphs.size(); - if (m_glyphGroups.size() == 1 && glyphsCount < m_maxGlypsCount) + size_t const glyphsCount = group.m_glyphs.size() + text.size(); + if (m_hybridGlyphGroups.size() == 1 && glyphsCount < m_maxGlypsCount) return 0; } - // Looking for a texture which can fit all glyphs. - for (size_t i = 0; i < m_glyphGroups.size() - 1; i++) + // Looking for a hybrid texture which contains text entirely. + for (size_t i = 0; i < m_hybridGlyphGroups.size() - 1; i++) { - if (GetNumberOfGlyphsNotInGroup(glyphs, m_glyphGroups[i]) == 0) + if (GetNumberOfUnfoundCharacters(text, m_hybridGlyphGroups[i]) == 0) return i; } - // Check if we can fit all glyphs in the last hybrid texture. - uint32_t const unfoundChars = GetNumberOfGlyphsNotInGroup(glyphs, group); - uint32_t const newCharsCount = static_cast(group.m_glyphKeys.size()) + unfoundChars; + // Check if we can contain text in the last hybrid texture. + uint32_t const unfoundChars = GetNumberOfUnfoundCharacters(text, group); + uint32_t const newCharsCount = static_cast(group.m_glyphs.size()) + unfoundChars; if (newCharsCount >= m_maxGlypsCount || !group.m_texture->HasEnoughSpace(unfoundChars)) - m_glyphGroups.emplace_back(); + m_hybridGlyphGroups.push_back(HybridGlyphGroup()); - return m_glyphGroups.size() - 1; + return m_hybridGlyphGroups.size() - 1; +} + +size_t TextureManager::FindHybridGlyphsGroup(TMultilineText const & text) +{ + strings::UniString combinedString; + MultilineTextToUniString(text, combinedString); + + return FindHybridGlyphsGroup(combinedString); } void TextureManager::Init(ref_ptr context, Params const & params) @@ -396,11 +478,6 @@ void TextureManager::Init(ref_ptr context, Params const & p uint32_t constexpr averageGlyphSquare = baseGlyphHeightPixels * baseGlyphHeightPixels; m_maxGlypsCount = static_cast(ceil(kGlyphAreaCoverage * textureSquare / averageGlyphSquare)); - std::string_view constexpr kSpace{" "}; - m_spaceGlyph = m_glyphManager->ShapeText(kSpace, dp::kBaseFontSizePixels, "en").m_glyphs.front().m_key; - - LOG(LDEBUG, ("Glyphs texture size =", kGlyphsTextureSize, "with max glyphs count =", m_maxGlypsCount)); - m_isInitialized = true; m_nothingToUpload.clear(); } @@ -484,91 +561,22 @@ void TextureManager::GetColorRegion(Color const & color, ColorRegion & region) GetRegionBase(make_ref(m_colorTexture), region, ColorKey(color)); } -text::TextMetrics TextureManager::ShapeSingleTextLine(float fontPixelHeight, std::string_view utf8, - TGlyphsBuffer * glyphRegions) // TODO(AB): Better name? +void TextureManager::GetGlyphRegions(TMultilineText const & text, TMultilineGlyphsBuffer & buffers) { - ASSERT(!utf8.empty(), ()); - std::vector> resourcesInfo; - bool hasNewResources = false; - - // TODO(AB): Is this mutex too slow? - std::lock_guard lock(m_calcGlyphsMutex); - - // TODO(AB): Fix hard-coded lang. - auto textMetrics = m_glyphManager->ShapeText(utf8, fontPixelHeight, "en"); - - auto const & glyphs = textMetrics.m_glyphs; - - size_t const hybridGroupIndex = FindHybridGlyphsGroup(glyphs); - ASSERT(hybridGroupIndex != GetInvalidGlyphGroup(), ()); - GlyphGroup & group = m_glyphGroups[hybridGroupIndex]; - - // Mark used glyphs. - for (auto const & glyph : glyphs) - group.m_glyphKeys.insert(glyph.m_key); - - if (!group.m_texture) - group.m_texture = AllocateGlyphTexture(); - - if (glyphRegions) - resourcesInfo.reserve(glyphs.size()); - - for (auto const & glyph : glyphs) - { - bool newResource = false; - auto fontTexture = static_cast(group.m_texture.get())->MapResource(glyph.m_key, newResource); - hasNewResources |= newResource; - - if (glyphRegions) - resourcesInfo.emplace_back(fontTexture); - } - - if (glyphRegions) - { - glyphRegions->reserve(resourcesInfo.size()); - for (auto const & info : resourcesInfo) - { - GlyphRegion reg; - reg.SetResourceInfo(info); - reg.SetTexture(group.m_texture); - ASSERT(reg.IsValid(), ()); - - glyphRegions->push_back(std::move(reg)); - } - } - - if (hasNewResources) - m_nothingToUpload.clear(); - - return textMetrics; + std::lock_guard lock(m_calcGlyphsMutex); + CalcGlyphRegions(text, buffers); } -TextureManager::TShapedTextLines TextureManager::ShapeMultilineText(float fontPixelHeight, std::string_view utf8, - char const * delimiters, TMultilineGlyphsBuffer & multilineGlyphRegions) +void TextureManager::GetGlyphRegions(strings::UniString const & text, TGlyphsBuffer & regions) { - TShapedTextLines textLines; - strings::Tokenize(utf8, delimiters, [&](std::string_view line) - { - if (line.empty()) - return; - - multilineGlyphRegions.emplace_back(); - - textLines.emplace_back(ShapeSingleTextLine(fontPixelHeight, line, &multilineGlyphRegions.back())); - }); - - return textLines; + std::lock_guard lock(m_calcGlyphsMutex); + CalcGlyphRegions(text, regions); } -GlyphFontAndId TextureManager::GetSpaceGlyph() const -{ - return m_spaceGlyph; -} - -bool TextureManager::AreGlyphsReady(TGlyphs const & glyphs) const +bool TextureManager::AreGlyphsReady(strings::UniString const & str) const { CHECK(m_isInitialized, ()); - return m_glyphManager->AreGlyphsReady(glyphs); + return m_glyphManager->AreGlyphsReady(str); } ref_ptr TextureManager::GetSymbolsTexture() const diff --git a/drape/texture_manager.hpp b/drape/texture_manager.hpp index e135936d2d..5be6bfc9b4 100644 --- a/drape/texture_manager.hpp +++ b/drape/texture_manager.hpp @@ -51,15 +51,20 @@ public: uint32_t m_textureIndex = 0; }; - // TODO(AB): Remove? class GlyphRegion : public BaseRegion { + public: + float GetOffsetX() const; + float GetOffsetY() const; + float GetAdvanceX() const; + float GetAdvanceY() const; }; class StippleRegion : public BaseRegion { public: m2::PointU GetMaskPixelSize() const; + //uint32_t GetPatternPixelLength() const; }; class ColorRegion : public BaseRegion @@ -94,15 +99,10 @@ public: using TGlyphsBuffer = buffer_vector; using TMultilineGlyphsBuffer = buffer_vector; - using TShapedTextLines = buffer_vector; - text::TextMetrics ShapeSingleTextLine(float fontPixelHeight, std::string_view utf8, TGlyphsBuffer * glyphRegions); - TShapedTextLines ShapeMultilineText(float fontPixelHeight, std::string_view utf8, char const * delimiters, - TMultilineGlyphsBuffer & multilineGlyphRegions); - + void GetGlyphRegions(TMultilineText const & text, TMultilineGlyphsBuffer & buffers); + void GetGlyphRegions(strings::UniString const & text, TGlyphsBuffer & regions); // This method must be called only on Frontend renderer's thread. - bool AreGlyphsReady(TGlyphs const & glyphs) const; - - GlyphFontAndId GetSpaceGlyph() const; + bool AreGlyphsReady(strings::UniString const & str) const; // On some devices OpenGL driver can't resolve situation when we upload to a texture on a thread // and use this texture to render on another thread. By this we move UpdateDynamicTextures call @@ -127,19 +127,43 @@ public: private: struct GlyphGroup { - std::set m_glyphKeys; - ref_ptr m_texture {nullptr}; + GlyphGroup() + : m_startChar(0), m_endChar(0), m_texture(nullptr) + {} + + GlyphGroup(strings::UniChar const & start, strings::UniChar const & end) + : m_startChar(start), m_endChar(end), m_texture(nullptr) + {} + + strings::UniChar m_startChar; + strings::UniChar m_endChar; + ref_ptr m_texture; + }; + + struct HybridGlyphGroup + { + HybridGlyphGroup() + : m_texture(nullptr) + {} + + std::set m_glyphs; + ref_ptr m_texture; }; uint32_t m_maxTextureSize; uint32_t m_maxGlypsCount; ref_ptr AllocateGlyphTexture(); - void GetRegionBase(ref_ptr tex, BaseRegion & region, Texture::Key const & key); + void GetRegionBase(ref_ptr tex, TextureManager::BaseRegion & region, Texture::Key const & key); - size_t FindHybridGlyphsGroup(std::vector const & glyphs); + void GetGlyphsRegions(ref_ptr tex, strings::UniString const & text, TGlyphsBuffer & regions); - static uint32_t GetNumberOfGlyphsNotInGroup(std::vector const & glyphs, GlyphGroup const & group); + size_t FindHybridGlyphsGroup(strings::UniString const & text); + size_t FindHybridGlyphsGroup(TMultilineText const & text); + + static uint32_t GetNumberOfUnfoundCharacters(strings::UniString const & text, HybridGlyphGroup const & group) ; + + static void MarkCharactersUsage(strings::UniString const & text, HybridGlyphGroup & group); template void FillResultBuffer(strings::UniString const & text, TGlyphGroup & group, TGlyphsBuffer & regions) @@ -151,13 +175,16 @@ private: } template - void FillResults(strings::UniString const & text, TGlyphsBuffer & buffers, TGlyphGroup & group) + void FillResults(strings::UniString const & text, TGlyphsBuffer & buffers, + TGlyphGroup & group) { + MarkCharactersUsage(text, group); FillResultBuffer(text, group, buffers); } template - void FillResults(TMultilineText const & text, TMultilineGlyphsBuffer & buffers, TGlyphGroup & group) + void FillResults(TMultilineText const & text, TMultilineGlyphsBuffer & buffers, + TGlyphGroup & group) { buffers.resize(text.size()); for (size_t i = 0; i < text.size(); ++i) @@ -174,8 +201,8 @@ private: CHECK(m_isInitialized, ()); size_t const hybridGroupIndex = FindHybridGlyphsGroup(text); ASSERT(hybridGroupIndex != GetInvalidGlyphGroup(), ()); - GlyphGroup & group = m_glyphGroups[hybridGroupIndex]; - FillResults(text, buffers, group); + HybridGlyphGroup & group = m_hybridGlyphGroups[hybridGroupIndex]; + FillResults(text, buffers, group); } void UpdateGlyphTextures(ref_ptr context); @@ -202,15 +229,12 @@ private: drape_ptr m_glyphManager; drape_ptr m_textureAllocator; - buffer_vector m_glyphGroups; + buffer_vector m_hybridGlyphGroups; std::vector> m_texturesToCleanup; base::Timer m_uploadTimer; std::atomic_flag m_nothingToUpload {false}; std::mutex m_calcGlyphsMutex; - - // TODO(AB): Make a more robust use of BreakIterator to split strings and get rid of this space glyph. - GlyphFontAndId m_spaceGlyph; }; } // namespace dp diff --git a/drape/vulkan/vulkan_layers.cpp b/drape/vulkan/vulkan_layers.cpp index 2767003358..98b17bb77e 100755 --- a/drape/vulkan/vulkan_layers.cpp +++ b/drape/vulkan/vulkan_layers.cpp @@ -139,7 +139,7 @@ bool IsContained(char const * name, std::vector const & collection } } // namespace -static VkBool32 VKAPI_PTR DebugReportCallbackImpl(VkDebugReportFlagsEXT flags, +VkBool32 VKAPI_PTR DebugReportCallbackImpl(VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t /*messageCode*/, const char * pLayerPrefix, const char * pMessage, diff --git a/drape/vulkan/vulkan_utils.hpp b/drape/vulkan/vulkan_utils.hpp index f54c792b01..98f8454995 100644 --- a/drape/vulkan/vulkan_utils.hpp +++ b/drape/vulkan/vulkan_utils.hpp @@ -59,9 +59,9 @@ struct SamplerKey #define LOG_ERROR_VK_CALL(method, statusCode) \ LOG(LDEBUG, ("Vulkan error:", #method, "finished with code", \ - dp::vulkan::GetVulkanResultString(statusCode))) + dp::vulkan::GetVulkanResultString(statusCode))); -#define LOG_ERROR_VK(message) LOG(LDEBUG, ("Vulkan error:", message)) +#define LOG_ERROR_VK(message) LOG(LDEBUG, ("Vulkan error:", message)); #define CHECK_VK_CALL(method) \ do { \ diff --git a/drape_frontend/apply_feature_functors.cpp b/drape_frontend/apply_feature_functors.cpp index a1deca1f54..9638c75684 100644 --- a/drape_frontend/apply_feature_functors.cpp +++ b/drape_frontend/apply_feature_functors.cpp @@ -308,18 +308,18 @@ dp::Anchor GetShieldAnchor(uint8_t shieldIndex, uint8_t shieldCount) return dp::Center; } -m2::PointF GetShieldOffset(dp::Anchor anchor, double paddingWidth, double paddingHeight) +m2::PointF GetShieldOffset(dp::Anchor anchor, double borderWidth, double borderHeight) { m2::PointF offset(0.0f, 0.0f); if (anchor & dp::Left) - offset.x = static_cast(paddingWidth); + offset.x = static_cast(borderWidth); else if (anchor & dp::Right) - offset.x = -static_cast(paddingWidth); + offset.x = -static_cast(borderWidth); if (anchor & dp::Top) - offset.y = static_cast(paddingHeight); + offset.y = static_cast(borderHeight); else if (anchor & dp::Bottom) - offset.y = -static_cast(paddingHeight); + offset.y = -static_cast(borderHeight); return offset; } @@ -912,9 +912,9 @@ void ApplyLineFeatureAdditional::GetRoadShieldsViewParams(ref_ptrShapeSingleTextLine(dp::kBaseFontSizePixels, roadNumber, nullptr); - float const textRatio = font.m_size * fontScale / dp::kBaseFontSizePixels; - float const textWidthInPixels = textMetrics.m_lineWidthInPixels * textRatio; - float const textHeightInPixels = textMetrics.m_maxLineHeightInPixels * textRatio; + TextLayout textLayout; + textLayout.Init(strings::MakeUniString(roadNumber), font.m_size, texMng); // Calculate width and height of a shield. - shieldPixelSize.x = textWidthInPixels + 2.0 * paddingWidth; - shieldPixelSize.y = textHeightInPixels + 2.0 * paddingHeight; + shieldPixelSize.x = textLayout.GetPixelLength() + 2.0 * borderWidth; + shieldPixelSize.y = textLayout.GetPixelHeight() + 2.0 * borderHeight; textParams.m_limitedText = true; textParams.m_limits = shieldPixelSize * 0.9; @@ -978,8 +976,8 @@ void ApplyLineFeatureAdditional::GetRoadShieldsViewParams(ref_ptrGetSymbolRegion(poiParams.m_symbolName, region); - float const symBorderWidth = (region.GetPixelSize().x - textWidthInPixels) * 0.5f; - float const symBorderHeight = (region.GetPixelSize().y - textHeightInPixels) * 0.5f; + float const symBorderWidth = (region.GetPixelSize().x - textLayout.GetPixelLength()) * 0.5f; + float const symBorderHeight = (region.GetPixelSize().y - textLayout.GetPixelHeight()) * 0.5f; textParams.m_titleDecl.m_primaryOffset = poiParams.m_offset + GetShieldOffset(anchor, symBorderWidth, symBorderHeight); shieldPixelSize = region.GetPixelSize(); } diff --git a/drape_frontend/gui/copyright_label.cpp b/drape_frontend/gui/copyright_label.cpp index b9abd9b1fb..025240e65c 100644 --- a/drape_frontend/gui/copyright_label.cpp +++ b/drape_frontend/gui/copyright_label.cpp @@ -1,19 +1,25 @@ #include "copyright_label.hpp" #include "drape_gui.hpp" #include "gui_text.hpp" +#include "ruler_helper.hpp" #include "drape_frontend/animation/opacity_animation.hpp" +#include "drape_frontend/animation/value_mapping.hpp" #include "drape_frontend/batcher_bucket.hpp" +#include "base/timer.hpp" + #include #include +using namespace std::placeholders; + namespace gui { namespace { -constexpr double kCopyrightVisibleTime = 10.0f; -constexpr double kCopyrightHideTime = 0.25f; +double const kCopyrightVisibleTime = 10.0f; +double const kCopyrightHideTime = 0.25f; class CopyrightHandle : public StaticLabelHandle { @@ -21,8 +27,8 @@ class CopyrightHandle : public StaticLabelHandle public: CopyrightHandle(uint32_t id, ref_ptr textureManager, - dp::Anchor anchor, m2::PointF const & pivot, dp::TGlyphs && glyphs) - : TBase(id, textureManager, anchor, pivot, std::move(glyphs)) + dp::Anchor anchor, m2::PointF const & pivot, TAlphabet const & alphabet) + : TBase(id, textureManager, anchor, pivot, alphabet) { SetIsVisible(true); } @@ -69,8 +75,8 @@ drape_ptr CopyrightLabel::Draw(ref_ptr conte ref_ptr tex) const { StaticLabel::LabelResult result; - auto glyphs = StaticLabel::CacheStaticText("Map data © OpenStreetMap", "", m_position.m_anchor, - DrapeGui::GetGuiTextFont(), tex, result); + StaticLabel::CacheStaticText("Map data © OpenStreetMap", "", m_position.m_anchor, + DrapeGui::GetGuiTextFont(), tex, result); dp::AttributeProvider provider(1 /*stream count*/, static_cast(result.m_buffer.size())); provider.InitStream(0 /*stream index*/, StaticLabel::Vertex::GetBindingInfo(), @@ -83,12 +89,11 @@ drape_ptr CopyrightLabel::Draw(ref_ptr conte drape_ptr handle = make_unique_dp(GuiHandleCopyright, tex, m_position.m_anchor, m_position.m_pixelPivot, - std::move(glyphs)); + result.m_alphabet); drape_ptr renderer = make_unique_dp(); dp::Batcher batcher(indexCount, vertexCount); batcher.SetBatcherHash(static_cast(df::BatcherBucket::Default)); - using namespace std::placeholders; dp::SessionGuard guard(context, batcher, std::bind(&ShapeRenderer::AddShape, renderer.get(), _1, _2)); batcher.InsertListOfStrip(context, result.m_state, make_ref(&provider), std::move(handle), dp::Batcher::VertexPerQuad); diff --git a/drape_frontend/gui/gui_text.cpp b/drape_frontend/gui/gui_text.cpp index 14b15971a6..98c57da354 100644 --- a/drape_frontend/gui/gui_text.cpp +++ b/drape_frontend/gui/gui_text.cpp @@ -6,7 +6,9 @@ #include "shaders/programs.hpp" #include "base/stl_helpers.hpp" +#include "base/string_utils.hpp" +#include "drape/bidi.hpp" #include "drape/font_constants.hpp" #include @@ -18,14 +20,14 @@ namespace gui { namespace { -glsl::vec2 GetNormalsAndMask(dp::TextureManager::GlyphRegion const & glyph, float xOffset, float yOffset, float textRatio, +glsl::vec2 GetNormalsAndMask(dp::TextureManager::GlyphRegion const & glyph, float textRatio, std::array & normals, std::array & maskTexCoord) { m2::PointF const pixelSize = glyph.GetPixelSize() * textRatio; m2::RectF const & r = glyph.GetTexRect(); - xOffset *= textRatio; - yOffset *= textRatio; + float const xOffset = glyph.GetOffsetX() * textRatio; + float const yOffset = glyph.GetOffsetY() * textRatio; float const upVector = -pixelSize.y - yOffset; float const bottomVector = -yOffset; @@ -43,7 +45,8 @@ glsl::vec2 GetNormalsAndMask(dp::TextureManager::GlyphRegion const & glyph, floa return {xOffset, yOffset}; } -void FillCommonDecl(dp::BindingDecl & decl, std::string const & name, uint8_t compCount, uint8_t stride, uint8_t offset) +void FillCommonDecl(dp::BindingDecl & decl, std::string const & name, uint8_t compCount, + uint8_t stride, uint8_t offset) { decl.m_attributeName = name; decl.m_componentCount = compCount; @@ -109,25 +112,34 @@ StaticLabel::LabelResult::LabelResult() m_state.SetDepthTestEnabled(false); } -dp::TGlyphs StaticLabel::CacheStaticText(std::string const & text, char const * delimiters, - dp::Anchor anchor, dp::FontDecl const & font, - ref_ptr mng, LabelResult & result) +char const * StaticLabel::DefaultDelim = "\n"; + +void StaticLabel::CacheStaticText(std::string const & text, char const * delim, + dp::Anchor anchor, dp::FontDecl const & font, + ref_ptr mng, LabelResult & result) { ASSERT(!text.empty(), ()); - auto const textRatio = font.m_size * - static_cast(df::VisualParams::Instance().GetVisualScale() / dp::kBaseFontSizePixels); + dp::TextureManager::TMultilineText textParts; + strings::Tokenize(text, delim, [&textParts](std::string_view part) + { + textParts.push_back(bidi::log2vis(part)); + }); + + ASSERT(!textParts.empty(), ()); + + for (auto const & str : textParts) + result.m_alphabet.insert(str.begin(), str.end()); dp::TextureManager::TMultilineGlyphsBuffer buffers; - auto const shapedLines = mng->ShapeMultilineText(dp::kBaseFontSizePixels, text, delimiters, buffers); - - ASSERT_EQUAL(shapedLines.size(), buffers.size(), ()); + mng->GetGlyphRegions(textParts, buffers); #ifdef DEBUG - for (size_t i = 0; i < buffers.size(); ++i) + ASSERT_EQUAL(textParts.size(), buffers.size(), ()); + for (size_t i = 0; i < textParts.size(); ++i) { - ASSERT(!buffers[i].empty(), ()); - ASSERT_EQUAL(buffers[i].size(), shapedLines[i].m_glyphs.size(), ()); + ASSERT(!textParts[i].empty(), ()); + ASSERT_EQUAL(textParts[i].size(), buffers[i].size(), ()); } ref_ptr texture = buffers[0][0].GetTexture(); @@ -147,6 +159,8 @@ dp::TGlyphs StaticLabel::CacheStaticText(std::string const & text, char const * glsl::vec2 colorTex = glsl::ToVec2(color.GetTexRect().Center()); glsl::vec2 outlineTex = glsl::ToVec2(outline.GetTexRect().Center()); + auto const textRatio = font.m_size * static_cast(df::VisualParams::Instance().GetVisualScale() / dp::kBaseFontSizePixels); + buffer_vector lineLengths; lineLengths.reserve(buffers.size()); @@ -158,8 +172,6 @@ dp::TGlyphs StaticLabel::CacheStaticText(std::string const & text, char const * buffer_vector & rb = result.m_buffer; for (int i = static_cast(buffers.size()) - 1; i >= 0; --i) { - auto const & glyphs = shapedLines[i].m_glyphs; - dp::TextureManager::TGlyphsBuffer & regions = buffers[i]; lineLengths.push_back(0.0f); float & currentLineLength = lineLengths.back(); @@ -169,22 +181,19 @@ dp::TGlyphs StaticLabel::CacheStaticText(std::string const & text, char const * float prevLineHeight = 0.0; for (size_t j = 0; j < regions.size(); ++j) { - auto const & glyphMetrics = glyphs[j]; - std::array normals, maskTex; dp::TextureManager::GlyphRegion const & glyph = regions[j]; - glsl::vec2 offsets = GetNormalsAndMask(glyph, glyphMetrics.m_xOffset, glyphMetrics.m_yOffset, textRatio, normals, maskTex); + glsl::vec2 offsets = GetNormalsAndMask(glyph, textRatio, normals, maskTex); glsl::vec3 position = glsl::vec3(0.0, 0.0, depth); for (size_t v = 0; v < normals.size(); ++v) - rb.emplace_back(position, colorTex, outlineTex, pen + normals[v], maskTex[v]); + rb.push_back(Vertex(position, colorTex, outlineTex, pen + normals[v], maskTex[v])); - float const advance = glyphMetrics.m_xAdvance * textRatio; + float const advance = glyph.GetAdvanceX() * textRatio; prevLineHeight = std::max(prevLineHeight, offsets.y + glyph.GetPixelHeight() * textRatio); - - pen += glsl::vec2(advance, glyphMetrics.m_yAdvance * textRatio); + pen += glsl::vec2(advance, glyph.GetAdvanceY() * textRatio); depth += 10.0f; if (j == 0) @@ -232,14 +241,6 @@ dp::TGlyphs StaticLabel::CacheStaticText(std::string const & text, char const * result.m_state.SetColorTexture(color.GetTexture()); result.m_state.SetMaskTexture(buffers[0][0].GetTexture()); - - dp::TGlyphs glyphs; - for (auto const & line : shapedLines) - for (auto const & glyph : line.m_glyphs) - glyphs.emplace_back(glyph.m_key); - - base::SortUnique(glyphs); - return glyphs; } dp::BindingInfo const & MutableLabel::StaticVertex::GetBindingInfo() @@ -299,32 +300,40 @@ void MutableLabel::SetMaxLength(uint16_t maxLength) m_maxLength = maxLength; } -dp::TGlyphs MutableLabel::GetGlyphs() const +ref_ptr MutableLabel::SetAlphabet(std::string const & alphabet, + ref_ptr mng) { - dp::TGlyphs glyphs; - glyphs.reserve(m_shapedText.m_glyphs.size()); + strings::UniString str = strings::MakeUniString(alphabet + "."); + base::SortUnique(str); - for (auto const & glyph : m_shapedText.m_glyphs) - glyphs.emplace_back(glyph.m_key); - return glyphs; + dp::TextureManager::TGlyphsBuffer buffer; + mng->GetGlyphRegions(str, buffer); + m_alphabet.reserve(buffer.size()); + + ASSERT_EQUAL(str.size(), buffer.size(), ()); + m_alphabet.resize(str.size()); + std::transform(str.begin(), str.end(), buffer.begin(), m_alphabet.begin(), + [](strings::UniChar const & c, dp::TextureManager::GlyphRegion const & r) + { + return std::make_pair(c, r); + }); + + std::sort(m_alphabet.begin(), m_alphabet.end(), + [](TAlphabetNode const & n1, TAlphabetNode const & n2) + { + return n1.first < n2.first; + }); + + return m_alphabet[0].second.GetTexture(); } -void MutableLabel::Precache(PrecacheParams const & params, PrecacheResult & result, ref_ptr mng) +void MutableLabel::Precache(PrecacheParams const & params, PrecacheResult & result, + ref_ptr mng) { SetMaxLength(static_cast(params.m_maxLength)); - + result.m_state.SetMaskTexture(SetAlphabet(params.m_alphabet, mng)); m_textRatio = params.m_font.m_size * static_cast(df::VisualParams::Instance().GetVisualScale()) / dp::kBaseFontSizePixels; - // TODO(AB): Is this shaping/precaching really needed if the text changes every frame? - m_shapedText = mng->ShapeSingleTextLine(dp::kBaseFontSizePixels, params.m_alphabet, &m_glyphRegions); - - auto const firstTexture = m_glyphRegions.front().GetTexture(); -#ifdef DEBUG - for (auto const & region : m_glyphRegions) - ASSERT_EQUAL(firstTexture, region.GetTexture(), ()); -#endif - result.m_state.SetMaskTexture(firstTexture); - dp::TextureManager::ColorRegion color; dp::TextureManager::ColorRegion outlineColor; @@ -336,7 +345,8 @@ void MutableLabel::Precache(PrecacheParams const & params, PrecacheResult & resu glsl::vec2 outlineTex = glsl::ToVec2(outlineColor.GetTexRect().Center()); auto const vertexCount = m_maxLength * dp::Batcher::VertexPerQuad; - result.m_buffer.resize(vertexCount, StaticVertex(glsl::vec3(0.0, 0.0, 0.0), colorTex, outlineTex)); + result.m_buffer.resize(vertexCount, + StaticVertex(glsl::vec3(0.0, 0.0, 0.0), colorTex, outlineTex)); float depth = 0.0f; for (size_t i = 0; i < vertexCount; i += 4) @@ -348,14 +358,25 @@ void MutableLabel::Precache(PrecacheParams const & params, PrecacheResult & resu depth += 10.0f; } - result.m_maxPixelSize = m2::PointF(m_shapedText.m_lineWidthInPixels, m_shapedText.m_maxLineHeightInPixels); + uint32_t maxGlyphWidth = 0; + uint32_t maxGlyphHeight = 0; + for (const auto & node : m_alphabet) + { + dp::TextureManager::GlyphRegion const & reg = node.second; + m2::PointU const pixelSize(reg.GetPixelSize()); + maxGlyphWidth = std::max(maxGlyphWidth, pixelSize.x); + maxGlyphHeight = std::max(maxGlyphHeight, pixelSize.y); + } + + result.m_maxPixelSize = m2::PointF(m_maxLength * maxGlyphWidth, maxGlyphHeight); } -void MutableLabel::SetText(LabelResult & result, std::string text, ref_ptr mng) +void MutableLabel::SetText(LabelResult & result, std::string text) const { - if (size_t const sz = text.size(); sz < m_maxLength) + size_t const sz = text.size(); + if (sz < m_maxLength) { - /// @todo I don't see a better way to clear cached vertices from the previous frame (text value). + /// @todo I don't see a better way to clear cached vertices from previous the frame (text value). text.append(m_maxLength - sz, ' '); } else if (sz > m_maxLength) @@ -364,52 +385,53 @@ void MutableLabel::SetText(LabelResult & result, std::string text, ref_ptrShapeSingleTextLine(dp::kBaseFontSizePixels, text, &m_glyphRegions); - - // TODO(AB): Reuse pre-calculated width and height? - // float maxHeight = m_shapedText.m_maxLineHeightInPixels; - // float length = m_shapedText.m_lineWidthInPixels; + strings::UniString const uniText = bidi::log2vis(text); float maxHeight = 0.0f; float length = 0.0f; glsl::vec2 pen = glsl::vec2(0.0, 0.0); - ASSERT_EQUAL(m_glyphRegions.size(), m_shapedText.m_glyphs.size(), ()); - for (size_t i = 0; i < m_glyphRegions.size(); ++i) + for (strings::UniChar c : uniText) { + auto const it = std::find_if(m_alphabet.begin(), m_alphabet.end(), + [&c](TAlphabetNode const & n) + { + return n.first == c; + }); + + ASSERT(it != m_alphabet.end(), ()); + if (it != m_alphabet.end()) + { std::array normals, maskTex; - dp::TextureManager::GlyphRegion const & glyph = m_glyphRegions[i]; - auto const & metrics = m_shapedText.m_glyphs[i]; - glsl::vec2 const offsets = GetNormalsAndMask(glyph, metrics.m_xOffset, metrics.m_yOffset, m_textRatio, normals, maskTex); + dp::TextureManager::GlyphRegion const & glyph = it->second; + glsl::vec2 const offsets = GetNormalsAndMask(glyph, m_textRatio, normals, maskTex); ASSERT_EQUAL(normals.size(), maskTex.size(), ()); for (size_t i = 0; i < normals.size(); ++i) result.m_buffer.emplace_back(pen + normals[i], maskTex[i]); - float const advance = metrics.m_xAdvance * m_textRatio; + float const advance = glyph.GetAdvanceX() * m_textRatio; length += advance + offsets.x; - // TODO(AB): yAdvance is always zero for horizontal layouts. - pen += glsl::vec2(advance, metrics.m_yAdvance * m_textRatio); + pen += glsl::vec2(advance, glyph.GetAdvanceY() * m_textRatio); maxHeight = std::max(maxHeight, offsets.y + glyph.GetPixelHeight() * m_textRatio); + } } - glsl::vec2 anchorModifier = glsl::vec2(-length / 2.0f, maxHeight / 2.0f); + glsl::vec2 anchorModifyer = glsl::vec2(-length / 2.0f, maxHeight / 2.0f); if (m_anchor & dp::Right) - anchorModifier.x = -length; + anchorModifyer.x = -length; else if (m_anchor & dp::Left) - anchorModifier.x = 0; + anchorModifyer.x = 0; if (m_anchor & dp::Top) - anchorModifier.y = maxHeight; + anchorModifyer.y = maxHeight; else if (m_anchor & dp::Bottom) - anchorModifier.y = 0; + anchorModifyer.y = 0; for (DynamicVertex & v : result.m_buffer) { - v.m_normal += anchorModifier; + v.m_normal += anchorModifyer; result.m_boundRect.Add(glsl::ToPoint(v.m_normal)); } } @@ -437,7 +459,7 @@ void MutableLabelHandle::GetAttributeMutation(ref_ptrSetText(result, m_content, m_textureManager); + m_textView->SetText(result, m_content); size_t const byteCount = result.m_buffer.size() * sizeof(MutableLabel::DynamicVertex); auto const dataPointer = static_cast(mutator->AllocateMutationBuffer(byteCount)); @@ -457,7 +479,13 @@ void MutableLabelHandle::GetAttributeMutation(ref_ptrAreGlyphsReady(m_textView->GetGlyphs()); + { + strings::UniString alphabetStr; + for (auto const & node : m_textView->GetAlphabet()) + alphabetStr.push_back(node.first); + + m_glyphsReady = m_textureManager->AreGlyphsReady(alphabetStr); + } if (!m_glyphsReady) return false; @@ -519,7 +547,8 @@ m2::PointF MutableLabelDrawer::Draw(ref_ptr context, Params dp::BindingInfo const & sBinding = MutableLabel::StaticVertex::GetBindingInfo(); dp::BindingInfo const & dBinding = MutableLabel::DynamicVertex::GetBindingInfo(); dp::AttributeProvider provider(2 /*stream count*/, static_cast(staticData.m_buffer.size())); - provider.InitStream(0 /*stream index*/, sBinding, make_ref(staticData.m_buffer.data())); + provider.InitStream(0 /*stream index*/, sBinding, + make_ref(staticData.m_buffer.data())); provider.InitStream(1 /*stream index*/, dBinding, make_ref(dynData.data())); { @@ -530,14 +559,15 @@ m2::PointF MutableLabelDrawer::Draw(ref_ptr context, Params std::move(handle), dp::Batcher::VertexPerQuad); } + // REMOVE? return staticData.m_maxPixelSize; } StaticLabelHandle::StaticLabelHandle(uint32_t id, ref_ptr textureManager, dp::Anchor anchor, m2::PointF const & pivot, - dp::TGlyphs && glyphs) + TAlphabet const & alphabet) : TBase(id, anchor, pivot) - , m_glyphs(std::move(glyphs)) + , m_alphabet(alphabet.begin(), alphabet.end()) , m_textureManager(std::move(textureManager)) , m_glyphsReady(false) {} @@ -545,7 +575,7 @@ StaticLabelHandle::StaticLabelHandle(uint32_t id, ref_ptr te bool StaticLabelHandle::Update(ScreenBase const & screen) { if (!m_glyphsReady) - m_glyphsReady = m_textureManager->AreGlyphsReady(m_glyphs); + m_glyphsReady = m_textureManager->AreGlyphsReady(m_alphabet); if (!m_glyphsReady) return false; diff --git a/drape_frontend/gui/gui_text.hpp b/drape_frontend/gui/gui_text.hpp index b5693f3d69..b163508d01 100644 --- a/drape_frontend/gui/gui_text.hpp +++ b/drape_frontend/gui/gui_text.hpp @@ -2,8 +2,6 @@ #include "drape_frontend/gui/shape.hpp" -#include "base/buffer_vector.hpp" - #include "drape/binding_info.hpp" #include "drape/drape_global.hpp" #include "drape/glsl_types.hpp" @@ -12,6 +10,7 @@ #include #include #include +#include namespace gui { @@ -20,6 +19,7 @@ using TAlphabet = std::unordered_set; class StaticLabel { public: + static char const * DefaultDelim; struct Vertex { Vertex() = default; @@ -51,7 +51,7 @@ public: TAlphabet m_alphabet; }; - static dp::TGlyphs CacheStaticText(std::string const & text, char const * delim, dp::Anchor anchor, + static void CacheStaticText(std::string const & text, char const * delim, dp::Anchor anchor, dp::FontDecl const & font, ref_ptr mng, LabelResult & result); }; @@ -117,21 +117,23 @@ public: void Precache(PrecacheParams const & params, PrecacheResult & result, ref_ptr mng); - void SetText(LabelResult & result, std::string text, ref_ptr mng); + void SetText(LabelResult & result, std::string text) const; - // TODO(AB): Refactor. - dp::TGlyphs GetGlyphs() const; + using TAlphabetNode = std::pair; + using TAlphabet = std::vector; + + TAlphabet const & GetAlphabet() const { return m_alphabet; } private: void SetMaxLength(uint16_t maxLength); + ref_ptr SetAlphabet(std::string const & alphabet, ref_ptr mng); private: dp::Anchor m_anchor; uint16_t m_maxLength = 0; float m_textRatio = 0.0f; - dp::text::TextMetrics m_shapedText; - dp::TextureManager::TGlyphsBuffer m_glyphRegions; + TAlphabet m_alphabet; }; class MutableLabelHandle : public Handle @@ -190,12 +192,12 @@ class StaticLabelHandle : public Handle public: StaticLabelHandle(uint32_t id, ref_ptr textureManager, dp::Anchor anchor, - m2::PointF const & pivot, dp::TGlyphs && glyphs); + m2::PointF const & pivot, TAlphabet const & alphabet); bool Update(ScreenBase const & screen) override; private: - dp::TGlyphs m_glyphs; + strings::UniString m_alphabet; ref_ptr m_textureManager; bool m_glyphsReady; }; diff --git a/drape_frontend/path_text_handle.cpp b/drape_frontend/path_text_handle.cpp index 886b949a83..ba1424aef0 100644 --- a/drape_frontend/path_text_handle.cpp +++ b/drape_frontend/path_text_handle.cpp @@ -255,7 +255,7 @@ end: PathTextHandle::PathTextHandle(dp::OverlayID const & id, std::shared_ptr const & context, float depth, uint32_t textIndex, uint64_t priority, ref_ptr textureManager, int minVisibleScale, bool isBillboard) - : TextHandle(id, context->GetLayout()->GetGlyphs(), dp::Center, priority, + : TextHandle(id, context->GetLayout()->GetText(), dp::Center, priority, textureManager, minVisibleScale, isBillboard) , m_context(context) , m_textIndex(textIndex) diff --git a/drape_frontend/path_text_shape.cpp b/drape_frontend/path_text_shape.cpp index 805fcf9646..4d7899acc3 100644 --- a/drape_frontend/path_text_shape.cpp +++ b/drape_frontend/path_text_shape.cpp @@ -1,6 +1,4 @@ #include "drape_frontend/path_text_shape.hpp" - -#include #include "drape_frontend/path_text_handle.hpp" #include "drape_frontend/render_state_extension.hpp" @@ -31,21 +29,22 @@ PathTextShape::PathTextShape(m2::SharedSpline const & spline, , m_tileCoords(tileKey.GetTileCoords()) , m_baseTextIndex(baseTextIndex) { - m_context = std::make_shared(m_spline); + m_context.reset(new PathTextContext(m_spline)); } bool PathTextShape::CalculateLayout(ref_ptr textures) { char constexpr kSpaces[] = " "; auto layout = make_unique_dp(m_params.m_tileCenter, - m_params.m_auxText.empty() ? m_params.m_mainText : m_params.m_mainText + kSpaces + m_params.m_auxText, - m_params.m_textFont.m_size, textures); - - if (0 == layout->GetGlyphCount()) - { - LOG(LWARNING, ("Empty layout for main text", m_params.m_mainText, "and aux text", m_params.m_auxText)); + strings::MakeUniString( + m_params.m_auxText.empty() + ? m_params.m_mainText + : m_params.m_mainText + kSpaces + m_params.m_auxText), + m_params.m_textFont.m_size, + textures); + uint32_t const glyphCount = layout->GetGlyphCount(); + if (glyphCount == 0) return false; - } m_context->SetLayout(std::move(layout), m_params.m_baseGtoPScale); @@ -150,7 +149,7 @@ drape_ptr PathTextShape::CreateOverlayHandle(uint32_t textInd dp::OverlayID overlayId(m_params.m_featureId, m_params.m_markId, m_tileCoords, m_baseTextIndex + textIndex); auto const layout = m_context->GetLayout(); - auto const priority = GetOverlayPriority(textIndex, layout->GetGlyphCount()); + auto const priority = GetOverlayPriority(textIndex, layout->GetText().size()); return make_unique_dp(overlayId, m_context, m_params.m_depth, textIndex, priority, textures, m_params.m_minVisibleScale, true /* isBillboard */); } diff --git a/drape_frontend/text_handle.cpp b/drape_frontend/text_handle.cpp index 9c62465c2a..14b973a373 100644 --- a/drape_frontend/text_handle.cpp +++ b/drape_frontend/text_handle.cpp @@ -2,26 +2,32 @@ #include "drape/texture_manager.hpp" +#include "base/logging.hpp" + +#include +#include +#include + namespace df { -TextHandle::TextHandle(dp::OverlayID const & id, dp::TGlyphs && glyphs, dp::Anchor anchor, uint64_t priority, +TextHandle::TextHandle(dp::OverlayID const & id, strings::UniString const & text, dp::Anchor anchor, uint64_t priority, ref_ptr textureManager, int minVisibleScale, bool isBillboard) : OverlayHandle(id, anchor, priority, minVisibleScale, isBillboard) , m_forceUpdateNormals(false) , m_isLastVisible(false) - , m_glyphs(std::move(glyphs)) + , m_text(text) , m_textureManager(textureManager) , m_glyphsReady(false) {} -TextHandle::TextHandle(dp::OverlayID const & id, dp::TGlyphs && glyphs, dp::Anchor anchor, +TextHandle::TextHandle(dp::OverlayID const & id, strings::UniString const & text, dp::Anchor anchor, uint64_t priority, ref_ptr textureManager, gpu::TTextDynamicVertexBuffer && normals, int minVisibleScale, bool isBillboard) : OverlayHandle(id, anchor, priority, minVisibleScale, isBillboard) , m_buffer(std::move(normals)) , m_forceUpdateNormals(false) , m_isLastVisible(false) - , m_glyphs(std::move(glyphs)) + , m_text(text) , m_textureManager(textureManager) , m_glyphsReady(false) {} @@ -54,7 +60,7 @@ void TextHandle::GetAttributeMutation(ref_ptr mutato bool TextHandle::Update(ScreenBase const & screen) { if (!m_glyphsReady) - m_glyphsReady = m_textureManager->AreGlyphsReady(m_glyphs); + m_glyphsReady = m_textureManager->AreGlyphsReady(m_text); return m_glyphsReady; } diff --git a/drape_frontend/text_handle.hpp b/drape_frontend/text_handle.hpp index c7e5680918..713c10e5b1 100644 --- a/drape_frontend/text_handle.hpp +++ b/drape_frontend/text_handle.hpp @@ -1,12 +1,13 @@ #pragma once -#include "drape/glyph.hpp" #include "drape/overlay_handle.hpp" #include "drape/pointers.hpp" #include "drape/utils/vertex_decl.hpp" #include "base/string_utils.hpp" +#include + namespace dp { class TextureManager; @@ -17,12 +18,12 @@ namespace df class TextHandle : public dp::OverlayHandle { public: - TextHandle(dp::OverlayID const & id, dp::TGlyphs && glyphs, + TextHandle(dp::OverlayID const & id, strings::UniString const & text, dp::Anchor anchor, uint64_t priority, ref_ptr textureManager, int minVisibleScale, bool isBillboard); - TextHandle(dp::OverlayID const & id, dp::TGlyphs && glyphs, + TextHandle(dp::OverlayID const & id, strings::UniString const & text, dp::Anchor anchor, uint64_t priority, ref_ptr textureManager, gpu::TTextDynamicVertexBuffer && normals, @@ -47,7 +48,7 @@ protected: private: mutable bool m_isLastVisible; - dp::TGlyphs m_glyphs; + strings::UniString m_text; ref_ptr m_textureManager; bool m_glyphsReady; }; diff --git a/drape_frontend/text_layout.cpp b/drape_frontend/text_layout.cpp index 62bc0298d1..4a2b59d8fa 100644 --- a/drape_frontend/text_layout.cpp +++ b/drape_frontend/text_layout.cpp @@ -2,6 +2,7 @@ #include "drape_frontend/map_shape.hpp" #include "drape_frontend/visual_params.hpp" +#include "drape/bidi.hpp" #include "drape/font_constants.hpp" #include @@ -25,7 +26,7 @@ public: void SetPenPosition(glsl::vec2 const & penOffset) {} - void operator() (dp::TextureManager::GlyphRegion const & glyph, dp::text::GlyphMetrics const &) + void operator() (dp::TextureManager::GlyphRegion const & glyph) { m2::RectF const & mask = glyph.GetTexRect(); @@ -58,14 +59,14 @@ public: m_isFirstGlyph = true; } - void operator()(dp::TextureManager::GlyphRegion const & glyphRegion, dp::text::GlyphMetrics const & metrics) + void operator()(dp::TextureManager::GlyphRegion const & glyph) { - if (!glyphRegion.IsValid()) + if (!glyph.IsValid()) return; - m2::PointF const pixelSize = glyphRegion.GetPixelSize() * m_textRatio; + m2::PointF const pixelSize = glyph.GetPixelSize() * m_textRatio; - float const xOffset = metrics.m_xOffset * m_textRatio; - float const yOffset = metrics.m_yOffset * m_textRatio; + float const xOffset = glyph.GetOffsetX() * m_textRatio; + float const yOffset = glyph.GetOffsetY() * m_textRatio; float const upVector = -static_cast(pixelSize.y) - yOffset; float const bottomVector = -yOffset; @@ -81,8 +82,7 @@ public: m_buffer.emplace_back(m_pivot, pixelPlusPen + glsl::vec2(xOffset, upVector)); m_buffer.emplace_back(m_pivot, pixelPlusPen + glsl::vec2(pixelSize.x + xOffset, bottomVector)); m_buffer.emplace_back(m_pivot, pixelPlusPen + glsl::vec2(pixelSize.x + xOffset, upVector)); - // TODO(AB): yAdvance is always zero for horizontal text layouts. - m_penPosition += glsl::vec2(metrics.m_xAdvance * m_textRatio, metrics.m_yAdvance * m_textRatio); + m_penPosition += glsl::vec2(glyph.GetAdvanceX() * m_textRatio, glyph.GetAdvanceY() * m_textRatio); } private: @@ -107,7 +107,7 @@ public: void SetPenPosition(glsl::vec2 const & penOffset) {} - void operator() (dp::TextureManager::GlyphRegion const & glyph, dp::text::GlyphMetrics const &) + void operator() (dp::TextureManager::GlyphRegion const & glyph) { m2::RectF const & mask = glyph.GetTexRect(); m_buffer.emplace_back(m_colorCoord, m_outlineCoord, glsl::ToVec2(mask.LeftTop())); @@ -122,70 +122,63 @@ protected: gpu::TTextOutlinedStaticVertexBuffer & m_buffer; }; -struct LineMetrics +void SplitText(strings::UniString & visText, buffer_vector & delimIndexes) { - size_t m_nextLineStartIndex; - float m_scaledLength; // In pixels. - float m_scaledHeight; // In pixels. -}; + size_t const count = visText.size(); + if (count > 15) + { + // split on two parts + typedef strings::UniString::iterator TIter; + auto const iMiddle = visText.begin() + count / 2; -// Scan longer shaped glyphs, and try to split them into two strings if a space glyph is present. -buffer_vector SplitText(float textScale, dp::GlyphFontAndId space, dp::text::TextMetrics const & str) -{ - // Add the whole line by default. - buffer_vector lines{{str.m_glyphs.size(), - textScale * str.m_lineWidthInPixels, textScale * str.m_maxLineHeightInPixels}}; + char constexpr delims[] = " \n\t"; + size_t constexpr delimsSize = sizeof(delims)/sizeof(delims[0]) - 1; // Do not count trailing string's zero. - size_t const count = str.m_glyphs.size(); - if (count <= 15) - return lines; + // find next delimiter after middle [m, e) + auto iNext = std::find_first_of(iMiddle, + visText.end(), + delims, delims + delimsSize); - auto const begin = str.m_glyphs.begin(); - auto const end = str.m_glyphs.end(); + // find last delimiter before middle [b, m) + auto iPrev = std::find_first_of(std::reverse_iterator(iMiddle), + std::reverse_iterator(visText.begin()), + delims, delims + delimsSize).base(); + // don't do split like this: + // xxxx + // xxxxxxxxxxxx + if (4 * std::distance(visText.begin(), iPrev) <= static_cast(count)) + iPrev = visText.end(); + else + --iPrev; - // Naive split on two parts using spaces as delimiters. - // Doesn't take into an account the width of glyphs/string. - auto const iMiddle = begin + count / 2; + // get the closest delimiter to the middle + if (iNext == visText.end() || + (iPrev != visText.end() && std::distance(iPrev, iMiddle) < std::distance(iMiddle, iNext))) + { + iNext = iPrev; + } - auto const isSpaceGlyph = [space](auto const & metrics){ return metrics.m_key == space; }; - // Find next delimiter after middle [m, e) - auto iNext = std::find_if(iMiddle, end, isSpaceGlyph); + // split string on 2 parts + if (iNext != visText.end()) + { + ASSERT(iNext != visText.begin(), ()); + TIter delimSymbol = iNext; + TIter secondPart = iNext + 1; - // Find last delimiter before middle [b, m) - auto iPrev = std::find_if(std::reverse_iterator(iMiddle), std::reverse_iterator(begin), isSpaceGlyph).base(); - // Don't split like this: - // xxxx - // xxxxxxxxxxxx - if (4 * (iPrev - begin) <= static_cast(count)) - iPrev = end; - else - --iPrev; + delimIndexes.push_back(static_cast(std::distance(visText.begin(), delimSymbol))); - // Get the closest space to the middle. - if (iNext == end || (iPrev != end && iMiddle - iPrev < iNext - iMiddle)) - iNext = iPrev; + if (secondPart != visText.end()) + { + strings::UniString result(visText.begin(), delimSymbol); + result.append(secondPart, visText.end()); + visText = result; + delimIndexes.push_back(visText.size()); + } + return; + } + } - if (iNext == end) - return lines; - - // Split string (actually, glyphs) into 2 parts. - ASSERT(iNext != begin, ()); - ASSERT(space == iNext->m_key, ()); - - auto const spaceIndex = iNext; - auto const afterSpace = iNext + 1; - ASSERT(afterSpace != end, ()); - - lines.push_back(LineMetrics{ - count, - textScale * std::accumulate(afterSpace, end, 0, [](auto acc, auto const & m){ return m.m_xAdvance + acc; }), - textScale * str.m_maxLineHeightInPixels}); - - // Update the first line too. - lines[0].m_nextLineStartIndex = afterSpace - begin; - auto const spaceWidth = textScale * spaceIndex->m_xAdvance; - lines[0].m_scaledLength -= lines[1].m_scaledLength + spaceWidth; - return lines; + delimIndexes.push_back(count); } class XLayouter @@ -201,10 +194,10 @@ public: if (m_anchor & dp::Left) return 0.0; - if (m_anchor & dp::Right) + else if (m_anchor & dp::Right) return -currentLength; - - return -(currentLength / 2.0f); + else + return -(currentLength / 2.0f); } private: @@ -234,6 +227,62 @@ private: float m_penOffset; }; +void CalculateOffsets(dp::Anchor anchor, float textRatio, + dp::TextureManager::TGlyphsBuffer const & glyphs, + buffer_vector const & delimIndexes, + buffer_vector, 2> & result, + m2::PointF & pixelSize, size_t & rowsCount) +{ + typedef std::pair TLengthAndHeight; + buffer_vector lengthAndHeight; + float maxLength = 0; + float summaryHeight = 0; + rowsCount = 0; + + size_t start = 0; + for (size_t index = 0; index < delimIndexes.size(); ++index) + { + size_t const end = delimIndexes[index]; + ASSERT_NOT_EQUAL(start, end, ()); + lengthAndHeight.emplace_back(0, 0); + auto & [length, height] = lengthAndHeight.back(); + for (size_t glyphIndex = start; glyphIndex < end && glyphIndex < glyphs.size(); ++glyphIndex) + { + dp::TextureManager::GlyphRegion const & glyph = glyphs[glyphIndex]; + if (!glyph.IsValid()) + continue; + + if (glyphIndex == start) + length -= glyph.GetOffsetX() * textRatio; + + length += glyph.GetAdvanceX() * textRatio; + + float yAdvance = glyph.GetAdvanceY(); + if (glyph.GetOffsetY() < 0) + yAdvance += glyph.GetOffsetY(); + + height = std::max(height, (glyph.GetPixelHeight() + yAdvance) * textRatio); + } + maxLength = std::max(maxLength, length); + summaryHeight += height; + if (height > 0.0f) + ++rowsCount; + start = end; + } + + ASSERT_EQUAL(delimIndexes.size(), lengthAndHeight.size(), ()); + + XLayouter const xL(anchor); + YLayouter yL(anchor, summaryHeight); + for (size_t index = 0; index < delimIndexes.size(); ++index) + { + auto const & [length, height] = lengthAndHeight[index]; + result.emplace_back(delimIndexes[index], glsl::vec2(xL(length, maxLength), yL(height))); + } + + pixelSize = m2::PointF(maxLength, summaryHeight); +} + double GetTextMinPeriod(double pixelTextLength) { double const vs = df::VisualParams::Instance().GetVisualScale(); @@ -242,71 +291,69 @@ double GetTextMinPeriod(double pixelTextLength) } } // namespace -ref_ptr TextLayout::GetMaskTexture() const +void TextLayout::Init(strings::UniString && text, float fontSize, ref_ptr textures) { - ASSERT(!m_glyphRegions.empty(), ()); -#ifdef DEBUG - ref_ptr tex = m_glyphRegions[0].GetTexture(); - for (GlyphRegion const & g : m_glyphRegions) - ASSERT(g.GetTexture() == tex, ()); -#endif - - return m_glyphRegions[0].GetTexture(); + m_text = std::move(text); + auto const & vpi = VisualParams::Instance(); + float const fontScale = static_cast(vpi.GetFontScale()); + m_textSizeRatio = fontSize * fontScale / dp::kBaseFontSizePixels; + textures->GetGlyphRegions(m_text, m_metrics); } -size_t TextLayout::GetGlyphCount() const +ref_ptr TextLayout::GetMaskTexture() const { - ASSERT_EQUAL(m_shapedGlyphs.m_glyphs.size(), m_glyphRegions.size(), ()); - return m_glyphRegions.size(); + ASSERT(!m_metrics.empty(), ()); +#ifdef DEBUG + ref_ptr tex = m_metrics[0].GetTexture(); + for (GlyphRegion const & g : m_metrics) + { + ASSERT(g.GetTexture() == tex, ()); + } +#endif + + return m_metrics[0].GetTexture(); +} + +uint32_t TextLayout::GetGlyphCount() const +{ + return static_cast(m_metrics.size()); } float TextLayout::GetPixelLength() const { - return m_shapedGlyphs.m_lineWidthInPixels * m_textSizeRatio; + return m_textSizeRatio * std::accumulate(m_metrics.begin(), m_metrics.end(), 0.0f, + [](double const & v, GlyphRegion const & glyph) -> float + { + return static_cast(v) + glyph.GetAdvanceX(); + }); } float TextLayout::GetPixelHeight() const { - return m_shapedGlyphs.m_maxLineHeightInPixels * m_textSizeRatio; + return m_textSizeRatio * dp::kBaseFontSizePixels; } -dp::TGlyphs TextLayout::GetGlyphs() const +strings::UniString const & TextLayout::GetText() const { - // TODO(AB): Can conversion to TGlyphs be avoided? - dp::TGlyphs glyphs; - glyphs.reserve(m_shapedGlyphs.m_glyphs.size()); - for (auto const & glyph : m_shapedGlyphs.m_glyphs) - glyphs.emplace_back(glyph.m_key); - return glyphs; + return m_text; } -StraightTextLayout::StraightTextLayout(std::string const & text, float fontSize, ref_ptr textures, - dp::Anchor anchor, bool forceNoWrap) +StraightTextLayout::StraightTextLayout(strings::UniString const & text, float fontSize, + ref_ptr textures, dp::Anchor anchor, bool forceNoWrap) { - ASSERT_EQUAL(std::string::npos, text.find('\n'), ("Multiline text is not expected", text)); + strings::UniString visibleText = bidi::log2vis(text); + // Possible if name has strange symbols only. + if (visibleText.empty()) + return; - m_textSizeRatio = fontSize * static_cast(VisualParams::Instance().GetFontScale()) / dp::kBaseFontSizePixels; - m_shapedGlyphs = textures->ShapeSingleTextLine(dp::kBaseFontSizePixels, text, &m_glyphRegions); + buffer_vector delimIndexes; + if (visibleText == text && !forceNoWrap) + SplitText(visibleText, delimIndexes); + else + delimIndexes.push_back(visibleText.size()); - // TODO(AB): Use ICU's BreakIterator to split text properly in different languages without spaces. - auto const lines = SplitText(m_textSizeRatio, textures->GetSpaceGlyph(), m_shapedGlyphs); - m_rowsCount = lines.size(); - - float summaryHeight = 0.; - float maxLength = 0; - for (auto const & line : lines) - { - summaryHeight += line.m_scaledHeight; - maxLength = std::max(maxLength, line.m_scaledLength); - } - - XLayouter const xL(anchor); - YLayouter yL(anchor, summaryHeight); - - for (auto const & l : lines) - m_offsets.emplace_back(l.m_nextLineStartIndex, glsl::vec2(xL(l.m_scaledLength, maxLength), yL(l.m_scaledHeight))); - - m_pixelSize = m2::PointF(maxLength, summaryHeight); + TBase::Init(std::move(visibleText), fontSize, textures); + CalculateOffsets(anchor, m_textSizeRatio, m_metrics, delimIndexes, m_offsets, m_pixelSize, m_rowsCount); } m2::PointF StraightTextLayout::GetSymbolBasedTextOffset(m2::PointF const & symbolSize, dp::Anchor textAnchor, @@ -347,7 +394,7 @@ void StraightTextLayout::CacheStaticGeometry(dp::TextureManager::ColorRegion con gpu::TTextStaticVertexBuffer & staticBuffer) const { TextGeometryGenerator staticGenerator(colorRegion, staticBuffer); - staticBuffer.reserve(4 * m_glyphRegions.size()); + staticBuffer.reserve(4 * m_metrics.size()); Cache(staticGenerator); } @@ -356,7 +403,7 @@ void StraightTextLayout::CacheStaticGeometry(dp::TextureManager::ColorRegion con gpu::TTextOutlinedStaticVertexBuffer & staticBuffer) const { TextOutlinedGeometryGenerator outlinedGenerator(colorRegion, outlineRegion, staticBuffer); - staticBuffer.reserve(4 * m_glyphRegions.size()); + staticBuffer.reserve(4 * m_metrics.size()); Cache(outlinedGenerator); } @@ -370,21 +417,15 @@ void StraightTextLayout::CacheDynamicGeometry(glsl::vec2 const & pixelOffset, gpu::TTextDynamicVertexBuffer & dynamicBuffer) const { StraightTextGeometryGenerator generator(m_pivot, pixelOffset, m_textSizeRatio, dynamicBuffer); - dynamicBuffer.reserve(4 * m_glyphRegions.size()); + dynamicBuffer.reserve(4 * m_metrics.size()); Cache(generator); } -PathTextLayout::PathTextLayout(m2::PointD const & tileCenter, std::string const & text, - float fontSize, ref_ptr textureManager) +PathTextLayout::PathTextLayout(m2::PointD const & tileCenter, strings::UniString const & text, + float fontSize, ref_ptr textures) : m_tileCenter(tileCenter) { - ASSERT_EQUAL(std::string::npos, text.find('\n'), ("Multiline text is not expected", text)); - - auto const fontScale = static_cast(VisualParams::Instance().GetFontScale()); - m_textSizeRatio = fontSize * fontScale / dp::kBaseFontSizePixels; - - // TODO(AB): StraightTextLayout used a logic to split a longer string into two strings. - m_shapedGlyphs = textureManager->ShapeSingleTextLine(dp::kBaseFontSizePixels, text, &m_glyphRegions); + Init(bidi::log2vis(text), fontSize, textures); } void PathTextLayout::CacheStaticGeometry(dp::TextureManager::ColorRegion const & colorRegion, @@ -392,18 +433,16 @@ void PathTextLayout::CacheStaticGeometry(dp::TextureManager::ColorRegion const & gpu::TTextOutlinedStaticVertexBuffer & staticBuffer) const { TextOutlinedGeometryGenerator gen(colorRegion, outlineRegion, staticBuffer); - staticBuffer.reserve(4 * m_glyphRegions.size()); - for (size_t i = 0; i < m_glyphRegions.size(); ++i) - gen(m_glyphRegions[i], m_shapedGlyphs.m_glyphs[i]); + staticBuffer.reserve(4 * m_metrics.size()); + std::for_each(m_metrics.begin(), m_metrics.end(), gen); } void PathTextLayout::CacheStaticGeometry(dp::TextureManager::ColorRegion const & colorRegion, gpu::TTextStaticVertexBuffer & staticBuffer) const { TextGeometryGenerator gen(colorRegion, staticBuffer); - staticBuffer.reserve(4 * m_glyphRegions.size()); - for (size_t i = 0; i < m_glyphRegions.size(); ++i) - gen(m_glyphRegions[i], m_shapedGlyphs.m_glyphs[i]); + staticBuffer.reserve(4 * m_metrics.size()); + std::for_each(m_metrics.begin(), m_metrics.end(), gen); } bool PathTextLayout::CacheDynamicGeometry(m2::Spline::iterator const & iter, float depth, @@ -429,22 +468,20 @@ bool PathTextLayout::CacheDynamicGeometry(m2::Spline::iterator const & iter, flo } m2::PointD const pxPivot = iter.m_pos; - buffer.resize(4 * m_glyphRegions.size()); + buffer.resize(4 * m_metrics.size()); glsl::vec4 const pivot(glsl::ToVec2(MapShape::ConvertToLocal(globalPivot, m_tileCenter, kShapeCoordScalar)), depth, 0.0f); - - ASSERT_EQUAL(m_glyphRegions.size(), m_shapedGlyphs.m_glyphs.size(), ()); - for (size_t i = 0; i < m_glyphRegions.size(); ++i) + static float const kEps = 1e-5f; + for (size_t i = 0; i < m_metrics.size(); ++i) { - auto const & glyph = m_shapedGlyphs.m_glyphs[i]; - m2::PointF const pxSize = m_glyphRegions[i].GetPixelSize() * m_textSizeRatio; - float const xAdvance = glyph.m_xAdvance * m_textSizeRatio; + GlyphRegion const & g = m_metrics[i]; + m2::PointF const pxSize = g.GetPixelSize() * m_textSizeRatio; + float const xAdvance = g.GetAdvanceX() * m_textSizeRatio; m2::PointD const baseVector = penIter.m_pos - pxPivot; m2::PointD const currentTangent = penIter.m_avrDir.Normalize(); - constexpr float kEps = 1e-5f; if (fabs(xAdvance) > kEps) penIter.Advance(advanceSign * xAdvance); m2::PointD const newTangent = penIter.m_avrDir.Normalize(); @@ -453,8 +490,8 @@ bool PathTextLayout::CacheDynamicGeometry(m2::Spline::iterator const & iter, flo glsl::vec2 const normal = glsl::vec2(-tangent.y, tangent.x); glsl::vec2 const formingVector = glsl::ToVec2(baseVector) + halfFontSize * normal; - float const xOffset = glyph.m_xOffset * m_textSizeRatio; - float const yOffset = glyph.m_yOffset * m_textSizeRatio; + float const xOffset = g.GetOffsetX() * m_textSizeRatio; + float const yOffset = g.GetOffsetY() * m_textSizeRatio; float const upVector = - (pxSize.y + yOffset); float const bottomVector = - yOffset; @@ -479,7 +516,7 @@ bool PathTextLayout::CacheDynamicGeometry(m2::Spline::iterator const & iter, flo double PathTextLayout::CalculateTextLength(double textPixelLength) { // We leave a little space on each side of the text. - double constexpr kTextBorder = 4.0; + double const kTextBorder = 4.0; return kTextBorder + textPixelLength; } @@ -492,7 +529,7 @@ void PathTextLayout::CalculatePositions(double splineLength, double splineScaleT if (textLength > splineLength * 2.0f * splineScaleToPixel) return; - double constexpr kPathLengthScalar = 0.75; + double const kPathLengthScalar = 0.75; double const pathLength = kPathLengthScalar * splineScaleToPixel * splineLength; double const minPeriodSize = GetTextMinPeriod(textLength); double const twoTextsAndEmpty = minPeriodSize + textLength; diff --git a/drape_frontend/text_layout.hpp b/drape_frontend/text_layout.hpp index b5f5be2273..f791389792 100644 --- a/drape_frontend/text_layout.hpp +++ b/drape_frontend/text_layout.hpp @@ -14,7 +14,8 @@ #include "base/string_utils.hpp" #include "base/buffer_vector.hpp" -#include +#include +#include #include namespace dp @@ -29,17 +30,19 @@ class TextLayout public: virtual ~TextLayout() = default; + void Init(strings::UniString && text, float fontSize, ref_ptr textures); + ref_ptr GetMaskTexture() const; - size_t GetGlyphCount() const; + uint32_t GetGlyphCount() const; float GetPixelLength() const; float GetPixelHeight() const; - dp::TGlyphs GetGlyphs() const; + strings::UniString const & GetText() const; protected: using GlyphRegion = dp::TextureManager::GlyphRegion; - dp::TextureManager::TGlyphsBuffer m_glyphRegions; - dp::text::TextMetrics m_shapedGlyphs; + dp::TextureManager::TGlyphsBuffer m_metrics; + strings::UniString m_text; float m_textSizeRatio = 0.0f; }; @@ -47,7 +50,7 @@ class StraightTextLayout : public TextLayout { using TBase = TextLayout; public: - StraightTextLayout(std::string const & text, float fontSize, + StraightTextLayout(strings::UniString const & text, float fontSize, ref_ptr textures, dp::Anchor anchor, bool forceNoWrap); void CacheStaticGeometry(dp::TextureManager::ColorRegion const & colorRegion, @@ -77,8 +80,8 @@ private: for (auto const & [endOffset, coordinates] : m_offsets) { generator.SetPenPosition(coordinates); - for (size_t index = beginOffset; index < endOffset && index < m_glyphRegions.size(); ++index) - generator(m_glyphRegions[index], m_shapedGlyphs.m_glyphs[index]); + for (size_t index = beginOffset; index < endOffset && index < m_metrics.size(); ++index) + generator(m_metrics[index]); beginOffset = endOffset; } } @@ -94,7 +97,7 @@ class PathTextLayout : public TextLayout { using TBase = TextLayout; public: - PathTextLayout(m2::PointD const & tileCenter, std::string const & text, + PathTextLayout(m2::PointD const & tileCenter, strings::UniString const & text, float fontSize, ref_ptr textures); void CacheStaticGeometry(dp::TextureManager::ColorRegion const & colorRegion, diff --git a/drape_frontend/text_shape.cpp b/drape_frontend/text_shape.cpp index c5fc60a262..6a230322c4 100644 --- a/drape_frontend/text_shape.cpp +++ b/drape_frontend/text_shape.cpp @@ -12,6 +12,8 @@ #include "drape/overlay_handle.hpp" #include "drape/texture_manager.hpp" +#include "base/string_utils.hpp" + #include #include @@ -24,12 +26,12 @@ class StraightTextHandle : public TextHandle using TBase = TextHandle; public: - StraightTextHandle(dp::OverlayID const & id, dp::TGlyphs && glyphMetrics, + StraightTextHandle(dp::OverlayID const & id, strings::UniString const & text, dp::Anchor anchor, glsl::vec2 const & pivot, glsl::vec2 const & pxSize, glsl::vec2 const & offset, uint64_t priority, ref_ptr textureManager, bool isOptional, gpu::TTextDynamicVertexBuffer && normals, int minVisibleScale, bool isBillboard) - : TextHandle(id, std::move(glyphMetrics), anchor, priority, textureManager, std::move(normals), minVisibleScale, + : TextHandle(id, text, anchor, priority, textureManager, std::move(normals), minVisibleScale, isBillboard) , m_pivot(glsl::ToPoint(pivot)) , m_offset(glsl::ToPoint(offset)) @@ -234,7 +236,8 @@ void TextShape::Draw(ref_ptr context, ref_ptr auto const & titleDecl = m_params.m_titleDecl; ASSERT(!titleDecl.m_primaryText.empty(), ()); - StraightTextLayout primaryLayout(titleDecl.m_primaryText, titleDecl.m_primaryTextFont.m_size, + StraightTextLayout primaryLayout( + strings::MakeUniString(titleDecl.m_primaryText), titleDecl.m_primaryTextFont.m_size, textures, titleDecl.m_anchor, titleDecl.m_forceNoWrap); @@ -243,7 +246,7 @@ void TextShape::Draw(ref_ptr context, ref_ptr if (auto const y = primaryLayout.GetPixelSize().y; y >= m_params.m_limits.y) { float const newFontSize = titleDecl.m_primaryTextFont.m_size * m_params.m_limits.y / y; - primaryLayout = StraightTextLayout(titleDecl.m_primaryText, newFontSize, + primaryLayout = StraightTextLayout(strings::MakeUniString(titleDecl.m_primaryText), newFontSize, textures, titleDecl.m_anchor, titleDecl.m_forceNoWrap); } } @@ -257,7 +260,7 @@ void TextShape::Draw(ref_ptr context, ref_ptr } else { - StraightTextLayout secondaryLayout{titleDecl.m_secondaryText, + StraightTextLayout secondaryLayout{strings::MakeUniString(titleDecl.m_secondaryText), titleDecl.m_secondaryTextFont.m_size, textures, titleDecl.m_anchor, titleDecl.m_forceNoWrap}; if (secondaryLayout.GetGlyphCount() > 0) @@ -288,14 +291,14 @@ void TextShape::DrawSubString(ref_ptr context, StraightText : m_params.m_titleDecl.m_secondaryTextFont.m_outlineColor; if (outlineColor == dp::Color::Transparent()) - DrawSubStringPlain(context, layout, font, batcher, textures, isPrimary, isOptional); + DrawSubStringPlain(context, layout, font, baseOffset, batcher, textures, isPrimary, isOptional); else - DrawSubStringOutlined(context, layout, font, batcher, textures, isPrimary, isOptional); + DrawSubStringOutlined(context, layout, font, baseOffset, batcher, textures, isPrimary, isOptional); } void TextShape::DrawSubStringPlain(ref_ptr context, StraightTextLayout const & layout, dp::FontDecl const & font, - ref_ptr batcher, + glm::vec2 const & baseOffset, ref_ptr batcher, ref_ptr textures, bool isPrimary, bool isOptional) const { @@ -325,7 +328,7 @@ void TextShape::DrawSubStringPlain(ref_ptr context, dp::OverlayID overlayId(m_params.m_featureId, m_params.m_markId, m_tileCoords, m_textIndex); drape_ptr handle = make_unique_dp(overlayId, - layout.GetGlyphs(), + layout.GetText(), m_params.m_titleDecl.m_anchor, glsl::ToVec2(m_basePoint), glsl::vec2(pixelSize.x, pixelSize.y), @@ -358,7 +361,7 @@ void TextShape::DrawSubStringPlain(ref_ptr context, void TextShape::DrawSubStringOutlined(ref_ptr context, StraightTextLayout const & layout, dp::FontDecl const & font, - ref_ptr batcher, + glm::vec2 const & baseOffset, ref_ptr batcher, ref_ptr textures, bool isPrimary, bool isOptional) const { @@ -387,7 +390,7 @@ void TextShape::DrawSubStringOutlined(ref_ptr context, dp::OverlayID overlayId(m_params.m_featureId, m_params.m_markId, m_tileCoords, m_textIndex); drape_ptr handle = make_unique_dp(overlayId, - layout.GetGlyphs(), + layout.GetText(), m_params.m_titleDecl.m_anchor, glsl::ToVec2(m_basePoint), glsl::vec2(pixelSize.x, pixelSize.y), diff --git a/drape_frontend/text_shape.hpp b/drape_frontend/text_shape.hpp index b4cbbb0680..87676032ac 100644 --- a/drape_frontend/text_shape.hpp +++ b/drape_frontend/text_shape.hpp @@ -39,13 +39,13 @@ private: bool isPrimary, bool isOptional) const; void DrawSubStringPlain(ref_ptr context, StraightTextLayout const & layout, - dp::FontDecl const & font, + dp::FontDecl const & font, glsl::vec2 const & baseOffset, ref_ptr batcher, ref_ptr textures, bool isPrimary, bool isOptional) const; void DrawSubStringOutlined(ref_ptr context, StraightTextLayout const & layout, dp::FontDecl const & font, - ref_ptr batcher, + glsl::vec2 const & baseOffset, ref_ptr batcher, ref_ptr textures, bool isPrimary, bool isOptional) const; diff --git a/drape_frontend/transit_scheme_builder.cpp b/drape_frontend/transit_scheme_builder.cpp index 15c6ff5d8b..51a0a32b30 100644 --- a/drape_frontend/transit_scheme_builder.cpp +++ b/drape_frontend/transit_scheme_builder.cpp @@ -210,7 +210,8 @@ void PlaceTitles(std::vector & titles, float textSize, size_t summaryRowsCount = 0; for (auto & name : titles) { - StraightTextLayout layout(name.m_text, textSize, textures, dp::Left, false /* forceNoWrap */); + df::StraightTextLayout layout(strings::MakeUniString(name.m_text), textSize, + textures, dp::Left, false /* forceNoWrap */); name.m_pixelSize = layout.GetPixelSize() + m2::PointF(4.0f * vs, 4.0f * vs); name.m_rowsCount = layout.GetRowsCount(); summaryRowsCount += layout.GetRowsCount(); diff --git a/drape_frontend/user_mark_shapes.cpp b/drape_frontend/user_mark_shapes.cpp index 084486274f..3b45564ddc 100644 --- a/drape_frontend/user_mark_shapes.cpp +++ b/drape_frontend/user_mark_shapes.cpp @@ -65,6 +65,15 @@ void AlignVertical(float halfHeight, dp::Anchor anchor, glsl::vec2 & up, glsl::v dp::Bottom, up, down); } +TextLayout MakePrimaryTextLayout(dp::TitleDecl const & titleDecl, ref_ptr textures) +{ + dp::FontDecl const & fontDecl = titleDecl.m_primaryTextFont; + auto const vs = static_cast(df::VisualParams::Instance().GetVisualScale()); + TextLayout textLayout; + textLayout.Init(strings::MakeUniString(titleDecl.m_primaryText), fontDecl.m_size * vs,textures); + return textLayout; +} + struct UserPointVertex : public gpu::BaseVertex { using TNormalAndAnimateOrZ = glsl::vec3; @@ -122,7 +131,7 @@ m2::PointF GetSymbolOffsetForZoomLevel(ref_ptr sym CHECK_LESS_OR_EQUAL(tileKey.m_zoomLevel, scales::UPPER_STYLE_SCALE, ()); auto const offsetIndex = static_cast(tileKey.m_zoomLevel - 1); - return symbolOffsets->operator[](offsetIndex); + return symbolOffsets->at(offsetIndex); } void GenerateColoredSymbolShapes(ref_ptr context, ref_ptr textures, @@ -139,13 +148,10 @@ void GenerateColoredSymbolShapes(ref_ptr context, ref_ptroperator[](0); - auto const textMetrics = textures->ShapeSingleTextLine(dp::kBaseFontSizePixels, titleDecl.m_primaryText, nullptr); - auto const fontScale = static_cast(VisualParams::Instance().GetFontScale()); - float const textRatio = titleDecl.m_primaryTextFont.m_size * fontScale / dp::kBaseFontSizePixels; - - sizeInc.x = textMetrics.m_lineWidthInPixels * textRatio; - sizeInc.y = textMetrics.m_maxLineHeightInPixels * textRatio; + auto const & titleDecl = renderInfo.m_titleDecl->at(0); + auto textLayout = MakePrimaryTextLayout(titleDecl, textures); + sizeInc.x = textLayout.GetPixelLength(); + sizeInc.y = textLayout.GetPixelHeight(); if (renderInfo.m_symbolSizes != nullptr) { diff --git a/generator/feature_builder.cpp b/generator/feature_builder.cpp index 01b1042c60..6bdf78e0cd 100644 --- a/generator/feature_builder.cpp +++ b/generator/feature_builder.cpp @@ -222,7 +222,7 @@ bool FeatureBuilder::PreSerialize() auto const & types = GetTypes(); if (ftypes::IsMotorwayJunctionChecker::Instance()(types) || (m_params.name.IsEmpty() && - (ftypes::IsPostPoiChecker::Instance()(types) || + (ftypes::IsPostBoxChecker::Instance()(types) || ftypes::IsRailwaySubwayEntranceChecker::Instance()(types) || ftypes::IsEntranceChecker::Instance()(types) || ftypes::IsAerowayGateChecker::Instance()(types) || diff --git a/generator/osm2meta.cpp b/generator/osm2meta.cpp index 55339e31a0..1d0a89f715 100644 --- a/generator/osm2meta.cpp +++ b/generator/osm2meta.cpp @@ -108,7 +108,7 @@ std::string MetadataTagProcessorImpl::ValidateAndFormat_operator(std::string con ftypes::IsMoneyExchangeChecker::Instance()(t) || ftypes::IsFuelStationChecker::Instance()(t) || ftypes::IsRecyclingCentreChecker::Instance()(t) || - ftypes::IsPostPoiChecker::Instance()(t) || + ftypes::IsPostOfficeChecker::Instance()(t) || ftypes::IsCarSharingChecker::Instance()(t) || ftypes::IsCarRentalChecker::Instance()(t) || ftypes::IsBicycleRentalChecker::Instance()(t) || diff --git a/generator/osm2type.cpp b/generator/osm2type.cpp index 84fb9992ec..2d98dcaa5c 100644 --- a/generator/osm2type.cpp +++ b/generator/osm2type.cpp @@ -594,24 +594,21 @@ string DetermineSurfaceAndHighwayType(OsmElement * p) // According to https://wiki.openstreetmap.org/wiki/Key:surface static base::StringIL pavedSurfaces = { - "asphalt", "cobblestone", "chipseal", "concrete", "grass_paver", "stone", - "metal", "paved", "paving_stones", "sett", "brick", "bricks", "unhewn_cobblestone", "wood" + "asphalt", "cobblestone", "chipseal", "concrete", + "metal", "paved", "paving_stones", "sett", "unhewn_cobblestone", "wood" }; // All not explicitly listed surface types are considered unpaved good, e.g. "compacted", "fine_gravel". static base::StringIL badSurfaces = { - "cobblestone", "dirt", "earth", "soil", "grass", "gravel", "ground", "metal", "mud", "rock", "stone", "unpaved", - "pebblestone", "sand", "sett", "brick", "bricks", "snow", "stepping_stones", "unhewn_cobblestone", - "grass_paver", "wood", "woodchips" + "cobblestone", "dirt", "earth", "grass", "gravel", "ground", "metal", "mud", "rock", "unpaved", + "pebblestone", "sand", "sett", "snow", "stepping_stones", "unhewn_cobblestone", "wood", "woodchips" }; static base::StringIL veryBadSurfaces = { - "dirt", "earth", "soil", "grass", "ground", "mud", "rock", "sand", "snow", + "dirt", "earth", "grass", "ground", "mud", "rock", "sand", "snow", "stepping_stones", "woodchips" }; - // surface=tartan/artificial_turf/clay are not used for highways (but for sport pitches etc). - static base::StringIL veryBadSmoothness = { "very_bad", "horrible", "very_horrible", "impassable", "robust_wheels", "high_clearance", "off_road_wheels", "rough" @@ -650,6 +647,9 @@ string DetermineSurfaceAndHighwayType(OsmElement * p) static base::StringIL goodPathSmoothness = { "excellent", "good", "very_good", "intermediate" }; + static base::StringIL gravelSurface = { + "gravel", "fine_gravel", "pebblestone" + }; bool const hasQuality = !smoothness.empty() || !trackGrade.empty(); bool const isGood = (smoothness.empty() || Has(goodPathSmoothness, smoothness)) && (trackGrade.empty() || trackGrade == "grade1" || trackGrade == "grade2"); @@ -660,11 +660,11 @@ string DetermineSurfaceAndHighwayType(OsmElement * p) (p->HasTag("lit") && !p->HasTag("lit", "no")); bool isFormed = !surface.empty() && Has(pavedSurfaces, surface); - // Treat "compacted" and "fine_gravel" as formed when in good or default quality. - if ((surface == "compacted" || surface == "fine_gravel") && isGood) + // Treat "compacted" as formed when in good or default quality. + if (surface == "compacted" && isGood) isFormed = true; - // Treat pebble/gravel surfaces as formed only when it has urban tags or a certain good quality and no trail tags. - if ((surface == "gravel" || surface == "pebblestone") && isGood && (hasUrbanTags || (hasQuality && !hasTrailTags))) + // Treat "gravel"-like surfaces as formed only when it has urban tags or a certain good quality and no trail tags. + if (Has(gravelSurface, surface) && isGood && (hasUrbanTags || (hasQuality && !hasTrailTags))) isFormed = true; auto const ConvertTo = [&](string const & newType) diff --git a/generator/search_index_builder.cpp b/generator/search_index_builder.cpp index 03d66fc05a..9e270fa0b0 100644 --- a/generator/search_index_builder.cpp +++ b/generator/search_index_builder.cpp @@ -254,7 +254,6 @@ template bool InsertPostcodes(FeatureType & f, FnT && fn) { using namespace search; - // PostBox only, not IsPostPoiChecker? auto const & postBoxChecker = ftypes::IsPostBoxChecker::Instance(); auto const postcode = f.GetMetadata(feature::Metadata::FMD_POSTCODE); diff --git a/indexer/ftypes_matcher.cpp b/indexer/ftypes_matcher.cpp index a7bd1e2d6c..7cb9f873e6 100644 --- a/indexer/ftypes_matcher.cpp +++ b/indexer/ftypes_matcher.cpp @@ -210,11 +210,10 @@ IsPostBoxChecker::IsPostBoxChecker() m_types.push_back(c.GetTypeByPath({"amenity", "post_box"})); } -IsPostPoiChecker::IsPostPoiChecker() +IsPostOfficeChecker::IsPostOfficeChecker() { Classificator const & c = classif(); - for (char const * val : {"post_office", "post_box", "parcel_locker"}) - m_types.push_back(c.GetTypeByPath({"amenity", val})); + m_types.push_back(c.GetTypeByPath({"amenity", "post_office"})); } IsFuelStationChecker::IsFuelStationChecker() diff --git a/indexer/ftypes_matcher.hpp b/indexer/ftypes_matcher.hpp index 899cf694a9..862da7c835 100644 --- a/indexer/ftypes_matcher.hpp +++ b/indexer/ftypes_matcher.hpp @@ -83,12 +83,12 @@ public: DECLARE_CHECKER_INSTANCE(IsPostBoxChecker); }; -class IsPostPoiChecker : public BaseChecker +class IsPostOfficeChecker : public BaseChecker { - IsPostPoiChecker(); + IsPostOfficeChecker(); public: - DECLARE_CHECKER_INSTANCE(IsPostPoiChecker); + DECLARE_CHECKER_INSTANCE(IsPostOfficeChecker); }; class IsFuelStationChecker : public BaseChecker diff --git a/indexer/map_object.cpp b/indexer/map_object.cpp index dd19170387..5cca6e0cf0 100644 --- a/indexer/map_object.cpp +++ b/indexer/map_object.cpp @@ -85,7 +85,7 @@ std::string_view MapObject::GetPostcode() const return m_metadata.Get(MetadataID::FMD_POSTCODE); } -std::string MapObject::GetLocalizedType() const +string MapObject::GetLocalizedType() const { ASSERT(!m_types.Empty(), ()); feature::TypesHolder copy(m_types); @@ -94,36 +94,6 @@ std::string MapObject::GetLocalizedType() const return platform::GetLocalizedTypeName(classif().GetReadableObjectName(copy.GetBestType())); } -std::string MapObject::GetAllLocalizedTypes() const -{ - ASSERT(!m_types.Empty(), ()); - feature::TypesHolder copy(m_types); - copy.SortBySpec(); - - auto const & isPoi = ftypes::IsPoiChecker::Instance(); - - std::ostringstream oss; - bool isFirst = true; - for (auto const type : copy) - { - // Ignore types that are not POI - // Ignore general types that have no subtype - // But always show the first/main type - if (!isFirst && (!isPoi(type) || ftype::GetLevel(type) == 1)) - continue; - - // Add fields separator between types - if (isFirst) - isFirst = false; - else - oss << feature::kFieldsSeparator; - - oss << platform::GetLocalizedTypeName(classif().GetReadableObjectName(type)); - } - - return oss.str(); -} - std::string_view MapObject::GetMetadata(MetadataID type) const { return m_metadata.Get(type); diff --git a/indexer/map_object.hpp b/indexer/map_object.hpp index 2be19e6eaa..98e912c659 100644 --- a/indexer/map_object.hpp +++ b/indexer/map_object.hpp @@ -103,11 +103,8 @@ public: void AssignMetadata(feature::Metadata & dest) const { dest = m_metadata; } protected: - /// @returns "the best" single type to display in UI. + /// @returns "the best" type to display in UI. std::string GetLocalizedType() const; - - /// @returns all localized POI types separated by kFieldsSeparator to display in UI. - std::string GetAllLocalizedTypes() const; FeatureID m_featureID; m2::PointD m_mercator; diff --git a/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.h b/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.h index 8d0948f0de..75f71ca33a 100644 --- a/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.h +++ b/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.h @@ -36,7 +36,6 @@ NS_SWIFT_NAME(BookmarksManager) - (BOOL)areBookmarksLoaded; - (void)loadBookmarks; -- (void)loadBookmarkFile:(NSURL *)url; - (void)reloadCategoryAtFilePath:(NSString *)filePath; - (void)deleteCategoryAtFilePath:(NSString *)filePath; diff --git a/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.mm b/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.mm index 907155a415..104f406f76 100644 --- a/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.mm +++ b/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.mm @@ -203,11 +203,6 @@ static KmlFileType convertFileTypeToCore(MWMKmlFileType fileType) { self.bm.LoadBookmarks(); } -- (void)loadBookmarkFile:(NSURL *)url -{ - self.bm.LoadBookmark(url.path.UTF8String, false /* isTemporaryFile */); -} - - (void)reloadCategoryAtFilePath:(NSString *)filePath { self.bm.ReloadBookmark(filePath.UTF8String); diff --git a/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.h b/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.h index 63177d65c5..96806e9add 100644 --- a/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.h +++ b/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.h @@ -24,7 +24,7 @@ NS_SWIFT_NAME(FrameworkHelper) + (void)zoomMap:(MWMZoomMode)mode; + (void)moveMap:(UIOffset)offset; + (void)scrollMap:(double)distanceX :(double) distanceY; -+ (void)deactivateMapSelection; ++ (void)deactivateMapSelection:(BOOL)notifyUI NS_SWIFT_NAME(deactivateMapSelection(notifyUI:)); + (void)switchMyPositionMode; + (void)stopLocationFollow; + (NSArray *)obtainLastSearchQueries; diff --git a/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.mm b/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.mm index ff915d93a7..a43f83c691 100644 --- a/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.mm +++ b/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.mm @@ -116,8 +116,8 @@ GetFramework().Scroll(distanceX, distanceY); } -+ (void)deactivateMapSelection { - GetFramework().DeactivateMapSelection(); ++ (void)deactivateMapSelection:(BOOL)notifyUI { + GetFramework().DeactivateMapSelection(notifyUI); } + (void)switchMyPositionMode { diff --git a/iphone/Maps/Bookmarks/BookmarksCoordinator.swift b/iphone/Maps/Bookmarks/BookmarksCoordinator.swift index 19ea1d6b3d..81f38405a5 100644 --- a/iphone/Maps/Bookmarks/BookmarksCoordinator.swift +++ b/iphone/Maps/Bookmarks/BookmarksCoordinator.swift @@ -68,7 +68,7 @@ import UIKit animations: { navigationController.setViewControllers(controllers, animated: false) }, completion: nil) - FrameworkHelper.deactivateMapSelection() + FrameworkHelper.deactivateMapSelection(notifyUI: true) self.bookmarksControllers = nil case .closed: navigationController.popToRootViewController(animated: true) diff --git a/iphone/Maps/Bookmarks/Categories/Actions/BMCActionsCell.xib b/iphone/Maps/Bookmarks/Categories/Actions/BMCActionsCell.xib index c0c1d5ac0f..528edcbf40 100644 --- a/iphone/Maps/Bookmarks/Categories/Actions/BMCActionsCell.xib +++ b/iphone/Maps/Bookmarks/Categories/Actions/BMCActionsCell.xib @@ -20,7 +20,7 @@ - + diff --git a/iphone/Maps/Bookmarks/Categories/BMCModels.swift b/iphone/Maps/Bookmarks/Categories/BMCModels.swift index c7d4c934e8..a3a7aa4099 100644 --- a/iphone/Maps/Bookmarks/Categories/BMCModels.swift +++ b/iphone/Maps/Bookmarks/Categories/BMCModels.swift @@ -9,7 +9,6 @@ protocol BMCModel {} enum BMCAction: BMCModel { case create case exportAll - case `import` } extension BMCAction { @@ -19,8 +18,6 @@ extension BMCAction { return L("bookmarks_create_new_group") case .exportAll: return L("bookmarks_export") - case .import: - return L("bookmarks_import") } } @@ -30,8 +27,6 @@ extension BMCAction { return UIImage(named: "ic24PxAddCopy")! case .exportAll: return UIImage(named: "ic24PxShare")! - case .import: - return UIImage(named: "ic24PxImport")! } } } diff --git a/iphone/Maps/Bookmarks/Categories/BMCView/BMCViewController.swift b/iphone/Maps/Bookmarks/Categories/BMCView/BMCViewController.swift index 4489d6991f..51fbd45775 100644 --- a/iphone/Maps/Bookmarks/Categories/BMCView/BMCViewController.swift +++ b/iphone/Maps/Bookmarks/Categories/BMCView/BMCViewController.swift @@ -99,12 +99,6 @@ final class BMCViewController: MWMViewController { } } - private func showImportDialog() { - DocumentPicker.shared.present(from: self) { [viewModel] urls in - viewModel?.importCategories(from: urls) - } - } - private func openCategorySettings(category: BookmarkGroup) { let settingsController = CategorySettingsViewController(bookmarkGroup: BookmarksManager.shared().category(withId: category.categoryId)) settingsController.delegate = self @@ -274,7 +268,6 @@ extension BMCViewController: UITableViewDelegate { switch viewModel.action(at: indexPath.row) { case .create: createNewCategory() case .exportAll: shareAllCategories(anchor: tableView.cellForRow(at: indexPath)) - case .import: showImportDialog() } default: assertionFailure() diff --git a/iphone/Maps/Bookmarks/Categories/BMCViewModel/BMCDefaultViewModel.swift b/iphone/Maps/Bookmarks/Categories/BMCViewModel/BMCDefaultViewModel.swift index 8097d8cf8a..69195c361b 100644 --- a/iphone/Maps/Bookmarks/Categories/BMCViewModel/BMCDefaultViewModel.swift +++ b/iphone/Maps/Bookmarks/Categories/BMCViewModel/BMCDefaultViewModel.swift @@ -33,7 +33,6 @@ final class BMCDefaultViewModel: NSObject { private func setActions() { actions = [.create] - actions.append(.import) if !manager.areAllCategoriesEmpty() { actions.append(.exportAll) } @@ -142,11 +141,6 @@ extension BMCDefaultViewModel { manager.shareAllCategories(completion: handler) } - func importCategories(from urls: [URL]) { - // TODO: Refactor this call when the multiple files parsing support will be added to the bookmark_manager. - urls.forEach(manager.loadBookmarkFile(_:)) - } - func finishShareCategory() { manager.finishShareCategory() } diff --git a/iphone/Maps/Categories/UIColor+MapsMeColor.h b/iphone/Maps/Categories/UIColor+MapsMeColor.h index 56a295c439..ce0aac4d63 100644 --- a/iphone/Maps/Categories/UIColor+MapsMeColor.h +++ b/iphone/Maps/Categories/UIColor+MapsMeColor.h @@ -36,6 +36,8 @@ NS_ASSUME_NONNULL_BEGIN + (void)setNightMode:(BOOL)mode; + (BOOL)isNightMode; +- (UIColor *)opposite; + @end NS_ASSUME_NONNULL_END diff --git a/iphone/Maps/Categories/UIColor+MapsMeColor.m b/iphone/Maps/Categories/UIColor+MapsMeColor.m index b59ea90fbe..c9a9b6759e 100644 --- a/iphone/Maps/Categories/UIColor+MapsMeColor.m +++ b/iphone/Maps/Categories/UIColor+MapsMeColor.m @@ -3,9 +3,110 @@ #import "SwiftBridge.h" static BOOL isNightMode = NO; +static NSDictionary *day; +static NSDictionary *night; @implementation UIColor (MapsMeColor) ++ (void)load { + day = @{ + @"primaryDark" : + [UIColor colorWithRed:scaled(24.) green:scaled(128) blue:scaled(68.) alpha:alpha100], + @"primary" : + [UIColor colorWithRed:scaled(32.) green:scaled(152.) blue:scaled(82.) alpha:alpha100], + @"secondary" : [UIColor colorWithRed:scaled(45) green:scaled(137) blue:scaled(83) alpha:alpha100], + // Light green color + @"primaryLight" : + [UIColor colorWithRed:scaled(36.) green:scaled(180.) blue:scaled(98.) alpha:alpha100], + @"menuBackground" : [UIColor colorWithWhite:1. alpha:alpha80], + @"downloadBadgeBackground" : + [UIColor colorWithRed:scaled(255.) green:scaled(55.) blue:scaled(35.) alpha:alpha100], + // Background color && press color + @"pressBackground" : + [UIColor colorWithRed:scaled(245.) green:scaled(245.) blue:scaled(245.) alpha:alpha100], + // Red color (use for status closed in place page) + @"red" : [UIColor colorWithRed:scaled(230.) green:scaled(15.) blue:scaled(35.) alpha:alpha100], + @"errorPink" : + [UIColor colorWithRed:scaled(246.) green:scaled(60.) blue:scaled(51.) alpha:alpha12], + // Orange color (use for status 15 min in place page) + @"orange" : [UIColor colorWithRed:1. green:scaled(120.) blue:scaled(5.) alpha:alpha100], + // Blue color (use for links and phone numbers) + @"linkBlue" : + [UIColor colorWithRed:scaled(30.) green:scaled(150.) blue:scaled(240.) alpha:alpha100], + @"linkBlueHighlighted" : + [UIColor colorWithRed:scaled(30.) green:scaled(150.) blue:scaled(240.) alpha:alpha30], + @"linkBlueDark" : + [UIColor colorWithRed:scaled(25.) green:scaled(135.) blue:scaled(215.) alpha:alpha100], + @"buttonRed" : + [UIColor colorWithRed:scaled(244.) green:scaled(67.) blue:scaled(67.) alpha:alpha100], + @"buttonRedHighlighted" : + [UIColor colorWithRed:scaled(183.) green:scaled(28.) blue:scaled(28.) alpha:alpha100], + @"blackPrimaryText" : [UIColor colorWithWhite:0. alpha:alpha87], + @"blackSecondaryText" : [UIColor colorWithWhite:0. alpha:alpha54], + @"blackHintText" : [UIColor colorWithWhite:0. alpha:alpha26], + @"blackDividers" : [UIColor colorWithWhite:0. alpha:alpha12], + @"white" : [UIColor colorWithWhite:1. alpha:alpha100], + @"whiteSecondaryText" : [UIColor colorWithWhite:1. alpha:alpha54], + @"whiteHintText" : [UIColor colorWithWhite:1. alpha:alpha30], + @"buttonDisabledBlueText" : + [UIColor colorWithRed:scaled(3.) green:scaled(122.) blue:scaled(255.) alpha:alpha26], + @"alertBackground" : [UIColor colorWithWhite:1. alpha:alpha90], + @"blackOpaque" : [UIColor colorWithWhite:0. alpha:alpha04], + @"toastBackground" : [UIColor colorWithWhite:1. alpha:alpha87], + @"statusBarBackground" : [UIColor colorWithWhite:1. alpha:alpha36], + @"border" : [UIColor colorWithWhite:0. alpha:alpha04], + }; + + night = @{ + @"primaryDark": + [UIColor colorWithRed:scaled(25.) green:scaled(30) blue:scaled(35.) alpha:alpha100], + @"primary": [UIColor colorWithRed:scaled(45.) green:scaled(50.) blue:scaled(55.) alpha:alpha100], + @"secondary": [UIColor colorWithRed:scaled(0x25) green:scaled(0x28) blue:scaled(0x2b) alpha:alpha100], + // Light green color + @"primaryLight": + [UIColor colorWithRed:scaled(65.) green:scaled(70.) blue:scaled(75.) alpha:alpha100], + @"menuBackground": + [UIColor colorWithRed:scaled(45.) green:scaled(50.) blue:scaled(55.) alpha:alpha80], + @"downloadBadgeBackground": + [UIColor colorWithRed:scaled(230.) green:scaled(70.) blue:scaled(60.) alpha:alpha100], + // Background color && press color + @"pressBackground": + [UIColor colorWithRed:scaled(50.) green:scaled(54.) blue:scaled(58.) alpha:alpha100], + // Red color (use for status closed in place page) + @"red": [UIColor colorWithRed:scaled(230.) green:scaled(70.) blue:scaled(60.) alpha:alpha100], + @"errorPink": + [UIColor colorWithRed:scaled(246.) green:scaled(60.) blue:scaled(51.) alpha:alpha26], + // Orange color (use for status 15 min in place page) + @"orange": [UIColor colorWithRed:scaled(250.) green:scaled(190.) blue:scaled(10.) alpha:alpha100], + // Blue color (use for links and phone numbers) + @"linkBlue": + [UIColor colorWithRed:scaled(80.) green:scaled(195.) blue:scaled(240.) alpha:alpha100], + @"linkBlueHighlighted": + [UIColor colorWithRed:scaled(60.) green:scaled(155.) blue:scaled(190.) alpha:alpha30], + @"linkBlueDark": + [UIColor colorWithRed:scaled(75.) green:scaled(185.) blue:scaled(230.) alpha:alpha100], + @"buttonRed": + [UIColor colorWithRed:scaled(244.) green:scaled(67.) blue:scaled(67.) alpha:alpha100], + @"buttonRedHighlighted": + [UIColor colorWithRed:scaled(183.) green:scaled(28.) blue:scaled(28.) alpha:alpha100], + @"blackPrimaryText": [UIColor colorWithWhite:1. alpha:alpha90], + @"blackSecondaryText": [UIColor colorWithWhite:1. alpha:alpha70], + @"blackHintText": [UIColor colorWithWhite:1. alpha:alpha30], + @"blackDividers": [UIColor colorWithWhite:1. alpha:alpha12], + @"white": [UIColor colorWithRed:scaled(60.) green:scaled(64.) blue:scaled(68.) alpha:alpha100], + @"whiteSecondaryText": [UIColor colorWithWhite:0. alpha:alpha70], + @"whiteHintText": [UIColor colorWithWhite:0. alpha:alpha26], + @"buttonDisabledBlueText": + [UIColor colorWithRed:scaled(255.) green:scaled(230.) blue:scaled(140.) alpha:alpha30], + @"alertBackground": + [UIColor colorWithRed:scaled(60.) green:scaled(64.) blue:scaled(68.) alpha:alpha90], + @"blackOpaque": [UIColor colorWithWhite:1. alpha:alpha04], + @"toastBackground": [UIColor colorWithWhite:0. alpha:alpha87], + @"statusBarBackground": [UIColor colorWithWhite:0. alpha:alpha32], + @"border" : [UIColor colorWithWhite:1. alpha:alpha04], + }; +} + // hex string without # + (UIColor *)colorFromHexString:(NSString *)hexString { @@ -26,6 +127,13 @@ static BOOL isNightMode = NO; return isNightMode; } +- (UIColor *)opposite +{ + NSString * key = [(isNightMode ? day : night) allKeysForObject:self].firstObject; + UIColor * color = (key == nil ? nil : (isNightMode ? night : day)[key]); + return color ?: self; +} + // Green color + (UIColor *)primary { diff --git a/iphone/Maps/Classes/CarPlay/Template Builders/SettingsTemplateBuilder.swift b/iphone/Maps/Classes/CarPlay/Template Builders/SettingsTemplateBuilder.swift index d207bc7812..79828ff758 100644 --- a/iphone/Maps/Classes/CarPlay/Template Builders/SettingsTemplateBuilder.swift +++ b/iphone/Maps/Classes/CarPlay/Template Builders/SettingsTemplateBuilder.swift @@ -15,6 +15,7 @@ final class SettingsTemplateBuilder { return [createUnpavedButton(options: options), createTollButton(options: options), createFerryButton(options: options), + createTrafficButton(), createSpeedcamButton()] } @@ -58,6 +59,18 @@ final class SettingsTemplateBuilder { return ferryButton } + private class func createTrafficButton() -> CPGridButton { + var trafficIconName = "ic_carplay_trafficlight" + let isTrafficEnabled = MapOverlayManager.trafficEnabled() + if isTrafficEnabled { trafficIconName += "_active" } + let trafficButton = CPGridButton(titleVariants: [L("button_layer_traffic")], + image: UIImage(named: trafficIconName)!) { _ in + MapOverlayManager.setTrafficEnabled(!isTrafficEnabled) + CarPlayService.shared.popTemplate(animated: true) + } + return trafficButton + } + private class func createSpeedcamButton() -> CPGridButton { var speedcamIconName = "ic_carplay_speedcam" let isSpeedCamActivated = CarPlayService.shared.isSpeedCamActivated diff --git a/iphone/Maps/Classes/MapViewController.mm b/iphone/Maps/Classes/MapViewController.mm index bf16fa37f3..5743e89b33 100644 --- a/iphone/Maps/Classes/MapViewController.mm +++ b/iphone/Maps/Classes/MapViewController.mm @@ -91,7 +91,7 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; @property(nonatomic) BOOL needDeferFocusNotification; @property(nonatomic) BOOL deferredFocusValue; -@property(nonatomic) PlacePageViewController *placePageVC; +@property(nonatomic) UIViewController *placePageVC; @property(nonatomic) IBOutlet UIView *placePageContainer; @end @@ -105,20 +105,6 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; #pragma mark - Map Navigation -- (void)showOrUpdatePlacePage { - if (!PlacePageData.hasData) { - return; - } - - self.controlsManager.trafficButtonHidden = YES; - - if (self.placePageVC != nil) { - [PlacePageBuilder update:(PlacePageViewController *)self.placePageVC]; - return; - } - [self showRegularPlacePage]; -} - - (void)showRegularPlacePage { self.placePageVC = [PlacePageBuilder build]; self.placePageContainer.hidden = NO; @@ -135,19 +121,26 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; [self.placePageVC didMoveToParentViewController:self]; } +- (void)showPlacePage { + if (!PlacePageData.hasData) { + return; + } + + self.controlsManager.trafficButtonHidden = YES; + [self showRegularPlacePage]; +} + - (void)dismissPlacePage { - GetFramework().DeactivateMapSelection(); + GetFramework().DeactivateMapSelection(true); } - (void)hideRegularPlacePage { - [self.placePageVC closeAnimatedWithCompletion:^{ - [self.placePageVC.view removeFromSuperview]; - [self.placePageVC willMoveToParentViewController:nil]; - [self.placePageVC removeFromParentViewController]; - self.placePageVC = nil; - self.placePageContainer.hidden = YES; - [self setPlacePageTopBound:0 duration:0]; - }]; + [self.placePageVC.view removeFromSuperview]; + [self.placePageVC willMoveToParentViewController:nil]; + [self.placePageVC removeFromParentViewController]; + self.placePageVC = nil; + self.placePageContainer.hidden = YES; + [self setPlacePageTopBound:0 duration:0]; } - (void)hidePlacePage { @@ -157,7 +150,7 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; self.controlsManager.trafficButtonHidden = NO; } -- (void)onMapObjectDeselected { +- (void)onMapObjectDeselected:(bool)switchFullScreenMode { [self hidePlacePage]; MWMSearchManager * searchManager = MWMSearchManager.manager; @@ -170,23 +163,24 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; searchManager.state = MWMSearchManagerStateHidden; } } - // Always show the controls during the navigation or planning mode. - if (!isNavigationDashboardHidden) - self.controlsManager.hidden = NO; -} -- (void)onSwitchFullScreen { - BOOL const isNavigationDashboardHidden = MWMNavigationDashboardManager.sharedManager.state == MWMNavigationDashboardStateHidden; - BOOL const isSearchHidden = MWMSearchManager.manager.state == MWMSearchManagerStateHidden; + if (!switchFullScreenMode) + return; + + // TODO(AB): Switch to full screen mode directly from the tap, in one place, instead of + // every call to onMapObjectDeselected. + if (DeepLinkHandler.shared.isLaunchedByDeeplink) + return; + + BOOL const isSearchHidden = searchManager.state == MWMSearchManagerStateHidden; if (isSearchHidden && isNavigationDashboardHidden) { - if (!self.controlsManager.hidden) - [self dismissPlacePage]; self.controlsManager.hidden = !self.controlsManager.hidden; } } - (void)onMapObjectSelected { - [self showOrUpdatePlacePage]; + [self hidePlacePage]; + [self showPlacePage]; } - (void)onMapObjectUpdated { @@ -450,9 +444,8 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; Framework &f = GetFramework(); // TODO: Review and improve this code. f.SetPlacePageListeners([self]() { [self onMapObjectSelected]; }, - [self]() { [self onMapObjectDeselected]; }, - [self]() { [self onMapObjectUpdated]; }, - [self]() { [self onSwitchFullScreen]; }); + [self](bool switchFullScreen) { [self onMapObjectDeselected:switchFullScreen]; }, + [self]() { [self onMapObjectUpdated]; }); // TODO: Review and improve this code. f.SetMyPositionModeListener([self](location::EMyPositionMode mode, bool routingActive) { // TODO: Two global listeners are subscribed to the same event from the core. diff --git a/iphone/Maps/Core/Routing/MWMRouter.mm b/iphone/Maps/Core/Routing/MWMRouter.mm index 8f986da842..83b68d6b61 100644 --- a/iphone/Maps/Core/Routing/MWMRouter.mm +++ b/iphone/Maps/Core/Routing/MWMRouter.mm @@ -433,7 +433,7 @@ char const *kRenderAltitudeImagesQueueLabel = "mapsme.mwmrouter.renderAltitudeIm - (void)onRouteReady:(BOOL)hasWarnings { self.routingOptions = [MWMRoutingOptions new]; - GetFramework().DeactivateMapSelection(); + GetFramework().DeactivateMapSelection(true); auto startPoint = [MWMRouter startPoint]; if (!startPoint || !startPoint.isMyPosition) { diff --git a/iphone/Maps/Core/iCloud/CloudStorageManager.swift b/iphone/Maps/Core/iCloud/CloudStorageManager.swift index 64c06c586b..93a503c6d9 100644 --- a/iphone/Maps/Core/iCloud/CloudStorageManager.swift +++ b/iphone/Maps/Core/iCloud/CloudStorageManager.swift @@ -13,6 +13,16 @@ enum WritingResult { typealias VoidResultCompletionHandler = (VoidResult) -> Void typealias WritingResultCompletionHandler = (WritingResult) -> Void +// TODO: Remove this type and use custom UTTypeIdentifier that is registered into the Info.plist after updating to the iOS >= 14.0. +struct FileType { + let fileExtension: String + let typeIdentifier: String +} + +extension FileType { + static let kml = FileType(fileExtension: "kml", typeIdentifier: "com.google.earth.kml") +} + let kTrashDirectoryName = ".Trash" private let kBookmarksDirectoryName = "bookmarks" private let kICloudSynchronizationDidChangeEnabledStateNotificationName = "iCloudSynchronizationDidChangeEnabledStateNotification" diff --git a/iphone/Maps/Images.xcassets/CarPlay/ic_carplay_trafficlight.imageset/Contents.json b/iphone/Maps/Images.xcassets/CarPlay/ic_carplay_trafficlight.imageset/Contents.json new file mode 100644 index 0000000000..6f0dd140e5 --- /dev/null +++ b/iphone/Maps/Images.xcassets/CarPlay/ic_carplay_trafficlight.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ic_carplay_trafficlight.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/CarPlay/ic_carplay_trafficlight.imageset/ic_carplay_trafficlight.pdf b/iphone/Maps/Images.xcassets/CarPlay/ic_carplay_trafficlight.imageset/ic_carplay_trafficlight.pdf new file mode 100644 index 0000000000..3ed2e850db Binary files /dev/null and b/iphone/Maps/Images.xcassets/CarPlay/ic_carplay_trafficlight.imageset/ic_carplay_trafficlight.pdf differ diff --git a/iphone/Maps/Images.xcassets/CarPlay/ic_carplay_trafficlight_active.imageset/Contents.json b/iphone/Maps/Images.xcassets/CarPlay/ic_carplay_trafficlight_active.imageset/Contents.json new file mode 100644 index 0000000000..efcda0d148 --- /dev/null +++ b/iphone/Maps/Images.xcassets/CarPlay/ic_carplay_trafficlight_active.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ic_carplay_trafficlight_active.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/CarPlay/ic_carplay_trafficlight_active.imageset/ic_carplay_trafficlight_active.pdf b/iphone/Maps/Images.xcassets/CarPlay/ic_carplay_trafficlight_active.imageset/ic_carplay_trafficlight_active.pdf new file mode 100644 index 0000000000..925e7976d8 Binary files /dev/null and b/iphone/Maps/Images.xcassets/CarPlay/ic_carplay_trafficlight_active.imageset/ic_carplay_trafficlight_active.pdf differ diff --git a/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOff.imageset/Contents.json b/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOff.imageset/Contents.json index b02558ddcd..843be26f0d 100644 --- a/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOff.imageset/Contents.json +++ b/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOff.imageset/Contents.json @@ -1,8 +1,19 @@ { "images" : [ { - "filename" : "radioBtnOff.svg", - "idiom" : "universal" + "filename" : "radioBtnOff.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "radioBtnOff@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "radioBtnOff@3x.png", + "idiom" : "universal", + "scale" : "3x" } ], "info" : { diff --git a/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOff.imageset/radioBtnOff.png b/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOff.imageset/radioBtnOff.png new file mode 100644 index 0000000000..a4abc39cf8 Binary files /dev/null and b/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOff.imageset/radioBtnOff.png differ diff --git a/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOff.imageset/radioBtnOff.svg b/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOff.imageset/radioBtnOff.svg deleted file mode 100644 index af067bc5dc..0000000000 --- a/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOff.imageset/radioBtnOff.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOff.imageset/radioBtnOff@2x.png b/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOff.imageset/radioBtnOff@2x.png new file mode 100644 index 0000000000..f52d22c82e Binary files /dev/null and b/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOff.imageset/radioBtnOff@2x.png differ diff --git a/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOff.imageset/radioBtnOff@3x.png b/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOff.imageset/radioBtnOff@3x.png new file mode 100644 index 0000000000..207f702ab4 Binary files /dev/null and b/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOff.imageset/radioBtnOff@3x.png differ diff --git a/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOn.imageset/Contents.json b/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOn.imageset/Contents.json index 89ed30954f..5e29cb1a75 100644 --- a/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOn.imageset/Contents.json +++ b/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOn.imageset/Contents.json @@ -1,8 +1,19 @@ { "images" : [ { - "filename" : "radioBtnOn.svg", - "idiom" : "universal" + "filename" : "radioBtnOn.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "radioBtnOn@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "radioBtnOn@3x.png", + "idiom" : "universal", + "scale" : "3x" } ], "info" : { diff --git a/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOn.imageset/radioBtnOn.png b/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOn.imageset/radioBtnOn.png new file mode 100644 index 0000000000..487e7a0b0f Binary files /dev/null and b/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOn.imageset/radioBtnOn.png differ diff --git a/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOn.imageset/radioBtnOn.svg b/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOn.imageset/radioBtnOn.svg deleted file mode 100644 index 97b622f8f7..0000000000 --- a/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOn.imageset/radioBtnOn.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOn.imageset/radioBtnOn@2x.png b/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOn.imageset/radioBtnOn@2x.png new file mode 100644 index 0000000000..54f04306a0 Binary files /dev/null and b/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOn.imageset/radioBtnOn@2x.png differ diff --git a/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOn.imageset/radioBtnOn@3x.png b/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOn.imageset/radioBtnOn@3x.png new file mode 100644 index 0000000000..cca70c97b1 Binary files /dev/null and b/iphone/Maps/Images.xcassets/DownloadMapRequest/radioBtnOn.imageset/radioBtnOn@3x.png differ diff --git a/iphone/Maps/Images.xcassets/Sharing/ic24PxImport.imageset/Contents.json b/iphone/Maps/Images.xcassets/Sharing/ic24PxImport.imageset/Contents.json deleted file mode 100644 index c6a82a5a29..0000000000 --- a/iphone/Maps/Images.xcassets/Sharing/ic24PxImport.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "filename" : "ic24PxImport.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "template-rendering-intent" : "template" - } -} diff --git a/iphone/Maps/Images.xcassets/Sharing/ic24PxImport.imageset/ic24PxImport.svg b/iphone/Maps/Images.xcassets/Sharing/ic24PxImport.imageset/ic24PxImport.svg deleted file mode 100644 index 1688ee9ba1..0000000000 --- a/iphone/Maps/Images.xcassets/Sharing/ic24PxImport.imageset/ic24PxImport.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/iphone/Maps/Images.xcassets/Sharing/ic24PxShare.imageset/Contents.json b/iphone/Maps/Images.xcassets/Sharing/ic24PxShare.imageset/Contents.json index 6031d7afdf..0d40dda86c 100644 --- a/iphone/Maps/Images.xcassets/Sharing/ic24PxShare.imageset/Contents.json +++ b/iphone/Maps/Images.xcassets/Sharing/ic24PxShare.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "ic24PxShare.svg", + "filename" : "ic_share.svg", "idiom" : "universal" } ], diff --git a/iphone/Maps/Images.xcassets/Sharing/ic24PxShare.imageset/ic24PxShare.svg b/iphone/Maps/Images.xcassets/Sharing/ic24PxShare.imageset/ic24PxShare.svg deleted file mode 100644 index 832959976c..0000000000 --- a/iphone/Maps/Images.xcassets/Sharing/ic24PxShare.imageset/ic24PxShare.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/iphone/Maps/Images.xcassets/Sharing/ic24PxShare.imageset/ic_share.svg b/iphone/Maps/Images.xcassets/Sharing/ic24PxShare.imageset/ic_share.svg new file mode 100644 index 0000000000..57c45054b6 --- /dev/null +++ b/iphone/Maps/Images.xcassets/Sharing/ic24PxShare.imageset/ic_share.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings index 979a84c566..a374b3ef72 100644 --- a/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "طابق"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "يرجى العلم أنه،"; "downloader_delete_map_dialog" = "سيتم حذف جميع التغييرات بالخريطة بالإضافة إلى حذف الخريطة نفسها."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "خروج"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "استخدام البحث أو النقر على الخريطة لإضافة نقطة بداية الطريق"; +"routing_add_start_point" = "أضف نقطة البداية لتخطيط المسار"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "استخدام البحث أو النقر على الخريطة لإضافة نقطة وجهة"; +"routing_add_finish_point" = "أضف النهاية لتخطيط المسار"; "planning_route_manage_route" = "إدارة المسار"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "إنشاء قائمة جديدة"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "استيراد الإشارات المرجعية والمسارات"; - "downloader_hide_screen" = "إخفاء الشاشة"; "downloader_percent" = "%@ (%@ من %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "شروط الاستخدام"; +"button_layer_traffic" = "حركة مرور"; + "button_layer_subway" = "مترو الانفاق"; "layers_title" = "أنماط الخريطة وطبقاتها"; diff --git a/iphone/Maps/LocalizedStrings/az.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/az.lproj/Localizable.strings index 212c5a8af0..4cd72f99a2 100644 --- a/iphone/Maps/LocalizedStrings/az.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/az.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Mərtəbə"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Diqqət edin"; "downloader_delete_map_dialog" = "Bütün xəritə dəyişiklikləri xəritə ilə birlikdə silinəcək."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Çıx"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Marşrutun başlanğıc nöqtəsi əlavə etmək üçün axtarışdan istifadə edin və ya xəritədə klikləyin"; +"routing_add_start_point" = "Marşrutu planlaşdırmaq üçün başlanğıc nöqtəsi əlavə edin"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Təyinat nöqtəsi əlavə etmək üçün axtarışdan istifadə edin və ya xəritədə klikləyin"; +"routing_add_finish_point" = "Marşrutu planlaşdırmaq üçün təyinat əlavə edin"; "planning_route_manage_route" = "Marşrutu idarə et"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Yeni siyahı yaradın"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Əlfəcinləri və fraqmentləri idxal edin"; - "downloader_hide_screen" = "Ekranı Gizlət"; "downloader_percent" = "%@ (%@ / %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "İstifadə qaydaları"; +"button_layer_traffic" = "Nəqliyyat"; + "button_layer_subway" = "Metro"; "layers_title" = "Xəritə Üslubları və Qatları"; diff --git a/iphone/Maps/LocalizedStrings/be.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/be.lproj/Localizable.strings index 144f89310a..e6fbf5afe5 100644 --- a/iphone/Maps/LocalizedStrings/be.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/be.lproj/Localizable.strings @@ -616,11 +616,11 @@ "opens_at" = "Адкрываецца ў %@"; -"opens_in" = "Адчыняецца праз %@"; +"opens_in" = "Адкрываецца праз %@"; "closes_at" = "Закрываецца ў %@"; -"closes_in" = "Зачыняецца праз %@"; +"closes_in" = "Закрываецца праз %@"; "closed" = "Закрыта"; @@ -680,9 +680,6 @@ "level" = "Паверх"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Звярніце ўвагу"; "downloader_delete_map_dialog" = "Усе вашы праўкі мапы будуць выдаленыя разам з мапай."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Выхад"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Скарыстайцеся пошукам або націсніце на мапе, каб дадаць пачатак маршруту"; +"routing_add_start_point" = "Дадайце пункт адпраўлення, каб пракласці маршрут"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Скарыстайцеся пошукам або націсніце на мапе, каб дадаць пункт прызначэння"; +"routing_add_finish_point" = "Дадайце пункт прызначэння, каб пракласці маршрут"; "planning_route_manage_route" = "Кіраваць маршрутам"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Стварыць новы спіс"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Імпартаваць закладкі і cцежкі"; - "downloader_hide_screen" = "Схаваць экран"; "downloader_percent" = "%@ (%@ з %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Умовы выкарыстання"; +"button_layer_traffic" = "Рух"; + "button_layer_subway" = "Метро"; "layers_title" = "Стылі і пласты карты"; @@ -3818,7 +3812,7 @@ "type.tourism.theme_park" = "Theme Park"; -"type.tourism.viewpoint" = "Аглядальная пляцоўка"; +"type.tourism.viewpoint" = "Viewpoint"; /* Typically more basic, not staffed and free (compared to alpine_hut). */ "type.tourism.wilderness_hut" = "Турыстычная хатка"; diff --git a/iphone/Maps/LocalizedStrings/bg.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/bg.lproj/Localizable.strings index ca37e10824..141e3ff701 100644 --- a/iphone/Maps/LocalizedStrings/bg.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/bg.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Етаж"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Моля, имайте предвид"; "downloader_delete_map_dialog" = "Всички ваши редакции на картата ще бъдат изтрити заедно с нея."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Изход"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Използвайте търсене или докоснете картата, за да добавите начална точка на маршрута"; +"routing_add_start_point" = "Добавяне на начална точка за планиране на маршрут"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Използвайте търсене или докоснете картата, за да добавите точка на дестинация"; +"routing_add_finish_point" = "Добавяне на крайна точка за планиране на маршрут"; "planning_route_manage_route" = "Управление на маршрут"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Създаване на нов списък"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Импортиране на отметки и маршрути"; - "downloader_hide_screen" = "Скриване на екрана"; "downloader_percent" = "%@ (%@ от %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Условия за ползване"; +"button_layer_traffic" = "Трафик"; + "button_layer_subway" = "Метро"; "layers_title" = "Стилове и слоеве на картата"; diff --git a/iphone/Maps/LocalizedStrings/ca.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ca.lproj/Localizable.strings index bbb2759e51..23a4402431 100644 --- a/iphone/Maps/LocalizedStrings/ca.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ca.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Planta"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Avís"; "downloader_delete_map_dialog" = "Totes els canvis que heu fet en el mapa s'esborraran conjuntament amb el mapa."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Surt"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Utilitzeu la cerca o toqueu el mapa per afegir un punt de partida de la ruta"; +"routing_add_start_point" = "Afegiu un punt inical per a planificar una ruta"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Utilitzeu la cerca o toqueu el mapa per afegir un punt de destinació"; +"routing_add_finish_point" = "Afegeiu la destinació per a planificar la ruta"; "planning_route_manage_route" = "Gestionar la ruta"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Crea una llista"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Importa marcadors i les traces"; - "downloader_hide_screen" = "Oculta la pantalla"; "downloader_percent" = "%@ (%@ de %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Considicions del servei"; +"button_layer_traffic" = "Trànsit"; + "button_layer_subway" = "Metro"; "layers_title" = "Estils i capes de mapa"; diff --git a/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings index 458c824778..7b357eac83 100644 --- a/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Podlaží"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Vezměte prosím na vědomí"; "downloader_delete_map_dialog" = "Zároveň s touto mapou budou odstraněny také všechny změny na této mapě."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Ukončit"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Pomocí vyhledávání nebo klepnutím na mapu přidejte výchozí bod trasy"; +"routing_add_start_point" = "Zadejte výchozí bod pro plánování trasy"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Pomocí vyhledávání nebo klepnutím na mapu přidejte cílový bod"; +"routing_add_finish_point" = "Zadejte cílový bod pro plánování trasy"; "planning_route_manage_route" = "Spravovat trasu"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Vytvořte nový seznam"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Import záložek a stop"; - "downloader_hide_screen" = "Skrýt obrazovku"; "downloader_percent" = "%@ (%@ z %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Podmínky užívání"; +"button_layer_traffic" = "Zácpy"; + "button_layer_subway" = "Metro"; "layers_title" = "Styly a vrstvy mapy"; diff --git a/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings index 0c0ffce961..dbeb929704 100644 --- a/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Etage"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Bemærk venligst"; "downloader_delete_map_dialog" = "Alle kortændringer vil blive slettet sammen med kortet."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Afslut"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Brug søgning eller tryk på kortet for at tilføje et startpunkt for en rute"; +"routing_add_start_point" = "Tilføj startpunkt for at planlægge en rute"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Brug søgning eller tryk på kortet for at tilføje et destinationspunkt"; +"routing_add_finish_point" = "Tilføj slutpunkt for at planlægge en rute"; "planning_route_manage_route" = "Administrer rute"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Opret ny liste"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Importer bogmærker og spor"; - "downloader_hide_screen" = "Skjul skærm"; "downloader_percent" = "%@ (%@ af %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Vilkår for bruger"; +"button_layer_traffic" = "Trafik"; + "button_layer_subway" = "Undergrundsbane"; "layers_title" = "Kortstile og -lag"; diff --git a/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings index 06ffa48942..ff7207e667 100644 --- a/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Stockwerk"; -/* Building level */ -"level_value_generic" = "Stock: %@"; - "please_note" = "Bitte beachten"; "downloader_delete_map_dialog" = "Alle Kartenänderungen werden zusammen mit der Karte gelöscht."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Ausgang"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Verwende die Suche oder tippe auf die Karte, um einen Routenstartpunkt hinzuzufügen"; +"routing_add_start_point" = "Fügen Sie einen Startpunkt hinzu, um eine Route zu planen"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Verwende die Suche oder tippe auf die Karte, um einen Zielpunkt hinzuzufügen"; +"routing_add_finish_point" = "Fügen Sie ein Ziel hinzu, um eine Route zu planen"; "planning_route_manage_route" = "Route verwalten"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Neue Liste erstellen"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Lesezeichen und Tracks importieren"; - "downloader_hide_screen" = "Bildschirm ausblenden"; "downloader_percent" = "%@ (%@ von %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Nutzungsbedingungen"; +"button_layer_traffic" = "Verkehr"; + "button_layer_subway" = "U-Bahn"; "layers_title" = "Kartenstile und Ebenen"; diff --git a/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings index 947508b719..dffc2ce42b 100644 --- a/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Όροφος"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Λάβετε υπόψη"; "downloader_delete_map_dialog" = "Όλες οι αλλαγές που έχετε κάνει στο χάρτη θα διαγραφούν μαζί με το χάρτη."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Έξοδος"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Χρησιμοποιήστε την αναζήτηση ή πατήστε στο χάρτη για να προσθέσετε ένα σημείο εκκίνησης της διαδρομής"; +"routing_add_start_point" = "Προσθέστε αφετηρία για να σχεδιάσετε μια διαδρομή"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Χρησιμοποιήστε την αναζήτηση ή πατήστε στο χάρτη για να προσθέσετε ένα σημείο προορισμού"; +"routing_add_finish_point" = "Προσθέστε τελικό προορισμό, για να σχεδιάσετε μια διαδρομή"; "planning_route_manage_route" = "Διαχείριση διαδρομής"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Δημιουργία νέας λίστας"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Εισαγωγή σελιδοδεικτών και διαδρομών"; - "downloader_hide_screen" = "Απόκρυψη οθόνης"; "downloader_percent" = "%@ (%@ από %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Όροι χρήσης"; +"button_layer_traffic" = "Κίνηση"; + "button_layer_subway" = "Μετρό"; "layers_title" = "Στυλ χάρτη και επίπεδα"; diff --git a/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings index 868c419439..2ba86b7a73 100644 --- a/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Floor"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Please note"; "downloader_delete_map_dialog" = "All of your map edits will be deleted with the map."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Exit"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Use search or tap on the map to add a route starting point"; +"routing_add_start_point" = "Add a starting point to plan a route"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Use search or tap on the map to add a destination point"; +"routing_add_finish_point" = "Add a destination to plan a route"; "planning_route_manage_route" = "Manage Route"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Create a new list"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Import Bookmarks and Tracks"; - "downloader_hide_screen" = "Hide Screen"; "downloader_percent" = "%@ (%@ of %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Terms of use"; +"button_layer_traffic" = "Traffic"; + "button_layer_subway" = "Metro"; "layers_title" = "Map Styles and Layers"; @@ -1198,7 +1192,7 @@ "transit_not_found" = "Metro navigation in this region is not available yet"; -"dialog_pedestrian_route_is_long_header" = "No metro route found"; +"dialog_pedestrian_route_is_long_header" = "Metro route is not found"; "dialog_pedestrian_route_is_long_message" = "Please choose a start or end point closer to a metro station"; diff --git a/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings index e1645ffd24..cf7cc10455 100644 --- a/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Floor"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Please note"; "downloader_delete_map_dialog" = "All of your map edits will be deleted with the map."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Exit"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Use search or tap on the map to add a route starting point"; +"routing_add_start_point" = "Add a starting point to plan a route"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Use search or tap on the map to add a destination point"; +"routing_add_finish_point" = "Add a destination to plan a route"; "planning_route_manage_route" = "Manage Route"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Create a new list"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Import Bookmarks and Tracks"; - "downloader_hide_screen" = "Hide Screen"; "downloader_percent" = "%@ (%@ of %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Terms of use"; +"button_layer_traffic" = "Traffic"; + "button_layer_subway" = "Subway"; "layers_title" = "Map Styles and Layers"; @@ -1198,7 +1192,7 @@ "transit_not_found" = "Subway navigation in this region is not available yet"; -"dialog_pedestrian_route_is_long_header" = "No subway route found"; +"dialog_pedestrian_route_is_long_header" = "Subway route is not found"; "dialog_pedestrian_route_is_long_message" = "Please choose a start or end point closer to a subway station"; diff --git a/iphone/Maps/LocalizedStrings/es-MX.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/es-MX.lproj/Localizable.strings index 5c8bdd6342..686ab85a10 100644 --- a/iphone/Maps/LocalizedStrings/es-MX.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/es-MX.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Piso"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Aviso"; "downloader_delete_map_dialog" = "Todos los cambios en los mapas se borrarán junto con el mapa."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Salida"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Busca o toca en el mapa para añadir el origen de la ruta"; +"routing_add_start_point" = "Buscar un origen para el plan de ruta"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Busca o toca en el mapa para añadir el destino"; +"routing_add_finish_point" = "Buscar un destino para el plan de ruta"; "planning_route_manage_route" = "Administrar ruta"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Crear lista nueva"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Importar marcadores y trazas"; - "downloader_hide_screen" = "Ocultar pantalla"; "downloader_percent" = "%@ (%@ de %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Términos de uso"; +"button_layer_traffic" = "Tráfico"; + "button_layer_subway" = "Metro"; "layers_title" = "Estilos y capas de mapas"; diff --git a/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings index 78ed1172af..e2a4edb835 100644 --- a/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Piso"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Aviso"; "downloader_delete_map_dialog" = "Todos los cambios en los mapas se borrarán junto con el mapa."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Salida"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Busca o toca en el mapa para añadir el origen de la ruta"; +"routing_add_start_point" = "Buscar un origen para el plan de ruta"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Busca o toca en el mapa para añadir el destino"; +"routing_add_finish_point" = "Buscar un destino para el plan de ruta"; "planning_route_manage_route" = "Administrar ruta"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Crear nueva lista"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Importar marcadores y trazas"; - "downloader_hide_screen" = "Ocultar pantalla"; "downloader_percent" = "%@ (%@ de %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Condiciones de uso"; +"button_layer_traffic" = "Tráfico"; + "button_layer_subway" = "Metro"; "layers_title" = "Estilos y capas del mapa"; diff --git a/iphone/Maps/LocalizedStrings/et.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/et.lproj/Localizable.strings index 9ac65b53d0..3cb0994596 100644 --- a/iphone/Maps/LocalizedStrings/et.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/et.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Korrus"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Tähelepanu"; "downloader_delete_map_dialog" = "Kõik Sinu kaardimuudatused kustutatakse koos kaardiga."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Välju"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Marsruudi alguspunkti lisamiseks kasutage otsingut või puudutage kaarti"; +"routing_add_start_point" = "Marsruudi planeerimiseks lisa lähtepunkt"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Kasutage otsingut või koputage kaardil sihtkoha lisamiseks"; +"routing_add_finish_point" = "Marsruudi planeerimiseks lisa sihtkoht"; "planning_route_manage_route" = "Halda marsruuti"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Loo uus loetelu"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Importida järjehoidjaid ja lugusid"; - "downloader_hide_screen" = "Peida vaade"; "downloader_percent" = "%@ (%@ / %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Kasutustingimused"; +"button_layer_traffic" = "Liiklus"; + "button_layer_subway" = "Metroo"; "layers_title" = "Kaardi stiilid ja kihid"; diff --git a/iphone/Maps/LocalizedStrings/eu.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/eu.lproj/Localizable.strings index 018861aa8f..d7496c7a4b 100644 --- a/iphone/Maps/LocalizedStrings/eu.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/eu.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Solairua"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Abisua"; "downloader_delete_map_dialog" = "Mapan egin dituzun aldaketa guztiak maparekin batera ezabatuko dira."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Irten"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Erabili bilaketa edo sakatu mapan ibilbidearen abiapuntua gehitzeko"; +"routing_add_start_point" = "Gehitu abiapuntu bat ibilbide bat antolatzeko"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Erabili bilaketa edo sakatu mapan helmuga puntu bat gehitzeko"; +"routing_add_finish_point" = "Gehitu helmuga bat ibilbide bat antolatzeko"; "planning_route_manage_route" = "Kudeatu ibilbidea"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Sortu zerrenda berria"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Laster-markak eta ibilbideak inportatu"; - "downloader_hide_screen" = "Ezkutatu pantaila"; "downloader_percent" = "%@ (%@/%@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Erabilera baldintzak"; +"button_layer_traffic" = "Trafikoa"; + "button_layer_subway" = "Metroa"; "layers_title" = "Maparen estiloak eta geruzak"; diff --git a/iphone/Maps/LocalizedStrings/fa.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/fa.lproj/Localizable.strings index 8dd0dbb0f0..1a5e40aef8 100644 --- a/iphone/Maps/LocalizedStrings/fa.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/fa.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "طبقه"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "لطفا توجه داشته باشد"; "downloader_delete_map_dialog" = "تمام ویرایش‌های که بر روی نقشه انجام داده اید به همراه نقشه حذف شد."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "خروج"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "برای افزودن نقطه شروع مسیر، از جستجو استفاده کنید یا روی نقشه ضربه بزنید"; +"routing_add_start_point" = "یک نقطه شروع برای برنامه ریزی یک مسیر اضافه کنید"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "برای افزودن نقطه مقصد، از جستجو استفاده کنید یا روی نقشه ضربه بزنید"; +"routing_add_finish_point" = "یک مقصد برای برنامه ریزی یک مسیر اضافه کنید"; "planning_route_manage_route" = "مدیریت مسیر"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "ایجاد لیست جدید"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "وارد کردن نشانکu200cها و آهنگu200cها"; - "downloader_hide_screen" = "پنهان کردن صفحه"; "downloader_percent" = "%@ (%@ از %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "شرایط استفاده"; +"button_layer_traffic" = "ترافیک"; + "button_layer_subway" = "مترو"; "layers_title" = "سبک ها و لایه های نقشه"; diff --git a/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings index d48b1e42ae..15610b7b2b 100644 --- a/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Kerros"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Huomaathan, että"; "downloader_delete_map_dialog" = "Kaikki karttaan tehdyt muutokset poistetaan kartan mukana."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Poistu"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Käytä hakua tai napauta karttaa lisätäksesi reitin lähtöpisteen"; +"routing_add_start_point" = "Lisää alkupiste reitin suunnittelua varten"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Käytä hakua tai napauta karttaa lisätäksesi kohdepisteen."; +"routing_add_finish_point" = "Lisää määränpää reitin suunnittelua varten"; "planning_route_manage_route" = "Hallitse reittiä"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Luo uusi luettelo"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Kirjanmerkkien ja reittien tuominen"; - "downloader_hide_screen" = "Piilota näyttö"; "downloader_percent" = "%@ (%@ / %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Käyttöehdot"; +"button_layer_traffic" = "Liikenne"; + "button_layer_subway" = "Metro"; "layers_title" = "Karttatyylit ja tasot"; diff --git a/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings index 79867c0a76..9195e4e11a 100644 --- a/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Étage"; -/* Building level */ -"level_value_generic" = "Niveau : %@"; - "please_note" = "À noter"; "downloader_delete_map_dialog" = "Toutes vos modifications de la carte seront supprimées avec elle."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Sortie"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Utilise la recherche ou tape sur la carte pour ajouter un point de départ d'itinéraire"; +"routing_add_start_point" = "Ajouter un point de départ pour planifier un itinéraire"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Utilise la recherche ou tape sur la carte pour ajouter un point de destination"; +"routing_add_finish_point" = "Ajouter un point d'arrivée pour planifier un itinéraire"; "planning_route_manage_route" = "Gérer l’itinéraire"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Créer une nouvelle liste"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Importer des signets et des parcours"; - "downloader_hide_screen" = "Masquer l’écran"; "downloader_percent" = "%@ (%@ de %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Conditions d'utilisation"; +"button_layer_traffic" = "Trafic"; + "button_layer_subway" = "Métro"; "layers_title" = "Styles et couches de cartes"; diff --git a/iphone/Maps/LocalizedStrings/he.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/he.lproj/Localizable.strings index 4b19d99001..759334e295 100644 --- a/iphone/Maps/LocalizedStrings/he.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/he.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "קומה"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "לתשומת לבך"; "downloader_delete_map_dialog" = "כל העריכות שלך במפה יימחקו יחד עם המפה."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "יציאה"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "יש להוסיף נקודת התחלה למסלול באמצעות חיפוש או בלחיצה על המפה"; +"routing_add_start_point" = "יש להוסיף נקודת התחלה כדי לתכנן מסלול"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "יש לבחור נקודת יעד באמצעות חיפוש או בלחיצה על המפה"; +"routing_add_finish_point" = "יש להוסיף יעד כדי לתכנן מסלול"; "planning_route_manage_route" = "ניהול מסלול"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "צור רשימה חדשה"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "ייבוא סימניות ומסלולים"; - "downloader_hide_screen" = "הסתר מסך"; "downloader_percent" = "%@ (%@ מתוך %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "תנאי שימוש"; +"button_layer_traffic" = "תעבורה"; + "button_layer_subway" = "רכבת תחתית"; "layers_title" = "סגנונות ושכבות מפה"; diff --git a/iphone/Maps/LocalizedStrings/hi.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/hi.lproj/Localizable.strings index 88d0af1741..576319616d 100644 --- a/iphone/Maps/LocalizedStrings/hi.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/hi.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "मंजिल"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Please note"; "downloader_delete_map_dialog" = "All of your map edits will be deleted with the map."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Exit"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "मार्ग का प्रारंभिक बिंदु जोड़ने के लिए खोज का उपयोग करें या मानचित्र पर टैप करें"; +"routing_add_start_point" = "मार्ग की योजना बनाने के लिए एक प्रारंभिक बिंदु जोड़ें"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "गंतव्य बिंदु जोड़ने के लिए खोज का उपयोग करें या मानचित्र पर टैप करें"; +"routing_add_finish_point" = "मार्ग की योजना बनाने के लिए एक गंतव्य जोड़ें"; "planning_route_manage_route" = "मार्ग प्रबंधित करें"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "एक नई सूची बनाएं"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "बुकमार्क और सेटिंग्स आयात करें"; - "downloader_hide_screen" = "Hide Screen"; "downloader_percent" = "%@ (%@ of %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "उपयोग की शर्तें"; +"button_layer_traffic" = "Traffic"; + "button_layer_subway" = "भूमिगत मार्ग"; "layers_title" = "मानचित्र शैलियाँ और परतें"; diff --git a/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings index b36b8c6035..6949de9427 100644 --- a/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Szint"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Megjegyzés"; "downloader_delete_map_dialog" = "A térképekkel együtt minden rajtuk végzett módosítás is törlésre kerül."; @@ -923,16 +920,14 @@ /* "traffic" as in "road congestion" */ "traffic_data_unavailable" = "Forgalmi adatok nem állnak rendelkezésre"; -"transliteration_title" = "Átírás latin betűkre"; +"transliteration_title" = "Átírás latin nyelvre"; /* Subway exits for public transport marks on the map */ "core_exit" = "Kilépés"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Használja a keresést, vagy koppintson a térképre az útvonal kezdőpontjának hozzáadásához"; +"routing_add_start_point" = "Adjon hozzá kiindulási pontot az útvonal megtervezéséhez"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Használja a keresést, vagy koppintson a térképre egy célpont hozzáadásához"; +"routing_add_finish_point" = "Adjon hozzá végpontot az útvonal tervezéséhez"; "planning_route_manage_route" = "Útvonal kezelése"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Új lista létrehozása"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Könyvjelzők és sávok importálása"; - "downloader_hide_screen" = "Képernyő elrejtése"; "downloader_percent" = "%@ (%@ / %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Felhasználási feltételek"; +"button_layer_traffic" = "Forgalom"; + "button_layer_subway" = "Metró"; "layers_title" = "Térképstílusok és rétegek"; diff --git a/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings index a53e828cca..56c3e331c5 100644 --- a/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Tingkat"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Harap diperhatikan"; "downloader_delete_map_dialog" = "Semua perubahan peta akan dihapus bersama dengan peta."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Keluar"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Gunakan pencarian atau ketuk pada peta untuk menambahkan titik awal rute"; +"routing_add_start_point" = "Tambahkan titik awal untuk merencanakan rute"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Gunakan pencarian atau ketuk pada peta untuk menambahkan titik tujuan"; +"routing_add_finish_point" = "Tambahkan titik akhir untuk merencanakan rute"; "planning_route_manage_route" = "Kelola rute"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Buat daftar baru"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Impor penanda dan trek"; - "downloader_hide_screen" = "Sembunyikan Layar"; "downloader_percent" = "%@ (%@ dari %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Ketentuan penggunaan"; +"button_layer_traffic" = "Lalu lintas"; + "button_layer_subway" = "Kereta bawah tanah"; "layers_title" = "Gaya dan Lapisan Peta"; diff --git a/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings index b91ef5547a..bc57260e0d 100644 --- a/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Piano"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Avviso"; "downloader_delete_map_dialog" = "Tutte le tue modifiche alla mappa saranno cancellate insieme alla mappa."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Uscita"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Usa la ricerca o tocca la mappa per aggiungere un punto di partenza del percorso"; +"routing_add_start_point" = "Aggiungi un punto di partenza per pianificare un percorso"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Usa la ricerca o tocca la mappa per aggiungere un punto di destinazione"; +"routing_add_finish_point" = "Aggiungi un punto di arrivo per pianificare un percorso"; "planning_route_manage_route" = "Gestisci percorso"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Crea un nuovo elenco"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Importazione di segnalibri e tracce"; - "downloader_hide_screen" = "Nascondi schermata"; "downloader_percent" = "%@ (%@ di %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Condizioni d'uso"; +"button_layer_traffic" = "Traffico"; + "button_layer_subway" = "Metropolitana"; "layers_title" = "Stili e livelli di mappa"; diff --git a/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings index 156da1d08d..f13570266d 100644 --- a/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "階"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "ご注意ください"; "downloader_delete_map_dialog" = "すべてのマップの変更はマップとともに削除されます。"; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "出口"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "検索を使うか、地図上をタップしてルートの出発点を追加する"; +"routing_add_start_point" = "ルートを計画するには出発地を追加してください"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "検索を使うか、地図上をタップして目的地を追加する"; +"routing_add_finish_point" = "ルートを計画するには目的地を追加してください"; "planning_route_manage_route" = "ルートを編集"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "新しいリストを作成する"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "ブックマークとトラックをインポートする"; - "downloader_hide_screen" = "画面を非表示"; "downloader_percent" = "%@ (%@ / %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "利用規約"; +"button_layer_traffic" = "交通状況"; + "button_layer_subway" = "地下鉄"; "layers_title" = "マップのスタイルとレイヤー"; diff --git a/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings index 754c8a3af4..ae11aaccb2 100644 --- a/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "층"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "참고 사항"; "downloader_delete_map_dialog" = "모든 지도의 변경 사항은 지도와 함께 삭제됩니다."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "끝내기"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "검색을 사용하거나 지도를 탭하여 경로 시작점을 추가합니다"; +"routing_add_start_point" = "경로 계획을 세우기 위한 시작 지점을 추가하세요"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "검색을 사용하거나 지도를 탭하여 목적지 지점을 추가합니다"; +"routing_add_finish_point" = "경로 계획을 세우기 위한 끝 지점을 추가하세요"; "planning_route_manage_route" = "경로 관리"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "새 목록 만들기"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "북마크 및 트랙 가져오기"; - "downloader_hide_screen" = "화면 숨기기"; "downloader_percent" = "%@(%@ / %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "사용 약관"; +"button_layer_traffic" = "트래픽"; + "button_layer_subway" = "지하철"; "layers_title" = "맵 스타일 및 레이어"; diff --git a/iphone/Maps/LocalizedStrings/mr.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/mr.lproj/Localizable.strings index 926c0ebf95..f24e2c97da 100644 --- a/iphone/Maps/LocalizedStrings/mr.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/mr.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "मजला"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "कृपया नोंद घ्या"; "downloader_delete_map_dialog" = "तुमचे सर्व नकाशा संपादने नकाशासह पुसले जातील."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "बाहेर पडा"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "मार्ग प्रारंभ बिंदू जोडण्यासाठी नकाशावर शोध वापरा किंवा टॅप करा"; +"routing_add_start_point" = "मार्ग नियोजित करण्यासाठी प्रारंभ बिंदू जोडा"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "गंतव्य बिंदू जोडण्यासाठी नकाशावर शोधा किंवा टॅप करा"; +"routing_add_finish_point" = "मार्ग नियोजित करण्यासाठी इष्टस्थान जोडा"; "planning_route_manage_route" = "मार्ग व्यवस्थापन"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "नवीन यादी जोडा"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "बुकमार्क आणि ट्रॅक आयात करा"; - "downloader_hide_screen" = "पटल (स्क्रीन) लपवा"; "downloader_percent" = "%@ (%@ पैकी %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "वापरण्याच्या अटी"; +"button_layer_traffic" = "ट्रॅफिक"; + "button_layer_subway" = "भुयारी मार्ग"; "layers_title" = "नकाशा शैली आणि स्तर"; diff --git a/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings index 190fe72e49..5853dfddf6 100644 --- a/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Gulv"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Vær oppmerksom på at"; "downloader_delete_map_dialog" = "Alle endringer i kartet vil slettes sammen med kartet."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Avslutt"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Bruk søk eller trykk på kartet for å legge til et startpunkt for ruten"; +"routing_add_start_point" = "Angi startpunkt for å planlegge rute"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Bruk søk eller trykk på kartet for å legge til et destinasjonspunkt"; +"routing_add_finish_point" = "Angi sluttpunkt for å planlegge rute"; "planning_route_manage_route" = "Administrere rute"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Opprett ny liste"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Importer bokmerker og spor"; - "downloader_hide_screen" = "Skjul skjerm"; "downloader_percent" = "%@ (%@ av %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Bruksbetingelser"; +"button_layer_traffic" = "Trafikk"; + "button_layer_subway" = "T-bane"; "layers_title" = "Kartstiler og -lag"; diff --git a/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings index e883595617..6eba1163cc 100644 --- a/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings @@ -7,13 +7,13 @@ /********** Strings **********/ /* Button text (should be short) */ -"cancel" = "Annuleer"; +"cancel" = "Annuleren"; /* Button which interrupts country download */ -"cancel_download" = "Annuleer downloaden"; +"cancel_download" = "Downloaden annuleren"; /* Button which deletes downloaded country */ -"delete" = "Verwijder"; +"delete" = "Verwijderen"; "download_maps" = "Download kaarten"; @@ -36,16 +36,16 @@ "later" = "Later"; /* View and button titles for accessibility, please also edit it in iphone/plist.txt */ -"search" = "Zoek"; +"search" = "Zoeken"; /* Settings/Downloader - 3G download warning dialog confirm button */ "use_cellular_data" = "Ja"; /* View and button titles for accessibility */ -"zoom_to_country" = "Toon op de kaart"; +"zoom_to_country" = "Op de kaart tonen"; /* Button text for the button at the center of the screen when the country is not downloaded and the size should not be shown */ -"country_status_download_without_size" = "Download kaart"; +"country_status_download_without_size" = "Kaart downloaden"; /* Message to display at the center of the screen when the country download has failed */ "country_status_download_failed" = "Downloaden is mislukt"; @@ -60,14 +60,14 @@ "about_proposition_2" = "• Geen batterijverlies, werkt offline"; /* Text in About screen */ -"about_proposition_3" = "• Snel, minimalistisch, ontwikkeld door de gemeenschap"; +"about_proposition_3" = "• Snel, minimalistisch, ontwikkeld door gemeenschap"; -"close" = "Sluit"; +"close" = "Sluiten"; -"download" = "Download"; +"download" = "Downloaden"; /* REMOVE THIS STRING AFTER REFACTORING */ -"continue_download" = "Ga verder"; +"continue_download" = "Doorgaan"; /* "Add new bookmark list" dialog title */ "add_new_set" = "Voeg nieuwe groep toe"; @@ -183,19 +183,19 @@ "load_kmz_failed" = "Bladwijzers uploaden is mislukt. Het bestand is mogelijk beschadigd of defect."; /* resource for context menu */ -"edit" = "Wijzig"; +"edit" = "Wijzigen"; /* Warning message when doing search around current position */ "unknown_current_position" = "Je locatie is nog niet vastgesteld"; /* Subject for emailed bookmark */ -"bookmark_share_email_subject" = "Hey, bekijk mijn pin op Organic Maps!"; +"bookmark_share_email_subject" = "Hey, kijk naar mijn pin op Organic Maps!"; /* Subject for emailed position */ -"my_position_share_email_subject" = "Hey, bekijk mijn huidige locatie op Organic Maps!"; +"my_position_share_email_subject" = "Hey, kijk naar mijn huidige locatie op Organic Maps!"; /* Share button text which opens menu with more buttons, like Message, EMail, Facebook etc. */ -"share" = "Deel"; +"share" = "Delen"; /* Share by email button text, also used in editor and About. */ "email" = "E-mail"; @@ -255,7 +255,7 @@ "pref_tts_enable_title" = "Gesproken instructies"; /* Settings «Route» category: «Tts announce street names» title */ -"pref_tts_street_names_title" = "Straatnamen aankondigen"; +"pref_tts_street_names_title" = "Straatnamen bekendmaken"; /* Settings «Route» category: «Tts announce street names» description */ "pref_tts_street_names_description" = "Indien ingeschakeld, wordt de naam van de straat of afrit waar u afslaat hardop uitgesproken."; @@ -287,7 +287,7 @@ "placepage_distance" = "Afstand"; -"search_show_on_map" = "Bekijk op de kaart"; +"search_show_on_map" = "Op kaart bekijken"; /* Text in menu */ "website" = "Website"; @@ -308,7 +308,7 @@ "vk" = "VK"; /* Text in menu */ -"rate_the_app" = "Beoordeel de app"; +"rate_the_app" = "App beoordelen"; /* Text in menu */ "help" = "Hulp"; @@ -317,7 +317,7 @@ "faq" = "Vragen en antwoorden"; /* Button in the main menu */ -"donate" = "Doneer"; +"donate" = "Doneren"; /* Tex label above the Donate button */ "donate_description" = "Doneer om samen de beste kaarten te bouwen!"; @@ -338,13 +338,13 @@ "follow_us" = "Volg ons en neem contact met ons op:"; /* Alert text */ -"email_error_body" = "Het e-mailprogramma is niet ingesteld. Stel het programma in of neem contact met ons op via %@"; +"email_error_body" = "De emailcliënt is niet ingesteld. Gelieve de cliënt te configureren of contact met ons op te nemen op %@"; /* Alert title */ -"email_error_title" = "E-mail verzendfout"; +"email_error_title" = "Email verzendfout"; /* Settings item title */ -"pref_calibration_title" = "Kompaskalibratie"; +"pref_calibration_title" = "Kompascalibratie"; /* Toast text when user hides UI with a long tap anywhere on the map */ "long_tap_toast" = "Tik nogmaals lang op de kaart om de interface te zien"; @@ -366,14 +366,14 @@ /* In maps downloader and country place page shows how many maps are downloaded / to download, e.g. "Maps: 3 of 10" */ "downloader_status_maps" = "Kaarten"; -"downloader_download_all_button" = "Download alles"; +"downloader_download_all_button" = "Alles downloaden"; "downloader_downloading" = "Aan het downloaden:"; "downloader_search_results" = "Gevonden"; /* Status of outdated country in the list */ -"downloader_status_outdated" = "Updaten"; +"downloader_status_outdated" = "Bijwerken"; /* Status of failed country in the list */ "downloader_status_failed" = "Mislukt"; @@ -388,10 +388,10 @@ "downloader_download_map" = "Download de kaart"; /* Item status in downloader. */ -"downloader_retry" = "Probeer opnieuw"; +"downloader_retry" = "Herhalen"; /* Item in context menu. */ -"downloader_delete_map" = "Verwijder kaart"; +"downloader_delete_map" = "Kaart verwijderen"; /* Text for routing error dialog */ "routing_download_maps_along" = "Download kaarten op de route"; @@ -400,9 +400,9 @@ "routing_requires_all_map" = "Voor het creëren van een route is het nodig dat alle kaarten van uw locatie naar uw bestemming gedownload en bijgewerkt zijn."; /* bookmark button text */ -"bookmark" = "markeer"; +"bookmark" = "markeren"; -"save" = "Bewaar"; +"save" = "Opslaan"; "create" = "aanmaken"; @@ -485,15 +485,15 @@ "dialog_routing_unable_locate_route" = "Route vinden mislukt"; -"dialog_routing_change_start_or_end" = "Kies een ander startpunt of een andere bestemming."; +"dialog_routing_change_start_or_end" = "Kies een ander startpunt of andere bestemming."; -"dialog_routing_change_start" = "Kies ander startpunt"; +"dialog_routing_change_start" = "Ander startpunt kiezen"; "dialog_routing_start_not_determined" = "Route samenstellen mislukt. Startpunt kan niet worden gevonden."; "dialog_routing_select_closer_start" = "Kies een startpunt dat dichter bij een weg ligt."; -"dialog_routing_change_end" = "Kies andere bestemming"; +"dialog_routing_change_end" = "Andere bestemming kiezen"; "dialog_routing_end_not_determined" = "Route samenstellen mislukt. Bestemming kan niet worden gevonden."; @@ -517,10 +517,10 @@ /********** Strings for downloading map from search **********/ /* «Show» context menu */ -"show" = "Toon"; +"show" = "Tonen"; /* «Hide» context menu */ -"hide" = "Verberg"; +"hide" = "Verbergen"; /* Failed planning route message in navigation view */ "routing_planning_error" = "Routeberekening mislukt"; @@ -535,7 +535,7 @@ "history" = "Geschiedenis"; -"search_not_found" = "Sorry, geen resultaten gevonden."; +"search_not_found" = "Sorry, ik heb niets gevonden."; "search_not_found_query" = "Probeer een andere zoekopdracht."; @@ -543,7 +543,7 @@ "search_history_text" = "Snel toegang tot recente zoekopdrachten."; -"clear_search" = "Wis zoekgeschiedenis"; +"clear_search" = "Zoekgeschiedenis wissen"; /* Place Page link to Wikipedia article (if map object has it). */ "read_in_wikipedia" = "Wikipedia"; @@ -553,7 +553,7 @@ "p2p_your_location" = "Uw locatie"; -"p2p_start" = "Start"; +"p2p_start" = "Beginnen"; "p2p_from_here" = "Van"; @@ -563,12 +563,12 @@ "p2p_reroute_from_current" = "Wilt u een route plannen vanaf uw huidige locatie?"; -"editor_time_add" = "Voeg schema toe"; +"editor_time_add" = "Schema toevoegen"; -"editor_time_delete" = "Verwijder schema"; +"editor_time_delete" = "Schema verwijderen"; /* Text for allday switch. */ -"editor_time_allday" = "Elke dag (24 uur)"; +"editor_time_allday" = "Elke dag (dag en nacht)"; "editor_time_open" = "Open"; @@ -592,9 +592,9 @@ "share_with_friends" = "Deel met je vrienden"; -"editor_report_problem_send_button" = "Verzend"; +"editor_report_problem_send_button" = "Verzenden"; -"autodownload" = "Download kaarten automatisch"; +"autodownload" = "Automatische download"; /* Place Page opening hours text */ "closed_now" = "Nu gesloten"; @@ -602,11 +602,11 @@ /* Place Page opening hours text */ "daily" = "Dagelijks"; -"twentyfour_seven" = "24/7"; +"twentyfour_seven" = "Nacht en dag"; -"day_off_today" = "Vandaag gesloten"; +"day_off_today" = "Vrije dag vandaag"; -"day_off" = "Gesloten"; +"day_off" = "Vrije dag"; "today" = "Vandaag"; @@ -624,11 +624,11 @@ "closed" = "Gesloten"; -"add_opening_hours" = "Voeg openingstijden toe"; +"add_opening_hours" = "Openingsuren toevoegen"; "no_osm_account" = "Geen account bij OpenStreetMap?"; -"register_at_openstreetmap" = "Registreer bij OpenStreetMap"; +"register_at_openstreetmap" = "Registeren"; "password_8_chars_min" = "Wachtwoord (minimaal 8 tekens)"; @@ -636,24 +636,24 @@ "login" = "Log in"; -"login_osm" = "Log in bij OpenStreetMap"; +"login_osm" = "Inloggen op OpenStreetMap"; "forgot_password" = "Wachtwoord vergeten?"; "osm_account" = "OSM-account"; -"logout" = "Log uit"; +"logout" = "Uitloggen"; /* Information text: "Last upload 11.01.2016" */ "last_upload" = "Laatste upload"; "thank_you" = "Dank je wel"; -"edit_place" = "Bewerk de locatie"; +"edit_place" = "De locatie bewerken"; "place_name" = "Locatienaam"; -"add_language" = "Voeg een taal toe"; +"add_language" = "Een taal toevoegen"; /* Editable House Number text field (in address block). */ "house_number" = "Huisnummer"; @@ -661,35 +661,32 @@ "details" = "Details"; /* Text field to enter non-existing street name, below list of known streets around */ -"add_street" = "Voeg een straat toe"; +"add_street" = "Een straat toevoegen"; -"choose_language" = "Kies een taal"; +"choose_language" = "Een taal kiezen"; -"choose_street" = "Kies een straat"; +"choose_street" = "Een straat kiezen"; "postal_code" = "Postcode"; "cuisine" = "Keuken"; -"select_cuisine" = "Selecteer keuken"; +"select_cuisine" = "Selecteer Keuken"; /* login text field */ -"email_or_username" = "E-mailadres of gebruikersnaam"; +"email_or_username" = "Emailadres of gebruikersnaam"; "phone" = "Telefoonnummer"; -"level" = "Verdieping"; - -/* Building level */ -"level_value_generic" = "Level: %@"; +"level" = "Etage"; "please_note" = "Opgelet"; "downloader_delete_map_dialog" = "Alle wijzigingen aan de kaart zullen samen met de kaart worden verwijderd."; -"downloader_update_maps" = "Update kaarten"; +"downloader_update_maps" = "Kaarten updaten"; -"downloader_search_field_hint" = "Vind een kaart"; +"downloader_search_field_hint" = "Vind de kaart"; "migration_download_error_dialog" = "Downloadfout"; @@ -701,7 +698,7 @@ "editor_profile_changes" = "Gecontroleerde wijzigingen"; -"editor_focus_map_on_location" = "Versleep de kaart om de juiste locatie van het object te selecteren."; +"editor_focus_map_on_location" = "Trek aan de kaart om de juiste locatie van het object te selecteren."; "editor_add_select_category" = "Selecteer categorie"; @@ -709,9 +706,9 @@ "editor_add_select_category_all_subtitle" = "Alle categorieën"; -"editor_edit_place_title" = "Bewerken"; +"editor_edit_place_title" = "Aan het aanpassen"; -"editor_add_place_title" = "Toevoegen"; +"editor_add_place_title" = "Aan het toevoegen"; "editor_edit_place_name_hint" = "Naam van de plaats"; @@ -722,7 +719,7 @@ "whatsnew_editor_message_1" = "Voeg nieuwe plaatsen toe aan de kaart en bewerk de bestaande rechtstreeks vanuit de app."; -"dialog_incorrect_feature_position" = "Wijzig locatie"; +"dialog_incorrect_feature_position" = "Locatie wijzigen"; "message_invalid_feature_position" = "Hier kan geen object worden geplaatst"; @@ -743,7 +740,7 @@ "download_over_mobile_message" = "Met sommige abonnementen of bij roaming kan dit behoorlijk duur zijn."; -"error_enter_correct_house_number" = "Voer een geldig huisnummer in"; +"error_enter_correct_house_number" = "Een juist huisnummer invoeren"; "editor_storey_number" = "Aantal verdiepingen (max. %d)"; @@ -752,12 +749,12 @@ "editor_zip_code" = "Postcode"; -"error_enter_correct_zip_code" = "Voer een geldige postcode in"; +"error_enter_correct_zip_code" = "Voer de juiste postcode in"; /* Place Page title for long tap */ "core_placepage_unknown_place" = "Onbekende locatie"; -"editor_other_info" = "Stuur een notitie naar de OSM-editors"; +"editor_other_info" = "Notitie sturen naar de OSM-editors"; "editor_detailed_description_hint" = "Gedetailleerde reactie"; @@ -784,13 +781,13 @@ "location_services_disabled_2" = "2. Tik op locatie"; /* iOS Dialog for the case when the location permission is not granted; you might find the exact wording for your language here: https://support.apple.com/en-us/102647 (replace 'en-us' in URL with your language/region) */ -"location_services_disabled_3" = "3. Selecteer Bij gebruik van app"; +"location_services_disabled_3" = "3. Selecteer Terwijl Je de App Gebruikt"; -"location_services_disabled_on_device_2" = "2. Selecteer Privacy en beveiliging"; +"location_services_disabled_on_device_2" = "2. Selecteer Privacy"; -"location_services_disabled_on_device_3" = "3. Selecteer Locatievoorzieningen"; +"location_services_disabled_on_device_3" = "3. Selecteer Locatiediensten"; -"location_services_disabled_on_device_4" = "4. Locatievoorzieningen inschakelen"; +"location_services_disabled_on_device_4" = "4. Locatiediensten inschakelen"; "location_services_disabled_on_device_additional_message" = "Of blijf Organic Maps gebruiken zonder locatie"; @@ -817,7 +814,7 @@ "placepage_more_button" = "Meer"; -"book_button" = "Boek"; +"book_button" = "Boeken"; /* A referral link on the place page for some hotels */ "more_on_kayak" = "Foto's, beoordelingen, boeken"; @@ -828,42 +825,42 @@ /* A confirmation button text in the explanation dialog that opens hotel details page on Kayak website. */ "dialog_kayak_button" = "Details op Kayak"; -"placepage_call_button" = "Bel"; +"placepage_call_button" = "Bellen"; -"placepage_edit_bookmark_button" = "Bewerk bladwijzer"; +"placepage_edit_bookmark_button" = "Bladwijzer bewerken"; "placepage_bookmark_name_hint" = "Bladwijzernaam"; "placepage_personal_notes_hint" = "Persoonlijke aantekeningen"; -"placepage_delete_bookmark_button" = "Verwijder bladwijzer"; +"placepage_delete_bookmark_button" = "Bladwijzer verwijderen"; "editor_edits_sent_message" = "Je opmerking wordt verzonden naar OpenStreetMap"; "editor_comment_hint" = "Reactie…"; -"editor_reset_edits_message" = "Alle lokale wijzigingen weggooien?"; +"editor_reset_edits_message" = "Alle lokale wijzigingen herstellen?"; -"editor_reset_edits_button" = "Gooi weg"; +"editor_reset_edits_button" = "Herstellen"; -"editor_remove_place_message" = "Toegevoegde locatie verwijderen?"; +"editor_remove_place_message" = "Een toegevoegde locatie verwijderen?"; -"editor_remove_place_button" = "Verwijder"; +"editor_remove_place_button" = "Verwijderen"; "editor_place_doesnt_exist" = "Locatie bestaat niet"; "text_more_button" = "…meer"; /* Phone number error message */ -"error_enter_correct_phone" = "Voer een geldig telefoonnummer in"; +"error_enter_correct_phone" = "Voer het juiste telefoonnummer in"; "error_enter_correct_web" = "Voer een geldig webadres in"; "error_enter_correct_email" = "Voer een geldig emailadres in"; -"refresh" = "Update"; +"refresh" = "Updaten"; -"placepage_add_place_button" = "Voeg een plaats toe aan OpenStreetMap"; +"placepage_add_place_button" = "Plaats toevoegen aan OpenStreetMap"; /* Displayed when saving some edits to the map to warn against publishing personal data */ "editor_share_to_all_dialog_title" = "Wil je het naar alle gebruikers sturen?"; @@ -873,12 +870,12 @@ "editor_share_to_all_dialog_message_2" = "OpenStreetMap-editors zullen de wijzigingen controleren en contact met u opnemen als ze vragen hebben."; -"navigation_stop_button" = "Stop"; +"navigation_stop_button" = "Stoppen"; /* iOS dialog for the case when recent track recording is on and the app comes back from background */ "recent_track_background_dialog_title" = "Vastleggen van uw onlangs afgelegde route uitschakelen?"; -"off_recent_track_background_button" = "Schakel uit"; +"off_recent_track_background_button" = "Uitschakelen"; /* For sharing via SMS and so on */ "sharing_call_action_look" = "Bekijk"; @@ -888,34 +885,34 @@ "general_settings" = "Algemene instellingen"; /* For the first routing */ -"accept" = "Accepteer"; +"accept" = "Aanvaarden"; /* For the first routing */ -"decline" = "Weiger"; +"decline" = "Weigeren"; /* A noun - a button name used to show search results in list form */ "search_in_table" = "Lijst"; "mobile_data_dialog" = "Mobiel internet gebruiken om gedetailleerde informatie weer te geven?"; -"mobile_data_option_always" = "Gebruik altijd"; +"mobile_data_option_always" = "Altijd Gebruiken"; -"mobile_data_option_today" = "Alleen vandaag"; +"mobile_data_option_today" = "Enkel Vandaag"; -"mobile_data_option_not_today" = "Gebruik vandaag niet"; +"mobile_data_option_not_today" = "Vandaag niet Gebruiken"; -"mobile_data" = "Mobiel internet"; +"mobile_data" = "Mobiel Internet"; /* NOTE to translators: please synchronize your translation with the English one. */ "mobile_data_description" = "Mobiel internet is vereist voor het weergeven van gedetailleerde informatie over plaatsen, zoals foto's, prijzen en beoordelingen."; -"mobile_data_option_never" = "Gebruik nooit"; +"mobile_data_option_never" = "Nooit Gebruiken"; -"mobile_data_option_ask" = "Vraag altijd"; +"mobile_data_option_ask" = "Altijd Vragen"; "traffic_update_maps_text" = "Om verkeersgegevens weer te geven, moeten de kaarten bijgewerkt worden."; -"big_font" = "Vergroot lettergrootte op de kaart"; +"big_font" = "Lettergrootte op de kaart vergroten"; /* "traffic" as in road congestion */ "traffic_update_app_message" = "Om de verkeersgegevens weer te geven, moet de applicatie bijgewerkt worden."; @@ -928,21 +925,19 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Uitgang"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Gebruik zoeken of tik op de kaart om een startpunt voor de route toe te voegen"; +"routing_add_start_point" = "Voeg beginpunt toe om een route te plannen"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Gebruik Zoeken of tik op de kaart om een bestemmingspunt toe te voegen"; +"routing_add_finish_point" = "Voeg eindpunt toe om een route te plannen"; -"planning_route_manage_route" = "Beheer route"; +"planning_route_manage_route" = "Route beheren"; -"button_plan" = "Plan"; +"button_plan" = "Plannen"; -"placepage_remove_stop" = "Verwijder"; +"placepage_remove_stop" = "Verwijderen"; "planning_route_remove_title" = "Sleep hier om te verwijderen"; -"placepage_add_stop" = "Voeg tussenstop toe"; +"placepage_add_stop" = "Tussenstop toevoegen"; "start_from_my_position" = "Start vanaf"; @@ -954,21 +949,18 @@ "core_entrance" = "Ingang"; -"error_enter_correct_name" = "Voer een geldige naam in"; +"error_enter_correct_name" = "Voer een juiste naam in"; "bookmark_lists" = "Lijsten"; /* Do not display all bookmark lists on the map */ -"bookmark_lists_hide_all" = "Verberg alles"; +"bookmark_lists_hide_all" = "Alles verbergen"; -"bookmark_lists_show_all" = "Toon alles"; +"bookmark_lists_show_all" = "Alles weergeven"; -"bookmarks_create_new_group" = "Maak een nieuwe lijst"; +"bookmarks_create_new_group" = "Nieuwe lijst maken"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Importeer bladwijzers en tracks"; - -"downloader_hide_screen" = "Verberg scherm"; +"downloader_hide_screen" = "Scherm Verbergen"; "downloader_percent" = "%@ (%@ van %@)"; @@ -992,18 +984,20 @@ "bookmarks_detect_title" = "Nieuwe bestanden gedetecteerd"; -"button_convert" = "Zet om"; +"button_convert" = "Omzetten"; "bookmarks_convert_error_title" = "Fout"; -"bookmarks_convert_error_message" = "Sommige bestanden zijn niet geconverteerd."; +"bookmarks_convert_error_message" = "Sommige bestanden werden niet geconverteerd."; -"restore" = "Zet terug"; +"restore" = "Herstellen"; "privacy_policy" = "Privacybeleid"; "terms_of_use" = "Gebruiksvoorwaarden"; +"button_layer_traffic" = "Verkeer"; + "button_layer_subway" = "Metro"; "layers_title" = "Kaartstijlen en -lagen"; @@ -1014,19 +1008,19 @@ "popular_place" = "Populair"; -"export_file" = "Exporteer KMZ"; +"export_file" = "KMZ exporteren"; -"export_file_gpx" = "Exporteer GPX"; +"export_file_gpx" = "GPX exporteren"; -"delete_list" = "Verwijder lijst"; +"delete_list" = "Lijst verwijderen"; -"hide_from_map" = "Verberg van de kaart"; +"hide_from_map" = "Van de kaart verbergen"; -"bookmark_list_description_hint" = "Voer een beschrijving in (tekst of html)"; +"bookmark_list_description_hint" = "Maak een beschrijving aan (tekst of html)"; "tags_loading_error_subtitle" = "Er is een fout opgetreden tijdens het laden van tags, probeer het opnieuw"; -"download_button" = "Download"; +"download_button" = "Downloaden"; "speedcams_alert_title" = "Snelheidscamera's"; @@ -1047,11 +1041,11 @@ "power_managment_setting_never" = "Nooit"; -"power_managment_setting_auto" = "Wanneer batterij bijna leeg is"; +"power_managment_setting_auto" = "Auto"; "power_managment_setting_manual_max" = "Maximale energiebesparing"; -"driving_options_title" = "Route-instellingen"; +"driving_options_title" = "Route instellingen"; /* Recommended length for CarPlay and Android Auto is around 25-27 characters */ "avoid_tolls" = "Vermijd tolwegen"; @@ -1064,25 +1058,25 @@ "avoid_motorways" = "Vermijd snelwegen"; -"unable_to_calc_alert_title" = "Kan route niet berekenen"; +"unable_to_calc_alert_title" = "Kan route niet opbouwen"; -"unable_to_calc_alert_subtitle" = "Helaas konden we geen route berekenen met de gekozen opties. Wijzig de instellingen en probeer het opnieuw"; +"unable_to_calc_alert_subtitle" = "Helaas konden we geen route opbouwen met de gekozen opties. Wijzig de instellingen en probeer het opnieuw"; -"define_to_avoid_btn" = "Configureer wegen om te vermijden"; +"define_to_avoid_btn" = "Omwegen configureren"; -"change_driving_options_btn" = "Route-instellingen ingeschakeld"; +"change_driving_options_btn" = "Omweginstellingen ingeschakeld"; "toll_road" = "Tolweg"; -"unpaved_road" = "Onverharde weg"; +"unpaved_road" = "Aardeweg"; -"ferry_crossing" = "Veerboot"; +"ferry_crossing" = "Ferry"; -"trip_start" = "Laten we gaan"; +"trip_start" = "Kom op"; -"pick_destination" = "Bestemming"; +"pick_destination" = "Doel"; -"follow_my_position" = "Centreer"; +"follow_my_position" = "Centreren"; "search_results" = "Zoekresultaten"; @@ -1111,7 +1105,7 @@ "dialog_routing_change_start_carplay" = "Kan route vanaf huidige positie niet opbouwen"; -"dialog_routing_change_end_carplay" = "Kan route naar het eindpunt niet opbouwen. Kies een ander eindpunt"; +"dialog_routing_change_end_carplay" = "Kan route naar het eindpunt niet opbouwen. Kies een andere punt"; "dialog_routing_check_gps_carplay" = "Geen GPS-signaal. Ga naar een open omgeving"; @@ -1125,7 +1119,7 @@ "dialog_routing_rebuild_for_vehicle_carplay" = "De route wordt veranderd naar een autoroute"; -"ok" = "Oké"; +"ok" = "Goed"; "speedcams_alert_title_carplay_1" = "Snelheidscamera's"; @@ -1139,7 +1133,7 @@ "sort" = "Sorteer…"; /* iOS */ -"sort_default" = "Standaard sortering"; +"sort_default" = "Standaard sorteren"; "sort_type" = "Sorteren op type"; @@ -1147,7 +1141,7 @@ "sort_date" = "Sorteer op datum"; -"sort_name" = "Sorteer op naam"; +"sort_name" = "Sorteren op naam"; "week_ago_sorttype" = "Een week geleden"; @@ -1157,7 +1151,7 @@ "moreyear_ago_sorttype" = "Meer dan een jaar geleden"; -"near_me_sorttype" = "Dicht bij mij"; +"near_me_sorttype" = "Naast mij"; "others_sorttype" = "Andere"; @@ -1192,7 +1186,7 @@ "medicine" = "Geneeskunde"; -"search_in_the_list" = "Zoek in de lijst"; +"search_in_the_list" = "In de lijst zoeken"; "religious_places" = "Religieuze plaatsen"; @@ -1216,9 +1210,9 @@ "elevation_profile_diff_level_hard" = "Moeilijk"; -"elevation_profile_ascent" = "Stijging"; +"elevation_profile_ascent" = "Opstijging"; -"elevation_profile_descent" = "Daling"; +"elevation_profile_descent" = "Afdaling"; "elevation_profile_minaltitude" = "Min. hoogte"; @@ -1226,7 +1220,7 @@ "elevation_profile_difficulty" = "Moeilijkheid"; -"elevation_profile_time" = "Tijd:"; +"elevation_profile_time" = "Op weg"; "isolines_toast_zooms_1_10" = "Zoom in om hoogtelijnen te bekijken"; @@ -1241,10 +1235,10 @@ "whats_new_auto_update_message" = "Kaarten bijwerken houdt de informatie over objecten actueel"; /* Autoupdate dialog on start */ -"whats_new_auto_update_button_size" = "Werk bij (%@)"; +"whats_new_auto_update_button_size" = "Bijwerken (%@)"; /* Autoupdate dialog on start */ -"whats_new_auto_update_button_later" = "Werk later handmatig bij"; +"whats_new_auto_update_button_later" = "Later handmatig bijwerken"; /* Delete track button on track edit screen */ "placepage_delete_track_button" = "Verwijder traject"; @@ -1277,7 +1271,7 @@ "car_used_on_the_car_screen" = "Je gebruikt nu Organic Maps op het autoscherm"; /* Displayed on the phone screen. Button to display maps on the phone screen instead of a car */ -"car_continue_on_the_phone" = "Ga verder op de telefoon"; +"car_continue_on_the_phone" = "Doorgaan in de telefoon"; /* Displayed on the Android Auto or CarPlay screen. Button to display maps on the car screen instead of a phone. Must be no more than 18 symbols! */ "car_continue_in_the_car" = "Naar het autoscherm"; @@ -1286,10 +1280,10 @@ "button_layer_outdoor" = "Wandelen"; /* Bookmark categories screen, button that opens share dialog to export all bookmarks and tracks */ -"bookmarks_export" = "Exporteer alle bladwijzers en tracks"; +"bookmarks_export" = "Alle bladwijzers en tracks exporteren"; /* Text for the editing the Track's color button. */ -"change_color" = "Verander kleur"; +"change_color" = "Kleur veranderen"; /* Main screen title "Map" displayed in the navigation back button's menu. */ "map" = "Kaart"; @@ -1300,7 +1294,7 @@ "website_menu" = "Menulink"; /* Title for the "Enable iCloud Syncronization" alert. */ -"enable_icloud_synchronization_title" = "Schakel iCloud-synchronisatie in"; +"enable_icloud_synchronization_title" = "iCloud-synchronisatie inschakelen"; /* Message for the "Enable iCloud Syncronization" alert. */ "enable_icloud_synchronization_message" = "iCloud synchronisatie is een experimentele functie in ontwikkeling. Zorg ervoor dat je een back-up hebt gemaakt van al je bladwijzers en tracks."; @@ -1312,7 +1306,7 @@ "icloud_disabled_message" = "Schakel iCloud in bij de instellingen van je apparaat om deze functie te gebruiken."; /* Title for the "Enable iCloud Syncronization" alert's "Enable" action button. */ -"enable" = "Schakel in"; +"enable" = "inschakelen"; /* Title for the "Enable iCloud Syncronization" alert's "Backup" action button. */ "backup" = "Back-up"; diff --git a/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings index 3653dc198c..6e23aa5e72 100644 --- a/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Kondygnacja"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Uwaga!"; "downloader_delete_map_dialog" = "Wszystkie zmiany dotyczące mapy zostaną usunięte wraz z nią."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Wyjście"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Użyj funkcji wyszukiwania lub dotknij mapy, aby dodać punkt początkowy trasy"; +"routing_add_start_point" = "Aby zaplanować trasę, dodaj punkt początkowy"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Użyj funkcji wyszukiwania lub dotknij mapy, aby dodać punkt docelowy"; +"routing_add_finish_point" = "Aby zaplanować trasę, dodaj punkt końcowy"; "planning_route_manage_route" = "Zarządzaj trasą"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Utwórz nową listę"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Importuj zakładki i trasy"; - "downloader_hide_screen" = "Ukryj ekran"; "downloader_percent" = "%@ (%@ z %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Warunki użytkowania"; +"button_layer_traffic" = "Ruch drogowy"; + "button_layer_subway" = "Metro"; "layers_title" = "Style i warstwy mapy"; diff --git a/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.stringsdict b/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.stringsdict index 3a9fdc2a99..f6449f49e0 100644 --- a/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.stringsdict +++ b/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.stringsdict @@ -53,14 +53,8 @@ NSStringPluralRuleType NSStringFormatValueTypeKey d - few - %d obiekty - many - %d obiektów - one - %d obiekt other - %d obiektu + %d miejsce @@ -74,14 +68,8 @@ NSStringPluralRuleType NSStringFormatValueTypeKey d - few - %d trasy - many - %d tras - one - %d trasa other - %d trasy + %d tras diff --git a/iphone/Maps/LocalizedStrings/pt-BR.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/pt-BR.lproj/Localizable.strings index fcc2f69002..143d35c355 100644 --- a/iphone/Maps/LocalizedStrings/pt-BR.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/pt-BR.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Andar"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Aviso"; "downloader_delete_map_dialog" = "Todas as edições no mapa serão excluídas juntamente com o mapa."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Saída"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Use a busca ou toque no mapa para adicionar um ponto de partida da rota"; +"routing_add_start_point" = "Adicionar ponto de partida para planejar uma rota"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Use a busca ou toque no mapa para adicionar um ponto de destino"; +"routing_add_finish_point" = "Adicionar ponto final da viagem para planejar uma rota"; "planning_route_manage_route" = "Gerenciar rota"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Criar nova lista"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Importar favoritos e trilhas"; - "downloader_hide_screen" = "Ocultar tela"; "downloader_percent" = "%@ (%@ de %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Termos de uso"; +"button_layer_traffic" = "Tráfego"; + "button_layer_subway" = "Metrô"; "layers_title" = "Estilos e camadas de mapas"; diff --git a/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings index 325633d84b..c5a632ea54 100644 --- a/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Andar"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Aviso"; "downloader_delete_map_dialog" = "Todas as alterações ao mapa serão eliminadas juntamente com o mapa."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Saída"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Use a busca ou toque no mapa para adicionar um ponto de partida do percurso"; +"routing_add_start_point" = "Adicionar ponto de partida para planear uma rota"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Use a busca ou toque no mapa para adicionar um ponto de destino"; +"routing_add_finish_point" = "Adicionar final da viagem para planear uma rota"; "planning_route_manage_route" = "Gerir rota"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Criar nova lista"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Importar favoritos e trilhas"; - "downloader_hide_screen" = "Ocultar ecrã"; "downloader_percent" = "%@ (%@ de %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Termos de utilização"; +"button_layer_traffic" = "Tráfego"; + "button_layer_subway" = "Metropolitano"; "layers_title" = "Estilos e camadas de mapas"; diff --git a/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings index 54d084a8bb..5fe6b654c8 100644 --- a/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Etaj"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Reține"; "downloader_delete_map_dialog" = "Toate modificările aduse hărții vor fi șterse împreună cu harta."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Ieșire"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Utilizați funcția de căutare sau atingeți ușor pe hartă pentru a adăuga un punct de plecare"; +"routing_add_start_point" = "Adaugă un punct de plecare pentru a planifica un traseu"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Utilizați funcția de căutare sau atingeți ușor pe hartă pentru a adăuga un punct de destinație"; +"routing_add_finish_point" = "Adaugă un punct de sosire pentru a planifica un traseu"; "planning_route_manage_route" = "Gestionare traseu"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Creează o listă nouă"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Importați marcaje și piese"; - "downloader_hide_screen" = "Ascunde pagina"; "downloader_percent" = "%@ (%@ din %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Termeni de utilizare"; +"button_layer_traffic" = "Trafic"; + "button_layer_subway" = "Metrou"; "layers_title" = "Stiluri și straturi de hartă"; diff --git a/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings index a6124308c8..e2d16ad13a 100644 --- a/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Этаж"; -/* Building level */ -"level_value_generic" = "Этаж: %@"; - "please_note" = "Обратите внимание"; "downloader_delete_map_dialog" = "Вместе с картой удалятся и внесённые вами правки на этой карте."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Выход"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Используйте поиск или коснитесь карты, чтобы добавить начальную точку маршрута"; +"routing_add_start_point" = "Добавьте стартовую точку, чтобы построить маршрут"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Используйте поиск или коснитесь карты, чтобы добавить точку назначения"; +"routing_add_finish_point" = "Добавьте конечную точку, чтобы построить маршрут"; "planning_route_manage_route" = "Изменить маршрут"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Создать новый список"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Импортировать метки и треки"; - "downloader_hide_screen" = "Скрыть"; "downloader_percent" = "%@ (%@ из %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Условия использования"; +"button_layer_traffic" = "Пробки"; + "button_layer_subway" = "Метро"; "layers_title" = "Стили и слои карты"; diff --git a/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings index fc291f8af4..6decc14e9d 100644 --- a/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Podlaha"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Upozorňujeme vás, že"; "downloader_delete_map_dialog" = "Všetky zmeny týkajúce sa mapy budú vymazané spolu s mapou."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Ukončiť"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Pomocou vyhľadávania alebo ťuknutím na mapu môžete pridať východiskový bod trasy"; +"routing_add_start_point" = "Pridaním počiatočného bodu začnite plánovať trasu"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Pomocou vyhľadávania alebo ťuknutím na mapu môžete pridať cieľový bod"; +"routing_add_finish_point" = "Pridaním cieľového bodu naplánujete trasu"; "planning_route_manage_route" = "Spravovať trasu"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Vytvoriť nový zoznam"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Importovanie záložiek a stôp"; - "downloader_hide_screen" = "Skryť obrazovku"; "downloader_percent" = "%@ (%@ z %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Podmienky používania"; +"button_layer_traffic" = "Dopravné informácie"; + "button_layer_subway" = "Metro"; "layers_title" = "Štýly a vrstvy mapy"; diff --git a/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings index 3cf3954db6..0968ad8ef8 100644 --- a/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Våningsplan"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Observera"; "downloader_delete_map_dialog" = "Alla kartändringar kommer att raderas tillsammans med kartan."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Avsluta"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Använd sökfunktionen eller tryck på kartan för att lägga till en startpunkt för rutten"; +"routing_add_start_point" = "Lägg till startpunkt för att planera en rutt"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Använd sökfunktionen eller tryck på kartan för att lägga till en destinationspunkt"; +"routing_add_finish_point" = "Lägg till slutpunkt för att planera en rutt"; "planning_route_manage_route" = "Hantera rutt"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Skapa ny lista"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Importera bokmärken och spår"; - "downloader_hide_screen" = "Dölj skärm"; "downloader_percent" = "%@ (%@ av %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Allmänna villkor"; +"button_layer_traffic" = "Trafik"; + "button_layer_subway" = "Tunnelbana"; "layers_title" = "Kartstilar och lager"; diff --git a/iphone/Maps/LocalizedStrings/sw.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/sw.lproj/Localizable.strings index d2ff93e3b2..9d439c1f09 100644 --- a/iphone/Maps/LocalizedStrings/sw.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/sw.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Ghorofa"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Please note"; "downloader_delete_map_dialog" = "All of your map edits will be deleted with the map."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Toka"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Tumia utafutaji au uguse kwenye ramani ili kuongeza mahali pa kuanzia"; +"routing_add_start_point" = "Ongeza eneo la kuanzia ili kupanga njia ya kufuata"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Tumia utafutaji au uguse kwenye ramani ili kuongeza mahali unakoenda"; +"routing_add_finish_point" = "Ongeza eneo la kumalizia ili kupanga njia ya kufuata"; "planning_route_manage_route" = "Dhibiti njia ya kufuata"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Unda orodha mpya"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Ingiza alamisho na nyimbo"; - "downloader_hide_screen" = "Ficha skrini"; "downloader_percent" = "%@ (%@ kati ya %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Masharti ya matumizi"; +"button_layer_traffic" = "Trafiki"; + "button_layer_subway" = "Njia ya chini"; "layers_title" = "Mitindo ya Ramani na Tabaka"; diff --git a/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings index 9fd7b95b89..2931807f06 100644 --- a/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "ชั้น"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "โปรดทราบ"; "downloader_delete_map_dialog" = "การเปลี่ยนแปลงแผนที่ทั้งหมดจะถูกลบไปพร้อมกับแผนที่"; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "ออก"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "ใช้การค้นหาหรือแตะบนแผนที่เพื่อเพิ่มจุดเริ่มต้นเส้นทาง"; +"routing_add_start_point" = "เพิ่มจุดเริ่มต้นเพื่อวางแผนเส้นทาง"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "ใช้การค้นหาหรือแตะบนแผนที่เพื่อเพิ่มจุดปลายทาง"; +"routing_add_finish_point" = "เพิ่มจุดสิ้นสุดเพื่อวางแผนเส้นทาง"; "planning_route_manage_route" = "จัดการเส้นทาง"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "สร้างรายการใหม่"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "นำเข้าบุ๊กมาร์กและแทร็ก"; - "downloader_hide_screen" = "ซ่อนหน้าจอ"; "downloader_percent" = "%@ (%@ จาก %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "ข้อกำหนดในการใช้งาน"; +"button_layer_traffic" = "การจราจร"; + "button_layer_subway" = "รถไฟใต้ดิน"; "layers_title" = "รูปแบบและเลเยอร์ของแผนที่"; diff --git a/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings index 36c4f1522f..f85b251e45 100644 --- a/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Zemin"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Lütfen dikkat"; "downloader_delete_map_dialog" = "Harita ile birlikte tüm harita değişiklikleri de silinecektir."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Çık"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Bir rota başlangıç noktası eklemek için aramayı kullanın veya haritaya dokunun"; +"routing_add_start_point" = "Rotayı planlamak için bir başlangıç noktası ekleyin"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Bir hedef noktası eklemek için aramayı kullanın veya haritaya dokunun"; +"routing_add_finish_point" = "Rotayı planlamak için bir varış noktası ekleyin"; "planning_route_manage_route" = "Rotayı yönet"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Yeni liste oluştur"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Yer i̇mlerini ve parçaları i̇çe aktarma"; - "downloader_hide_screen" = "Ekranı Gizle"; "downloader_percent" = "%@ (%@ / %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Kullanım koşulları"; +"button_layer_traffic" = "Trafik"; + "button_layer_subway" = "Metro"; "layers_title" = "Harita Stilleri ve Katmanları"; diff --git a/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings index 8b240e782a..cf83e52f6c 100644 --- a/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Поверх"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Будь ласка, зверніть увагу"; "downloader_delete_map_dialog" = "Разом з мапою будуть видалені й внесені Вами правки на цій мапі."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Вихід"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Скористайтеся пошуком або торкніться мапи, щоб додати початкову точку маршруту"; +"routing_add_start_point" = "Вкажіть початкову точку для побудови маршруту"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Скористайтеся пошуком або торкніться мапи, щоб додати пункт призначення"; +"routing_add_finish_point" = "Вкажіть кінцеву точку для побудови маршруту"; "planning_route_manage_route" = "Редагування маршруту"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Створити новий список"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Імпортувати мітки та маршрути"; - "downloader_hide_screen" = "Приховати екран"; "downloader_percent" = "%@ (%@ з %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Умови використання"; +"button_layer_traffic" = "Затор"; + "button_layer_subway" = "Метрополітен"; "layers_title" = "Стилі та шари мапи"; @@ -1014,7 +1008,7 @@ "popular_place" = "Popular"; -"export_file" = "Експорт KMZ"; +"export_file" = "Експорт КМЗ"; "export_file_gpx" = "Експорт GPX"; diff --git a/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings index 319c77e9e3..78b6c0c2ef 100644 --- a/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings @@ -680,9 +680,6 @@ "level" = "Tầng"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "Xin lưu ý"; "downloader_delete_map_dialog" = "Tất cả những thay đổi của bản đồ sẽ bị xóa cùng với bản đồ đó."; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "Lối ra"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "Sử dụng tìm kiếm hoặc nhấn vào bản đồ để thêm điểm bắt đầu tuyến đường"; +"routing_add_start_point" = "Bổ sung điểm bắt đầu để lập kế hoạch lộ trình"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "Sử dụng tìm kiếm hoặc nhấn vào bản đồ để thêm điểm đến"; +"routing_add_finish_point" = "Bổ sung điểm kết thúc để lập kế hoạch lộ trình"; "planning_route_manage_route" = "Quản lý lộ trình"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "Tạo danh sách mới"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "Nhập dấu trang và bản nhạc"; - "downloader_hide_screen" = "Ẩn Màn hình"; "downloader_percent" = "%@ (%@ / %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "Điều khoảng sử dụng"; +"button_layer_traffic" = "Giao thông"; + "button_layer_subway" = "Xe điện ngầm"; "layers_title" = "Kiểu và lớp bản đồ"; diff --git a/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings index bfb8fa298f..78a171b466 100644 --- a/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings @@ -616,11 +616,11 @@ "opens_at" = "Opens at %@"; -"opens_in" = "将于 %@ 后开业"; +"opens_in" = "Opens in %@"; "closes_at" = "Closes at %@"; -"closes_in" = "将于 %@ 后停业"; +"closes_in" = "Closes in %@"; "closed" = "已关闭"; @@ -680,9 +680,6 @@ "level" = "楼层"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "请注意"; "downloader_delete_map_dialog" = "所有对地图的修改都将与地图一起被删除。"; @@ -792,7 +789,7 @@ "location_services_disabled_on_device_4" = "4.打开定位服务"; -"location_services_disabled_on_device_additional_message" = "或继续使用 Organic Maps,但无法定位到您目前所在的位置。"; +"location_services_disabled_on_device_additional_message" = "或继续使用 \"有机地图 \"而不定位"; /* abbreviation for meters */ "m" = "米"; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "退出"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "使用搜索或点击地图添加路线起点"; +"routing_add_start_point" = "添加起点以规划路线"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "使用搜索或点击地图添加目的地点"; +"routing_add_finish_point" = "添加终点以规划路线"; "planning_route_manage_route" = "管理路线"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "创建新的列表"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "导入书签和轨迹"; - "downloader_hide_screen" = "隱藏屏幕"; "downloader_percent" = "%@ (%@ / %@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "使用条款"; +"button_layer_traffic" = "路况"; + "button_layer_subway" = "地铁"; "layers_title" = "地图样式和图层"; @@ -1271,10 +1265,10 @@ "osm_wiki_about_url" = "https://wiki.openstreetmap.org/wiki/About_OpenStreetMap"; /* Text on the Android Auto or CarPlay placeholder screen that maps are displayed on the phone screen */ -"car_used_on_the_phone_screen" = "您现在正在手机屏幕上使用 Organic Maps"; +"car_used_on_the_phone_screen" = "您现在正在手机屏幕上使用有机地图"; /* Text on the phone placeholder screen that maps are displayed on the car screen */ -"car_used_on_the_car_screen" = "您现在正在汽车屏幕上使用 Organic Maps"; +"car_used_on_the_car_screen" = "您现在正在汽车屏幕上使用有机地图"; /* Displayed on the phone screen. Button to display maps on the phone screen instead of a car */ "car_continue_on_the_phone" = "在手机上继续"; @@ -3818,7 +3812,7 @@ "type.tourism.theme_park" = "主题公园"; -"type.tourism.viewpoint" = "观景点"; +"type.tourism.viewpoint" = "观点"; /* Typically more basic, not staffed and free (compared to alpine_hut). */ "type.tourism.wilderness_hut" = "野外住宿小屋"; diff --git a/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings index 734a69d866..03111a9bee 100644 --- a/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings @@ -210,7 +210,7 @@ "done" = "完成"; /* Prints version number in About dialog */ -"version" = "Organic Maps 版本:%@"; +"version" = "有機地圖版本:%@"; /* Title for tracks category in bookmarks manager */ "tracks_title" = "軌跡"; @@ -616,11 +616,11 @@ "opens_at" = "Opens at %@"; -"opens_in" = "將於 %@ 後開業"; +"opens_in" = "Opens in %@"; "closes_at" = "Closes at %@"; -"closes_in" = "將於 %@ 後停業"; +"closes_in" = "Closes in %@"; "closed" = "已關閉"; @@ -680,9 +680,6 @@ "level" = "樓層"; -/* Building level */ -"level_value_generic" = "Level: %@"; - "please_note" = "請註意"; "downloader_delete_map_dialog" = "所有對地圖的修改都將與地圖一起被刪除。"; @@ -792,7 +789,7 @@ "location_services_disabled_on_device_4" = "4.開啟定位服務"; -"location_services_disabled_on_device_additional_message" = "或繼續使用 Organic Maps,但無法定位到您目前所在的位置。"; +"location_services_disabled_on_device_additional_message" = "或繼續使用沒有位置的有機地圖"; /* abbreviation for meters */ "m" = "公尺"; @@ -823,7 +820,7 @@ "more_on_kayak" = "照片、評論、預訂"; /* An explanation dialog shown when clicking on more_on_kayak link. */ -"dialog_kayak_disclaimer" = "透過此連結進行的每次預訂收到的推薦獎金將用於開發 Organic Maps。"; +"dialog_kayak_disclaimer" = "透過此連結進行的每次預訂收到的推薦獎金將用於開發有機地圖"; /* A confirmation button text in the explanation dialog that opens hotel details page on Kayak website. */ "dialog_kayak_button" = "Kayak 上的詳細資訊"; @@ -928,11 +925,9 @@ /* Subway exits for public transport marks on the map */ "core_exit" = "退出"; -/* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "使用搜尋或點擊地圖新增路線起點"; +"routing_add_start_point" = "新增起點以計劃路線"; -/* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "使用搜尋或點擊地圖新增目的地點"; +"routing_add_finish_point" = "新增終點以計劃路線"; "planning_route_manage_route" = "管理路線"; @@ -965,9 +960,6 @@ "bookmarks_create_new_group" = "創建新列表"; -/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ -"bookmarks_import" = "導入書籤和曲目"; - "downloader_hide_screen" = "隱藏畫面"; "downloader_percent" = "%@ (%@,共%@)"; @@ -1004,6 +996,8 @@ "terms_of_use" = "使用條款"; +"button_layer_traffic" = "路況"; + "button_layer_subway" = "捷運"; "layers_title" = "地圖樣式和圖層"; @@ -1271,10 +1265,10 @@ "osm_wiki_about_url" = "https://wiki.openstreetmap.org/wiki/About_OpenStreetMap"; /* Text on the Android Auto or CarPlay placeholder screen that maps are displayed on the phone screen */ -"car_used_on_the_phone_screen" = "您現在正在手機螢幕上使用 Organic Maps"; +"car_used_on_the_phone_screen" = "您現在正在手機螢幕上使用有機地圖"; /* Text on the phone placeholder screen that maps are displayed on the car screen */ -"car_used_on_the_car_screen" = "您現在正在汽車螢幕上使用 Organic Maps"; +"car_used_on_the_car_screen" = "您現在正在汽車螢幕上使用有機地圖"; /* Displayed on the phone screen. Button to display maps on the phone screen instead of a car */ "car_continue_on_the_phone" = "繼續打電話"; @@ -3818,7 +3812,7 @@ "type.tourism.theme_park" = "旅遊景點"; -"type.tourism.viewpoint" = "觀景點"; +"type.tourism.viewpoint" = "視野"; /* Typically more basic, not staffed and free (compared to alpine_hut). */ "type.tourism.wilderness_hut" = "山屋"; diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj index 0f4c62981e..ca3f885c72 100644 --- a/iphone/Maps/Maps.xcodeproj/project.pbxproj +++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj @@ -471,7 +471,6 @@ ED1263AB2B6F99F900AD99F3 /* UIView+AddSeparator.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED1263AA2B6F99F900AD99F3 /* UIView+AddSeparator.swift */; }; ED1ADA332BC6B1B40029209F /* CarPlayServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED1ADA322BC6B1B40029209F /* CarPlayServiceTests.swift */; }; ED3EAC202B03C88100220A4A /* BottomTabBarButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED3EAC1F2B03C88100220A4A /* BottomTabBarButton.swift */; }; - ED43B8BD2C12063500D07BAA /* DocumentPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED43B8BC2C12063500D07BAA /* DocumentPicker.swift */; }; ED63CEB92BDF8F9D006155C4 /* SettingsTableViewiCloudSwitchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED63CEB62BDF8F9C006155C4 /* SettingsTableViewiCloudSwitchCell.swift */; }; ED79A5AB2BD7AA9C00952D1F /* LoadingOverlayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED79A5AA2BD7AA9C00952D1F /* LoadingOverlayViewController.swift */; }; ED79A5AD2BD7BA0F00952D1F /* UIApplication+LoadingOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED79A5AC2BD7BA0F00952D1F /* UIApplication+LoadingOverlay.swift */; }; @@ -481,7 +480,6 @@ ED79A5D62BDF8D6100952D1F /* iCloudDocumentsDirectoryMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED79A5CE2BDF8D6100952D1F /* iCloudDocumentsDirectoryMonitor.swift */; }; ED79A5D72BDF8D6100952D1F /* SynchronizationStateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED79A5CF2BDF8D6100952D1F /* SynchronizationStateManager.swift */; }; ED79A5D82BDF8D6100952D1F /* DefaultLocalDirectoryMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED79A5D02BDF8D6100952D1F /* DefaultLocalDirectoryMonitor.swift */; }; - ED7CCC4F2C1362E300E2A737 /* FileType.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED7CCC4E2C1362E300E2A737 /* FileType.swift */; }; ED9966802B94FBC20083CE55 /* ColorPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED99667D2B94FBC20083CE55 /* ColorPicker.swift */; }; EDBD68072B625724005DD151 /* LocationServicesDisabledAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDBD68062B625724005DD151 /* LocationServicesDisabledAlert.xib */; }; EDBD680B2B62572E005DD151 /* LocationServicesDisabledAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDBD680A2B62572E005DD151 /* LocationServicesDisabledAlert.swift */; }; @@ -661,8 +659,6 @@ FA85D43D27958BF500B858E9 /* FaqController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA85D43C27958BF500B858E9 /* FaqController.swift */; }; FA85D44E279B738F00B858E9 /* CopyableLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA85D44D279B738F00B858E9 /* CopyableLabel.swift */; }; FA8E808925F412E2002A1434 /* FirstSession.mm in Sources */ = {isa = PBXBuildFile; fileRef = FA8E808825F412E2002A1434 /* FirstSession.mm */; }; - FAC4E60C2C1FA4C50043979C /* 00_NotoSansMalayalam-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FAC4E6092C1FA4C40043979C /* 00_NotoSansMalayalam-Regular.ttf */; }; - FAC4E6122C1FA9FC0043979C /* 00_NotoSansBengali-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FAC4E60F2C1FA9FC0043979C /* 00_NotoSansBengali-Regular.ttf */; }; FAF9DDA32A86DC54000D7037 /* libharfbuzz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FAF9DDA22A86DC54000D7037 /* libharfbuzz.a */; }; /* End PBXBuildFile section */ @@ -1381,7 +1377,6 @@ ED1263AA2B6F99F900AD99F3 /* UIView+AddSeparator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+AddSeparator.swift"; sourceTree = ""; }; ED1ADA322BC6B1B40029209F /* CarPlayServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarPlayServiceTests.swift; sourceTree = ""; }; ED3EAC1F2B03C88100220A4A /* BottomTabBarButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomTabBarButton.swift; sourceTree = ""; }; - ED43B8BC2C12063500D07BAA /* DocumentPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DocumentPicker.swift; sourceTree = ""; }; ED48BBB817C2B1E2003E7E92 /* CircleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CircleView.h; sourceTree = ""; }; ED48BBB917C2B1E2003E7E92 /* CircleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CircleView.m; sourceTree = ""; }; ED63CEB62BDF8F9C006155C4 /* SettingsTableViewiCloudSwitchCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsTableViewiCloudSwitchCell.swift; sourceTree = ""; }; @@ -1393,7 +1388,6 @@ ED79A5CE2BDF8D6100952D1F /* iCloudDocumentsDirectoryMonitor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = iCloudDocumentsDirectoryMonitor.swift; sourceTree = ""; }; ED79A5CF2BDF8D6100952D1F /* SynchronizationStateManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SynchronizationStateManager.swift; sourceTree = ""; }; ED79A5D02BDF8D6100952D1F /* DefaultLocalDirectoryMonitor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultLocalDirectoryMonitor.swift; sourceTree = ""; }; - ED7CCC4E2C1362E300E2A737 /* FileType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileType.swift; sourceTree = ""; }; ED99667D2B94FBC20083CE55 /* ColorPicker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ColorPicker.swift; sourceTree = ""; }; EDBD68062B625724005DD151 /* LocationServicesDisabledAlert.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = LocationServicesDisabledAlert.xib; sourceTree = ""; }; EDBD680A2B62572E005DD151 /* LocationServicesDisabledAlert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationServicesDisabledAlert.swift; sourceTree = ""; }; @@ -1701,8 +1695,6 @@ FABF2FF02B55F6780006F787 /* hi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hi; path = hi.lproj/InfoPlist.strings; sourceTree = ""; }; FABF2FF12B55F6780006F787 /* hi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hi; path = hi.lproj/Localizable.strings; sourceTree = ""; }; FABF2FF22B55F6780006F787 /* hi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = hi; path = hi.lproj/Localizable.stringsdict; sourceTree = ""; }; - FAC4E6092C1FA4C40043979C /* 00_NotoSansMalayalam-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "00_NotoSansMalayalam-Regular.ttf"; path = "../../data/00_NotoSansMalayalam-Regular.ttf"; sourceTree = ""; }; - FAC4E60F2C1FA9FC0043979C /* 00_NotoSansBengali-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "00_NotoSansBengali-Regular.ttf"; path = "../../data/00_NotoSansBengali-Regular.ttf"; sourceTree = ""; }; FAF30A94173AB23900818BF6 /* 07_roboto_medium.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = 07_roboto_medium.ttf; path = ../../data/07_roboto_medium.ttf; sourceTree = ""; }; FAF8C669278CEE29006CAE66 /* be */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = be; path = be.lproj/InfoPlist.strings; sourceTree = ""; }; FAF8C66C278CEE2A006CAE66 /* be */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = be; path = be.lproj/Localizable.stringsdict; sourceTree = ""; }; @@ -3057,15 +3049,6 @@ path = Tests; sourceTree = ""; }; - ED43B8B92C12061600D07BAA /* DocumentPicker */ = { - isa = PBXGroup; - children = ( - ED7CCC4E2C1362E300E2A737 /* FileType.swift */, - ED43B8BC2C12063500D07BAA /* DocumentPicker.swift */, - ); - path = DocumentPicker; - sourceTree = ""; - }; ED79A5A92BD7AA7500952D1F /* LoadingOverlay */ = { isa = PBXGroup; children = ( @@ -3339,7 +3322,6 @@ F6E2FBFB1E097B9F0083EBEC /* UI */ = { isa = PBXGroup; children = ( - ED43B8B92C12061600D07BAA /* DocumentPicker */, ED99667C2B94FBC20083CE55 /* ColorPicker */, F69018B51E9E5FEB00B3C10B /* Autoupdate */, 34E7760D1F14B165003040B3 /* AvailableArea */, @@ -3744,10 +3726,8 @@ isa = PBXGroup; children = ( 6B679E88266BFD090074AE2A /* 00_NotoNaskhArabic-Regular.ttf */, - FAC4E60F2C1FA9FC0043979C /* 00_NotoSansBengali-Regular.ttf */, 6B15907026623AE500944BBA /* 00_NotoSansThai-Regular.ttf */, FA45118E2A5EC15100CD8F64 /* 00_NotoSerifDevanagari-Regular.ttf */, - FAC4E6092C1FA4C40043979C /* 00_NotoSansMalayalam-Regular.ttf */, EEA615E5134C4968003A9827 /* 01_dejavusans.ttf */, 9DF04B231B71010E00DACAF1 /* 02_droidsans-fallback.ttf */, EEA615E7134C4968003A9827 /* 03_jomolhari-id-a3d.ttf */, @@ -4002,7 +3982,6 @@ 34AB66801FC5AA330078E451 /* MWMiPhoneRoutePreview.xib in Resources */, 6741A95B1BF340DE002C974C /* 06_code2000.ttf in Resources */, 471A7BC22481D44B00A0D4C1 /* BookmarkTitleCell.xib in Resources */, - FAC4E60C2C1FA4C50043979C /* 00_NotoSansMalayalam-Regular.ttf in Resources */, 6741A99F1BF340DE002C974C /* 07_roboto_medium.ttf in Resources */, FA637ED329A500BE00D8921A /* drules_proto_outdoors_light.txt in Resources */, F6E2FE6D1E097BA00083EBEC /* _MWMOHHeaderCell.xib in Resources */, @@ -4048,7 +4027,6 @@ 6741A9511BF340DE002C974C /* MWMDownloaderDialogHeader.xib in Resources */, 6741A96C1BF340DE002C974C /* MWMDownloadTransitMapAlert.xib in Resources */, 34D3B0241E389D05004100F9 /* MWMEditorAddAdditionalNameTableViewCell.xib in Resources */, - FAC4E6122C1FA9FC0043979C /* 00_NotoSansBengali-Regular.ttf in Resources */, 34D3B0271E389D05004100F9 /* EditorAdditionalNamePlaceholderTableViewCell.xib in Resources */, F6E2FDB91E097BA00083EBEC /* MWMEditorAdditionalNamesHeader.xib in Resources */, 34D3B02D1E389D05004100F9 /* MWMEditorAdditionalNameTableViewCell.xib in Resources */, @@ -4318,7 +4296,6 @@ 34D3B0181E389D05004100F9 /* EditorAdditionalNamePlaceholderTableViewCell.swift in Sources */, 993DF12223F6BDB100AC231A /* UINavigationItemRenderer.swift in Sources */, 993DF12B23F6BDB100AC231A /* StyleManager.swift in Sources */, - ED43B8BD2C12063500D07BAA /* DocumentPicker.swift in Sources */, 470E1674252AD7F2002D201A /* BookmarksListInfoViewController.swift in Sources */, 47B9065521C7FA400079C85E /* NSString+MD5.m in Sources */, CDB4D5022231412900104869 /* SettingsTemplateBuilder.swift in Sources */, @@ -4511,7 +4488,6 @@ 34AB66621FC5AA330078E451 /* TransportTransitSeparator.swift in Sources */, CDCA2743223F8D1E00167D87 /* ListItemInfo.swift in Sources */, 993DF11F23F6BDB100AC231A /* UITableViewCellRenderer.swift in Sources */, - ED7CCC4F2C1362E300E2A737 /* FileType.swift in Sources */, 4767CDA820AB401000BD8166 /* LinkTextView.swift in Sources */, 34763EE71F2F392300F4D2D3 /* MWMTextToSpeech.mm in Sources */, 998927402449ECC200260CE2 /* BottomMenuItemCell.swift in Sources */, diff --git a/iphone/Maps/UI/DocumentPicker/DocumentPicker.swift b/iphone/Maps/UI/DocumentPicker/DocumentPicker.swift deleted file mode 100644 index ab65e61fec..0000000000 --- a/iphone/Maps/UI/DocumentPicker/DocumentPicker.swift +++ /dev/null @@ -1,29 +0,0 @@ -typealias URLsCompletionHandler = ([URL]) -> Void - -final class DocumentPicker: NSObject { - static let shared = DocumentPicker() - private var completionHandler: URLsCompletionHandler? - - func present(from rootViewController: UIViewController, - fileTypes: [FileType] = [.kml, .kmz, .gpx], - completionHandler: @escaping URLsCompletionHandler) { - self.completionHandler = completionHandler - let documentPickerViewController: UIDocumentPickerViewController - if #available(iOS 14.0, *) { - documentPickerViewController = UIDocumentPickerViewController(forOpeningContentTypes: fileTypes.map(\.utType), asCopy: true) - } else { - documentPickerViewController = UIDocumentPickerViewController(documentTypes: fileTypes.map(\.typeIdentifier), in: .import) - } - documentPickerViewController.delegate = self - // TODO: Enable multiple selection when the multiple files parsing support will be added to the bookmark_manager. - documentPickerViewController.allowsMultipleSelection = false - rootViewController.present(documentPickerViewController, animated: true) - } -} - -// MARK: - UIDocumentPickerDelegate -extension DocumentPicker: UIDocumentPickerDelegate { - func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) { - completionHandler?(urls) - } -} diff --git a/iphone/Maps/UI/DocumentPicker/FileType.swift b/iphone/Maps/UI/DocumentPicker/FileType.swift deleted file mode 100644 index a7968c1d24..0000000000 --- a/iphone/Maps/UI/DocumentPicker/FileType.swift +++ /dev/null @@ -1,22 +0,0 @@ -import UniformTypeIdentifiers - -// TODO: (KK) Remove this type-wrapper and use custom UTTypeIdentifier that is registered into the Info.plist after updating to the iOS >= 14.0. -struct FileType { - let fileExtension: String - let typeIdentifier: String -} - -extension FileType { - static let kml = FileType(fileExtension: "kml", typeIdentifier: "com.google.earth.kml") - static let kmz = FileType(fileExtension: "kmz", typeIdentifier: "com.google.earth.kmz") - static let gpx = FileType(fileExtension: "gpx", typeIdentifier: "com.topografix.gpx") -} - -// MARK: - FileType + UTType -extension FileType { - @available(iOS 14.0, *) - var utType: UTType { - UTType(filenameExtension: fileExtension)! - } -} - diff --git a/iphone/Maps/UI/PlacePage/Components/PlacePagePreviewViewController.swift b/iphone/Maps/UI/PlacePage/Components/PlacePagePreviewViewController.swift index 473ba0c9f2..eb4dc75cf0 100644 --- a/iphone/Maps/UI/PlacePage/Components/PlacePagePreviewViewController.swift +++ b/iphone/Maps/UI/PlacePage/Components/PlacePagePreviewViewController.swift @@ -109,16 +109,15 @@ final class PlacePagePreviewViewController: UIViewController { } func updateHeading(_ angle: CGFloat) { + heading = angle placePageDirectionView?.imageView.isHidden = false - let duration = heading == nil ? .zero : kDefaultAnimationDuration // skip the initial setup animation - UIView.animate(withDuration: duration, + UIView.animate(withDuration: kDefaultAnimationDuration, delay: 0, options: [.beginFromCurrentState, .curveEaseInOut], animations: { [unowned self] in self.placePageDirectionView?.imageView.transform = CGAffineTransform(rotationAngle: CGFloat.pi / 2 - angle) }) fullScreenDirectionView.updateHeading(angle) - heading = angle } func updateSpeedAndAltitude(_ speedAndAltitude: String) { diff --git a/iphone/Maps/UI/PlacePage/PlacePageBuilder.swift b/iphone/Maps/UI/PlacePage/PlacePageBuilder.swift index 337f7d4163..49f003fd6d 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageBuilder.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageBuilder.swift @@ -1,5 +1,5 @@ @objc class PlacePageBuilder: NSObject { - @objc static func build() -> PlacePageViewController { + @objc static func build() -> UIViewController { let storyboard = UIStoryboard.instance(.placePage) guard let viewController = storyboard.instantiateInitialViewController() as? PlacePageViewController else { fatalError() @@ -15,33 +15,14 @@ } else { layout = PlacePageCommonLayout(interactor: interactor, storyboard: storyboard, data: data) } - let presenter = PlacePagePresenter(view: viewController, interactor: interactor) + let presenter = PlacePagePresenter(view: viewController, + interactor: interactor, + layout: layout) - viewController.setLayout(layout) - viewController.presenter = presenter interactor.presenter = presenter + viewController.presenter = presenter layout.presenter = presenter + return viewController } - - @objc static func update(_ viewController: PlacePageViewController) { - let data = PlacePageData(localizationProvider: OpeinigHoursLocalization()) - viewController.isPreviewPlus = data.isPreviewPlus - let interactor = PlacePageInteractor(viewController: viewController, - data: data, - mapViewController: MapViewController.shared()!) - let layout:IPlacePageLayout - if data.elevationProfileData != nil { - layout = PlacePageElevationLayout(interactor: interactor, storyboard: viewController.storyboard!, data: data) - } else { - layout = PlacePageCommonLayout(interactor: interactor, storyboard: viewController.storyboard!, data: data) - } - let presenter = PlacePagePresenter(view: viewController, interactor: interactor) - - viewController.presenter = presenter - interactor.presenter = presenter - layout.presenter = presenter - viewController.updateWithLayout(layout) - viewController.updatePreviewOffset() - } } diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/PlacePageCommonLayout.swift b/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/PlacePageCommonLayout.swift index 9f230375bd..86a6794616 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/PlacePageCommonLayout.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/PlacePageCommonLayout.swift @@ -190,9 +190,10 @@ extension PlacePageCommonLayout { headerViewController.setTitle(title, secondaryTitle: secondaryTitle) placePageNavigationViewController.setTitle(title, secondaryTitle: secondaryTitle) } - presenter?.layoutIfNeeded() + self.presenter?.layoutIfNeeded() UIView.animate(withDuration: kDefaultAnimationDuration) { [unowned self] in self.bookmarkViewController.view.isHidden = !isBookmark + self.presenter?.layoutIfNeeded() } } } diff --git a/iphone/Maps/UI/PlacePage/PlacePageManager/MWMPlacePageManager.mm b/iphone/Maps/UI/PlacePage/PlacePageManager/MWMPlacePageManager.mm index 16a6bf345d..8bdf2aae78 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageManager/MWMPlacePageManager.mm +++ b/iphone/Maps/UI/PlacePage/PlacePageManager/MWMPlacePageManager.mm @@ -30,7 +30,7 @@ using namespace storage; return GetFramework().HasPlacePageInfo(); } -- (void)closePlacePage { GetFramework().DeactivateMapSelection(); } +- (void)closePlacePage { GetFramework().DeactivateMapSelection(true); } - (void)routeFrom:(PlacePageData *)data { MWMRoutePoint *point = [self routePoint:data withType:MWMRoutePointTypeStart intermediateIndex:0]; diff --git a/iphone/Maps/UI/PlacePage/PlacePagePresenter.swift b/iphone/Maps/UI/PlacePage/PlacePagePresenter.swift index fb1f12336f..e0b1e73e8f 100644 --- a/iphone/Maps/UI/PlacePage/PlacePagePresenter.swift +++ b/iphone/Maps/UI/PlacePage/PlacePagePresenter.swift @@ -9,11 +9,15 @@ protocol PlacePagePresenterProtocol: AnyObject { class PlacePagePresenter: NSObject { private weak var view: PlacePageViewProtocol! private let interactor: PlacePageInteractorProtocol + private let layout: IPlacePageLayout init(view: PlacePageViewProtocol, - interactor: PlacePageInteractorProtocol) { + interactor: PlacePageInteractorProtocol, + layout: IPlacePageLayout) { self.view = view self.interactor = interactor + self.layout = layout + view.setLayout(layout) } } @@ -33,7 +37,7 @@ extension PlacePagePresenter: PlacePagePresenterProtocol { } func closeAnimated() { - view.closeAnimated(completion: nil) + view.closeAnimated() } func updateTopBound(_ bound: CGFloat, duration: TimeInterval) { diff --git a/iphone/Maps/UI/PlacePage/PlacePageViewController.swift b/iphone/Maps/UI/PlacePage/PlacePageViewController.swift index 5ff069f5ed..7b6e2470c2 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageViewController.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageViewController.swift @@ -1,12 +1,10 @@ protocol PlacePageViewProtocol: AnyObject { var presenter: PlacePagePresenterProtocol! { get set } - func setLayout(_ layout: IPlacePageLayout) - func closeAnimated(completion: (() -> Void)?) + func layoutIfNeeded() + func closeAnimated() func updatePreviewOffset() func showNextStop() - func layoutIfNeeded() - func updateWithLayout(_ layout: IPlacePageLayout) } final class PlacePageScrollView: UIScrollView { @@ -51,8 +49,36 @@ final class PlacePageScrollView: UIScrollView { override func viewDidLoad() { super.viewDidLoad() - setupView() - setupLayout(layout) + layout.headerViewControllers.forEach({ addToHeader($0) }) + layout.bodyViewControllers.forEach({ addToBody($0) }) + + if let actionBar = layout.actionBar { + hideActionBar(false) + addActionBar(actionBar) + } else { + hideActionBar(true) + } + + let bgView = UIView() + bgView.styleName = "PPBackgroundView" + stackView.insertSubview(bgView, at: 0) + bgView.alignToSuperview() + + scrollView.decelerationRate = .fast + scrollView.backgroundColor = .clear + + stackView.backgroundColor = .clear + + let cornersToMask: CACornerMask = alternativeSizeClass(iPhone: [], iPad: [.layerMinXMaxYCorner, .layerMaxXMaxYCorner]) + actionBarContainerView.layer.setCorner(radius: 16, corners: cornersToMask) + actionBarContainerView.layer.masksToBounds = true + + // See https://github.com/organicmaps/organicmaps/issues/6917 for the details. + if #available(iOS 13.0, *), previousTraitCollection == nil { + scrollView.contentInset = alternativeSizeClass(iPhone: UIEdgeInsets(top: view.height, left: 0, bottom: 0, right: 0), + iPad: UIEdgeInsets.zero) + scrollView.layoutIfNeeded() + } } override func viewDidLayoutSubviews() { @@ -86,39 +112,21 @@ final class PlacePageScrollView: UIScrollView { } } - - // MARK: - Actions - - @IBAction func onPan(gesture: UIPanGestureRecognizer) { - let xOffset = gesture.translation(in: view.superview).x - gesture.setTranslation(CGPoint.zero, in: view.superview) - view.minX += xOffset - view.minX = min(view.minX, 0) - let alpha = view.maxX / view.width - view.alpha = alpha - - let state = gesture.state - if state == .ended || state == .cancelled { - if alpha < 0.8 { - closeAnimated() - } else { - UIView.animate(withDuration: kDefaultAnimationDuration) { - self.view.minX = 0 - self.view.alpha = 1 - } - } - } - } - - // MARK: - Private methods - - private func updateSteps() { + func updateSteps() { layoutIfNeeded() scrollSteps = layout.calculateSteps(inScrollView: scrollView, compact: traitCollection.verticalSizeClass == .compact) } - private func findNextStop(_ offset: CGFloat, velocity: CGFloat) -> PlacePageState { + func updatePreviewOffset() { + updateSteps() + if !beginDragging { + let stateOffset = isPreviewPlus ? scrollSteps[2].offset : scrollSteps[1].offset + Constants.additionalPreviewOffset + scrollTo(CGPoint(x: 0, y: stateOffset)) + } + } + + func findNextStop(_ offset: CGFloat, velocity: CGFloat) -> PlacePageState { if velocity == 0 { return findNearestStop(offset) } @@ -145,51 +153,6 @@ final class PlacePageScrollView: UIScrollView { return result } - private func setupView() { - let bgView = UIView() - bgView.styleName = "PPBackgroundView" - stackView.insertSubview(bgView, at: 0) - bgView.alignToSuperview() - - scrollView.decelerationRate = .fast - scrollView.backgroundColor = .clear - - stackView.backgroundColor = .clear - - let cornersToMask: CACornerMask = alternativeSizeClass(iPhone: [], iPad: [.layerMinXMaxYCorner, .layerMaxXMaxYCorner]) - actionBarContainerView.layer.setCorner(radius: 16, corners: cornersToMask) - actionBarContainerView.layer.masksToBounds = true - - // See https://github.com/organicmaps/organicmaps/issues/6917 for the details. - if #available(iOS 13.0, *), previousTraitCollection == nil { - scrollView.contentInset = alternativeSizeClass(iPhone: UIEdgeInsets(top: view.height, left: 0, bottom: 0, right: 0), - iPad: UIEdgeInsets.zero) - scrollView.layoutIfNeeded() - } - } - - private func setupLayout(_ layout: IPlacePageLayout) { - setLayout(layout) - - layout.headerViewControllers.forEach({ addToHeader($0) }) - layout.bodyViewControllers.forEach({ addToBody($0) }) - - beginDragging = false - if let actionBar = layout.actionBar { - hideActionBar(false) - addActionBar(actionBar) - } else { - hideActionBar(true) - } - } - - private func cleanupLayout() { - layout?.actionBar?.view.removeFromSuperview() - layout?.navigationBar?.view.removeFromSuperview() - headerStackView.arrangedSubviews.forEach { $0.removeFromSuperview() } - stackView.arrangedSubviews.forEach { $0.removeFromSuperview() } - } - private func findNearestStop(_ offset: CGFloat) -> PlacePageState { var result = scrollSteps[0] scrollSteps.suffix(from: 1).forEach { ppState in @@ -200,35 +163,42 @@ final class PlacePageScrollView: UIScrollView { return result } - private func showLastStop() { + func showLastStop() { if let lastStop = scrollSteps.last { scrollTo(CGPoint(x: 0, y: lastStop.offset), forced: true) } } - private func updateTopBound(_ bound: CGFloat, duration: TimeInterval) { + @IBAction func onPan(gesture: UIPanGestureRecognizer) { + let xOffset = gesture.translation(in: view.superview).x + gesture.setTranslation(CGPoint.zero, in: view.superview) + view.minX += xOffset + view.minX = min(view.minX, 0) + let alpha = view.maxX / view.width + view.alpha = alpha + + let state = gesture.state + if state == .ended || state == .cancelled { + if alpha < 0.8 { + closeAnimated() + } else { + UIView.animate(withDuration: kDefaultAnimationDuration) { + self.view.minX = 0 + self.view.alpha = 1 + } + } + } + } + + func updateTopBound(_ bound: CGFloat, duration: TimeInterval) { alternativeSizeClass(iPhone: { presenter.updateTopBound(bound, duration: duration) }, iPad: {}) } } -// MARK: - PlacePageViewProtocol - extension PlacePageViewController: PlacePageViewProtocol { - func layoutIfNeeded() { - guard layout != nil else { return } - view.layoutIfNeeded() - } - - func updateWithLayout(_ layout: IPlacePageLayout) { - setupLayout(layout) - } - func setLayout(_ layout: IPlacePageLayout) { - if self.layout != nil { - cleanupLayout() - } self.layout = layout } @@ -243,14 +213,6 @@ extension PlacePageViewController: PlacePageViewProtocol { headerStackView.addArrangedSubview(headerViewController.view) } - func updatePreviewOffset() { - updateSteps() - if !beginDragging { - let stateOffset = isPreviewPlus ? scrollSteps[2].offset : scrollSteps[1].offset + Constants.additionalPreviewOffset - scrollTo(CGPoint(x: 0, y: stateOffset)) - } - } - func addToBody(_ viewController: UIViewController) { addChild(viewController) stackView.addArrangedSubview(viewController.view) @@ -312,13 +274,16 @@ extension PlacePageViewController: PlacePageViewProtocol { } } - @objc - func closeAnimated(completion: (() -> Void)? = nil) { + func layoutIfNeeded() { + view.layoutIfNeeded() + } + + func closeAnimated() { alternativeSizeClass(iPhone: { self.scrollTo(CGPoint(x: 0, y: -self.scrollView.height + 1), + animated: true, forced: true) { self.rootViewController.dismissPlacePage() - completion?() } }, iPad: { UIView.animate(withDuration: kDefaultAnimationDuration, @@ -328,7 +293,6 @@ extension PlacePageViewController: PlacePageViewProtocol { self.view.alpha = 0 }) { complete in self.rootViewController.dismissPlacePage() - completion?() } }) } @@ -378,7 +342,7 @@ extension PlacePageViewController: UIScrollViewDelegate { } private func setNavigationBarVisible(_ visible: Bool) { - guard visible != isNavigationBarVisible, let navigationBar = layout?.navigationBar else { return } + guard visible != isNavigationBarVisible, let navigationBar = layout.navigationBar else { return } isNavigationBarVisible = visible if isNavigationBarVisible { addNavigationBar(navigationBar) diff --git a/iphone/Maps/UI/Search/MWMSearchManager.mm b/iphone/Maps/UI/Search/MWMSearchManager.mm index 44dab5b6ea..2d09f473e2 100644 --- a/iphone/Maps/UI/Search/MWMSearchManager.mm +++ b/iphone/Maps/UI/Search/MWMSearchManager.mm @@ -216,7 +216,7 @@ const CGFloat kWidthForiPad = 320; [self.navigationController popToRootViewControllerAnimated:NO]; self.searchBarView.state = SearchBarStateReady; - GetFramework().DeactivateMapSelection(); + GetFramework().DeactivateMapSelection(true); [self animateConstraints:^{ self.contentViewTopHidden.priority = UILayoutPriorityDefaultLow; self.contentViewBottomHidden.priority = UILayoutPriorityDefaultLow; @@ -237,7 +237,7 @@ const CGFloat kWidthForiPad = 320; [self.navigationController popToRootViewControllerAnimated:NO]; self.searchBarView.state = SearchBarStateReady; - GetFramework().DeactivateMapSelection(); + GetFramework().DeactivateMapSelection(true); [self updateTableSearchActionBar]; auto const navigationManagerState = [MWMNavigationDashboardManager sharedManager].state; if (navigationManagerState == MWMNavigationDashboardStateHidden) { @@ -265,7 +265,7 @@ const CGFloat kWidthForiPad = 320; auto const navigationManagerState = [MWMNavigationDashboardManager sharedManager].state; [self viewHidden:navigationManagerState != MWMNavigationDashboardStateHidden]; self.controlsManager.menuState = MWMBottomMenuStateHidden; - GetFramework().DeactivateMapSelection(); + GetFramework().DeactivateMapSelection(true); [MWMSearch setSearchOnMap:YES]; [self.tableViewController reloadData]; diff --git a/iphone/metadata/ar-SA/release_notes.txt b/iphone/metadata/ar-SA/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/ar-SA/release_notes.txt +++ b/iphone/metadata/ar-SA/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/ca/release_notes.txt b/iphone/metadata/ca/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/ca/release_notes.txt +++ b/iphone/metadata/ca/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/cs/release_notes.txt b/iphone/metadata/cs/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/cs/release_notes.txt +++ b/iphone/metadata/cs/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/da/release_notes.txt b/iphone/metadata/da/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/da/release_notes.txt +++ b/iphone/metadata/da/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/de-DE/release_notes.txt b/iphone/metadata/de-DE/release_notes.txt index d3fb692389..0b78e756f1 100644 --- a/iphone/metadata/de-DE/release_notes.txt +++ b/iphone/metadata/de-DE/release_notes.txt @@ -1,20 +1,45 @@ -• Synchronisierung von iCloud-Lesezeichen und -Titeln (EXPERIMENTAL, bitte in den Einstellungen aktivieren) -• Ansagen von Straßennamen in verbalen TTS-Abbiegeanweisungen (EXPERIMENTAL, bitte in den Einstellungen aktivieren) -• Verwendung der Karte, wenn CarPlay verbunden ist -• Suche nach US-Postleitzahlen und UK (GB)-Postleitzahlen -• Lesezeichen und Tracks im GPX-Dateiformat exportieren -• neue OpenStreetMap-Daten ab dem 28. Mai -• Hinzufügen, Bearbeiten und Anzeigen von Weblinks zu Speisekarten von Restaurants, Bars und Lebensmitteldiensten -• fehlende Adressen in den Details von Fitnessstudios korrigiert -• Hinzufügen von "Gebäck" und "Kuchen" als Suchbegriffe -• Korrektur von Wikipedia-Links, die ein Fragezeichen enthalten -• CarPlay Textfarbe im dunklen Modus korrigiert -• mehr TTS-Sprachoptionen -• TTS-Wendeansagen unterbrechen Podcasts, anstatt sie zu unterdrücken -• Behebung einiger Schaltflächen, die beim Hinzufügen eines Ortes zur Karte verschwunden sind -• Fix: Ortsdetails werden nach der Bearbeitung eines Lesezeichens nicht aktualisiert -• die Nicht-Geschäftszeiten-Schaltfläche im Editor funktioniert jetzt auch nach Mitternacht +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Aktualisierte tschechische, deutsche und portugiesische Übersetzungen. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels -Bitte lesen Sie weitere Einzelheiten unter https://omaps.org/de/news +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/el/release_notes.txt b/iphone/metadata/el/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/el/release_notes.txt +++ b/iphone/metadata/el/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/en-AU/release_notes.txt b/iphone/metadata/en-AU/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/en-AU/release_notes.txt +++ b/iphone/metadata/en-AU/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/en-CA/release_notes.txt b/iphone/metadata/en-CA/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/en-CA/release_notes.txt +++ b/iphone/metadata/en-CA/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/en-GB/release_notes.txt b/iphone/metadata/en-GB/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/en-GB/release_notes.txt +++ b/iphone/metadata/en-GB/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/en-US/release_notes.txt b/iphone/metadata/en-US/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/en-US/release_notes.txt +++ b/iphone/metadata/en-US/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/es-ES/release_notes.txt b/iphone/metadata/es-ES/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/es-ES/release_notes.txt +++ b/iphone/metadata/es-ES/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/es-MX/release_notes.txt b/iphone/metadata/es-MX/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/es-MX/release_notes.txt +++ b/iphone/metadata/es-MX/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/fi/release_notes.txt b/iphone/metadata/fi/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/fi/release_notes.txt +++ b/iphone/metadata/fi/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/fr-CA/release_notes.txt b/iphone/metadata/fr-CA/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/fr-CA/release_notes.txt +++ b/iphone/metadata/fr-CA/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/fr-FR/release_notes.txt b/iphone/metadata/fr-FR/release_notes.txt index 02976f8941..0b78e756f1 100644 --- a/iphone/metadata/fr-FR/release_notes.txt +++ b/iphone/metadata/fr-FR/release_notes.txt @@ -1,20 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Mise à jour des traductions en tchèque, allemand et portugais. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels -Pour plus de détails, veuillez consulter le site https://omaps.org/fr/news +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/he/release_notes.txt b/iphone/metadata/he/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/he/release_notes.txt +++ b/iphone/metadata/he/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/hi/release_notes.txt b/iphone/metadata/hi/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/hi/release_notes.txt +++ b/iphone/metadata/hi/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/hr/release_notes.txt b/iphone/metadata/hr/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/hr/release_notes.txt +++ b/iphone/metadata/hr/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/hu/release_notes.txt b/iphone/metadata/hu/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/hu/release_notes.txt +++ b/iphone/metadata/hu/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/id/release_notes.txt b/iphone/metadata/id/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/id/release_notes.txt +++ b/iphone/metadata/id/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/it/release_notes.txt b/iphone/metadata/it/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/it/release_notes.txt +++ b/iphone/metadata/it/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/ja/release_notes.txt b/iphone/metadata/ja/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/ja/release_notes.txt +++ b/iphone/metadata/ja/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/ko/release_notes.txt b/iphone/metadata/ko/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/ko/release_notes.txt +++ b/iphone/metadata/ko/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/ms/release_notes.txt b/iphone/metadata/ms/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/ms/release_notes.txt +++ b/iphone/metadata/ms/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/nl-NL/release_notes.txt b/iphone/metadata/nl-NL/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/nl-NL/release_notes.txt +++ b/iphone/metadata/nl-NL/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/no/release_notes.txt b/iphone/metadata/no/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/no/release_notes.txt +++ b/iphone/metadata/no/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/pl/release_notes.txt b/iphone/metadata/pl/release_notes.txt index f0e2ea6cf7..0b78e756f1 100644 --- a/iphone/metadata/pl/release_notes.txt +++ b/iphone/metadata/pl/release_notes.txt @@ -1,17 +1,45 @@ -• synchronizacja zakładek i śladów do iCloud (EKSPERYMENTALNE, proszę włączyć w ustawieniach) -• zapowiadanie nazwy ulicy w komunikatach nawigacji z syntezatora mowy (EKSPERYMENTALNE, proszę włączyć w ustawieniach) -• możliwość używania mapy przy podłączonym CarPlay -• wyszukiwanie kodów pocztowych w USA i Wielkiej Brytanii -• eksport zakładek i śladów do pliku w formacie GPX -• nowe dane OpenStreetMap z 28 maja -• dodawanie, edycja i wyświetlanie linków do menu restauracji, barów i pozostałej gastronomii -• poprawione brakujące adresy w szczegółach centrów fitness -• poprawione linki do Wikipedii zawierające znak zapytania -• poprawiony kolor tekstu w trybie ciemnym CarPlay -• więcej opcji syntezy mowy -• komunikaty nawigacji przerywają podcasty zamiast je ściszać -• poprawione niektóre przyciski znikające podczas dodawania miejsca do mapy -• poprawione szczegóły miejsca, które nie aktualizowały się po edycji zakładki -• poprawiony przycisk godzin zamknięcia w edytorze tak, aby działał po północy +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Zaktualizowane tłumaczenia na czeski, niemiecki, portugalski. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/pt-BR/release_notes.txt b/iphone/metadata/pt-BR/release_notes.txt index 977fc9f93b..0b78e756f1 100644 --- a/iphone/metadata/pt-BR/release_notes.txt +++ b/iphone/metadata/pt-BR/release_notes.txt @@ -1,18 +1,45 @@ -• Novos dados OpenStreetMap de 28 de maio -• Backup do iCloud para favoritos e trilhas (EXPERIMENTAL, habilite-o nas configurações) -• Anúncios de nomes de ruas em instruções verbais TTS (EXPERIMENTAL, ative-o nas configurações) -• Use o mapa quando o CarPlay estiver conectado -• Pesquise CEPs dos EUA e do Reino Unido -• Exporte favoritos e trilhas em formato GPX -• Adicione, edite e exiba links da web para cardápios de restaurantes, bares e serviços de alimentação -• Correção de endereços ausentes em academias -• Adição de palavras-chave de pesquisa para "pastelaria" e "bolos" -• Correção de links da Wikipédia que contenham um ponto de interrogação -• Correção da cor do texto do CarPlay no modo escuro -• Mais opções de voz TTS -• Os anúncios TTS interrompem os podcasts em vez de evitá-los -• Correção de alguns botões que desapareciam ao adicionar um lugar ao mapa -• Correção de detalhes do local não atualizados após a edição de um favorito -• Correção do botão de horário sem funcionamento no Editor para funcionar depois da meia-noite +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Atualizadas as traduções de Alemão, Português e Tcheco. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/pt-PT/release_notes.txt b/iphone/metadata/pt-PT/release_notes.txt index b1932b6721..0b78e756f1 100644 --- a/iphone/metadata/pt-PT/release_notes.txt +++ b/iphone/metadata/pt-PT/release_notes.txt @@ -1,18 +1,45 @@ -• Novos dados OpenStreetMap de 28 de maio -• Backup do iCloud para favoritos e trilhos (EXPERIMENTAL, habilite-o nas configurações) -• Anúncios de nomes de ruas em instruções verbais TTS (EXPERIMENTAL, ative-o nas configurações) -• Use o mapa quando o CarPlay estiver conectado -• Pesquise códigos postais dos EUA e do Reino Unido -• Exporte favoritos e trilhos em formato GPX -• Adicione, edite e exiba links da web para cardápios de restaurantes, bares e serviços de alimentação -• Correção de endereços ausentes em academias -• Adição de palavras-chave de pesquisa para "pastelaria" e "bolos" -• Correção de links da Wikipédia que contenham um ponto de interrogação -• Correção da cor do texto do CarPlay no modo escuro -• Mais opções de voz TTS -• Os anúncios TTS interrompem os podcasts em vez de evitá-los -• Correção de alguns botões que desapareciam ao adicionar um lugar ao mapa -• Correção de detalhes do local não atualizados após a edição de um favorito -• Correção do botão de horário sem funcionamento no Editor para funcionar depois da meia-noite +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Atualizadas as traduções de Alemão, Português e Tcheco. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/ro/release_notes.txt b/iphone/metadata/ro/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/ro/release_notes.txt +++ b/iphone/metadata/ro/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/ru/release_notes.txt b/iphone/metadata/ru/release_notes.txt index 9ad5c6f78c..8ad6559cf5 100644 --- a/iphone/metadata/ru/release_notes.txt +++ b/iphone/metadata/ru/release_notes.txt @@ -1,17 +1,44 @@ -• экспериментальная синхронизация меток и треков в iCloud (включается в настройках) -• объявление названий улиц во время голосовой навигации (включается в настройках) -• наконец-то можно переключаться между телефоном и CarPlay -• поиск почтовых индексов США и Великобритании (GB) -• экспорт меток и треков в формате GPX -• новые данные OpenStreetMap по состоянию на 28 мая -• добавление, редактирование и отображение веб-ссылок на меню ресторанов, баров и заведений общественного питания -• исправлены ссылки на Википедию, содержащие вопросительный знак -• исправлен цвет текста CarPlay в темном режиме -• больше вариантов выбора языка для голосового сопровождения TTS -• голосовые объявления теперь прерывают подкасты вместо того, чтобы их приглушать -• исправлены кнопки, которые исчезали при добавлении места на карту -• исправлена кнопка нерабочего времени в редакторе, чтобы она работала после полуночи +• Сортировка меток и треков по имени (наконец-то!) +• Данные OpenStreetMap по состоянию на 29 апреля +• Переход на новый механизм аутентификации OpenStreetMap – все аутентифицированные пользователи OSM должны заново войти в систему +• Решена проблема с напоминаниями об изолиниях поверх других элементов интерфейса +• Исправлено расположение кругового индикатора хода загрузки при выборе объектов на карте +• Скорректировано расположение меню "Еще" в списках меток +• В меню "О программе" добавлена поддержка почтового клиента по умолчанию +• Видно, в каких местах есть окошко для водителя (drive-through) +• Иконка "лестницы" заменена на значок лифта для отображения номера этажа выбранного объекта +• Улучшена видимость значка $ в темном режиме для платных объектов +• Улучшена веломаршрутизация -Обновлены переводы на чешский, немецкий и португальский языки. +Редактор карты OpenStreetMap: +• На карту OpenStreetMap теперь можно добавлять рынки, стоянки такси, киоски, туристические домики, садовые товары, исторические самолеты, пушки, межевые камни, гробницы и т.д. +• Для заведений можно указать наличие окошка для водителей (drive-through) +• Упрощена работа с названиями объектов на нескольких языках и устранены связанные с этим ошибки +• Добавлена подсказка "Не можете найти подходящую категорию?" при добавлени объектов +• Исправлена ошибка, позволявшая добавить название на одном и том же языке дважды -Подробнее читайте на https://omaps.app/ru/news +Карта: +• Сложные пешеходные тропы теперь отображаются коричневыми точками, очень сложные – чёрными редкими точками +• Велодорожки теперь тёмно-синие, а там, где они ведут по пешеходным дорожкам – пунктирные +• Под полупрозрачными мостами видны дороги +• Более последовательное отображение асфальтированных дорожек белым пунктиром, а грунтовых – коричневым пунктиром +• Добавлены участки осыпей и галечников; улучшен цвет голых скальных поверхностей +• Убраны пустующие/неиспользуемые магазины +• На карту добавлены крупные валуны (камни) и мини-гольф +• Разные иконки для остановок общественного транспорта и укрытия от дождя +• Добавлены иконки вольеров для животных, химчистки; обновлена иконка прачечной +• Исправлена проблема слишком маленького размера шрифта для названий небольших городов +• При увеличении названия городов чуть позже исчезают с карты +• Штриховая заливка земель коренных народов сделана прозрачнее +• Штриховая заливка и иконки/названия заповедников не отображаются при детальном приближении карты + +Поиск: +• Улучшен поиск по некоторым категориям (падель, станции метро, хижины в горах и т. д.) +• Включен поиск мест пополнения запасов питьевой воды, включая кафе, участвующие в проекте +• Частные бассейны исключены из результатов поиска +• Добавлен экспериментальный поиск по статьям википедии "?wiki" +• Улучшен порядок результатов поиска по категориям в списке + +Улучшены баскский, немецкий, греческий, словацкий переводы. + +Больше подробностей можно прочитать на https://omaps.org/ru/news/ diff --git a/iphone/metadata/sk/release_notes.txt b/iphone/metadata/sk/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/sk/release_notes.txt +++ b/iphone/metadata/sk/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/sv/release_notes.txt b/iphone/metadata/sv/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/sv/release_notes.txt +++ b/iphone/metadata/sv/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/th/release_notes.txt b/iphone/metadata/th/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/th/release_notes.txt +++ b/iphone/metadata/th/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/tr/release_notes.txt b/iphone/metadata/tr/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/tr/release_notes.txt +++ b/iphone/metadata/tr/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/uk/release_notes.txt b/iphone/metadata/uk/release_notes.txt index 95447eafd1..f2f1379cd1 100644 --- a/iphone/metadata/uk/release_notes.txt +++ b/iphone/metadata/uk/release_notes.txt @@ -1,17 +1,44 @@ -• експериментальна синхронізація міток і треків в iCloud (вмикається в налаштуваннях) -• оголошення назв вулиць під час голосової навігації (вмикається в налаштуваннях) -• нарешті можна перемикатися між телефоном і CarPlay -• пошук поштових індексів США та Великої Британії (GB) -• експорт міток і треків у форматі GPX -• нові дані OpenStreetMap станом на 28 травня -• додавання, редагування та відображення веб-посилань на меню ресторанів, барів і закладів громадського харчування -• виправлено посилання на Вікіпедію, що містили знак питання -• виправлено колір тексту CarPlay у темному режимі -• більше варіантів вибору мови для голосового супроводу TTS -• голосові оголошення тепер переривають подкасти замість того, щоб їх приглушати -• виправлено кнопки, які зникали під час додавання місця на карту -• виправлено кнопку неробочого часу в редакторі, щоб вона працювала після опівночі +• Сортування міток і маршрутів за іменем (нарешті!) +• Дані OpenStreetMap станом на 29 квітня +• Перехід на новий механізм автентифікації OpenStreetMap – усі автентифіковані користувачі OSM мають наново увійти в систему +• Вирішено проблему з нагадуваннями про ізолінії поверх інших елементів інтерфейсу +• Виправлено розташування кругового індикатора ходу завантаження при виборі об'єктів на карті +• Скориговано розташування меню "Ще" в списках міток +• У меню "Про програму" додано підтримку поштового клієнта за замовчуванням +• Видно, де є drive-through +• Іконку "сходів" замінено на значок ліфта для відображення номера поверху обраного об'єкта +• Покращено видимість значка $ для платних функцій карти в темному режимі +• Покращено веломаршрутизацію -Оновлено переклади чеською, німецькою та португальською мовами. +Редактор карти OpenStreetMap: +• На карту OpenStreetMap тепер можна додавати ринки, стоянки таксі, кіоски, wild huts, садові центри, історичні літаки, гармати, межове каміння, гробниці тощо. +• Для закладів можна вказати drive-through +• Спрощено роботу з назвами об'єктів кількома мовами та усунуто пов'язані з цим помилки +• Додано підказку "Не можете знайти відповідну категорію?" під час додавання об'єктів +• Виправлена помилка, що дозволяла додати назву тією самою мовою двічі -Докладніше читайте на https://omaps.org/uk/news +Карта: +• Складні пішохідні стежки тепер коричневі, а експертні – чорні +• Велодоріжки тепер темно-сині, а там, де вони ведуть пішохідними доріжками – пунктирні +• Під напівпрозорими мостами видно дороги +• Більш послідовне відображення асфальтованих доріжок білим пунктиром, а ґрунтових – коричневим пунктиром +• Додано ділянки осипів і галечників; поліпшено колір голих скельних поверхонь +• Прибрано порожні/невикористовувані магазини +• На карту додано природний камінь і міні-гольф +• Різні іконки для зупинок громадського транспорту та укриття від дощу +• Додано іконки вольєрів для тварин, хімчистки; оновлено іконку пральні +• Виправлено проблему занадто маленького розміру шрифту для невеликих міст +• Назви деяких міст трохи раніше з'являються на карті +• Зменшено непрозорість штрихової заливки земель корінних народів +• Штрихова заливка та іконки/назви заповідників не відображаються під час детального наближення карти + +Пошук: +• Покращено пошук за деякими категоріями (падель, станції метро, хатини в горах тощо) +• Увімкнено пошук місць поповнення запасів питної води, включно з кафе, що беруть участь у проєкті +• Приватні басейни виключено з результатів пошуку +• Додано експериментальний пошук за статтями вікіпедії "?wiki" +• Покращено порядок результатів пошуку за категоріями в списку + +Покращено баскський, німецький, грецький, словацький переклади. + +Більше подробиць можна прочитати на https://omaps.org/uk/news/ diff --git a/iphone/metadata/vi/release_notes.txt b/iphone/metadata/vi/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/vi/release_notes.txt +++ b/iphone/metadata/vi/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/zh-Hans/release_notes.txt b/iphone/metadata/zh-Hans/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/zh-Hans/release_notes.txt +++ b/iphone/metadata/zh-Hans/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/iphone/metadata/zh-Hant/release_notes.txt b/iphone/metadata/zh-Hant/release_notes.txt index b62d403630..0b78e756f1 100644 --- a/iphone/metadata/zh-Hant/release_notes.txt +++ b/iphone/metadata/zh-Hant/release_notes.txt @@ -1,18 +1,45 @@ -• iCloud bookmarks and tracks synchronization (EXPERIMENTAL, please enable it in settings) -• street name announcements in verbal TTS turn instructions (EXPERIMENTAL, please enable it in settings) -• use the map when CarPlay is connected -• search for US zip codes and UK (GB) postcodes -• export bookmarks and tracks in GPX file format -• new OpenStreetMap data as of May 28 -• add, edit, and display web links to menus of restaurants, bars, and food services -• fix missing addresses in fitness centers details -• add "pastry" and "cakes" search keywords -• fix Wikipedia links that contain a question mark -• fix CarPlay text color in dark mode -• more TTS voice options -• TTS turn announcements interrupt podcasts instead of ducking them -• fix some buttons that disappeared when adding a place to the map -• fix place details not updated after a bookmark's edit -• fix the non-business hours button in the Editor to work after midnight +• Transitioned to the new OpenStreetMap authentication mechanism — all authenticated OSM users must re-login +• Updated OpenStreetMap data to April 29 +• Implemented sorting of bookmarks and tracks by name +• Resolved the issue of isolines reminders appearing on top of other dialogs +• Corrected the layout of the circular downloading progress bar in selected POIs +• Fixed the icons for radio on/off buttons +• Fixed bug allowing to add the same language two times in the OSM editor +• Aligned RTL languages properly in the bottom menu +• Adjusted the location of the "more" menu in bookmark lists +• Added default email client support to the about menu +• Expanded feature types that could be added to OSM, including marketplaces, taxi stands, kiosks, wilderness huts, garden centers, historic aircraft, cannons, boundary stones, tombs, etc. +• Indicated the availability of Drive-through service for selected POIs +• Enabled the ability to toggle Drive-through in the OSM editor +• Simplified handling of multiple languages feature names in the OSM editor and addressed related bugs +• Added a "Can't find a suitable category?" prompt in the OSM editor +• Replaced the "stairs" icon with an elevator icon for displaying the level number of selected POIs +• Rectified missing local language name versions for specific POIs +• Enhanced visibility of the $ emoji for paid map features in dark mode +• Improved bicycle routing for certain scenarios +• Optimized the app size for better performance -Updated Czech, German, Portuguese translations. +Map: +• Display difficult hiking trails as brown-dotted, expert ones as black-dotted +• Blue lines under white/brown dashes for shared foot/cycle paths +• Dark blue lines for dedicated cycleways +• More consistency in displaying paved paths as white dashed lines, unpaved ones as brown dashed +• Roads are now visible beneath semi-transparent bridge outlines +• Added scree and shingle areas; better color of bare rock surfaces +• Stopped displaying vacant/unused shops +• Added natural=stone (shown as natural=rock) and miniature golf to the map +• Separate public transport shelters, basic huts, and lean-tos from generic shelters +• Added icons for animal enclosures, dry cleaning; updated laundry icon +• Fixed the issue of font size being too small for smaller cities +• Made cities labels visible at higher zooms +• Reduced the opacity of indigenous lands' hatching fill +• Hatching fill and icons/captions for nature reserves are not displayed at very detailed zoom levels + +Search: +• Enhanced category search (padel, subway stations, wilderness huts, etc.) +• Enabled search for drinking water refill locations, including participating cafes +• Excluded private swimming pools from search results +• Added experimental search for "?wiki" +• Tuned category search rankings for better results + +Translations: Basque, German, Greek, Slovak diff --git a/map/framework.cpp b/map/framework.cpp index 80311c6fec..fa921ffd41 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -1460,7 +1460,7 @@ void Framework::CreateDrapeEngine(ref_ptr contextFac { // Deactivate selection (and hide place page) if we return to routing in F&R mode. if (routingActive && mode == location::FollowAndRotate) - DeactivateMapSelection(); + DeactivateMapSelection(true /* notifyUI */); if (m_myPositionListener != nullptr) m_myPositionListener(mode, routingActive); @@ -1842,13 +1842,11 @@ BookmarkManager const & Framework::GetBookmarkManager() const void Framework::SetPlacePageListeners(PlacePageEvent::OnOpen onOpen, PlacePageEvent::OnClose onClose, - PlacePageEvent::OnUpdate onUpdate, - PlacePageEvent::OnSwitchFullScreen onSwitchFullScreen) + PlacePageEvent::OnUpdate onUpdate) { m_onPlacePageOpen = std::move(onOpen); m_onPlacePageClose = std::move(onClose); m_onPlacePageUpdate = std::move(onUpdate); - m_onSwitchFullScreen = std::move(onSwitchFullScreen); #ifdef OMIM_OS_ANDROID // A click on the Search result from the search activity in Android calls @@ -1906,12 +1904,15 @@ void Framework::ActivateMapSelection() m_onPlacePageOpen(); } -void Framework::DeactivateMapSelection() +void Framework::DeactivateMapSelection(bool notifyUI) { - if (m_onPlacePageClose) - m_onPlacePageClose(); + bool const somethingWasAlreadySelected = m_currentPlacePageInfo.has_value(); - if (m_currentPlacePageInfo) + if (notifyUI && m_onPlacePageClose) + m_onPlacePageClose(!somethingWasAlreadySelected); + + + if (somethingWasAlreadySelected) { DeactivateHotelSearchMark(); @@ -1926,12 +1927,6 @@ void Framework::DeactivateMapSelection() } } -void Framework::SwitchFullScreen() -{ - if (m_onSwitchFullScreen) - m_onSwitchFullScreen(); -} - void Framework::InvalidateUserMarks() { // Actual invalidation call happens in EditSession dtor. @@ -1970,7 +1965,7 @@ void Framework::OnTapEvent(place_page::BuildInfo const & buildInfo) && !buildInfo.m_isLongTap && !isRoutePoint) { - DeactivateMapSelection(); + DeactivateMapSelection(true /* notifyUI */); // Continue route to the point RouteMarkData data; @@ -1997,7 +1992,9 @@ void Framework::OnTapEvent(place_page::BuildInfo const & buildInfo) if (buildInfo.m_isLongTap) { - SwitchFullScreen(); + // Hide Place page if it is open in any mode. + // Show or hide the main map UI on a long tap if the Place Page is hidden (UI is not hidden in the routing/navigation mode). + DeactivateMapSelection(true /* notifyUI */); } else { @@ -3037,7 +3034,7 @@ bool Framework::RollBackChanges(FeatureID const & fid) if (rolledBack) { if (status == FeatureStatus::Created) - DeactivateMapSelection(); + DeactivateMapSelection(true /* notifyUI */); else UpdatePlacePageInfoForCurrentSelection(); } @@ -3050,7 +3047,7 @@ void Framework::CreateNote(osm::MapObject const & mapObject, osm::Editor::Instance().CreateNote(mapObject.GetLatLon(), mapObject.GetID(), mapObject.GetTypes(), mapObject.GetDefaultName(), type, note); if (type == osm::Editor::NoteProblemType::PlaceDoesNotExist) - DeactivateMapSelection(); + DeactivateMapSelection(true /* notifyUI */); } void Framework::RunUITask(function fn) diff --git a/map/framework.hpp b/map/framework.hpp index 31948b001c..5461f7ae8d 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -308,8 +308,7 @@ private: void DeactivateHotelSearchMark(); public: - void DeactivateMapSelection(); - void SwitchFullScreen(); + void DeactivateMapSelection(bool notifyUI); /// Used to "refresh" UI in some cases (e.g. feature editing). void UpdatePlacePageInfoForCurrentSelection( std::optional const & overrideInfo = {}); @@ -320,15 +319,13 @@ public: using OnOpen = std::function; /// Called to notify UI that object on a map was deselected (UI should hide Place Page). /// If switchFullScreenMode is true, ui can [optionally] enter or exit full screen mode. - using OnClose = std::function; + using OnClose = std::function; using OnUpdate = std::function; - using OnSwitchFullScreen = std::function; }; void SetPlacePageListeners(PlacePageEvent::OnOpen onOpen, PlacePageEvent::OnClose onClose, - PlacePageEvent::OnUpdate onUpdate, - PlacePageEvent::OnSwitchFullScreen onSwitchFullScreen); + PlacePageEvent::OnUpdate onUpdate); bool HasPlacePageInfo() const { return m_currentPlacePageInfo.has_value(); } place_page::Info const & GetCurrentPlacePageInfo() const; place_page::Info & GetCurrentPlacePageInfo(); @@ -371,7 +368,6 @@ private: PlacePageEvent::OnOpen m_onPlacePageOpen; PlacePageEvent::OnClose m_onPlacePageClose; PlacePageEvent::OnUpdate m_onPlacePageUpdate; - PlacePageEvent::OnSwitchFullScreen m_onSwitchFullScreen; private: std::vector GetSelectedFeatureTriangles() const; diff --git a/map/mwm_url.cpp b/map/mwm_url.cpp index 9eb3dbf8fc..d968f3e8c5 100644 --- a/map/mwm_url.cpp +++ b/map/mwm_url.cpp @@ -436,7 +436,7 @@ void ParsedMapApi::ExecuteMapApiRequest(Framework & fm) const } // Always hide current map selection. - fm.DeactivateMapSelection(); + fm.DeactivateMapSelection(true /* notifyUI */); // Set viewport and stop follow mode. fm.StopLocationFollow(); diff --git a/map/place_page_info.cpp b/map/place_page_info.cpp index 1fd7066d79..1fdcbcd188 100644 --- a/map/place_page_info.cpp +++ b/map/place_page_info.cpp @@ -122,7 +122,7 @@ std::string Info::FormatSubtitle(bool withType) const append(m_bookmarkCategoryName); if (withType) - append(GetAllLocalizedTypes()); + append(GetLocalizedType()); // Flats. auto const flats = GetMetadata(feature::Metadata::FMD_FLATS); diff --git a/packaging/app.organicmaps.desktop.metainfo.xml b/packaging/app.organicmaps.desktop.metainfo.xml index b7d2f18040..1165f2933d 100644 --- a/packaging/app.organicmaps.desktop.metainfo.xml +++ b/packaging/app.organicmaps.desktop.metainfo.xml @@ -111,26 +111,6 @@ - - -

Highlights:

-
    -
  • New OpenStreetMap data as of May 28, 2024
  • -
  • Search for US zip codes and UK (GB) postcodes
  • -
  • Fix missing addresses in fitness centers details
  • -
  • Add "pastry" and "cakes" search keywords
  • -
  • Fix Wikipedia links that contain a question mark
  • -
-

Linux Desktop:

-
    -
  • Improve selected place details dialog
  • -
-

Translation updates:

-
    -
  • Updated Czech, German, Portuguese translations
  • -
-
-

Highlights:

diff --git a/platform/platform.cpp b/platform/platform.cpp index 313058fcd2..9f898a1d80 100644 --- a/platform/platform.cpp +++ b/platform/platform.cpp @@ -197,8 +197,6 @@ void Platform::GetFontNames(FilesList & res) const /// @todo Actually, this list should present once in all our code. char constexpr const * arrDef[] = { "00_NotoNaskhArabic-Regular.ttf", - "00_NotoSansBengali-Regular.ttf", - "00_NotoSansMalayalam-Regular.ttf", "00_NotoSansThai-Regular.ttf", "00_NotoSerifDevanagari-Regular.ttf", "01_dejavusans.ttf", diff --git a/qt/CMakeLists.txt b/qt/CMakeLists.txt index a7ce207bd7..b3c6fc8305 100644 --- a/qt/CMakeLists.txt +++ b/qt/CMakeLists.txt @@ -138,10 +138,7 @@ copy_resources( WorldCoasts.mwm 00_NotoNaskhArabic-Regular.ttf - 00_NotoSansBengali-Regular.ttf - 08_NotoSansMalayalam-Regular.ttf 00_NotoSansThai-Regular.ttf - 00_NotoSerifDevanagari-Regular.ttf 01_dejavusans.ttf 02_droidsans-fallback.ttf 03_jomolhari-id-a3d.ttf diff --git a/qt/draw_widget.cpp b/qt/draw_widget.cpp index 3bb7f8cee7..2fc0d92dab 100644 --- a/qt/draw_widget.cpp +++ b/qt/draw_widget.cpp @@ -89,7 +89,7 @@ DrawWidget::DrawWidget(Framework & framework, std::unique_ptr setFocusPolicy(Qt::StrongFocus); m_framework.SetPlacePageListeners([this]() { ShowPlacePage(); }, - {} /* onClose */, {} /* onUpdate */, {} /*onSwitchFullScreen */); + {} /* onClose */, {} /* onUpdate */); auto & routingManager = m_framework.GetRoutingManager(); @@ -703,7 +703,7 @@ void DrawWidget::ShowPlacePage() break; default: break; } - m_framework.DeactivateMapSelection(); + m_framework.DeactivateMapSelection(false); } void DrawWidget::SetRuler(bool enabled) diff --git a/qt/editor_dialog.cpp b/qt/editor_dialog.cpp index c0b89fd3e5..63db5b65c4 100644 --- a/qt/editor_dialog.cpp +++ b/qt/editor_dialog.cpp @@ -193,7 +193,12 @@ void EditorDialog::OnSave() { m_feature.SetHouseNumber(findChild(kHouseNumberObjectName)->text().toStdString()); QString const editedStreet = findChild(kStreetObjectName)->currentText(); - QStringList const names = editedStreet.split(" / ", Qt::SkipEmptyParts); + QStringList const names = editedStreet.split(" / ", +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) + QString::SkipEmptyParts); +#else + Qt::SkipEmptyParts); +#endif QString const localized = names.size() > 1 ? names.at(1) : QString(); if (!names.empty()) m_feature.SetStreet({names.at(0).toStdString(), localized.toStdString()}); diff --git a/qt/preferences_dialog.cpp b/qt/preferences_dialog.cpp index 11ad53b8e5..f887782347 100644 --- a/qt/preferences_dialog.cpp +++ b/qt/preferences_dialog.cpp @@ -5,6 +5,7 @@ #include "platform/measurement_utils.hpp" #include "platform/settings.hpp" +#include // QT_VERSION_CHECK #include #include #include @@ -57,7 +58,11 @@ namespace qt unitsGroup->button(static_cast(u))->setChecked(true); // Temporary to pass the address of overloaded function. +#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) + void (QButtonGroup::* buttonClicked)(int) = &QButtonGroup::buttonClicked; +#else void (QButtonGroup::* buttonClicked)(int) = &QButtonGroup::idClicked; +#endif connect(unitsGroup, buttonClicked, [&framework](int i) { Units u = Units::Metric; diff --git a/qt/qt_common/map_widget.cpp b/qt/qt_common/map_widget.cpp index cb6d854ce9..c5db59ae73 100644 --- a/qt/qt_common/map_widget.cpp +++ b/qt/qt_common/map_widget.cpp @@ -489,7 +489,7 @@ bool MapWidget::event(QEvent * event) { if (event->type() == QEvent::Gesture) return gestureEvent(dynamic_cast(event)); - return QOpenGLWidget::event(event); + return QWidget::event(event); } bool MapWidget::gestureEvent(QGestureEvent const * event) diff --git a/routing/geometry.cpp b/routing/geometry.cpp index 76cae6307f..a171f3952a 100644 --- a/routing/geometry.cpp +++ b/routing/geometry.cpp @@ -206,13 +206,12 @@ void RoadGeometry::Load(VehicleModelInterface const & vehicleModel, FeatureType // Since we store integer altitudes, 1 is a possible error for 2 points. geometry::Altitude constexpr kError = 1; - auto const altDiff = (*altitudes)[i] - (*altitudes)[i-1]; - auto const absDiff = abs(altDiff) - kError; - if (absDiff > 0) + auto const altDiff = abs((*altitudes)[i] - (*altitudes)[i-1]); + if (altDiff > kError) { double const dist = ms::DistanceOnEarth(m_junctions[i-1].GetLatLon(), m_junctions[i].GetLatLon()); - if (absDiff / dist >= 1.0) - LOG(LWARNING, ("Altitudes jump:", altDiff, "/", dist, m_junctions[i-1], m_junctions[i])); + if ((altDiff - kError) / dist > 0.3) + LOG(LWARNING, ("Altitudes jump:", m_junctions[i-1], m_junctions[i])); } } #endif diff --git a/routing/routing_integration_tests/bicycle_route_test.cpp b/routing/routing_integration_tests/bicycle_route_test.cpp index 9555f0cb07..d6f7fa029f 100644 --- a/routing/routing_integration_tests/bicycle_route_test.cpp +++ b/routing/routing_integration_tests/bicycle_route_test.cpp @@ -278,7 +278,7 @@ UNIT_TEST(Russia_UseTrunk) // Similar with GraphHopper. CalculateRouteAndTestRouteLength(GetVehicleComponents(VehicleType::Bicycle), mercator::FromLatLon(66.271, 33.048), {0.0, 0.0}, - mercator::FromLatLon(68.95, 33.045), 412795 /* expectedRouteMeters */); + mercator::FromLatLon(68.95, 33.045), 412359 /* expectedRouteMeters */); } // https://github.com/organicmaps/organicmaps/issues/3920 diff --git a/routing/routing_integration_tests/route_test.cpp b/routing/routing_integration_tests/route_test.cpp index 538c5c823c..264fbdce1f 100644 --- a/routing/routing_integration_tests/route_test.cpp +++ b/routing/routing_integration_tests/route_test.cpp @@ -501,15 +501,13 @@ UNIT_TEST(RussiaMoscowNotCrossingTollRoadTest) CalculateRouteAndTestRouteLength(vehicleComponents, start, {0.0, 0.0}, finish[0], 8427.71); // 2. End point is near the service road via the motorway toll road, but choose a minor track as end segment. - CalculateRouteAndTestRouteLength(vehicleComponents, start, {0.0, 0.0}, finish[1], 8361.27); + CalculateRouteAndTestRouteLength(vehicleComponents, start, {0.0, 0.0},finish[1], 8361.27); } { - // Normal route via the motorway toll road - long but fast (like Valhalla). - // - 20595.3 is OK (Graphopper) - // - 19203.7 is OK (OSRM) - CalculateRouteAndTestRouteLength(vehicleComponents, start, {0.0, 0.0}, finish[0], 21930.7); - CalculateRouteAndTestRouteLength(vehicleComponents, start, {0.0, 0.0}, finish[1], 22015.4); + // Normal route via the motorway toll road (long but fast). + CalculateRouteAndTestRouteLength(vehicleComponents, start, {0.0, 0.0}, finish[0], 20604.9); + CalculateRouteAndTestRouteLength(vehicleComponents, start, {0.0, 0.0}, finish[1], 20689.6); } } diff --git a/routing/routing_integration_tests/turn_test.cpp b/routing/routing_integration_tests/turn_test.cpp index 34e1cdf4c3..f271c97148 100644 --- a/routing/routing_integration_tests/turn_test.cpp +++ b/routing/routing_integration_tests/turn_test.cpp @@ -1269,12 +1269,10 @@ UNIT_TEST(Cyprus_Governors_Beach_TurnTestNextRoad) TurnItem turn; route.GetNearestTurn(d, turn); TEST_EQUAL(turn.m_turn, CarDirection::ExitHighwayToLeft, ()); - RouteSegment::RoadNameInfo ri; route.GetNextTurnStreetName(ri); TEST_EQUAL(ri.m_destination, "Governer's Beach; Pentakomo", ()); - // Aggregated network/ref tags. - TEST_EQUAL(ri.m_destination_ref, "CY:B/B1", ()); + TEST_EQUAL(ri.m_destination_ref, "B1", ()); } // Exit which is marked as non-link, but has link tags m_destination_ref and m_destination. diff --git a/routing_common/bicycle_model.cpp b/routing_common/bicycle_model.cpp index 3b19b4f75a..52128abb34 100644 --- a/routing_common/bicycle_model.cpp +++ b/routing_common/bicycle_model.cpp @@ -32,8 +32,8 @@ SpeedKMpH constexpr kSpeedOnFootwayKMpH = {5.0 /* weight */, 7.0 /* eta */}; HighwayBasedSpeeds const kDefaultSpeeds = { // {highway class : InOutCitySpeedKMpH(in city(weight, eta), out city(weight eta))} /// @see Russia_UseTrunk for Trunk weights. - {HighwayType::HighwayTrunk, InOutCitySpeedKMpH(SpeedKMpH(5.5, 18.0))}, - {HighwayType::HighwayTrunkLink, InOutCitySpeedKMpH(SpeedKMpH(5.5, 18.0))}, + {HighwayType::HighwayTrunk, InOutCitySpeedKMpH(SpeedKMpH(5.0, 18.0))}, + {HighwayType::HighwayTrunkLink, InOutCitySpeedKMpH(SpeedKMpH(5.0, 18.0))}, {HighwayType::HighwayPrimary, InOutCitySpeedKMpH(SpeedKMpH(10.0, 18.0), SpeedKMpH(14.0, 18.0))}, {HighwayType::HighwayPrimaryLink, InOutCitySpeedKMpH(SpeedKMpH(10.0, 18.0), SpeedKMpH(14.0, 18.0))}, {HighwayType::HighwaySecondary, InOutCitySpeedKMpH(SpeedKMpH(15.0, 18.0), SpeedKMpH(20.0, 18.0))}, diff --git a/search/geocoder.cpp b/search/geocoder.cpp index a8c207f039..738ad403ce 100644 --- a/search/geocoder.cpp +++ b/search/geocoder.cpp @@ -628,11 +628,12 @@ void Geocoder::GoImpl(vector const & infos, bool inViewport) { MatchRegions(ctx, Region::TYPE_COUNTRY); - // Probably, we should process all MWMs "until the end" but I left some _better-than-before_ - // reasonable criteria (ContinueSearch) not to hang a lot. auto const & mwmType = m_context->GetType(); - if (mwmType.m_viewportIntersected || mwmType.m_containsUserPosition || m_preRanker.ContinueSearch()) + if (mwmType.m_viewportIntersected || mwmType.m_containsUserPosition || + !m_preRanker.HaveFullyMatchedResult()) + { MatchAroundPivot(ctx); + } } if (updatePreranker) @@ -1573,9 +1574,7 @@ void Geocoder::MatchPOIsAndBuildings(BaseContext & ctx, size_t curToken, CBV con continue; } else if (layer.m_sortedFeatures->empty() || - /// @todo The crutch, but can't invent a better solution now. Should refactor layers iteration. - /// @see ProcessorTest_Smoke and Numeric_POI_Name tests. - (house_numbers::LooksLikeHouseNumberStrict(layer.m_subQuery) && numTokens > 1)) + house_numbers::LooksLikeHouseNumberStrict(layer.m_subQuery)) { continue; } diff --git a/search/pre_ranker.hpp b/search/pre_ranker.hpp index 868d061082..ab26119bf7 100644 --- a/search/pre_ranker.hpp +++ b/search/pre_ranker.hpp @@ -9,9 +9,11 @@ #include "base/macros.hpp" +#include #include #include #include +#include #include #include @@ -87,7 +89,7 @@ public: : m_params.m_everywhereBatchSize; } size_t NumSentResults() const { return m_numSentResults; } - bool ContinueSearch() const { return !m_haveFullyMatchedResult || Size() < BatchSize(); } + bool HaveFullyMatchedResult() const { return m_haveFullyMatchedResult; } size_t Limit() const { return m_params.m_limit; } // Iterate results per-MWM clusters. diff --git a/search/search_integration_tests/processor_test.cpp b/search/search_integration_tests/processor_test.cpp index 5c3768abe7..cdacfa9e5d 100644 --- a/search/search_integration_tests/processor_test.cpp +++ b/search/search_integration_tests/processor_test.cpp @@ -3005,21 +3005,18 @@ UNIT_CLASS_TEST(ProcessorTest, MatchedFraction) } } -UNIT_CLASS_TEST(ProcessorTest, MatchAroundPivotInMwmWithCity) +UNIT_CLASS_TEST(ProcessorTest, AvoidMatchAroundPivotInMwmWithCity) { - std::string const lang = "en"; - - TestCity minsk({-10.0, -10.0}, "Minsk", lang, 100 /* rank */); + TestCity minsk({-10.0, -10.0}, "Minsk", "en", 10 /* rank */); // World.mwm should intersect viewport. - TestCity dummy({10.0, 10.0}, "Dummy", lang, 1 /* rank */); + TestCity dummy({10.0, 10.0}, "Dummy", "en", 1 /* rank */); - auto worldId = BuildWorld([&](TestMwmBuilder & builder) - { + auto worldId = BuildWorld([&](TestMwmBuilder & builder) { builder.Add(minsk); builder.Add(dummy); }); - TestCafe minskCafe({-9.99, -9.99}, "Minsk cafe", lang); + TestCafe minskCafe({-9.99, -9.99}, "Minsk cafe", "en"); auto minskId = BuildCountry("Minsk", [&](TestMwmBuilder & builder) { builder.Add(minsk); @@ -3028,10 +3025,11 @@ UNIT_CLASS_TEST(ProcessorTest, MatchAroundPivotInMwmWithCity) SetViewport(m2::RectD(-1.0, -1.0, 1.0, 1.0)); { - // UPD: Of course, we should show Minsk cafe _after_ Minsk city. - Rules rules = { ExactMatch(worldId, minsk), ExactMatch(minskId, minskCafe) }; - TEST(OrderedResultsMatch("Minsk ", rules), ()); - TEST(OrderedResultsMatch("Minsk", rules), ()); + // Minsk cafe should not appear here because we have (worldId, minsk) result with all tokens + // used. + Rules rules = {ExactMatch(worldId, minsk)}; + TEST(ResultsMatch("Minsk ", rules), ()); + TEST(ResultsMatch("Minsk", rules), ()); } { // We search for pois until we find result with all tokens used. We do not emit relaxed result @@ -3689,24 +3687,4 @@ UNIT_CLASS_TEST(ProcessorTest, NonSearchable_Categories) } } -UNIT_CLASS_TEST(ProcessorTest, Numeric_POI_Name) -{ - TestPOI kiosk({0, 0}, "365", "default"); - kiosk.SetTypes({{"shop", "kiosk"}}); - - auto wonderlandId = BuildCountry("Wonderland", [&](TestMwmBuilder & builder) - { - builder.Add(kiosk); - }); - - SetViewport(m2::RectD(-0.5, -0.5, 0.5, 0.5)); - - { - Rules const rules = {ExactMatch(wonderlandId, kiosk)}; - TEST(ResultsMatch("365", rules), ()); - TEST(ResultsMatch("365 kiosk", rules), ()); - TEST(ResultsMatch("киоск 365", rules, "ru"), ()); - } -} - } // namespace processor_test diff --git a/search/search_quality/assessment_tool/main_view.cpp b/search/search_quality/assessment_tool/main_view.cpp index 1740dbb0c7..e7de4c0d52 100644 --- a/search/search_quality/assessment_tool/main_view.cpp +++ b/search/search_quality/assessment_tool/main_view.cpp @@ -77,9 +77,8 @@ MainView::MainView(Framework & framework, QRect const & screenGeometry) FeatureInfoDialog dialog(this /* parent */, mapObject, address, m_sampleLocale); dialog.exec(); }, - [this]() { m_selectedFeature = FeatureID(); }, - {} /* onUpdate */, - {} /* onSwitchFullScreenMode */); + [this](bool /* switchFullScreenMode */) { m_selectedFeature = FeatureID(); }, + {} /* onUpdate */); } MainView::~MainView() diff --git a/search/search_quality/search_quality_tests/real_mwm_tests.cpp b/search/search_quality/search_quality_tests/real_mwm_tests.cpp index 8b5a938250..b72729e09d 100644 --- a/search/search_quality/search_quality_tests/real_mwm_tests.cpp +++ b/search/search_quality/search_quality_tests/real_mwm_tests.cpp @@ -197,12 +197,12 @@ UNIT_CLASS_TEST(MwmTestsFixture, TopPOIs_Smoke) auto const & results = request->Results(); TEST_GREATER(results.size(), kTopPoiResultsCount, ()); - Range const range(results, 0, 5); + Range const range(results, 0, 4); EqualClassifType(range, GetClassifTypes({{"shop"}})); TEST_LESS(SortedByDistance(range, center).first, 5000, ()); // parking (< 6km) should be on top. - EqualClassifType(Range(results, 5, 7), GetClassifTypes({{"leisure", "playground"}, {"amenity", "parking"}})); + EqualClassifType(Range(results, 4, 6), GetClassifTypes({{"leisure", "playground"}, {"amenity", "parking"}})); } // https://github.com/organicmaps/organicmaps/issues/2470 @@ -1316,93 +1316,4 @@ UNIT_CLASS_TEST(MwmTestsFixture, CityWithCountry) } } -UNIT_CLASS_TEST(MwmTestsFixture, UK_Postcodes) -{ - using namespace mercator; - - auto const & cl = classif(); - - // "UK_Scotland_South", "UK_England_South East_Brighton" should present! - RegisterLocalMapsByPrefix("UK_"); - - // London - ms::LatLon const center(51.5074515, -0.1277805); - SetViewportAndLoadMaps(center); - - { - auto request = MakeRequest("G4 9HS"); - auto const & results = request->Results(); - TEST(!results.empty(), ()); - - TEST_EQUAL(results[0].GetResultType(), search::Result::Type::Postcode, ()); - TEST(FromLatLon({55.8735083, -4.2764288}).EqualDxDy(results[0].GetFeatureCenter(), kPointEqualityEps), ()); - } - - { - auto request = MakeRequest("Nero G4 9HS"); - auto const & results = request->Results(); - TEST_GREATER(results.size(), kTopPoiResultsCount, ()); - - TEST_EQUAL(results[0].GetResultType(), search::Result::Type::Feature, ()); - /// @todo We should rank POIs that are closest to the Postcode on top! - // TEST(FromLatLon({55.8736446, -4.2768748}).EqualDxDy(results[0].GetFeatureCenter(), kPointEqualityEps), ()); - TEST_EQUAL(results[0].GetFeatureType(), cl.GetTypeByPath({"amenity", "cafe"}), ()); - } - - std::string const houseName = "St. Nicholas Lodge"; - { - auto request = MakeRequest("BN1 3LJ " + houseName); - auto const & results = request->Results(); - TEST_GREATER(results.size(), kTopPoiResultsCount, ()); - - TEST_EQUAL(results[0].GetResultType(), search::Result::Type::Feature, ()); - TEST_EQUAL(results[0].GetString(), houseName, ()); - } - { - auto request = MakeRequest("BN3 " + houseName); - auto const & results = request->Results(); - TEST_GREATER(results.size(), kTopPoiResultsCount, ()); - - TEST_EQUAL(results[0].GetResultType(), search::Result::Type::Feature, ()); - TEST_EQUAL(results[0].GetString(), houseName, ()); - } -} - -UNIT_CLASS_TEST(MwmTestsFixture, UK_Postcodes_Timing) -{ - using namespace std::chrono; - - ms::LatLon const center(50.8214626, -0.1400561); - SetViewportAndLoadMaps(center); - - { - auto request = MakeRequest("bn1 butterfly"); - auto const & results = request->Results(); - TEST(!results.empty(), ()); - TEST_LESS(duration_cast(request->ResponseTime()).count(), 3, ()); - } -} - -UNIT_CLASS_TEST(MwmTestsFixture, CompleteSearch_DistantMWMs) -{ - RegisterLocalMapsByPrefix("Russia_Kabardino-Balkaria"); - - // Buenos Aires (Palermo) - ms::LatLon const center(-34.58524, -58.42516); - SetViewportAndLoadMaps(center); - - { - auto request = MakeRequest("Эльбрус"); - auto const & results = request->Results(); - TEST_GREATER(results.size(), kPopularPoiResultsCount, ()); - } - - { - auto request = MakeRequest("гора Эльбрус", "ru"); - auto const & results = request->Results(); - TEST_GREATER(results.size(), kPopularPoiResultsCount, ()); - EqualClassifType(Range(results, 0, 1), GetClassifTypes({{"natural", "volcano"}})); - } -} - } // namespace real_mwm_tests diff --git a/skin_generator/main.cpp b/skin_generator/main.cpp index b79f66cc18..9715dd92b1 100644 --- a/skin_generator/main.cpp +++ b/skin_generator/main.cpp @@ -24,7 +24,11 @@ DEFINE_int32(maxSize, 2048, "max width/height of output textures"); int main(int argc, char *argv[]) { // Used to lock the hash seed, so the order of XML attributes is always the same. +#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) qSetGlobalQHashSeed(0); +#else + qputenv("QT_HASH_SEED", "0"); +#endif try { gflags::ParseCommandLineFlags(&argc, &argv, true); diff --git a/tools/unix/update_gplay_relnotes.sh b/tools/unix/update_gplay_relnotes.sh deleted file mode 100755 index 944452c6b8..0000000000 --- a/tools/unix/update_gplay_relnotes.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -# Concatenates Android release notes in all languages into a single output format -# suitable to upload to Google Play to update existing notes. - -GPLAY_NOTES=android/app/src/google/play/release-notes/*/default.txt - -for x in $(ls $GPLAY_NOTES); do - l=$(basename $(dirname $x)); - echo "<"$l">"; - cat $x; - echo ""; -done diff --git a/xcode/drape/drape.xcodeproj/project.pbxproj b/xcode/drape/drape.xcodeproj/project.pbxproj index 4ada982dab..f10f56883e 100644 --- a/xcode/drape/drape.xcodeproj/project.pbxproj +++ b/xcode/drape/drape.xcodeproj/project.pbxproj @@ -64,6 +64,8 @@ 45D7ADE22113535600160DE3 /* render_state.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 45D7ADE02113535500160DE3 /* render_state.hpp */; }; 45D7ADE32113535600160DE3 /* render_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45D7ADE12113535600160DE3 /* render_state.cpp */; }; 670947231BDF9A4F005014C0 /* data_buffer_impl.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 670947151BDF9A4F005014C0 /* data_buffer_impl.hpp */; }; + 670947251BDF9A4F005014C0 /* bidi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 670947171BDF9A4F005014C0 /* bidi.cpp */; }; + 670947261BDF9A4F005014C0 /* bidi.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 670947181BDF9A4F005014C0 /* bidi.hpp */; }; 670947271BDF9A4F005014C0 /* glyph_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 670947191BDF9A4F005014C0 /* glyph_manager.cpp */; }; 670947281BDF9A4F005014C0 /* glyph_manager.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6709471A1BDF9A4F005014C0 /* glyph_manager.hpp */; }; 670947291BDF9A4F005014C0 /* hw_texture_ios.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6709471B1BDF9A4F005014C0 /* hw_texture_ios.hpp */; }; @@ -208,6 +210,8 @@ 45D7ADE02113535500160DE3 /* render_state.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = render_state.hpp; sourceTree = ""; }; 45D7ADE12113535600160DE3 /* render_state.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = render_state.cpp; sourceTree = ""; }; 670947151BDF9A4F005014C0 /* data_buffer_impl.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = data_buffer_impl.hpp; sourceTree = ""; }; + 670947171BDF9A4F005014C0 /* bidi.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bidi.cpp; sourceTree = ""; }; + 670947181BDF9A4F005014C0 /* bidi.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = bidi.hpp; sourceTree = ""; }; 670947191BDF9A4F005014C0 /* glyph_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glyph_manager.cpp; sourceTree = ""; }; 6709471A1BDF9A4F005014C0 /* glyph_manager.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = glyph_manager.hpp; sourceTree = ""; }; 6709471B1BDF9A4F005014C0 /* hw_texture_ios.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = hw_texture_ios.hpp; sourceTree = ""; }; @@ -384,6 +388,7 @@ 6729A5041A69213A007D5872 /* batcher_helpers.hpp */, 6729A5051A69213A007D5872 /* batcher.cpp */, 6729A5061A69213A007D5872 /* batcher.hpp */, + 670947171BDF9A4F005014C0 /* bidi.cpp */, 670947181BDF9A4F005014C0 /* bidi.hpp */, 6729A5071A69213A007D5872 /* binding_info.cpp */, 6729A5081A69213A007D5872 /* binding_info.hpp */, @@ -672,6 +677,7 @@ 6729A5A01A69213A007D5872 /* shader.cpp in Sources */, 6729A5A21A69213A007D5872 /* stipple_pen_resource.cpp in Sources */, 6729A5691A69213A007D5872 /* batcher.cpp in Sources */, + 670947251BDF9A4F005014C0 /* bidi.cpp in Sources */, 4577B25D21F2035D00864FAC /* vulkan_layers.cpp in Sources */, 6729A58C1A69213A007D5872 /* index_buffer_mutator.cpp in Sources */, 4598438F2139967F00F8CAB2 /* metal_texture.mm in Sources */,