diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index e569763..1025fe8 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -40,7 +40,15 @@
-
+
+
+
+
+
+
+
+
+
@@ -51,34 +59,17 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -369,7 +360,7 @@
file://$PROJECT_DIR$/app/src/main/java/verdnatura/es/repartoverdnatura/ExpeditionSummaryActivity.kt
- 319
+ 317
diff --git a/app/build.gradle b/app/build.gradle
index 7426509..2972116 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -23,10 +23,10 @@ android {
getByName("release") {
applicationIdSuffix = ".sfusion"
}
- /*
+
getByName("debug") {
applicationIdSuffix = ".sfusion"
- }*/
+ }
/* getByName("release") {
applicationIdSuffix = ".sfusion"
}
diff --git a/app/src/main/java/verdnatura/es/repartoverdnatura/ExpeditionSummaryActivity.kt b/app/src/main/java/verdnatura/es/repartoverdnatura/ExpeditionSummaryActivity.kt
index bfe1303..6eb0a6e 100644
--- a/app/src/main/java/verdnatura/es/repartoverdnatura/ExpeditionSummaryActivity.kt
+++ b/app/src/main/java/verdnatura/es/repartoverdnatura/ExpeditionSummaryActivity.kt
@@ -6,6 +6,7 @@ import android.content.Intent
import android.media.MediaPlayer
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
+import android.util.Log
import android.view.View
import android.view.inputmethod.InputMethodManager
import android.widget.*
@@ -57,7 +58,7 @@ class ExpeditionSummaryActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_expedition_summary)
-
+ Log.d("VERDNATURA::",""+ localClassName)
mpError = MediaPlayer.create((this), R.raw.error)
mpOk = MediaPlayer.create((this), R.raw.ok)
mpErrorRepeat = MediaPlayer.create((this), R.raw.errorrepeat)
@@ -76,11 +77,8 @@ class ExpeditionSummaryActivity : AppCompatActivity() {
if (bundle != null) {
if (bundle.get("app") == "picking") {
- /* Utils.saveTokenUser(this,bundle.get("token").toString())
- Utils.saveUserPass(this,bundle.get("user").toString(),bundle.get("password").toString())
- Utils.saveIdUser(this,bundle.get("userId").toString())*/
-
- routeOfLoad = bundle.get("routeId").toString()
+ routeOfLoad = bundle.get("routeId").toString()
+ route = Ruta(routeOfLoad)
} else {
route = bundle.getSerializable("route") as Ruta
routeOfLoad = route!!.id.toString()
diff --git a/app/src/main/java/verdnatura/es/repartoverdnatura/MODELS/Ruta.java b/app/src/main/java/verdnatura/es/repartoverdnatura/MODELS/Ruta.java
index 5044b07..8df8e68 100644
--- a/app/src/main/java/verdnatura/es/repartoverdnatura/MODELS/Ruta.java
+++ b/app/src/main/java/verdnatura/es/repartoverdnatura/MODELS/Ruta.java
@@ -51,6 +51,9 @@ public class Ruta implements Serializable {
Chofer = chofer;
isLoaded=isloaded;
}
+ public Ruta(String id) {
+ Id = id;
+ }
public Ruta(){}
diff --git a/app/src/main/java/verdnatura/es/repartoverdnatura/MainActivity.java b/app/src/main/java/verdnatura/es/repartoverdnatura/MainActivity.java
index cfb1993..8051605 100644
--- a/app/src/main/java/verdnatura/es/repartoverdnatura/MainActivity.java
+++ b/app/src/main/java/verdnatura/es/repartoverdnatura/MainActivity.java
@@ -9,9 +9,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
-import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
-import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
@@ -40,7 +38,6 @@ import verdnatura.es.repartoverdnatura.INTERFACES.RestClient;
import verdnatura.es.repartoverdnatura.MODELS.Check;
import verdnatura.es.repartoverdnatura.MODELS.Ruta;
import verdnatura.es.repartoverdnatura.MODELS.SignDataUpload;
-import verdnatura.es.repartoverdnatura.MODELS.Version;
import verdnatura.es.repartoverdnatura.UTILS.ApiUtils;
import verdnatura.es.repartoverdnatura.UTILS.LocalStorage;
import verdnatura.es.repartoverdnatura.UTILS.Utils;
@@ -105,53 +102,53 @@ public class MainActivity extends AppCompatActivity {
super.onRestart();
}
- private void setViews(){
+ private void setViews() {
listViewRutas = findViewById(R.id.listRutas);
listViewPendingTickets = findViewById(R.id.listPendingTickets);
- heightCellRoute = Utils.convertDipToPixels(160f,this);
- heightCellHeader = Utils.convertDipToPixels(45f,this);
+ heightCellRoute = Utils.convertDipToPixels(160f, this);
+ heightCellHeader = Utils.convertDipToPixels(45f, this);
txtDriver = findViewById(R.id.textView3);
btnUpload = findViewById(R.id.btnUpload);
- }
+ }
- public void getRoutes(View v){
+ public void getRoutes(View v) {
date = new Date();
final MainActivity that = this;
listaRutas = new ArrayList<>();
listViewRutas.setVisibility(View.VISIBLE);
- Utils.progressBar.show(this,getResources().getString(R.string.please_wait));
+ Utils.progressBar.show(this, getResources().getString(R.string.please_wait));
restClient.getRoutes(Utils.getMapWhitUser(this)).enqueue(new Callback>() {
@Override
public void onResponse(Call> call, Response> response) {
Utils.progressBar.getDialog().dismiss();
- if(response.isSuccessful()){
+ if (response.isSuccessful()) {
//d("VERDNATURA::","recibidos datos");
- for (Ruta ruta : response.body()){
- // d("VERDNATURA::","ruta"+ruta.getId());
- LocalStorage.saveRutas(that,response.body());
- //d("VERDNATURA::","guardado");
- //txtDriver.setText(ruta.getDriver());
- try {
+ for (Ruta ruta : response.body()) {
+ // d("VERDNATURA::","ruta"+ruta.getId());
+ LocalStorage.saveRutas(that, response.body());
+ //d("VERDNATURA::","guardado");
+ //txtDriver.setText(ruta.getDriver());
+ try {
- if (date.compareTo(format.parse(ruta.getDate())) == 0){
- listaRutas.add(ruta);
- }else{
- date = format.parse(ruta.getDate());
- Ruta rutaHeader = new Ruta();
- rutaHeader.setHeader(true);
- rutaHeader.setDate(ruta.getDate());
- listaRutas.add(rutaHeader);
- listaRutas.add(ruta);
- }
- } catch (ParseException e) {
- e.printStackTrace();
- }
+ if (date.compareTo(format.parse(ruta.getDate())) == 0) {
+ listaRutas.add(ruta);
+ } else {
+ date = format.parse(ruta.getDate());
+ Ruta rutaHeader = new Ruta();
+ rutaHeader.setHeader(true);
+ rutaHeader.setDate(ruta.getDate());
+ listaRutas.add(rutaHeader);
+ listaRutas.add(ruta);
+ }
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
- }
+ }
- that.rutaAdapter = new RutaAdapter(that,listaRutas);
+ that.rutaAdapter = new RutaAdapter(that, listaRutas);
that.listViewRutas.setAdapter(that.rutaAdapter);
ViewGroup.LayoutParams params = listViewRutas.getLayoutParams();
params.height = (heightCellRoute * (listaRutas.size()));
@@ -160,9 +157,9 @@ public class MainActivity extends AppCompatActivity {
// checkVersion();
LocalStorage.checkDateForClear(that);
- // getExpeditions();
+ // getExpeditions();
- }else{
+ } else {
getLocalData();
}
@@ -177,32 +174,32 @@ public class MainActivity extends AppCompatActivity {
}
- public void goToCargarBultos(View v){
- // Intent i = new Intent(this,CargarBultosActivity.class);
+ public void goToCargarBultos(View v) {
+ // Intent i = new Intent(this,CargarBultosActivity.class);
- Intent i = new Intent(this,LoadVanActivity.class);
+ Intent i = new Intent(this, LoadVanActivity.class);
startActivity(i);
}
- public void goToExpeditionInfo(View v){
+ public void goToExpeditionInfo(View v) {
/*
Intent i = new Intent(this,ExpeditionInfoActivity.class);
startActivity(i);*/
- Utils.startPicking(this,"log");
+ Utils.startPicking(this, "log");
}
- public void getLocalData(){
+ public void getLocalData() {
List list = LocalStorage.getRutas(this);
- if (list.size() > 0){
- for (Ruta ruta : list){
+ if (list.size() > 0) {
+ for (Ruta ruta : list) {
txtDriver.setText(ruta.getDriver());
try {
- if (date.compareTo(format.parse(ruta.getDate())) == 0){
+ if (date.compareTo(format.parse(ruta.getDate())) == 0) {
listaRutas.add(ruta);
- }else{
+ } else {
date = format.parse(ruta.getDate());
Ruta rutaHeader = new Ruta();
rutaHeader.setHeader(true);
@@ -215,22 +212,22 @@ public class MainActivity extends AppCompatActivity {
}
}
- this.rutaAdapter = new RutaAdapter(this,listaRutas);
+ this.rutaAdapter = new RutaAdapter(this, listaRutas);
this.listViewRutas.setAdapter(this.rutaAdapter);
ViewGroup.LayoutParams params = listViewRutas.getLayoutParams();
params.height = (heightCellRoute * (listaRutas.size()));
listViewRutas.setLayoutParams(params);
- }else{
+ } else {
txtDriver.setText(this.getResources().getString(R.string.reparto));
listViewRutas.setVisibility(View.GONE);
}
}
- public void getExpeditions(){
+ public void getExpeditions() {
List list = LocalStorage.getRutas(this);
- if (list.size() > 0){
- for (Ruta ruta : list){
+ if (list.size() > 0) {
+ for (Ruta ruta : list) {
try {
@@ -241,59 +238,59 @@ public class MainActivity extends AppCompatActivity {
}
}
- this.rutaAdapter = new RutaAdapter(this,listaRutas);
+ this.rutaAdapter = new RutaAdapter(this, listaRutas);
this.listViewRutas.setAdapter(this.rutaAdapter);
ViewGroup.LayoutParams params = listViewRutas.getLayoutParams();
params.height = (heightCellRoute * (listaRutas.size()));
listViewRutas.setLayoutParams(params);
- }else{
+ } else {
txtDriver.setText(this.getResources().getString(R.string.reparto));
listViewRutas.setVisibility(View.GONE);
}
}
- private void getPengingExpeditions(){
+ private void getPengingExpeditions() {
- ArrayListlistExpeditionPending = new ArrayList<>();
+ ArrayList listExpeditionPending = new ArrayList<>();
Set listPendientes = LocalStorage.getPendingExpeditions(this);
Gson gson = new Gson();
- if (listPendientes.size() > 0 ){
- for(String s : listPendientes){
- listExpeditionPending.add(gson.fromJson(s,Check.class));
+ if (listPendientes.size() > 0) {
+ for (String s : listPendientes) {
+ listExpeditionPending.add(gson.fromJson(s, Check.class));
}
- // Log.d("VERDNATURA::","Pendientes:"+ listExpeditionPending.size());
- if (listExpeditionPending.size()>0) {
- sendPengingExpeditionsList(listExpeditionPending,"DELIVERED");
+ // Log.d("VERDNATURA::","Pendientes:"+ listExpeditionPending.size());
+ if (listExpeditionPending.size() > 0) {
+ sendPengingExpeditionsList(listExpeditionPending, "DELIVERED");
}
- }else{
- // Log.d("VERDNATURA::","No hay Pendientes"+ listExpeditionPending.size());
+ } else {
+ // Log.d("VERDNATURA::","No hay Pendientes"+ listExpeditionPending.size());
}
}
- public void sendPengingExpeditionsList(final List listPending, String state){
+ public void sendPengingExpeditionsList(final List listPending, String state) {
final MainActivity that = this;
Object[] stateData = new Object[2];
- stateData[0]= listPending;
- stateData[1]=state;
+ stateData[0] = listPending;
+ stateData[1] = state;
- restClient.expeditionState_addByExpeditionMulti(Utils.getMapWhitUser(this),stateData).enqueue(new Callback() {
+ restClient.expeditionState_addByExpeditionMulti(Utils.getMapWhitUser(this), stateData).enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
Utils.progressBar.getDialog().dismiss();
- if(response.isSuccessful()){
+ if (response.isSuccessful()) {
- // Log.d("VERDNATURA::","enviados pendientes");
+ // Log.d("VERDNATURA::","enviados pendientes");
clearPendingExpedition(that);
- }else{
+ } else {
Utils.progressBar.getDialog().dismiss();
}
@@ -307,90 +304,87 @@ public class MainActivity extends AppCompatActivity {
}
- private void getPending(){
+ private void getPending() {
- // Log.d("VERDNATURA::","Se ha cambiado la red");
+ // Log.d("VERDNATURA::","Se ha cambiado la red");
listaPendientes = new ArrayList<>();
Set listPendientes = LocalStorage.getPendingSigns(this);
Gson gson = new Gson();
- for(String s : listPendientes){
- listaPendientes.add(gson.fromJson(s,SignDataUpload.class));
+ for (String s : listPendientes) {
+ listaPendientes.add(gson.fromJson(s, SignDataUpload.class));
}
ViewGroup.LayoutParams params = listViewPendingTickets.getLayoutParams();
params.height = (heightCellRoute * (listaPendientes.size()));
listViewPendingTickets.setLayoutParams(params);
- pendingAdapter = new PendingTickets(this,listaPendientes);
+ pendingAdapter = new PendingTickets(this, listaPendientes);
listViewPendingTickets.setAdapter(pendingAdapter);
- if (listPendientes.size() > 0 ){
+ if (listPendientes.size() > 0) {
btnUpload.setVisibility(View.VISIBLE);
- }else{
+ } else {
btnUpload.setVisibility(View.GONE);
}
}
- public void onRouteSelected(int pos){
- Intent i = new Intent(this,Tickets.class);
- i.putExtra("route",listaRutas.get(pos));
+ public void onRouteSelected(int pos) {
+ Intent i = new Intent(this, Tickets.class);
+ i.putExtra("route", listaRutas.get(pos));
startActivity(i);
}
- public void onLoadSelected(int pos){
- // Intent i = new Intent(this,LoadVanActivity.class);
- Intent i=new Intent(this,ExpeditionSummaryActivity.class);
- i.putExtra("route",listaRutas.get(pos));
+ public void onLoadSelected(int pos) {
+ // Intent i = new Intent(this,LoadVanActivity.class);
+ Intent i = new Intent(this, ExpeditionSummaryActivity.class);
+ i.putExtra("route", listaRutas.get(pos));
startActivity(i);
}
+ public void logOut(View v) {
+ final MainActivity that = this;
- public void logOut(View v){
- final MainActivity that = this;
+ if (listaPendientes.size() > 0) {
+ new AlertDialog.Builder(this)
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .setTitle("ATENCIÓN")
+ .setMessage("Tienes tickets pendientes de actualizar,¿Estás seguro de cerrar sesión?")
+ .setPositiveButton("Si", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ Utils.logOut(that);
+ finish();
+ }
- if (listaPendientes.size() > 0){
- new AlertDialog.Builder(this)
- .setIcon(android.R.drawable.ic_dialog_alert)
- .setTitle("ATENCIÓN")
- .setMessage("Tienes tickets pendientes de actualizar,¿Estás seguro de cerrar sesión?")
- .setPositiveButton("Si", new DialogInterface.OnClickListener()
- {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Utils.logOut(that);
- finish();
- }
-
- })
- .setNegativeButton("No", null)
- .show();
- }else{
- new AlertDialog.Builder(this)
- .setIcon(android.R.drawable.ic_dialog_alert)
- .setTitle("Cerrar sesión")
- .setMessage("¿Estás seguro de cerrar sesión?")
- .setPositiveButton("Si", new DialogInterface.OnClickListener()
- {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Utils.logOut(that);
- finish();
- }
-
- })
- .setNegativeButton("No", null)
- .show();
- }
+ })
+ .setNegativeButton("No", null)
+ .show();
+ } else {
+ new AlertDialog.Builder(this)
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .setTitle("Cerrar sesión")
+ .setMessage("¿Estás seguro de cerrar sesión?")
+ .setPositiveButton("Si", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ Utils.logOut(that);
+ finish();
+ }
+ })
+ .setNegativeButton("No", null)
+ .show();
+ }
}
- public void goToInfo(View v){
- // startActivity(new Intent(this,InfoActivity.class));
- Utils.startPicking(this,"info");
+ public void goToInfo(View v) {
+ // startActivity(new Intent(this,InfoActivity.class));
+ Utils.startPicking(this, "info");
}
- public void goToFound(View v){
- startActivity(new Intent(this,ExpeditionScanActivity.class));
+
+ public void goToFound(View v) {
+ startActivity(new Intent(this, ExpeditionScanActivity.class));
}
/* public void goToLoaders(int pos){
Intent i = new Intent(this,LoadersActivity.class);
@@ -398,37 +392,37 @@ public class MainActivity extends AppCompatActivity {
startActivity(i);
}*/
- public void savePending(int pos){
+ public void savePending(int pos) {
SignDataUpload data = listaPendientes.get(pos);
confirmSave(data);
}
- public void confirmSave(final SignDataUpload data){
- Utils.progressBar.show(this,getResources().getString(R.string.please_wait));
+ public void confirmSave(final SignDataUpload data) {
+ Utils.progressBar.show(this, getResources().getString(R.string.please_wait));
final MainActivity that = this;
Object[] args = new Object[1];
args[0] = data;
- restClient.saveSign(Utils.getMapWhitUser(this),args).enqueue(new Callback() {
+ restClient.saveSign(Utils.getMapWhitUser(this), args).enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
Utils.progressBar.getDialog().dismiss();
- if(response.isSuccessful()){
+ if (response.isSuccessful()) {
- // if (response.body().equals("OK")){
- ArrayList listAux = new ArrayList<>();
+ // if (response.body().equals("OK")){
+ ArrayList listAux = new ArrayList<>();
- listaPendientes.remove(data);
- LocalStorage.udpatePendingSigns(that,listaPendientes);
- getPending();
+ listaPendientes.remove(data);
+ LocalStorage.udpatePendingSigns(that, listaPendientes);
+ getPending();
/* }else{
Utils.showErrorDialog(that,that.getResources().getString(R.string.error_conexion));
}*/
- }else{
+ } else {
//Log.i("ERROR","error al guardar");
- Utils.showErrorDialog(that,that.getResources().getString(R.string.error_conexion));
+ Utils.showErrorDialog(that, that.getResources().getString(R.string.error_conexion));
//Utils.showErrorDialog(that,response.message());
}
}
@@ -436,12 +430,12 @@ public class MainActivity extends AppCompatActivity {
@Override
public void onFailure(Call call, Throwable t) {
Utils.progressBar.getDialog().dismiss();
- Utils.showErrorDialog(that,that.getResources().getString(R.string.error_conexion));
+ Utils.showErrorDialog(that, that.getResources().getString(R.string.error_conexion));
}
});
}
- public void confirmSavePos(View v){
+ public void confirmSavePos(View v) {
if (listaPendientes.size() > 0) {
Utils.progressBar.show(this, getResources().getString(R.string.please_wait));
final SignDataUpload data = listaPendientes.get(0);
@@ -454,13 +448,13 @@ public class MainActivity extends AppCompatActivity {
if (response.isSuccessful()) {
- listaPendientes.remove(data);
- LocalStorage.udpatePendingSigns(that, listaPendientes);
- confirmSavePos(null);
+ listaPendientes.remove(data);
+ LocalStorage.udpatePendingSigns(that, listaPendientes);
+ confirmSavePos(null);
- } else {
- Utils.showErrorDialog(that, that.getResources().getString(R.string.error_conexion));
- }
+ } else {
+ Utils.showErrorDialog(that, that.getResources().getString(R.string.error_conexion));
+ }
}
@@ -470,75 +464,12 @@ public class MainActivity extends AppCompatActivity {
Utils.showErrorDialog(that, that.getResources().getString(R.string.error_conexion));
}
});
- }else{
+ } else {
Utils.progressBar.getDialog().dismiss();
getPending();
}
}
- public void checkVersion(){
-
- String[] userData = new String[1];
- userData[0] = "delivery";
-
- final MainActivity that = this;
-
- //sergio: se cambia llamada Callback porque requeria un objeto y se le pasaba un true o false
- restClient.getVersion(Utils.getMapWhitUser(this),userData).enqueue(new Callback() {
- //restClient.getVersion(Utils.getMapWhitUser(this),userData).enqueue(new Callback() {
- @Override
- public void onResponse(Call call, Response response) {
- if (response.isSuccessful()){
- final Version v = response.body();
-
- PackageManager manager = that.getPackageManager();
- try{
- PackageInfo info = manager.getPackageInfo(that.getPackageName(), 0);
-
-
-
- if (!v.getVersion().equals(info.versionName)){
- AlertDialog.Builder builderVersion = new AlertDialog.Builder(that);
- builderVersion.setMessage("Existe una nueva versión. Se recomienda actualizar.");
- builderVersion.setCancelable(false);
- builderVersion.setPositiveButton(
- "Actualizar",
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(v.getUrl())));
-
- }
- });
-
- if (!v.getVersionIsCritical().equals("1")){
- builderVersion.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialogInterface, int i) {
-
- }
- });
- }else{
- builderVersion.setMessage("Existe una nueva versión. Es necesario actualizar para un correcto funcionamiento");
- }
- AlertDialog alertVersion = builderVersion.create();
- alertVersion.show();
- }
- }catch (Exception e){
-
- }
-
-
- }else{
-
- }
- }
-
- @Override
- public void onFailure(Call call, Throwable t) {
- }
- });
- }
-
@Override
protected void onDestroy() {
super.onDestroy();
diff --git a/app/src/main/java/verdnatura/es/repartoverdnatura/UTILS/Utils.java b/app/src/main/java/verdnatura/es/repartoverdnatura/UTILS/Utils.java
index d8156b4..a7d5c91 100644
--- a/app/src/main/java/verdnatura/es/repartoverdnatura/UTILS/Utils.java
+++ b/app/src/main/java/verdnatura/es/repartoverdnatura/UTILS/Utils.java
@@ -15,6 +15,8 @@ import android.widget.EditText;
import java.util.HashMap;
import java.util.Map;
+import verdnatura.es.repartoverdnatura.LoginActivity;
+
public class Utils {
static SharedPreferences sp;
@@ -212,12 +214,12 @@ public class Utils {
Intent i = new Intent();
//i.setClassName("es.verdnatura", "es.verdnatura.presentation.view.feature.login.activity.LoginActivity")
-
- i.setClassName("es.verdnatura", "es.verdnatura.presentation.view.feature.main.activity.MainActivity");
+ i.setClassName("es.verdnatura.sfusion", "es.verdnatura.presentation.view.feature.main.activity.MainActivity");
i.putExtra("user", getUser(context));
i.putExtra("password", getPass(context));
+ i.putExtra("userfk", Utils.getIdUserLogin(context));
i.putExtra("menu", option);
- context.startActivity(i);
+ context.startActivity(i);
}
}