|
|
|
@ -84,7 +84,7 @@ public class FormUtamaController implements Initializable {
|
|
|
|
private int jumlahNota = 0;
|
|
|
|
private int jumlahNota = 0;
|
|
|
|
private final char NOTA_PREV = 'p';
|
|
|
|
private final char NOTA_PREV = 'p';
|
|
|
|
private final char NOTA_NEXT = 'n';
|
|
|
|
private final char NOTA_NEXT = 'n';
|
|
|
|
private final NotaContent notaContent = new NotaContent();
|
|
|
|
public final NotaContent notaContent = new NotaContent();
|
|
|
|
private final AmigoPosRx posRx = new AmigoPosRx();
|
|
|
|
private final AmigoPosRx posRx = new AmigoPosRx();
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
@ -164,28 +164,28 @@ public class FormUtamaController implements Initializable {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
switch (tipe) {
|
|
|
|
switch (tipe) {
|
|
|
|
case FormConstanta.TRANSAKSI_TUNAI:
|
|
|
|
case FormConstanta.TRANSAKSI_TUNAI:
|
|
|
|
if (notaContent.nodeTunai != null) {
|
|
|
|
if (notaContent.getNodeTunai() != null) {
|
|
|
|
node = notaContent.nodeTunai;
|
|
|
|
node = notaContent.getNodeTunai();
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
loader.setLocation(getClass().getResource("/fxml/FormTransaksiTunai.fxml"));
|
|
|
|
loader.setLocation(getClass().getResource("/fxml/FormTransaksiTunai.fxml"));
|
|
|
|
node = loader.load();
|
|
|
|
node = loader.load();
|
|
|
|
notaContent.nodeTunai = node;
|
|
|
|
notaContent.setNodeTunai(node);
|
|
|
|
|
|
|
|
|
|
|
|
FormTransaksiTunaiController fttc = loader.getController();
|
|
|
|
FormTransaksiTunaiController fttc = loader.getController();
|
|
|
|
notaContent.controllerTunai = fttc;
|
|
|
|
notaContent.setControllerTunai(fttc);
|
|
|
|
fttc.initData(noNota, baru);
|
|
|
|
fttc.initData(noNota, baru);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case FormConstanta.TRANSAKSI_RETUR:
|
|
|
|
case FormConstanta.TRANSAKSI_RETUR:
|
|
|
|
if (notaContent.nodeRetur != null) {
|
|
|
|
if (notaContent.getNodeRetur() != null) {
|
|
|
|
node = notaContent.nodeRetur;
|
|
|
|
node = notaContent.getNodeRetur();
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
loader.setLocation(getClass().getResource("/fxml/FormTransaksiRetur.fxml"));
|
|
|
|
loader.setLocation(getClass().getResource("/fxml/FormTransaksiRetur.fxml"));
|
|
|
|
node = loader.load();
|
|
|
|
node = loader.load();
|
|
|
|
notaContent.nodeRetur = node;
|
|
|
|
notaContent.setNodeRetur(node);
|
|
|
|
|
|
|
|
|
|
|
|
FormTransaksiReturController ftrc = loader.getController();
|
|
|
|
FormTransaksiReturController ftrc = loader.getController();
|
|
|
|
notaContent.controllerRetur = ftrc;
|
|
|
|
notaContent.setControllerRetur(ftrc);
|
|
|
|
ftrc.initData(noNota, baru);
|
|
|
|
ftrc.initData(noNota, baru);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
@ -257,10 +257,10 @@ public class FormUtamaController implements Initializable {
|
|
|
|
BarangFull barangFull = result.get();
|
|
|
|
BarangFull barangFull = result.get();
|
|
|
|
switch (tipeTransaksiState) {
|
|
|
|
switch (tipeTransaksiState) {
|
|
|
|
case FormConstanta.TRANSAKSI_TUNAI:
|
|
|
|
case FormConstanta.TRANSAKSI_TUNAI:
|
|
|
|
if (notaContent.controllerTunai != null) {
|
|
|
|
if (notaContent.getControllerTunai() != null) {
|
|
|
|
if (barangFull.getBarang() != null && barangFull.getNoBarang() != null
|
|
|
|
if (barangFull.getBarang() != null && barangFull.getNoBarang() != null
|
|
|
|
&& barangFull.getBarang().getIdGabungan().equals(barangFull.getNoBarang().getIdGabungan())) {
|
|
|
|
&& barangFull.getBarang().getIdGabungan().equals(barangFull.getNoBarang().getIdGabungan())) {
|
|
|
|
notaContent.controllerTunai.addToTable(barangFull.getBarang(), barangFull.getNoBarang());
|
|
|
|
notaContent.getControllerTunai().addToTable(barangFull.getBarang(), barangFull.getNoBarang());
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
Alert alert = AlertUtil.getAlertWarning(
|
|
|
|
Alert alert = AlertUtil.getAlertWarning(
|
|
|
|
AlertUtil.ERROR_TIDAK_LENGKAP_TITLE,
|
|
|
|
AlertUtil.ERROR_TIDAK_LENGKAP_TITLE,
|
|
|
|
@ -385,9 +385,9 @@ public class FormUtamaController implements Initializable {
|
|
|
|
setContent(null);
|
|
|
|
setContent(null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (notaContent.btnTunai != null) {
|
|
|
|
if (notaContent.getBtnTunai() != null) {
|
|
|
|
navigasi.remove(notaContent.btnTunai);
|
|
|
|
navigasi.remove(notaContent.getBtnTunai());
|
|
|
|
vbNavigasi.getChildren().remove(notaContent.btnTunai);
|
|
|
|
vbNavigasi.getChildren().remove(notaContent.getBtnTunai());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Button buttonBaru = generateButtonNota(Fucout.getNoNotaTemporary(),
|
|
|
|
Button buttonBaru = generateButtonNota(Fucout.getNoNotaTemporary(),
|
|
|
|
@ -396,16 +396,16 @@ public class FormUtamaController implements Initializable {
|
|
|
|
true);
|
|
|
|
true);
|
|
|
|
navigasi.add(buttonBaru);
|
|
|
|
navigasi.add(buttonBaru);
|
|
|
|
vbNavigasi.getChildren().add(buttonBaru);
|
|
|
|
vbNavigasi.getChildren().add(buttonBaru);
|
|
|
|
notaContent.btnTunai = buttonBaru;
|
|
|
|
notaContent.setBtnTunai(buttonBaru);
|
|
|
|
jumlahNota++;
|
|
|
|
jumlahNota++;
|
|
|
|
} else if (hasilReturn.get().equals("Baru:Bon")) {
|
|
|
|
} else if (hasilReturn.get().equals("Baru:Bon")) {
|
|
|
|
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_BON)) {
|
|
|
|
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_BON)) {
|
|
|
|
setContent(null);
|
|
|
|
setContent(null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (notaContent.btnBon != null) {
|
|
|
|
if (notaContent.getBtnBon() != null) {
|
|
|
|
navigasi.remove(notaContent.btnBon);
|
|
|
|
navigasi.remove(notaContent.getBtnBon());
|
|
|
|
vbNavigasi.getChildren().remove(notaContent.btnBon);
|
|
|
|
vbNavigasi.getChildren().remove(notaContent.getBtnBon());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Button buttonBaru = generateButtonNota("B-" + Fucout.getNoNotaTemporary(),
|
|
|
|
Button buttonBaru = generateButtonNota("B-" + Fucout.getNoNotaTemporary(),
|
|
|
|
@ -414,16 +414,16 @@ public class FormUtamaController implements Initializable {
|
|
|
|
true);
|
|
|
|
true);
|
|
|
|
navigasi.add(buttonBaru);
|
|
|
|
navigasi.add(buttonBaru);
|
|
|
|
vbNavigasi.getChildren().add(buttonBaru);
|
|
|
|
vbNavigasi.getChildren().add(buttonBaru);
|
|
|
|
notaContent.btnBon = buttonBaru;
|
|
|
|
notaContent.setBtnBon(buttonBaru);
|
|
|
|
jumlahNota++;
|
|
|
|
jumlahNota++;
|
|
|
|
} else if (hasilReturn.get().equals("Baru:Bawa Dulu")) {
|
|
|
|
} else if (hasilReturn.get().equals("Baru:Bawa Dulu")) {
|
|
|
|
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_BAWA)) {
|
|
|
|
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_BAWA)) {
|
|
|
|
setContent(null);
|
|
|
|
setContent(null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (notaContent.btnBawa != null) {
|
|
|
|
if (notaContent.getBtnBawa() != null) {
|
|
|
|
navigasi.remove(notaContent.btnBawa);
|
|
|
|
navigasi.remove(notaContent.getBtnBawa());
|
|
|
|
vbNavigasi.getChildren().remove(notaContent.btnBawa);
|
|
|
|
vbNavigasi.getChildren().remove(notaContent.getBtnBawa());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Button buttonBaru = generateButtonNota("W-" + Fucout.getNoNotaTemporary(),
|
|
|
|
Button buttonBaru = generateButtonNota("W-" + Fucout.getNoNotaTemporary(),
|
|
|
|
@ -432,16 +432,16 @@ public class FormUtamaController implements Initializable {
|
|
|
|
true);
|
|
|
|
true);
|
|
|
|
navigasi.add(buttonBaru);
|
|
|
|
navigasi.add(buttonBaru);
|
|
|
|
vbNavigasi.getChildren().add(buttonBaru);
|
|
|
|
vbNavigasi.getChildren().add(buttonBaru);
|
|
|
|
notaContent.btnBawa = buttonBaru;
|
|
|
|
notaContent.setBtnBawa(buttonBaru);
|
|
|
|
jumlahNota++;
|
|
|
|
jumlahNota++;
|
|
|
|
} else if (hasilReturn.get().equals("Baru:Retur")) {
|
|
|
|
} else if (hasilReturn.get().equals("Baru:Retur")) {
|
|
|
|
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_RETUR)) {
|
|
|
|
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_RETUR)) {
|
|
|
|
setContent(null);
|
|
|
|
setContent(null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (notaContent.btnRetur != null) {
|
|
|
|
if (notaContent.getBtnRetur() != null) {
|
|
|
|
navigasi.remove(notaContent.btnRetur);
|
|
|
|
navigasi.remove(notaContent.getBtnRetur());
|
|
|
|
vbNavigasi.getChildren().remove(notaContent.btnRetur);
|
|
|
|
vbNavigasi.getChildren().remove(notaContent.getBtnRetur());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Button buttonBaru = generateButtonNota("R-" + Fucout.getNoNotaTemporary(),
|
|
|
|
Button buttonBaru = generateButtonNota("R-" + Fucout.getNoNotaTemporary(),
|
|
|
|
@ -450,7 +450,7 @@ public class FormUtamaController implements Initializable {
|
|
|
|
true);
|
|
|
|
true);
|
|
|
|
navigasi.add(buttonBaru);
|
|
|
|
navigasi.add(buttonBaru);
|
|
|
|
vbNavigasi.getChildren().add(buttonBaru);
|
|
|
|
vbNavigasi.getChildren().add(buttonBaru);
|
|
|
|
notaContent.btnRetur = buttonBaru;
|
|
|
|
notaContent.setBtnRetur(buttonBaru);
|
|
|
|
jumlahNota++;
|
|
|
|
jumlahNota++;
|
|
|
|
} else if (hasilReturn.get().contains("Checkout:")) {
|
|
|
|
} else if (hasilReturn.get().contains("Checkout:")) {
|
|
|
|
String noNota = hasilReturn.get().substring(9);
|
|
|
|
String noNota = hasilReturn.get().substring(9);
|
|
|
|
@ -470,31 +470,31 @@ public class FormUtamaController implements Initializable {
|
|
|
|
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_RETUR)) {
|
|
|
|
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_RETUR)) {
|
|
|
|
setContent(null);
|
|
|
|
setContent(null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (notaContent.btnRetur != null) {
|
|
|
|
if (notaContent.getBtnRetur() != null) {
|
|
|
|
navigasi.remove(notaContent.btnRetur);
|
|
|
|
navigasi.remove(notaContent.getBtnRetur());
|
|
|
|
vbNavigasi.getChildren().remove(notaContent.btnRetur);
|
|
|
|
vbNavigasi.getChildren().remove(notaContent.getBtnRetur());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
buttonBaru = generateButtonNota(noNota,
|
|
|
|
buttonBaru = generateButtonNota(noNota,
|
|
|
|
FormConstanta.TRANSAKSI_RETUR,
|
|
|
|
FormConstanta.TRANSAKSI_RETUR,
|
|
|
|
Fucout.TEKS_TIPE_NOTA_RETUR,
|
|
|
|
Fucout.TEKS_TIPE_NOTA_RETUR,
|
|
|
|
false);
|
|
|
|
false);
|
|
|
|
notaContent.btnRetur = buttonBaru;
|
|
|
|
notaContent.setBtnRetur(buttonBaru);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_TUNAI)) {
|
|
|
|
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_TUNAI)) {
|
|
|
|
setContent(null);
|
|
|
|
setContent(null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (notaContent.btnTunai != null) {
|
|
|
|
if (notaContent.getBtnTunai() != null) {
|
|
|
|
navigasi.remove(notaContent.btnTunai);
|
|
|
|
navigasi.remove(notaContent.getBtnTunai());
|
|
|
|
vbNavigasi.getChildren().remove(notaContent.btnTunai);
|
|
|
|
vbNavigasi.getChildren().remove(notaContent.getBtnTunai());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
buttonBaru = generateButtonNota(noNota,
|
|
|
|
buttonBaru = generateButtonNota(noNota,
|
|
|
|
FormConstanta.TRANSAKSI_TUNAI,
|
|
|
|
FormConstanta.TRANSAKSI_TUNAI,
|
|
|
|
Fucout.TEKS_TIPE_NOTA_TUNAI,
|
|
|
|
Fucout.TEKS_TIPE_NOTA_TUNAI,
|
|
|
|
false);
|
|
|
|
false);
|
|
|
|
notaContent.btnTunai = buttonBaru;
|
|
|
|
notaContent.setBtnTunai(buttonBaru);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (buttonBaru != null) {
|
|
|
|
if (buttonBaru != null) {
|
|
|
|
@ -550,15 +550,129 @@ public class FormUtamaController implements Initializable {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
private class NotaContent {
|
|
|
|
public class NotaContent {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Button btnTunai;
|
|
|
|
|
|
|
|
private FormTransaksiTunaiController controllerTunai = null;
|
|
|
|
|
|
|
|
private Node nodeTunai = null;
|
|
|
|
|
|
|
|
private Button btnBawa;
|
|
|
|
|
|
|
|
private Button btnBon;
|
|
|
|
|
|
|
|
private Button btnRetur;
|
|
|
|
|
|
|
|
private FormTransaksiReturController controllerRetur = null;
|
|
|
|
|
|
|
|
private Node nodeRetur = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return the btnTunai
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public Button getBtnTunai() {
|
|
|
|
|
|
|
|
return btnTunai;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @param btnTunai the btnTunai to set
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public void setBtnTunai(Button btnTunai) {
|
|
|
|
|
|
|
|
this.btnTunai = btnTunai;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return the controllerTunai
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public FormTransaksiTunaiController getControllerTunai() {
|
|
|
|
|
|
|
|
return controllerTunai;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @param controllerTunai the controllerTunai to set
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public void setControllerTunai(FormTransaksiTunaiController controllerTunai) {
|
|
|
|
|
|
|
|
this.controllerTunai = controllerTunai;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return the nodeTunai
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public Node getNodeTunai() {
|
|
|
|
|
|
|
|
return nodeTunai;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @param nodeTunai the nodeTunai to set
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public void setNodeTunai(Node nodeTunai) {
|
|
|
|
|
|
|
|
this.nodeTunai = nodeTunai;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return the btnBawa
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public Button getBtnBawa() {
|
|
|
|
|
|
|
|
return btnBawa;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @param btnBawa the btnBawa to set
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public void setBtnBawa(Button btnBawa) {
|
|
|
|
|
|
|
|
this.btnBawa = btnBawa;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return the btnBon
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public Button getBtnBon() {
|
|
|
|
|
|
|
|
return btnBon;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @param btnBon the btnBon to set
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public void setBtnBon(Button btnBon) {
|
|
|
|
|
|
|
|
this.btnBon = btnBon;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return the btnRetur
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public Button getBtnRetur() {
|
|
|
|
|
|
|
|
return btnRetur;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @param btnRetur the btnRetur to set
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public void setBtnRetur(Button btnRetur) {
|
|
|
|
|
|
|
|
this.btnRetur = btnRetur;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return the controllerRetur
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public FormTransaksiReturController getControllerRetur() {
|
|
|
|
|
|
|
|
return controllerRetur;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @param controllerRetur the controllerRetur to set
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public void setControllerRetur(FormTransaksiReturController controllerRetur) {
|
|
|
|
|
|
|
|
this.controllerRetur = controllerRetur;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return the nodeRetur
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public Node getNodeRetur() {
|
|
|
|
|
|
|
|
return nodeRetur;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @param nodeRetur the nodeRetur to set
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public void setNodeRetur(Node nodeRetur) {
|
|
|
|
|
|
|
|
this.nodeRetur = nodeRetur;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Button btnTunai;
|
|
|
|
|
|
|
|
FormTransaksiTunaiController controllerTunai = null;
|
|
|
|
|
|
|
|
Node nodeTunai = null;
|
|
|
|
|
|
|
|
Button btnBawa;
|
|
|
|
|
|
|
|
Button btnBon;
|
|
|
|
|
|
|
|
Button btnRetur;
|
|
|
|
|
|
|
|
FormTransaksiReturController controllerRetur = null;
|
|
|
|
|
|
|
|
Node nodeRetur = null;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|