// Path: java/src/main/java/org/rustkeylock/fxcomponents/RklStage.java
// public class RklStage {
//     private final Stage fxStage;
//     private final HostServices hostServices;
//     private RklController currentlyActiveController;
//     private AtomicBoolean loggedIn = new AtomicBoolean(false);
// 
//     public RklStage(Stage fxStage, HostServices hostServices) {
//         this.fxStage = fxStage;
//         this.hostServices = hostServices;
//     }
// 
//     public Optional<RklController> getCurrentlyActiveController() {
//         return Optional.ofNullable(currentlyActiveController);
//     }
// 
//     public void updateView(Scene scene, RklController controller) {
//         currentlyActiveController = controller;
//         fxStage.setScene(scene);
//     }
// 
//     public Stage getFxStage() {
//         return this.fxStage;
//     }
// 
//     public HostServices getHostServices() {
//         return hostServices;
//     }
// 
//     public void markLoggedIn() {
//         loggedIn.getAndSet(true);
//     }
// 
//     public boolean isLoggedIn() {
//         return loggedIn.get();
//     }
// }
// 
// Path: java/src/main/java/org/rustkeylock/japi/stubs/GuiResponse.java
// public class GuiResponse {
//     public static Map<String, Object> ChangePassword(String password, Integer number) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("password", password);
//         inner.put("number", number);
//         Map<String, Object> map = new HashMap<>();
//         map.put("ProvidedPassword", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> GoToMenu(Map<String, Object> m) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("menu", m);
//         Map<String, Object> map = new HashMap<>();
//         map.put("GoToMenu", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> GoToMenu(String m) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("menu", m);
//         Map<String, Object> map = new HashMap<>();
//         map.put("GoToMenu", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> DeleteEntry(Integer index) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("index", index);
//         Map<String, Object> map = new HashMap<>();
//         map.put("DeleteEntry", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> ReplaceEntry(JavaEntry entry, Integer index) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("entry", entry);
//         inner.put("index", index);
//         Map<String, Object> map = new HashMap<>();
//         map.put("ReplaceEntry", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> AddEntry(JavaEntry entry) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("entry", entry);
//         Map<String, Object> map = new HashMap<>();
//         map.put("AddEntry", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> GeneratePassphrase(JavaEntry entry, Integer index) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("entry", entry);
//         inner.put("index", index);
//         Map<String, Object> map = new HashMap<>();
//         map.put("GeneratePassphrase", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> SetConfiguration(java.util.List<String> strings) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("strings", strings);
//         Map<String, Object> map = new HashMap<>();
//         map.put("SetConfiguration", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> UserOptionSelected(JavaUserOption userOption) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("user_option", userOption);
//         Map<String, Object> map = new HashMap<>();
//         map.put("UserOptionSelected", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> ExportImport(String path, Integer mode, String password, Integer number) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("path", path);
//         inner.put("mode", mode);
//         inner.put("password", password);
//         inner.put("number", number);
//         Map<String, Object> map = new HashMap<>();
//         map.put("ExportImport", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> Copy(String data) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("data", data);
//         Map<String, Object> map = new HashMap<>();
//         map.put("Copy", inner);
//         return map;
//     }
// 
//     public static String CheckPasswords() {
//         return Defs.CHECK_PASSWORDS;
//     }
// }


import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.PasswordField;
import org.rustkeylock.fxcomponents.RklStage;
import org.rustkeylock.japi.stubs.GuiResponse;
import java.util.function.Consumer;
        this.stage = stage;
    }

    @FXML
    private void decrypt(ActionEvent event) {
        event.consume();
        setPasswordMessage("");
        setNumberMessage("");

        if (getPassword().getText().trim().isEmpty()) {
            setPasswordMessage("Required Field");
        } else if (getNumber().getText().trim().isEmpty()) {
            setNumberMessage("Required Field");
        } else {
            try {
                Integer num = Integer.parseInt(getNumber().getText().trim());
                callback.accept(GuiResponse.ChangePassword(getPassword().getText().trim(), num));
                if (stage != null) {
                    stage.markLoggedIn();
                }
            } catch (Exception error) {
                String message = "Incorrect number";
                error.printStackTrace();
                getNumber().setText("");
                setNumberMessage(message);
            }
        }
    }

    @Override
