diff --git a/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java b/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java
index a041d6f694..38854cb33b 100644
--- a/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java
+++ b/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java
@@ -38,6 +38,7 @@ public class Amenity extends MapObject {
public static final String COLLECTION_TIMES = "collection_times";
public static final String CONTENT = "content";
public static final String CUISINE = "cuisine";
+ public static final String WIKIDATA = "wikidata";
public static final String DISH = "dish";
public static final String REF = "ref";
public static final String OSM_DELETE_VALUE = "delete";
diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml
index 93c9629d1c..2cf4d277fa 100644
--- a/OsmAnd/res/values-ar/strings.xml
+++ b/OsmAnd/res/values-ar/strings.xml
@@ -3170,7 +3170,7 @@
خريطة أثناء التنقل
أخرى
الوزن ، الارتفاع ، السرعة
- معلمات السيارة
+ معلمات المركبات
الإعلامات الصوتية تحدث فقط أثناء التنقل.
إرشادات التنقل والإعلامات
المطالبات الصوتية
@@ -3212,7 +3212,7 @@
السرعة الافتراضية
تغيير إعدادات السرعة الافتراضية
تعيين حد السرعة الأدنى/الأعلى
- وضع جديد
+ ملف تعريف جديد
خروج مفاجئ
فشل العملية الأخيرة لأوسماند. الرجاء مساعدتنا في التحسين من خلال مشاركة رسالة الخطأ.
• أوضاع التطبيق: قم بإنشاء وضع مخصص لاحتياجاتك الخاصة ، باستخدام رمز ولون مخصصين
@@ -3398,7 +3398,7 @@
حدد أيقونه الخريطة
بعد النقر فوق \"تطبيق\" ، سيتم فقد الأوضاع المحذوفة بالكامل.
الوضع الرئيسي
- اختر اللون
+
لا يمكنك حذف أوضاع أوسماند الافتراضية ، ولكن يمكنك تعطيلها في الشاشة السابقة ، أو نقلها إلى الأسفل.
تحرير الأوضاع
يؤثر نوع التنقل على قواعد حسابات المسار.
@@ -3805,4 +3805,6 @@
سيتم حذف نقطة الوجهة الحالية على المسار. إذا كانت هي الوجهة، سوف تتوقف الملاحة.
تنزيل بيانات ويكيبيديا
الحصول على معلومات حول النقاط المثيرة للاهتمام من ويكيبيديا. إنه دليلك غير المتصل بجيبك - ما عليك سوى تمكين المكون الإضافي ويكبيديا والاستمتاع بمقالات حول الكائنات من حولك.
+ دراجة نارية
+ سكوتر موتور
\ No newline at end of file
diff --git a/OsmAnd/res/values-de/phrases.xml b/OsmAnd/res/values-de/phrases.xml
index 16dc17d12e..65018d07c7 100644
--- a/OsmAnd/res/values-de/phrases.xml
+++ b/OsmAnd/res/values-de/phrases.xml
@@ -2766,7 +2766,7 @@
Toilettenspülung: Plumpsklo
Wikipedia
Gewürzgeschäft
- Kraftstoffart
+ Kraftstoffsorte
Zahlungsart
Zusätzlich
Ladestation: ja
diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml
index 752c1b528a..acb3358a91 100644
--- a/OsmAnd/res/values-de/strings.xml
+++ b/OsmAnd/res/values-de/strings.xml
@@ -3822,4 +3822,6 @@
Der aktuelle Punkt auf der Route wird gelöscht. Wenn es das Ziel ist, wird die Navigation gestoppt.
Wikipedia-Karten herunterladen
Informationen über Sehenswürdigkeiten erhalten Sie bei Wikipedia. Es ist Ihr Offline-Wegweiser für die Hosentasche - aktivieren Sie einfach das Wikipedia-Modul und genießen Sie Artikel über Objekte in Ihrer Umgebung.
+ Enduro
+ Motorroller
\ No newline at end of file
diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml
index ca570fd8e3..f264af132d 100644
--- a/OsmAnd/res/values-fr/strings.xml
+++ b/OsmAnd/res/values-fr/strings.xml
@@ -3797,4 +3797,6 @@
Merci de renseigner un nom pour le point
Utilisez un guide de poche hors ligne grâce à Wikipédia. Activez le plugin Wikipédia : des points d\'intérêt seront affichés, ils vous permettrons d\'obtenir des informations sur les lieux qui vous entourent.
Télécharger les cartes Wikipédia
+ Scooter
+ Moto enduro
\ No newline at end of file
diff --git a/OsmAnd/res/values-iw/strings.xml b/OsmAnd/res/values-iw/strings.xml
index 6a93ee035a..d8b81e15d3 100644
--- a/OsmAnd/res/values-iw/strings.xml
+++ b/OsmAnd/res/values-iw/strings.xml
@@ -3823,4 +3823,6 @@
נקודת היעד הנוכחית במסלול תימחק. אם זה יהיה היעד, הניווט ייעצר.
הורדת מפות ויקיפדיה
קבלת מידע על נקודות עניין מוויקיפדיה. מדריך הכיס הפרטי שלך - עליך פשוט להפעיל את התוסף של ויקיפדיה וליהנות מערכים על מה שסביבך.
+ אופנוע שטח
+ טוסטוס
\ No newline at end of file
diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml
index c5167021fe..21e9dc02f5 100644
--- a/OsmAnd/res/values-pl/strings.xml
+++ b/OsmAnd/res/values-pl/strings.xml
@@ -3251,7 +3251,7 @@
Wybiera styl aplikacji, jednostki, region
Ustawienia OsmAnd
Skopiuj z innego profilu
- Ciężar, wysokość, prędkość
+ Waga, wysokość, długość, prędkość
Parametry pojazdu
Komunikaty głosowe są odtwarzane tylko podczas nawigacji.
Komunikaty głosowe
@@ -3463,12 +3463,12 @@
Efekt uboczny: trasa nie będzie zawierała sekcji, w których nie zostało spełnione kryterium minimalnej prędkości (np. podczas pchania roweru pod strome wzgórze). Nie będzie również zawierała informacji o czasach odpoczynku, np. przerwach. Ma to wpływ na analizę i przetwarzanie końcowe, np. przy próbie określenia całkowitej długości trasy, czasu w ruchu lub średniej prędkości.
Zmień układ kategorii
Zmień kolejność sortowania listy, ukryj niepotrzebne kategorie. Wszystkie zmiany można importować lub eksportować za pomocą profili.
- Można dodać nową, niestandardową kategorię wybierając jedną lub kilka potrzebnych kategorii.
+ Można dodać nową, niestandardową kategorię wybierając jedną lub kilka kategorii.
Dostępne
Dodaj niestandardową kategorię
Wyświetlaj tylko w nocy
- Ustawienia wtyczek przywrócone do stanu domyślnego.
- Ustawienia profili przywrócone do stanu domyślnego.
+ Ustawienia wtyczek przywrócone do domyślnych.
+ Ustawienia profili przywrócone do domyślnych.
%1$s/%2$s
Zachód słońca o %1$s
Wschód słońca o %1$s
@@ -3480,7 +3480,7 @@
Użyj aplikacji systemowej
Dźwięk migawki aparatu
Przywrócenie domyślnej kolejności sortowania spowoduje przywrócenie porządku sortowania do stanu domyślnego po instalacji.
- Tryb ułatwień dostępu wyłączony w twoim systemie.
+ Tryb ułatwień jest dostępu wyłączony w twoim systemie.
Wygaś ekran zgodnie z ustawieniami systemu
Wyczyść zarejestrowane dane
- Profile: teraz można zmienić kolejność, ustawić ikonę dla mapy, zmienić wszystkie ustawienia dla profili bazowych i przywrócić je do domyślnych ustawień.
@@ -3523,7 +3523,7 @@
Pokaż powiadomienia systemowe podczas nawigacji z instrukcjami nawigacji.
Powiadomienie nawigacyjne
Domyślnie (%s)
- Wyłączenie ponownego obliczania
+ Bez ponownego obliczania
Minimalna odległość do ponownego wyznaczenia trasy
Wyznacza ponownie trasę, jeśli odległość do trasy jest dłuższa niż określony parametr
Twoje nagrane ślady są w %1$s lub w folderze OsmAnd.
@@ -3588,7 +3588,7 @@
Przycisk do wyświetlania lub ukrywania warstwy terenu na mapie.
Pokaż teren
Ukryj teren
- Pokaż/ukryj teren
+ Pokaż / ukryj teren
Nachylenie
Włącz, aby wyświetlić cieniowanie wzniesień lub stoków. Możesz przeczytać więcej o tego rodzaju mapach na naszej stronie.
Legenda
@@ -3630,7 +3630,7 @@
Ukryte
Te elementy są ukryte w menu, jednak reprezentowane opcje i wtyczki będą wciąż działać.
Ukrycie ustawień resetuje je do pierwotnego stanu.
- \"Główne czynności\" zawierają tylko 4 przyciski.
+ Mieści tylko 4 przyciski.
Główne działania
Możesz przemieszczać elementy tylko wewnątrz tej kategorii.
Wtyczka deweloperska
@@ -3719,7 +3719,7 @@
Ukryj transport publiczny
Pokaż transport publiczny
Pokaż/ukryj transport publiczny
- Utwórz / Edytuj POI
+ Utwórz / Edytuj użyteczne miejsce
Dodaj / Edytuj Ulubione
Naciśnięcie przycisku akcji powoduje przełączanie między wybranymi profilami.
Dodaj profil
diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml
index c7ff9b3162..7c0a021979 100644
--- a/OsmAnd/res/values-ru/strings.xml
+++ b/OsmAnd/res/values-ru/strings.xml
@@ -1120,7 +1120,7 @@
Стиль карты
Эл. почта
Восход/закат
- Мобильный просмотр и навигация по онлайн и локальным картам OSM всего мира
+ Мобильные карты и навигация по всему миру для локальных и онлайн-карт OSM
OsmAnd (Open Street Maps Automated Navigation Directions)
\n
\n OsmAnd — это навигационное приложение с открытым исходным кодом и доступом к картам и данным на основе OSM. Все данные карт (векторные или растровые) могут быть сохранены на карту памяти устройства для использования без подключения к интернету. OsmAnd также предоставляет локальные и онлайн-средства построения маршрута, включая голосовые инструкции по маршруту.
@@ -2414,7 +2414,7 @@
Маркер перемещён в действующие
Указатель расстояния
Показать карту
- Для использования этой функции вы должны добавить хотя бы один маркер.
+ Для использования этой функции нужно добавить хотя бы один маркер.
Не удалось изменить заметку.
Дорога
Показывать направляющие линии
diff --git a/OsmAnd/res/values-sr/strings.xml b/OsmAnd/res/values-sr/strings.xml
index 5b6be8d957..5d5e145f14 100644
--- a/OsmAnd/res/values-sr/strings.xml
+++ b/OsmAnd/res/values-sr/strings.xml
@@ -3812,4 +3812,6 @@
Тренутна одредишна тачка биће уклоњена. Ако је она одредишна, стопираће се навигација.
Преузмите мапе Википедије
Информације о тачкама од интереса потражите од Википедије. То је ваш џепни ванмрежни водич - само омогућите додатак Википедиа и уживајте у чланцима о објектима око вас.
+ Ендуро скутер
+ Скутер
\ No newline at end of file
diff --git a/OsmAnd/res/values-tr/phrases.xml b/OsmAnd/res/values-tr/phrases.xml
index 5b939eb519..5d6ab323b0 100644
--- a/OsmAnd/res/values-tr/phrases.xml
+++ b/OsmAnd/res/values-tr/phrases.xml
@@ -1476,7 +1476,7 @@
Serbest sürüş
Klasik
Klasik+paten
- Scooter
+ Mobilet
Paten
Hayır
Tümsek
@@ -2394,4 +2394,7 @@
URL
Ok
Titreşim
+ Mobilet: hayır
+ Mobilet: evet
+ Mobilet
\ No newline at end of file
diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml
index 61d155b793..6ae6c3f291 100644
--- a/OsmAnd/res/values-tr/strings.xml
+++ b/OsmAnd/res/values-tr/strings.xml
@@ -2582,7 +2582,7 @@
Yeni profil
Çökme
Kişisel taşıyıcı
- Scooter
+ Mobilet
Gün
Günler
Günler
@@ -3770,4 +3770,6 @@
Yakınlaştırma için ses seviyesi düğmeleri
Wikipedia haritalarını indir
Wikipedia\'dan ilgi çekici yerler hakkında bilgi alın. Bu sizin çevrim dışı cep rehberinizdir - sadece Wikipedia eklentisini etkinleştirin ve etrafınızdaki nesneler hakkında makalelerin tadını çıkarın.
+ Enduro motosiklet
+ Küçük motosiklet
\ No newline at end of file
diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml
index bd7b2cf482..f8e2063502 100644
--- a/OsmAnd/res/values-zh-rTW/strings.xml
+++ b/OsmAnd/res/values-zh-rTW/strings.xml
@@ -3810,4 +3810,6 @@
目前路徑上的目的地點將會被刪除。如果其將為目的地,導航就會停止。
下載維基百科地圖
從維基百科取得關於興趣點的資訊。這是您的離線口袋指南 ── 只要啟用維基百科外掛程式並享受有關於您周圍景點的文章。
+ 耐力賽摩托車
+ 小型摩托車
\ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java
index 66567bc76c..d627b4e6e6 100644
--- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java
+++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java
@@ -471,7 +471,7 @@ public class AmenityMenuBuilder extends MenuBuilder {
}
textPrefix = app.getString(R.string.poi_cuisine);
vl = sb.toString();
- } else if (key.contains(Amenity.ROUTE)) {
+ } else if (key.contains(Amenity.ROUTE) || key.equals(Amenity.WIKIDATA)) {
continue;
} else {
if (key.contains(Amenity.DESCRIPTION)) {
@@ -784,12 +784,16 @@ public class AmenityMenuBuilder extends MenuBuilder {
Map additionalInfo = amenity.getAdditionalInfo();
String imageValue = additionalInfo.get("image");
String mapillaryValue = additionalInfo.get("mapillary");
+ String wikidataValue = additionalInfo.get("wikidata");
if (!Algorithms.isEmpty(imageValue)) {
params.put("osm_image", imageValue);
}
if (!Algorithms.isEmpty(mapillaryValue)) {
params.put("osm_mapillary_key", mapillaryValue);
}
+ if (!Algorithms.isEmpty(wikidataValue)) {
+ params.put("wikidata_id", wikidataValue);
+ }
return params;
}
diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/cards/ImageCard.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/cards/ImageCard.java
index a821d8b3cf..94c045fa4d 100644
--- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/cards/ImageCard.java
+++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/cards/ImageCard.java
@@ -25,6 +25,7 @@ import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.mapcontextmenu.MenuBuilder;
import net.osmand.plus.mapillary.MapillaryContributeCard;
import net.osmand.plus.mapillary.MapillaryImageCard;
+import net.osmand.plus.wikimedia.WikiImageHelper;
import net.osmand.util.Algorithms;
import org.json.JSONArray;
@@ -437,6 +438,11 @@ public abstract class ImageCard extends AbstractCard {
pms.put("lang", preferredLang);
}
if (this.params != null) {
+ String wikidataId = this.params.get("wikidata_id");
+ if (wikidataId != null) {
+ this.params.remove("wikidata_id");
+ WikiImageHelper.fillWikiMediaCards(mapActivity, wikidataId, result);
+ }
pms.putAll(this.params);
}
String response = AndroidNetworkUtils.sendRequest(app, "https://osmand.net/api/cm_place", pms,
diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/WikiImage.java b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImage.java
new file mode 100644
index 0000000000..d545b024e6
--- /dev/null
+++ b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImage.java
@@ -0,0 +1,28 @@
+package net.osmand.plus.wikimedia;
+
+public class WikiImage {
+
+ private String imageName;
+ private String imageStubUrl;
+ private String imageHiResUrl;
+
+ public WikiImage(String imageName, String imageStubUrl,
+ String imageHiResUrl) {
+ this.imageName = imageName;
+ this.imageStubUrl = imageStubUrl;
+ this.imageHiResUrl = imageHiResUrl;
+ }
+
+ public String getImageName() {
+ return imageName;
+ }
+
+ public String getImageStubUrl() {
+ return imageStubUrl;
+ }
+
+ public String getImageHiResUrl() {
+ return imageHiResUrl;
+ }
+
+}
diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageCard.java b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageCard.java
new file mode 100644
index 0000000000..e423e3daa5
--- /dev/null
+++ b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageCard.java
@@ -0,0 +1,40 @@
+package net.osmand.plus.wikimedia;
+
+import android.view.View;
+
+import net.osmand.plus.R;
+import net.osmand.plus.activities.MapActivity;
+import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard;
+import net.osmand.util.Algorithms;
+
+public class WikiImageCard extends ImageCard {
+
+ public WikiImageCard(final MapActivity mapActivity,
+ final WikiImage wikiImage) {
+ super(mapActivity, null);
+
+ if (topIconId == 0) {
+ topIconId = R.drawable.ic_logo_wikimedia;
+ }
+
+ this.imageUrl = wikiImage.getImageStubUrl();
+ this.title = wikiImage.getImageName();
+ this.url = this.imageUrl;
+
+ View.OnClickListener onClickListener = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ openUrl(getMapActivity(), getMyApplication(), getTitle(), wikiImage.getImageHiResUrl(),
+ isExternalLink() || Algorithms.isEmpty(getImageHiresUrl()),
+ !Algorithms.isEmpty(getImageHiresUrl()));
+ }
+ };
+
+ if (!Algorithms.isEmpty(buttonText)) {
+ this.onButtonClickListener = onClickListener;
+ } else {
+ this.onClickListener = onClickListener;
+ }
+ }
+
+}
diff --git a/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageHelper.java b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageHelper.java
new file mode 100644
index 0000000000..eded246941
--- /dev/null
+++ b/OsmAnd/src/net/osmand/plus/wikimedia/WikiImageHelper.java
@@ -0,0 +1,126 @@
+package net.osmand.plus.wikimedia;
+
+import androidx.annotation.NonNull;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonSyntaxException;
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
+
+import net.osmand.PlatformUtil;
+import net.osmand.osm.io.NetworkUtils;
+import net.osmand.plus.activities.MapActivity;
+import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard;
+
+import org.apache.commons.codec.binary.Hex;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.logging.Log;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.List;
+
+public class WikiImageHelper {
+ private static final String WIKIDATA_API_ENDPOINT = "https://www.wikidata.org/w/api.php";
+ private static final String ACTION = "?action=wbgetclaims&property=P18&entity=";
+ private static final String FORMAT_JSON = "&format=json";
+ private static final String IMAGE_BASE_URL = "https://upload.wikimedia.org/wikipedia/commons/";
+ private static final String WIKIDATA_PREFIX = "Q";
+ private static final int THUMB_SIZE = 500;
+ private static final Log LOG = PlatformUtil.getLog(WikiImageHelper.class);
+
+ public static void fillWikiMediaCards(@NonNull MapActivity mapActivity, @NonNull String wikidata,
+ List images) {
+ if (wikidata.startsWith(WIKIDATA_PREFIX)) {
+ StringBuilder rawResponse = new StringBuilder();
+ String url = WIKIDATA_API_ENDPOINT + ACTION + wikidata + FORMAT_JSON;
+ String error = NetworkUtils.sendGetRequest(url, null, rawResponse);
+ if (error == null) {
+ try {
+ Gson gson = new Gson();
+ WikipediaResponse response = gson.fromJson(rawResponse.toString(), WikipediaResponse.class);
+ for (WikiImage img : getImageData(response)) {
+ images.add(new WikiImageCard(mapActivity, img));
+ }
+ return;
+ } catch (JsonSyntaxException e) {
+ error = e.getLocalizedMessage();
+ }
+ }
+ LOG.error(error);
+ } else {
+ LOG.error("Wrong WikiMedia ID");
+ }
+ }
+
+ private static List getImageData(WikipediaResponse response) {
+ List images = new ArrayList<>();
+ for (P18 p18 : response.claims.p18) {
+ String imageFileName = p18.mainsnak.datavalue.value;
+ if (imageFileName != null) {
+ try {
+ String imageName = URLDecoder.decode(imageFileName, "UTF-8");
+ imageFileName = imageName.replace(" ", "_");
+ imageName = imageName.substring(0, imageName.lastIndexOf("."));
+ String[] urlHashParts = getHash(imageFileName);
+
+ String imageHiResUrl = IMAGE_BASE_URL +
+ urlHashParts[0] + "/" + urlHashParts[1] + "/" +
+ imageFileName;
+ String imageStubUrl = IMAGE_BASE_URL + "thumb/" +
+ urlHashParts[0] + "/" + urlHashParts[1] + "/" +
+ imageFileName + "/" + THUMB_SIZE + "px-" +
+ imageFileName;
+ images.add(new WikiImage(imageName, imageStubUrl, imageHiResUrl));
+
+ } catch (UnsupportedEncodingException e) {
+ LOG.error(e.getLocalizedMessage());
+ }
+ }
+ }
+ return images;
+ }
+
+ @NonNull
+ private static String[] getHash(@NonNull String s) {
+ String md5 = new String(Hex.encodeHex(DigestUtils.md5(s)));
+ return new String[]{md5.substring(0, 1), md5.substring(0, 2)};
+ }
+
+ private static class Claims {
+ @SerializedName("P18")
+ @Expose
+ private List p18 = null;
+ }
+
+ private static class Datavalue {
+ @SerializedName("value")
+ @Expose
+ private String value;
+ @SerializedName("type")
+ @Expose
+ private String type;
+ }
+
+ private static class Mainsnak {
+ @SerializedName("datavalue")
+ @Expose
+ private Datavalue datavalue;
+ @SerializedName("datatype")
+ @Expose
+ private String datatype;
+ }
+
+ private static class P18 {
+ @SerializedName("mainsnak")
+ @Expose
+ private Mainsnak mainsnak;
+ }
+
+ private static class WikipediaResponse {
+ @SerializedName("claims")
+ @Expose
+ private Claims claims;
+ }
+}