// Path: java/src/main/java/org/rustkeylock/fxcomponents/RklStage.java
// public class RklStage {
//     private final Stage fxStage;
//     private final HostServices hostServices;
//     private RklController currentlyActiveController;
//     private AtomicBoolean loggedIn = new AtomicBoolean(false);
// 
//     public RklStage(Stage fxStage, HostServices hostServices) {
//         this.fxStage = fxStage;
//         this.hostServices = hostServices;
//     }
// 
//     public Optional<RklController> getCurrentlyActiveController() {
//         return Optional.ofNullable(currentlyActiveController);
//     }
// 
//     public void updateView(Scene scene, RklController controller) {
//         currentlyActiveController = controller;
//         fxStage.setScene(scene);
//     }
// 
//     public Stage getFxStage() {
//         return this.fxStage;
//     }
// 
//     public HostServices getHostServices() {
//         return hostServices;
//     }
// 
//     public void markLoggedIn() {
//         loggedIn.getAndSet(true);
//     }
// 
//     public boolean isLoggedIn() {
//         return loggedIn.get();
//     }
// }
// 
// Path: java/src/main/java/org/rustkeylock/japi/stubs/GuiResponse.java
// public class GuiResponse {
//     public static Map<String, Object> ChangePassword(String password, Integer number) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("password", password);
//         inner.put("number", number);
//         Map<String, Object> map = new HashMap<>();
//         map.put("ProvidedPassword", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> GoToMenu(Map<String, Object> m) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("menu", m);
//         Map<String, Object> map = new HashMap<>();
//         map.put("GoToMenu", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> GoToMenu(String m) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("menu", m);
//         Map<String, Object> map = new HashMap<>();
//         map.put("GoToMenu", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> DeleteEntry(Integer index) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("index", index);
//         Map<String, Object> map = new HashMap<>();
//         map.put("DeleteEntry", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> ReplaceEntry(JavaEntry entry, Integer index) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("entry", entry);
//         inner.put("index", index);
//         Map<String, Object> map = new HashMap<>();
//         map.put("ReplaceEntry", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> AddEntry(JavaEntry entry) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("entry", entry);
//         Map<String, Object> map = new HashMap<>();
//         map.put("AddEntry", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> GeneratePassphrase(JavaEntry entry, Integer index) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("entry", entry);
//         inner.put("index", index);
//         Map<String, Object> map = new HashMap<>();
//         map.put("GeneratePassphrase", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> SetConfiguration(java.util.List<String> strings) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("strings", strings);
//         Map<String, Object> map = new HashMap<>();
//         map.put("SetConfiguration", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> UserOptionSelected(JavaUserOption userOption) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("user_option", userOption);
//         Map<String, Object> map = new HashMap<>();
//         map.put("UserOptionSelected", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> ExportImport(String path, Integer mode, String password, Integer number) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("path", path);
//         inner.put("mode", mode);
//         inner.put("password", password);
//         inner.put("number", number);
//         Map<String, Object> map = new HashMap<>();
//         map.put("ExportImport", inner);
//         return map;
//     }
// 
//     public static Map<String, Object> Copy(String data) {
//         Map<String, Object> inner = new HashMap<>();
//         inner.put("data", data);
//         Map<String, Object> map = new HashMap<>();
//         map.put("Copy", inner);
//         return map;
//     }
// 
//     public static String CheckPasswords() {
//         return Defs.CHECK_PASSWORDS;
//     }
// }


// Path: java/src/main/java/org/rustkeylock/controllers/EnterPasswordController.java
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.PasswordField;
import org.rustkeylock.fxcomponents.RklStage;
import org.rustkeylock.japi.stubs.GuiResponse;
import java.util.function.Consumer;

        this.stage = stage;
    }

    @FXML
    private void decrypt(ActionEvent event) {
        event.consume();
        setPasswordMessage("");
        setNumberMessage("");

        if (getPassword().getText().trim().isEmpty()) {
            setPasswordMessage("Required Field");
        } else if (getNumber().getText().trim().isEmpty()) {
            setNumberMessage("Required Field");
        } else {
            try {
                Integer num = Integer.parseInt(getNumber().getText().trim());
                callback.accept(GuiResponse.ChangePassword(getPassword().getText().trim(), num));
                if (stage != null) {
                    stage.markLoggedIn();
                }
            } catch (Exception error) {
                String message = "Incorrect number";
                error.printStackTrace();
                getNumber().setText("");
                setNumberMessage(message);
            }
        }
    }

    @Override
    public void setCallback(Consumer<Object> consumer) {