From 3191c5d61ad717b1e95af2ec758372af587e5d9d Mon Sep 17 00:00:00 2001
From: Fernando Ferreira de Lima Filho <fferreiralf@ufrn.edu.br>
Date: Tue, 19 Apr 2022 12:57:37 -0300
Subject: [PATCH] initial commit

---
 .gitignore                                    |   4 +-
 banking-client/banking-client.iml             |  11 -
 banking-client/pom.xml                        |  23 +
 .../main/java/ufrn/imd/BankingClientApp.java  |  30 ++
 .../java}/ufrn/imd/controller/Controller.java |   2 +-
 .../java}/ufrn/imd/domain/Account.java        |   0
 .../src/main/java/ufrn/imd/domain/Client.java |  17 +
 .../java/ufrn/imd/utils/MachineState.java     | 101 ++++
 .../java/ufrn/imd/utils}/NameSpace.java       |   2 +-
 .../src/ufrn/imd/BankingClientApp.java        |  27 -
 .../impl/DepositControllerImpl.java           |  67 ---
 .../src/ufrn/imd/domain/Client.java           |  23 -
 banking-client/src/ufrn/imd/log/Log.java      |  10 -
 .../src/ufrn/imd/service/BalanceService.java  |  11 -
 .../src/ufrn/imd/service/DepositService.java  |  13 -
 .../src/ufrn/imd/service/WidthawService.java  |  12 -
 .../imd/service/impl/DepositServiceImpl.java  |  25 -
 banking-server/.idea/dbnavigator.xml          | 461 ++++++++++++++++++
 banking-server/.idea/misc.xml                 |   2 +-
 .../.idea/uiDesigner.xml                      |   0
 banking-server/pom.xml                        |   4 +-
 .../main/java/ufrn/imd/BankingServerApp.java  |   7 +-
 .../impl/BalanceControllerImpl.java           |  33 +-
 .../impl/DepositControllerImpl.java           |  34 +-
 .../java/ufrn/imd/repository/Repository.java  |   3 +-
 .../imd/repository/impl/ClientRepository.java |  11 +-
 .../java/ufrn/imd/service/BalanceService.java |  12 -
 .../java/ufrn/imd/service/DepositService.java |  13 -
 .../main/java/ufrn/imd/service/Service.java   |   5 +
 .../java/ufrn/imd/service/WidthawService.java |  12 -
 .../imd/service/impl/BalanceServiceImpl.java  |  19 +-
 .../imd/service/impl/DepositServiceImpl.java  |  27 +-
 .../classes/ufrn/imd/BankingServerApp.class   | Bin 1114 -> 1259 bytes
 .../ufrn/imd/controller/Controller.class      | Bin 252 -> 252 bytes
 .../impl/BalanceControllerImpl$Notify.class   | Bin 2082 -> 2838 bytes
 .../impl/BalanceControllerImpl.class          | Bin 2358 -> 2389 bytes
 .../impl/DepositControllerImpl$Notify.class   | Bin 2181 -> 2927 bytes
 .../impl/DepositControllerImpl.class          | Bin 2358 -> 2389 bytes
 .../classes/ufrn/imd/domain/Account.class     | Bin 2901 -> 2901 bytes
 .../classes/ufrn/imd/domain/Client.class      | Bin 2918 -> 2918 bytes
 .../ufrn/imd/repository/Repository.class      | Bin 349 -> 373 bytes
 .../repository/impl/ClientRepository.class    | Bin 2131 -> 1693 bytes
 .../ufrn/imd/service/BalanceService.class     | Bin 319 -> 0 bytes
 .../ufrn/imd/service/DepositService.class     | Bin 389 -> 0 bytes
 .../ufrn/imd/service/WidthawService.class     | Bin 269 -> 0 bytes
 .../imd/service/impl/BalanceServiceImpl.class | Bin 2117 -> 2841 bytes
 .../imd/service/impl/DepositServiceImpl.class | Bin 2300 -> 3115 bytes
 .../classes/ufrn/imd/utils/NameSpace.class    | Bin 849 -> 849 bytes
 48 files changed, 712 insertions(+), 309 deletions(-)
 delete mode 100644 banking-client/banking-client.iml
 create mode 100644 banking-client/pom.xml
 create mode 100644 banking-client/src/main/java/ufrn/imd/BankingClientApp.java
 rename banking-client/src/{ => main/java}/ufrn/imd/controller/Controller.java (86%)
 rename banking-client/src/{ => main/java}/ufrn/imd/domain/Account.java (100%)
 create mode 100644 banking-client/src/main/java/ufrn/imd/domain/Client.java
 create mode 100644 banking-client/src/main/java/ufrn/imd/utils/MachineState.java
 rename banking-client/src/{ufrn/imd/nameSpace => main/java/ufrn/imd/utils}/NameSpace.java (88%)
 delete mode 100644 banking-client/src/ufrn/imd/BankingClientApp.java
 delete mode 100644 banking-client/src/ufrn/imd/controller/impl/DepositControllerImpl.java
 delete mode 100644 banking-client/src/ufrn/imd/domain/Client.java
 delete mode 100644 banking-client/src/ufrn/imd/log/Log.java
 delete mode 100644 banking-client/src/ufrn/imd/service/BalanceService.java
 delete mode 100644 banking-client/src/ufrn/imd/service/DepositService.java
 delete mode 100644 banking-client/src/ufrn/imd/service/WidthawService.java
 delete mode 100644 banking-client/src/ufrn/imd/service/impl/DepositServiceImpl.java
 create mode 100644 banking-server/.idea/dbnavigator.xml
 rename {banking-client => banking-server}/.idea/uiDesigner.xml (100%)
 delete mode 100644 banking-server/src/main/java/ufrn/imd/service/BalanceService.java
 delete mode 100644 banking-server/src/main/java/ufrn/imd/service/DepositService.java
 create mode 100644 banking-server/src/main/java/ufrn/imd/service/Service.java
 delete mode 100644 banking-server/src/main/java/ufrn/imd/service/WidthawService.java
 delete mode 100644 banking-server/target/classes/ufrn/imd/service/BalanceService.class
 delete mode 100644 banking-server/target/classes/ufrn/imd/service/DepositService.class
 delete mode 100644 banking-server/target/classes/ufrn/imd/service/WidthawService.class

diff --git a/.gitignore b/.gitignore
index 8bad563..5367715 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,3 @@
-/banking-server/target/
+banking-server/target/
+banking-client/target/
+banking-client/.idea/
diff --git a/banking-client/banking-client.iml b/banking-client/banking-client.iml
deleted file mode 100644
index c90834f..0000000
--- a/banking-client/banking-client.iml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" inherit-compiler-output="true">
-    <exclude-output />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-  </component>
-</module>
\ No newline at end of file
diff --git a/banking-client/pom.xml b/banking-client/pom.xml
new file mode 100644
index 0000000..2f45cf6
--- /dev/null
+++ b/banking-client/pom.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.example</groupId>
+    <artifactId>banking-client</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <properties>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.24</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/banking-client/src/main/java/ufrn/imd/BankingClientApp.java b/banking-client/src/main/java/ufrn/imd/BankingClientApp.java
new file mode 100644
index 0000000..bf72420
--- /dev/null
+++ b/banking-client/src/main/java/ufrn/imd/BankingClientApp.java
@@ -0,0 +1,30 @@
+package ufrn.imd;
+
+import lombok.extern.java.Log;
+import ufrn.imd.controller.Controller;
+import ufrn.imd.domain.Account;
+import ufrn.imd.domain.Client;
+import ufrn.imd.utils.MachineState;
+
+import java.net.MalformedURLException;
+import java.rmi.Naming;
+import java.rmi.NotBoundException;
+import java.rmi.RemoteException;
+
+import static ufrn.imd.utils.MachineState.*;
+import static ufrn.imd.utils.NameSpace.HOST_DEPOSIT_SERVICE;
+
+@Log
+public class BankingClientApp {
+    public static void main(String[] args) throws MalformedURLException, NotBoundException, RemoteException {
+
+        MachineState mS = new MachineState();
+
+        while(mS.quit()) {
+            mS.render();
+            mS.processEvents();
+            mS.update();
+        }
+
+    }
+}
diff --git a/banking-client/src/ufrn/imd/controller/Controller.java b/banking-client/src/main/java/ufrn/imd/controller/Controller.java
similarity index 86%
rename from banking-client/src/ufrn/imd/controller/Controller.java
rename to banking-client/src/main/java/ufrn/imd/controller/Controller.java
index ebdc052..580d6e5 100644
--- a/banking-client/src/ufrn/imd/controller/Controller.java
+++ b/banking-client/src/main/java/ufrn/imd/controller/Controller.java
@@ -1,6 +1,6 @@
 package ufrn.imd.controller;
 
-import ufrn.imd.message.Client;
+import ufrn.imd.domain.Client;
 
 import java.rmi.Remote;
 import java.rmi.RemoteException;
diff --git a/banking-client/src/ufrn/imd/domain/Account.java b/banking-client/src/main/java/ufrn/imd/domain/Account.java
similarity index 100%
rename from banking-client/src/ufrn/imd/domain/Account.java
rename to banking-client/src/main/java/ufrn/imd/domain/Account.java
diff --git a/banking-client/src/main/java/ufrn/imd/domain/Client.java b/banking-client/src/main/java/ufrn/imd/domain/Client.java
new file mode 100644
index 0000000..b5c241b
--- /dev/null
+++ b/banking-client/src/main/java/ufrn/imd/domain/Client.java
@@ -0,0 +1,17 @@
+package ufrn.imd.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import ufrn.imd.domain.Account;
+
+import java.io.Serializable;
+import java.util.Optional;
+
+@Data
+@AllArgsConstructor
+public class Client implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Integer id;
+
+}
diff --git a/banking-client/src/main/java/ufrn/imd/utils/MachineState.java b/banking-client/src/main/java/ufrn/imd/utils/MachineState.java
new file mode 100644
index 0000000..b7a227b
--- /dev/null
+++ b/banking-client/src/main/java/ufrn/imd/utils/MachineState.java
@@ -0,0 +1,101 @@
+package ufrn.imd.utils;
+
+import lombok.Data;
+import ufrn.imd.controller.Controller;
+import ufrn.imd.domain.Client;
+
+import java.net.MalformedURLException;
+import java.rmi.Naming;
+import java.rmi.NotBoundException;
+import java.rmi.RemoteException;
+import java.util.Scanner;
+
+import static ufrn.imd.utils.NameSpace.HOST_DEPOSIT_SERVICE;
+
+@Data
+public class MachineState {
+
+    public static final String INITIAL= "INITIAL";
+    public static final String RENDER = "RENDER";
+    public static final String UPDATE_STATE = "UPDATE_STATE";
+    public static final String READ = "READ";
+    public static final String DEPOSIT = "DEPOSIT";
+    public static final String BALANCE = "BALANCE";
+
+    public static final String HELP = "HELP";
+    public static final String INVALID_INPUT = "INVALID_INPUT";
+    public static final String QUIT = "QUIT";
+
+    private String state;
+    private Scanner sc;
+    private String inputValue;
+
+    public MachineState() {
+        state = INITIAL;
+        inputValue = new String();
+        sc = new Scanner(System.in);
+    }
+
+    public Boolean quit() {
+        return !state.equals(QUIT);
+    }
+
+    public void update() {
+        if(state.equals(INITIAL)) {
+            state = HELP;
+        } else if(state.equals(HELP)) {
+            state = READ;
+        } else if(state.equals(READ)) {
+            state = inputValue;
+        } else if(state.equals(INVALID_INPUT)) {
+            state = HELP;
+        } else if(state.equals(DEPOSIT)) {
+            state = HELP;
+        }
+    }
+
+    public void processEvents() throws MalformedURLException, NotBoundException, RemoteException {
+        if(state.equals(READ)) {
+            inputValue = new String();
+            inputValue = sc.nextLine().trim().toUpperCase();
+            System.out.println(String.format(">>> input value: %s", inputValue));
+            if(!inputValue.equals(DEPOSIT) && !inputValue.equals(DEPOSIT) && !inputValue.equals(BALANCE)){
+                inputValue = INVALID_INPUT;
+            }
+        } else if(state.equals(DEPOSIT)) {
+            double v = sc.nextDouble();
+            System.out.println(String.format(">>> input value: %.2f", v));
+            Client client = new Client(1);
+            Controller server = (Controller) Naming.lookup(HOST_DEPOSIT_SERVICE);
+            server.registerClient(client);
+        }
+    }
+
+    public void render() {
+        try {
+            if(state.equals(INITIAL)) {
+                System.out.println(">>> Initializing...");
+                Thread.sleep(1000);
+            } else if(state.equals(HELP)) {
+                System.out.println("These are the avaliable operations");
+                System.out.println("---------------------------------");
+                System.out.println(" - deposit \t - balance");
+                System.out.println(" - quit");
+
+                System.out.println("---------------------------------");
+                Thread.sleep(1000);
+            } else if(state.equals(READ)) {
+                System.out.println(">>> Please enter with wich operation do you want");
+            } else if(state.equals(INVALID_INPUT)) {
+                System.out.println(">>> Please enter with a VALID operation");
+                Thread.sleep(3000);
+            } else if(state.equals(DEPOSIT)) {
+                System.out.println(">>> Starting deposit operation");
+                System.out.println(">>> Please enter with the value that you want deposit");
+            }
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+}
diff --git a/banking-client/src/ufrn/imd/nameSpace/NameSpace.java b/banking-client/src/main/java/ufrn/imd/utils/NameSpace.java
similarity index 88%
rename from banking-client/src/ufrn/imd/nameSpace/NameSpace.java
rename to banking-client/src/main/java/ufrn/imd/utils/NameSpace.java
index b30b2d1..c379354 100644
--- a/banking-client/src/ufrn/imd/nameSpace/NameSpace.java
+++ b/banking-client/src/main/java/ufrn/imd/utils/NameSpace.java
@@ -1,4 +1,4 @@
-package ufrn.imd.nameSpace;
+package ufrn.imd.utils;
 
 public class NameSpace {
     public static final Integer PORT_DEPOSIT_SERVICE = 1907;
diff --git a/banking-client/src/ufrn/imd/BankingClientApp.java b/banking-client/src/ufrn/imd/BankingClientApp.java
deleted file mode 100644
index 72fe820..0000000
--- a/banking-client/src/ufrn/imd/BankingClientApp.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package ufrn.imd;
-
-import ufrn.imd.controller.Controller;
-import ufrn.imd.domain.Account;
-import ufrn.imd.log.Log;
-import ufrn.imd.message.Client;
-
-import java.net.MalformedURLException;
-import java.rmi.Naming;
-import java.rmi.NotBoundException;
-import java.rmi.RemoteException;
-
-import static ufrn.imd.nameSpace.NameSpace.HOST_DEPOSIT_SERVICE;
-
-public class BankingClientApp {
-    public static void main(String[] args) throws MalformedURLException, NotBoundException, RemoteException {
-        final Integer PORT = 1097;
-        Log.info(BankingClientApp.class,
-                String.format("connecting with server in host %s", HOST_DEPOSIT_SERVICE)
-        );
-        Controller server = (Controller) Naming.lookup(HOST_DEPOSIT_SERVICE);
-
-        Client client = new Client(new Account(1, "222", 10.00));
-        Log.info(BankingClientApp.class, "registring user in the server");
-        server.registerClient(client);
-    }
-}
diff --git a/banking-client/src/ufrn/imd/controller/impl/DepositControllerImpl.java b/banking-client/src/ufrn/imd/controller/impl/DepositControllerImpl.java
deleted file mode 100644
index a70dcb0..0000000
--- a/banking-client/src/ufrn/imd/controller/impl/DepositControllerImpl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package ufrn.imd.controller.impl;
-
-import ufrn.imd.controller.Controller;
-import ufrn.imd.log.Log;
-import ufrn.imd.message.Client;
-import ufrn.imd.service.DepositService;
-
-import java.rmi.RemoteException;
-import java.rmi.server.UnicastRemoteObject;
-import java.util.ArrayList;
-import java.util.List;
-
-public class DepositControllerImpl extends UnicastRemoteObject implements Controller {
-
-    private volatile List<Client> clients = new ArrayList<>();
-
-    public DepositControllerImpl(DepositService service) throws RemoteException{
-        super();
-        Log.info(DepositControllerImpl.class, "Starting Deposit service!");
-        new Notify(service).start();
-    }
-    public void registerClient(Client client) throws RemoteException {
-
-        clients.add(client);
-        System.out.println("Novo cliente registrado com sucesso! Total: "+clients.size());
-    }
-
-
-    private class Notify extends Thread{
-
-        private final DepositService service;
-
-        public Notify(DepositService service) {
-            super();
-            this.service = service;
-        }
-        public void run() {
-
-            for(;;) {
-
-                if(clients.size() > 0) {
-
-                    System.out.println("Notificando clientes");
-
-                    int i = 0;
-                    for (Client client : clients) {
-
-                        try {
-                            this.service.deposit(client.getBalance(), client.getAccount());
-                        } catch (RemoteException e) {
-                            e.printStackTrace();
-                        }
-                    }
-
-
-                    try {
-                        Thread.sleep(15 * 1000);
-                    } catch (InterruptedException e) {
-                        e.printStackTrace();
-                    }
-                }
-
-            }
-
-        }
-    }
-}
diff --git a/banking-client/src/ufrn/imd/domain/Client.java b/banking-client/src/ufrn/imd/domain/Client.java
deleted file mode 100644
index d1ca070..0000000
--- a/banking-client/src/ufrn/imd/domain/Client.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package ufrn.imd.domain;
-
-import ufrn.imd.domain.Account;
-
-import java.io.Serializable;
-import java.util.Optional;
-
-public class Client implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private Account account;
-
-    public Client(Account account) {
-        this.account = account;
-    }
-
-    public Double getBalance() {
-        return account.getBalance();
-    }
-    public Optional<Account> getAccount() {
-        return Optional.of(account);
-    }
-}
diff --git a/banking-client/src/ufrn/imd/log/Log.java b/banking-client/src/ufrn/imd/log/Log.java
deleted file mode 100644
index c193705..0000000
--- a/banking-client/src/ufrn/imd/log/Log.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package ufrn.imd.log;
-
-public class Log {
-
-    public static void info(Class path, String text) {
-        System.out.println(
-                String.format("[LOG] %s - %s", path , text)
-        );
-    }
-}
diff --git a/banking-client/src/ufrn/imd/service/BalanceService.java b/banking-client/src/ufrn/imd/service/BalanceService.java
deleted file mode 100644
index 2d9315c..0000000
--- a/banking-client/src/ufrn/imd/service/BalanceService.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package ufrn.imd.service;
-
-import ufrn.imd.domain.Account;
-
-import java.rmi.Remote;
-import java.rmi.RemoteException;
-
-public interface BalanceService extends Remote {
-
-    public void balance(Account account) throws RemoteException;
-}
diff --git a/banking-client/src/ufrn/imd/service/DepositService.java b/banking-client/src/ufrn/imd/service/DepositService.java
deleted file mode 100644
index f85f98f..0000000
--- a/banking-client/src/ufrn/imd/service/DepositService.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package ufrn.imd.service;
-
-import ufrn.imd.domain.Account;
-
-import java.rmi.Remote;
-import java.rmi.RemoteException;
-import java.util.Optional;
-
-public interface DepositService extends Remote {
-
-        public void deposit(Double value, Optional<Account> account) throws RemoteException;
-
-}
diff --git a/banking-client/src/ufrn/imd/service/WidthawService.java b/banking-client/src/ufrn/imd/service/WidthawService.java
deleted file mode 100644
index 8a5ed3b..0000000
--- a/banking-client/src/ufrn/imd/service/WidthawService.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package ufrn.imd.service;
-
-import ufrn.imd.domain.Account;
-
-import java.rmi.Remote;
-import java.rmi.RemoteException;
-
-public interface WidthawService extends Remote {
-
-    public void widthaw(Double value, Account account) throws RemoteException;
-
-}
diff --git a/banking-client/src/ufrn/imd/service/impl/DepositServiceImpl.java b/banking-client/src/ufrn/imd/service/impl/DepositServiceImpl.java
deleted file mode 100644
index 7dfa731..0000000
--- a/banking-client/src/ufrn/imd/service/impl/DepositServiceImpl.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package ufrn.imd.service.impl;
-
-import ufrn.imd.domain.Account;
-import ufrn.imd.log.Log;
-import ufrn.imd.service.DepositService;
-
-import java.rmi.RemoteException;
-import java.util.Optional;
-
-public class DepositServiceImpl implements DepositService {
-
-    public DepositServiceImpl() {
-        super();
-    }
-
-    public void deposit(Double value, Optional<Account> acOp) throws RemoteException, RuntimeException {
-        Account account = acOp.orElseThrow(() -> new RuntimeException("Null User!"));
-        if(account.getBalance() < value)
-            throw new RuntimeException("There's no money!");
-        account.setBalance(account.getBalance() - value);
-        Log.info(DepositServiceImpl.class, "deposit");
-
-    }
-
-}
diff --git a/banking-server/.idea/dbnavigator.xml b/banking-server/.idea/dbnavigator.xml
new file mode 100644
index 0000000..4c97bdf
--- /dev/null
+++ b/banking-server/.idea/dbnavigator.xml
@@ -0,0 +1,461 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="DBNavigator.Project.DataEditorManager">
+    <record-view-column-sorting-type value="BY_INDEX" />
+    <value-preview-text-wrapping value="true" />
+    <value-preview-pinned value="false" />
+  </component>
+  <component name="DBNavigator.Project.DataExportManager">
+    <export-instructions>
+      <create-header value="true" />
+      <friendly-headers value="false" />
+      <quote-values-containing-separator value="true" />
+      <quote-all-values value="false" />
+      <value-separator value="" />
+      <file-name value="" />
+      <file-location value="" />
+      <scope value="GLOBAL" />
+      <destination value="FILE" />
+      <format value="EXCEL" />
+      <charset value="UTF-8" />
+    </export-instructions>
+  </component>
+  <component name="DBNavigator.Project.DatabaseBrowserManager">
+    <autoscroll-to-editor value="false" />
+    <autoscroll-from-editor value="true" />
+    <show-object-properties value="true" />
+    <loaded-nodes />
+  </component>
+  <component name="DBNavigator.Project.DatabaseFileManager">
+    <open-files />
+  </component>
+  <component name="DBNavigator.Project.EditorStateManager">
+    <last-used-providers />
+  </component>
+  <component name="DBNavigator.Project.ExecutionManager">
+    <retain-sticky-names value="false" />
+  </component>
+  <component name="DBNavigator.Project.MethodExecutionManager">
+    <method-browser />
+    <execution-history>
+      <group-entries value="true" />
+      <execution-inputs />
+    </execution-history>
+    <argument-values-cache />
+  </component>
+  <component name="DBNavigator.Project.ObjectDependencyManager">
+    <last-used-dependency-type value="INCOMING" />
+  </component>
+  <component name="DBNavigator.Project.ObjectQuickFilterManager">
+    <last-used-operator value="EQUAL" />
+    <filters />
+  </component>
+  <component name="DBNavigator.Project.ParserDiagnosticsManager">
+    <diagnostics-history />
+  </component>
+  <component name="DBNavigator.Project.ScriptExecutionManager" clear-outputs="true">
+    <recently-used-interfaces />
+  </component>
+  <component name="DBNavigator.Project.Settings">
+    <connections />
+    <browser-settings>
+      <general>
+        <display-mode value="TABBED" />
+        <navigation-history-size value="100" />
+        <show-object-details value="false" />
+      </general>
+      <filters>
+        <object-type-filter>
+          <object-type name="SCHEMA" enabled="true" />
+          <object-type name="USER" enabled="true" />
+          <object-type name="ROLE" enabled="true" />
+          <object-type name="PRIVILEGE" enabled="true" />
+          <object-type name="CHARSET" enabled="true" />
+          <object-type name="TABLE" enabled="true" />
+          <object-type name="VIEW" enabled="true" />
+          <object-type name="MATERIALIZED_VIEW" enabled="true" />
+          <object-type name="NESTED_TABLE" enabled="true" />
+          <object-type name="COLUMN" enabled="true" />
+          <object-type name="INDEX" enabled="true" />
+          <object-type name="CONSTRAINT" enabled="true" />
+          <object-type name="DATASET_TRIGGER" enabled="true" />
+          <object-type name="DATABASE_TRIGGER" enabled="true" />
+          <object-type name="SYNONYM" enabled="true" />
+          <object-type name="SEQUENCE" enabled="true" />
+          <object-type name="PROCEDURE" enabled="true" />
+          <object-type name="FUNCTION" enabled="true" />
+          <object-type name="PACKAGE" enabled="true" />
+          <object-type name="TYPE" enabled="true" />
+          <object-type name="TYPE_ATTRIBUTE" enabled="true" />
+          <object-type name="ARGUMENT" enabled="true" />
+          <object-type name="DIMENSION" enabled="true" />
+          <object-type name="CLUSTER" enabled="true" />
+          <object-type name="DBLINK" enabled="true" />
+        </object-type-filter>
+      </filters>
+      <sorting>
+        <object-type name="COLUMN" sorting-type="NAME" />
+        <object-type name="FUNCTION" sorting-type="NAME" />
+        <object-type name="PROCEDURE" sorting-type="NAME" />
+        <object-type name="ARGUMENT" sorting-type="POSITION" />
+      </sorting>
+      <default-editors>
+        <object-type name="VIEW" editor-type="SELECTION" />
+        <object-type name="PACKAGE" editor-type="SELECTION" />
+        <object-type name="TYPE" editor-type="SELECTION" />
+      </default-editors>
+    </browser-settings>
+    <navigation-settings>
+      <lookup-filters>
+        <lookup-objects>
+          <object-type name="SCHEMA" enabled="true" />
+          <object-type name="USER" enabled="false" />
+          <object-type name="ROLE" enabled="false" />
+          <object-type name="PRIVILEGE" enabled="false" />
+          <object-type name="CHARSET" enabled="false" />
+          <object-type name="TABLE" enabled="true" />
+          <object-type name="VIEW" enabled="true" />
+          <object-type name="MATERIALIZED VIEW" enabled="true" />
+          <object-type name="INDEX" enabled="true" />
+          <object-type name="CONSTRAINT" enabled="true" />
+          <object-type name="DATASET TRIGGER" enabled="true" />
+          <object-type name="DATABASE TRIGGER" enabled="true" />
+          <object-type name="SYNONYM" enabled="false" />
+          <object-type name="SEQUENCE" enabled="true" />
+          <object-type name="PROCEDURE" enabled="true" />
+          <object-type name="FUNCTION" enabled="true" />
+          <object-type name="PACKAGE" enabled="true" />
+          <object-type name="TYPE" enabled="true" />
+          <object-type name="DIMENSION" enabled="false" />
+          <object-type name="CLUSTER" enabled="false" />
+          <object-type name="DBLINK" enabled="true" />
+        </lookup-objects>
+        <force-database-load value="false" />
+        <prompt-connection-selection value="true" />
+        <prompt-schema-selection value="true" />
+      </lookup-filters>
+    </navigation-settings>
+    <dataset-grid-settings>
+      <general>
+        <enable-zooming value="true" />
+        <enable-column-tooltip value="true" />
+      </general>
+      <sorting>
+        <nulls-first value="true" />
+        <max-sorting-columns value="4" />
+      </sorting>
+      <tracking-columns>
+        <columnNames value="" />
+        <visible value="true" />
+        <editable value="false" />
+      </tracking-columns>
+    </dataset-grid-settings>
+    <dataset-editor-settings>
+      <text-editor-popup>
+        <active value="false" />
+        <active-if-empty value="false" />
+        <data-length-threshold value="100" />
+        <popup-delay value="1000" />
+      </text-editor-popup>
+      <values-actions-popup>
+        <show-popup-button value="true" />
+        <element-count-threshold value="1000" />
+        <data-length-threshold value="250" />
+      </values-actions-popup>
+      <general>
+        <fetch-block-size value="100" />
+        <fetch-timeout value="30" />
+        <trim-whitespaces value="true" />
+        <convert-empty-strings-to-null value="true" />
+        <select-content-on-cell-edit value="true" />
+        <large-value-preview-active value="true" />
+      </general>
+      <filters>
+        <prompt-filter-dialog value="true" />
+        <default-filter-type value="BASIC" />
+      </filters>
+      <qualified-text-editor text-length-threshold="300">
+        <content-types>
+          <content-type name="Text" enabled="true" />
+          <content-type name="Properties" enabled="true" />
+          <content-type name="XML" enabled="true" />
+          <content-type name="DTD" enabled="true" />
+          <content-type name="HTML" enabled="true" />
+          <content-type name="XHTML" enabled="true" />
+          <content-type name="Java" enabled="true" />
+          <content-type name="SQL" enabled="true" />
+          <content-type name="PL/SQL" enabled="true" />
+          <content-type name="JSON" enabled="true" />
+          <content-type name="JSON5" enabled="true" />
+          <content-type name="Groovy" enabled="true" />
+          <content-type name="AIDL" enabled="true" />
+          <content-type name="YAML" enabled="true" />
+          <content-type name="Manifest" enabled="true" />
+        </content-types>
+      </qualified-text-editor>
+      <record-navigation>
+        <navigation-target value="VIEWER" />
+      </record-navigation>
+    </dataset-editor-settings>
+    <code-editor-settings>
+      <general>
+        <show-object-navigation-gutter value="false" />
+        <show-spec-declaration-navigation-gutter value="true" />
+        <enable-spellchecking value="true" />
+        <enable-reference-spellchecking value="false" />
+      </general>
+      <confirmations>
+        <save-changes value="false" />
+        <revert-changes value="true" />
+      </confirmations>
+    </code-editor-settings>
+    <code-completion-settings>
+      <filters>
+        <basic-filter>
+          <filter-element type="RESERVED_WORD" id="keyword" selected="true" />
+          <filter-element type="RESERVED_WORD" id="function" selected="true" />
+          <filter-element type="RESERVED_WORD" id="parameter" selected="true" />
+          <filter-element type="RESERVED_WORD" id="datatype" selected="true" />
+          <filter-element type="RESERVED_WORD" id="exception" selected="true" />
+          <filter-element type="OBJECT" id="schema" selected="true" />
+          <filter-element type="OBJECT" id="role" selected="true" />
+          <filter-element type="OBJECT" id="user" selected="true" />
+          <filter-element type="OBJECT" id="privilege" selected="true" />
+          <user-schema>
+            <filter-element type="OBJECT" id="table" selected="true" />
+            <filter-element type="OBJECT" id="view" selected="true" />
+            <filter-element type="OBJECT" id="materialized view" selected="true" />
+            <filter-element type="OBJECT" id="index" selected="true" />
+            <filter-element type="OBJECT" id="constraint" selected="true" />
+            <filter-element type="OBJECT" id="trigger" selected="true" />
+            <filter-element type="OBJECT" id="synonym" selected="false" />
+            <filter-element type="OBJECT" id="sequence" selected="true" />
+            <filter-element type="OBJECT" id="procedure" selected="true" />
+            <filter-element type="OBJECT" id="function" selected="true" />
+            <filter-element type="OBJECT" id="package" selected="true" />
+            <filter-element type="OBJECT" id="type" selected="true" />
+            <filter-element type="OBJECT" id="dimension" selected="true" />
+            <filter-element type="OBJECT" id="cluster" selected="true" />
+            <filter-element type="OBJECT" id="dblink" selected="true" />
+          </user-schema>
+          <public-schema>
+            <filter-element type="OBJECT" id="table" selected="false" />
+            <filter-element type="OBJECT" id="view" selected="false" />
+            <filter-element type="OBJECT" id="materialized view" selected="false" />
+            <filter-element type="OBJECT" id="index" selected="false" />
+            <filter-element type="OBJECT" id="constraint" selected="false" />
+            <filter-element type="OBJECT" id="trigger" selected="false" />
+            <filter-element type="OBJECT" id="synonym" selected="false" />
+            <filter-element type="OBJECT" id="sequence" selected="false" />
+            <filter-element type="OBJECT" id="procedure" selected="false" />
+            <filter-element type="OBJECT" id="function" selected="false" />
+            <filter-element type="OBJECT" id="package" selected="false" />
+            <filter-element type="OBJECT" id="type" selected="false" />
+            <filter-element type="OBJECT" id="dimension" selected="false" />
+            <filter-element type="OBJECT" id="cluster" selected="false" />
+            <filter-element type="OBJECT" id="dblink" selected="false" />
+          </public-schema>
+          <any-schema>
+            <filter-element type="OBJECT" id="table" selected="true" />
+            <filter-element type="OBJECT" id="view" selected="true" />
+            <filter-element type="OBJECT" id="materialized view" selected="true" />
+            <filter-element type="OBJECT" id="index" selected="true" />
+            <filter-element type="OBJECT" id="constraint" selected="true" />
+            <filter-element type="OBJECT" id="trigger" selected="true" />
+            <filter-element type="OBJECT" id="synonym" selected="true" />
+            <filter-element type="OBJECT" id="sequence" selected="true" />
+            <filter-element type="OBJECT" id="procedure" selected="true" />
+            <filter-element type="OBJECT" id="function" selected="true" />
+            <filter-element type="OBJECT" id="package" selected="true" />
+            <filter-element type="OBJECT" id="type" selected="true" />
+            <filter-element type="OBJECT" id="dimension" selected="true" />
+            <filter-element type="OBJECT" id="cluster" selected="true" />
+            <filter-element type="OBJECT" id="dblink" selected="true" />
+          </any-schema>
+        </basic-filter>
+        <extended-filter>
+          <filter-element type="RESERVED_WORD" id="keyword" selected="true" />
+          <filter-element type="RESERVED_WORD" id="function" selected="true" />
+          <filter-element type="RESERVED_WORD" id="parameter" selected="true" />
+          <filter-element type="RESERVED_WORD" id="datatype" selected="true" />
+          <filter-element type="RESERVED_WORD" id="exception" selected="true" />
+          <filter-element type="OBJECT" id="schema" selected="true" />
+          <filter-element type="OBJECT" id="user" selected="true" />
+          <filter-element type="OBJECT" id="role" selected="true" />
+          <filter-element type="OBJECT" id="privilege" selected="true" />
+          <user-schema>
+            <filter-element type="OBJECT" id="table" selected="true" />
+            <filter-element type="OBJECT" id="view" selected="true" />
+            <filter-element type="OBJECT" id="materialized view" selected="true" />
+            <filter-element type="OBJECT" id="index" selected="true" />
+            <filter-element type="OBJECT" id="constraint" selected="true" />
+            <filter-element type="OBJECT" id="trigger" selected="true" />
+            <filter-element type="OBJECT" id="synonym" selected="true" />
+            <filter-element type="OBJECT" id="sequence" selected="true" />
+            <filter-element type="OBJECT" id="procedure" selected="true" />
+            <filter-element type="OBJECT" id="function" selected="true" />
+            <filter-element type="OBJECT" id="package" selected="true" />
+            <filter-element type="OBJECT" id="type" selected="true" />
+            <filter-element type="OBJECT" id="dimension" selected="true" />
+            <filter-element type="OBJECT" id="cluster" selected="true" />
+            <filter-element type="OBJECT" id="dblink" selected="true" />
+          </user-schema>
+          <public-schema>
+            <filter-element type="OBJECT" id="table" selected="true" />
+            <filter-element type="OBJECT" id="view" selected="true" />
+            <filter-element type="OBJECT" id="materialized view" selected="true" />
+            <filter-element type="OBJECT" id="index" selected="true" />
+            <filter-element type="OBJECT" id="constraint" selected="true" />
+            <filter-element type="OBJECT" id="trigger" selected="true" />
+            <filter-element type="OBJECT" id="synonym" selected="true" />
+            <filter-element type="OBJECT" id="sequence" selected="true" />
+            <filter-element type="OBJECT" id="procedure" selected="true" />
+            <filter-element type="OBJECT" id="function" selected="true" />
+            <filter-element type="OBJECT" id="package" selected="true" />
+            <filter-element type="OBJECT" id="type" selected="true" />
+            <filter-element type="OBJECT" id="dimension" selected="true" />
+            <filter-element type="OBJECT" id="cluster" selected="true" />
+            <filter-element type="OBJECT" id="dblink" selected="true" />
+          </public-schema>
+          <any-schema>
+            <filter-element type="OBJECT" id="table" selected="true" />
+            <filter-element type="OBJECT" id="view" selected="true" />
+            <filter-element type="OBJECT" id="materialized view" selected="true" />
+            <filter-element type="OBJECT" id="index" selected="true" />
+            <filter-element type="OBJECT" id="constraint" selected="true" />
+            <filter-element type="OBJECT" id="trigger" selected="true" />
+            <filter-element type="OBJECT" id="synonym" selected="true" />
+            <filter-element type="OBJECT" id="sequence" selected="true" />
+            <filter-element type="OBJECT" id="procedure" selected="true" />
+            <filter-element type="OBJECT" id="function" selected="true" />
+            <filter-element type="OBJECT" id="package" selected="true" />
+            <filter-element type="OBJECT" id="type" selected="true" />
+            <filter-element type="OBJECT" id="dimension" selected="true" />
+            <filter-element type="OBJECT" id="cluster" selected="true" />
+            <filter-element type="OBJECT" id="dblink" selected="true" />
+          </any-schema>
+        </extended-filter>
+      </filters>
+      <sorting enabled="true">
+        <sorting-element type="RESERVED_WORD" id="keyword" />
+        <sorting-element type="RESERVED_WORD" id="datatype" />
+        <sorting-element type="OBJECT" id="column" />
+        <sorting-element type="OBJECT" id="table" />
+        <sorting-element type="OBJECT" id="view" />
+        <sorting-element type="OBJECT" id="materialized view" />
+        <sorting-element type="OBJECT" id="index" />
+        <sorting-element type="OBJECT" id="constraint" />
+        <sorting-element type="OBJECT" id="trigger" />
+        <sorting-element type="OBJECT" id="synonym" />
+        <sorting-element type="OBJECT" id="sequence" />
+        <sorting-element type="OBJECT" id="procedure" />
+        <sorting-element type="OBJECT" id="function" />
+        <sorting-element type="OBJECT" id="package" />
+        <sorting-element type="OBJECT" id="type" />
+        <sorting-element type="OBJECT" id="dimension" />
+        <sorting-element type="OBJECT" id="cluster" />
+        <sorting-element type="OBJECT" id="dblink" />
+        <sorting-element type="OBJECT" id="schema" />
+        <sorting-element type="OBJECT" id="role" />
+        <sorting-element type="OBJECT" id="user" />
+        <sorting-element type="RESERVED_WORD" id="function" />
+        <sorting-element type="RESERVED_WORD" id="parameter" />
+      </sorting>
+      <format>
+        <enforce-code-style-case value="true" />
+      </format>
+    </code-completion-settings>
+    <execution-engine-settings>
+      <statement-execution>
+        <fetch-block-size value="100" />
+        <execution-timeout value="20" />
+        <debug-execution-timeout value="600" />
+        <focus-result value="false" />
+        <prompt-execution value="false" />
+      </statement-execution>
+      <script-execution>
+        <command-line-interfaces />
+        <execution-timeout value="300" />
+      </script-execution>
+      <method-execution>
+        <execution-timeout value="30" />
+        <debug-execution-timeout value="600" />
+        <parameter-history-size value="10" />
+      </method-execution>
+    </execution-engine-settings>
+    <operation-settings>
+      <transactions>
+        <uncommitted-changes>
+          <on-project-close value="ASK" />
+          <on-disconnect value="ASK" />
+          <on-autocommit-toggle value="ASK" />
+        </uncommitted-changes>
+        <multiple-uncommitted-changes>
+          <on-commit value="ASK" />
+          <on-rollback value="ASK" />
+        </multiple-uncommitted-changes>
+      </transactions>
+      <session-browser>
+        <disconnect-session value="ASK" />
+        <kill-session value="ASK" />
+        <reload-on-filter-change value="false" />
+      </session-browser>
+      <compiler>
+        <compile-type value="KEEP" />
+        <compile-dependencies value="ASK" />
+        <always-show-controls value="false" />
+      </compiler>
+      <debugger>
+        <debugger-type value="ASK" />
+        <use-generic-runners value="true" />
+      </debugger>
+    </operation-settings>
+    <ddl-file-settings>
+      <extensions>
+        <mapping file-type-id="VIEW" extensions="vw" />
+        <mapping file-type-id="TRIGGER" extensions="trg" />
+        <mapping file-type-id="PROCEDURE" extensions="prc" />
+        <mapping file-type-id="FUNCTION" extensions="fnc" />
+        <mapping file-type-id="PACKAGE" extensions="pkg" />
+        <mapping file-type-id="PACKAGE_SPEC" extensions="pks" />
+        <mapping file-type-id="PACKAGE_BODY" extensions="pkb" />
+        <mapping file-type-id="TYPE" extensions="tpe" />
+        <mapping file-type-id="TYPE_SPEC" extensions="tps" />
+        <mapping file-type-id="TYPE_BODY" extensions="tpb" />
+      </extensions>
+      <general>
+        <lookup-ddl-files value="true" />
+        <create-ddl-files value="false" />
+        <synchronize-ddl-files value="true" />
+        <use-qualified-names value="false" />
+        <make-scripts-rerunnable value="true" />
+      </general>
+    </ddl-file-settings>
+    <general-settings>
+      <regional-settings>
+        <date-format value="MEDIUM" />
+        <number-format value="UNGROUPED" />
+        <locale value="SYSTEM_DEFAULT" />
+        <use-custom-formats value="false" />
+      </regional-settings>
+      <environment>
+        <environment-types>
+          <environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" />
+          <environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" />
+          <environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" />
+          <environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" />
+        </environment-types>
+        <visibility-settings>
+          <connection-tabs value="true" />
+          <dialog-headers value="true" />
+          <object-editor-tabs value="true" />
+          <script-editor-tabs value="false" />
+          <execution-result-tabs value="true" />
+        </visibility-settings>
+      </environment>
+    </general-settings>
+  </component>
+  <component name="DBNavigator.Project.StatementExecutionManager">
+    <execution-variables />
+  </component>
+</project>
\ No newline at end of file
diff --git a/banking-server/.idea/misc.xml b/banking-server/.idea/misc.xml
index 82dbec8..accd629 100644
--- a/banking-server/.idea/misc.xml
+++ b/banking-server/.idea/misc.xml
@@ -8,7 +8,7 @@
       </list>
     </option>
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/out" />
   </component>
 </project>
\ No newline at end of file
diff --git a/banking-client/.idea/uiDesigner.xml b/banking-server/.idea/uiDesigner.xml
similarity index 100%
rename from banking-client/.idea/uiDesigner.xml
rename to banking-server/.idea/uiDesigner.xml
diff --git a/banking-server/pom.xml b/banking-server/pom.xml
index 24fae72..f428c68 100644
--- a/banking-server/pom.xml
+++ b/banking-server/pom.xml
@@ -9,8 +9,8 @@
     <version>1.0-SNAPSHOT</version>
 
     <properties>
-        <maven.compiler.source>17</maven.compiler.source>
-        <maven.compiler.target>17</maven.compiler.target>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
     </properties>
 
     <dependencies>
diff --git a/banking-server/src/main/java/ufrn/imd/BankingServerApp.java b/banking-server/src/main/java/ufrn/imd/BankingServerApp.java
index 4fed739..7acd207 100644
--- a/banking-server/src/main/java/ufrn/imd/BankingServerApp.java
+++ b/banking-server/src/main/java/ufrn/imd/BankingServerApp.java
@@ -3,8 +3,7 @@ package ufrn.imd;
 import ufrn.imd.controller.Controller;
 import ufrn.imd.controller.impl.BalanceControllerImpl;
 import ufrn.imd.controller.impl.DepositControllerImpl;
-import ufrn.imd.service.BalanceService;
-import ufrn.imd.service.DepositService;
+import ufrn.imd.repository.impl.ClientRepository;
 import ufrn.imd.service.impl.BalanceServiceImpl;
 import ufrn.imd.service.impl.DepositServiceImpl;
 
@@ -15,8 +14,8 @@ import java.rmi.RemoteException;
 public class BankingServerApp {
     public static void main(String[] args) throws RemoteException, MalformedURLException, AlreadyBoundException {
 
-        DepositService depositService = new DepositServiceImpl();
-        BalanceService balanceService = new BalanceServiceImpl();
+        DepositServiceImpl depositService = new DepositServiceImpl(new ClientRepository());
+        BalanceServiceImpl balanceService = new BalanceServiceImpl(new ClientRepository());
 
         Controller depositController = new DepositControllerImpl(depositService);
         Controller balanceController = new BalanceControllerImpl(balanceService);
diff --git a/banking-server/src/main/java/ufrn/imd/controller/impl/BalanceControllerImpl.java b/banking-server/src/main/java/ufrn/imd/controller/impl/BalanceControllerImpl.java
index a856ad8..0c51991 100644
--- a/banking-server/src/main/java/ufrn/imd/controller/impl/BalanceControllerImpl.java
+++ b/banking-server/src/main/java/ufrn/imd/controller/impl/BalanceControllerImpl.java
@@ -2,7 +2,7 @@ package ufrn.imd.controller.impl;
 
 import ufrn.imd.controller.Controller;
 import ufrn.imd.domain.Client;
-import ufrn.imd.service.BalanceService;
+import ufrn.imd.service.impl.BalanceServiceImpl;
 
 import java.net.MalformedURLException;
 import java.rmi.AlreadyBoundException;
@@ -10,9 +10,7 @@ import java.rmi.Naming;
 import java.rmi.RemoteException;
 import java.rmi.registry.LocateRegistry;
 import java.rmi.server.UnicastRemoteObject;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 
 import static ufrn.imd.utils.NameSpace.HOST_BALANCE_SERVICE;
 import static ufrn.imd.utils.NameSpace.PORT_BALANCE_SERVICE;
@@ -20,9 +18,9 @@ import static ufrn.imd.utils.NameSpace.PORT_BALANCE_SERVICE;
 @lombok.extern.java.Log
 public class BalanceControllerImpl extends UnicastRemoteObject implements Controller {
 
-    private volatile List<Client> clients = new ArrayList<>();
+    private volatile Queue<Client> clients = new ArrayDeque<>();
 
-    public BalanceControllerImpl(BalanceService service) throws RemoteException, MalformedURLException, AlreadyBoundException {
+    public BalanceControllerImpl(BalanceServiceImpl service) throws RemoteException, MalformedURLException, AlreadyBoundException {
         super();
 
         LocateRegistry.createRegistry(PORT_BALANCE_SERVICE);
@@ -46,9 +44,9 @@ public class BalanceControllerImpl extends UnicastRemoteObject implements Contro
 
     private class Notify extends Thread{
 
-        private final BalanceService service;
+        private final BalanceServiceImpl service;
 
-        public Notify(BalanceService service) {
+        public Notify(BalanceServiceImpl service) {
             super();
             this.service = service;
         }
@@ -59,29 +57,24 @@ public class BalanceControllerImpl extends UnicastRemoteObject implements Contro
 
                     log.info("notyfing the clients!");
                     int i = 0;
-                    for (Client client : clients) {
-
+                    clients.stream().forEach(client -> {
                         try {
-                            this.service.balance(Optional.of(client.getAccount()));
 
+                            log.info(String.format("Clients waiting %d", clients.size()));
+                            this.service.balance(Optional.of(client));
+                            clients.remove();
+                            log.info(String.format("Clients waiting %d", clients.size()));
                         } catch (RemoteException e) {
                             e.printStackTrace();
                         }
-                    }
+                    });
+
                     try {
                         Thread.sleep(15 * 1000);
                     } catch (InterruptedException e) {
                         e.printStackTrace();
                     }
-                } else {
-                    try {
-                        Thread.sleep(15 * 1000);
-                    } catch (InterruptedException e) {
-                        throw new RuntimeException(e);
-                    }
-                    log.info("No there's clients!");
                 }
-
             }
 
         }
diff --git a/banking-server/src/main/java/ufrn/imd/controller/impl/DepositControllerImpl.java b/banking-server/src/main/java/ufrn/imd/controller/impl/DepositControllerImpl.java
index 958ac87..d9b3df5 100644
--- a/banking-server/src/main/java/ufrn/imd/controller/impl/DepositControllerImpl.java
+++ b/banking-server/src/main/java/ufrn/imd/controller/impl/DepositControllerImpl.java
@@ -3,7 +3,7 @@ package ufrn.imd.controller.impl;
 import lombok.extern.java.Log;
 import ufrn.imd.controller.Controller;
 import ufrn.imd.domain.Client;
-import ufrn.imd.service.DepositService;
+import ufrn.imd.service.impl.DepositServiceImpl;
 
 import java.net.MalformedURLException;
 import java.rmi.AlreadyBoundException;
@@ -11,9 +11,7 @@ import java.rmi.Naming;
 import java.rmi.RemoteException;
 import java.rmi.registry.LocateRegistry;
 import java.rmi.server.UnicastRemoteObject;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 
 import static ufrn.imd.utils.NameSpace.HOST_DEPOSIT_SERVICE;
 import static ufrn.imd.utils.NameSpace.PORT_DEPOSIT_SERVICE;
@@ -21,8 +19,8 @@ import static ufrn.imd.utils.NameSpace.PORT_DEPOSIT_SERVICE;
 @Log
 public class DepositControllerImpl extends UnicastRemoteObject implements Controller {
 
-    private volatile List<Client> clients = new ArrayList<>();
-    public DepositControllerImpl(DepositService service) throws RemoteException, MalformedURLException, AlreadyBoundException {
+    private volatile Queue<Client> clients = new ArrayDeque<>();
+    public DepositControllerImpl(DepositServiceImpl service) throws RemoteException, MalformedURLException, AlreadyBoundException {
         super();
         log.info("Starting Deposit service!");
 
@@ -46,9 +44,9 @@ public class DepositControllerImpl extends UnicastRemoteObject implements Contro
 
     private class Notify extends Thread{
 
-        private final DepositService service;
+        private final DepositServiceImpl service;
 
-        public Notify(DepositService service) {
+        public Notify(DepositServiceImpl service) {
             super();
             this.service = service;
         }
@@ -60,31 +58,23 @@ public class DepositControllerImpl extends UnicastRemoteObject implements Contro
 
                     log.info("notyfing the clients!");
                     int i = 0;
-                    for (Client client : clients) {
-
+                    clients.stream().forEach(client -> {
                         try {
-                            this.service.deposit(200.00, Optional.of(client.getAccount()));
+                            log.info(String.format("Clients waiting %d", clients.size()));
+                            this.service.deposit(200.00, Optional.of(client));
+                            clients.remove();
+                            log.info(String.format("Clients waiting %d", clients.size()));
 
                         } catch (RemoteException e) {
                             e.printStackTrace();
                         }
-                    }
+                    });
                     try {
                         Thread.sleep(15 * 1000);
                     } catch (InterruptedException e) {
                         e.printStackTrace();
                     }
-                } else {
-                    try {
-                        Thread.sleep(15 * 1000);
-                    } catch (InterruptedException e) {
-                        throw new RuntimeException(e);
-                    }
-                    log.info("No there's clients!");
-
-
                 }
-
             }
 
         }
diff --git a/banking-server/src/main/java/ufrn/imd/repository/Repository.java b/banking-server/src/main/java/ufrn/imd/repository/Repository.java
index 636bf2b..589bec3 100644
--- a/banking-server/src/main/java/ufrn/imd/repository/Repository.java
+++ b/banking-server/src/main/java/ufrn/imd/repository/Repository.java
@@ -1,9 +1,10 @@
 package ufrn.imd.repository;
 
 import java.util.List;
+import java.util.Optional;
 
 public interface Repository <T>{
 
-    public T find(Integer id);
+    public Optional<T> find(Integer id);
     public List<T> findAll();
 }
diff --git a/banking-server/src/main/java/ufrn/imd/repository/impl/ClientRepository.java b/banking-server/src/main/java/ufrn/imd/repository/impl/ClientRepository.java
index bce53da..83963f7 100644
--- a/banking-server/src/main/java/ufrn/imd/repository/impl/ClientRepository.java
+++ b/banking-server/src/main/java/ufrn/imd/repository/impl/ClientRepository.java
@@ -1,20 +1,21 @@
 package ufrn.imd.repository.impl;
 
+import ufrn.imd.domain.Account;
 import ufrn.imd.domain.Client;
 import ufrn.imd.repository.Repository;
 
 import java.util.List;
+import java.util.Optional;
 
 public class ClientRepository implements Repository<Client> {
     List<Client> clients = List.of(
-            new Client(),
-            new Client()
-
+            new Client(1, "Fernando Feirreira", new Account(1, "321456789", 200.00)),
+            new Client(2, "Maria Eduarda", new Account(2, "987654321", 100.00))
             );
 
     @Override
-    public Client find(Integer id) {
-        return (Client) clients.stream().filter(c -> c.getId().equals(id));
+    public Optional<Client> find(Integer id) {
+        return Optional.of(clients.get(id));
     }
 
     @Override
diff --git a/banking-server/src/main/java/ufrn/imd/service/BalanceService.java b/banking-server/src/main/java/ufrn/imd/service/BalanceService.java
deleted file mode 100644
index b82470c..0000000
--- a/banking-server/src/main/java/ufrn/imd/service/BalanceService.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package ufrn.imd.service;
-
-import ufrn.imd.domain.Account;
-
-import java.rmi.Remote;
-import java.rmi.RemoteException;
-import java.util.Optional;
-
-public interface BalanceService extends Remote {
-
-    public void balance(Optional<Account> account) throws RemoteException;
-}
diff --git a/banking-server/src/main/java/ufrn/imd/service/DepositService.java b/banking-server/src/main/java/ufrn/imd/service/DepositService.java
deleted file mode 100644
index aab39ac..0000000
--- a/banking-server/src/main/java/ufrn/imd/service/DepositService.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package ufrn.imd.service;
-
-import ufrn.imd.domain.Account;
-
-import java.rmi.Remote;
-import java.rmi.RemoteException;
-import java.util.Optional;
-
-public interface DepositService extends Remote {
-
-        public void deposit(Double value, Optional<Account> account) throws RemoteException, RuntimeException;
-
-}
diff --git a/banking-server/src/main/java/ufrn/imd/service/Service.java b/banking-server/src/main/java/ufrn/imd/service/Service.java
new file mode 100644
index 0000000..16fc5e1
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/service/Service.java
@@ -0,0 +1,5 @@
+package ufrn.imd.service;
+
+public interface Service<T> {
+
+}
diff --git a/banking-server/src/main/java/ufrn/imd/service/WidthawService.java b/banking-server/src/main/java/ufrn/imd/service/WidthawService.java
deleted file mode 100644
index 8a5ed3b..0000000
--- a/banking-server/src/main/java/ufrn/imd/service/WidthawService.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package ufrn.imd.service;
-
-import ufrn.imd.domain.Account;
-
-import java.rmi.Remote;
-import java.rmi.RemoteException;
-
-public interface WidthawService extends Remote {
-
-    public void widthaw(Double value, Account account) throws RemoteException;
-
-}
diff --git a/banking-server/src/main/java/ufrn/imd/service/impl/BalanceServiceImpl.java b/banking-server/src/main/java/ufrn/imd/service/impl/BalanceServiceImpl.java
index 8ae835e..469601d 100644
--- a/banking-server/src/main/java/ufrn/imd/service/impl/BalanceServiceImpl.java
+++ b/banking-server/src/main/java/ufrn/imd/service/impl/BalanceServiceImpl.java
@@ -1,19 +1,28 @@
 package ufrn.imd.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import lombok.extern.java.Log;
 import ufrn.imd.domain.Account;
-import ufrn.imd.service.BalanceService;
+import ufrn.imd.domain.Client;
+import ufrn.imd.repository.Repository;
+import ufrn.imd.service.Service;
 
 import java.rmi.RemoteException;
 import java.util.Optional;
 
 @Log
-public class BalanceServiceImpl implements BalanceService {
+@RequiredArgsConstructor
+public class BalanceServiceImpl implements Service {
 
 
-    @Override
-    public void balance(Optional<Account> accOP) throws RemoteException {
-        Account account = accOP.orElseThrow(() -> new RuntimeException("Invalid account"));
+    private final Repository<Client> clientRepository;
+
+    public void balance(Optional<Client> clientOptional) throws RemoteException {
+        Client user = clientOptional
+                .orElseThrow(() -> new RuntimeException("NULL USER"));
+        Client client = clientRepository.find(user.getId())
+                .orElseThrow(() -> new RuntimeException("Invalid user!"));
+        Account account = client.getAccount();
         log.info(String.format("Account Balance: R$ %f", account.getBalance()));
 
     }
diff --git a/banking-server/src/main/java/ufrn/imd/service/impl/DepositServiceImpl.java b/banking-server/src/main/java/ufrn/imd/service/impl/DepositServiceImpl.java
index a371112..e7a8653 100644
--- a/banking-server/src/main/java/ufrn/imd/service/impl/DepositServiceImpl.java
+++ b/banking-server/src/main/java/ufrn/imd/service/impl/DepositServiceImpl.java
@@ -1,24 +1,31 @@
 package ufrn.imd.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import lombok.extern.java.Log;
 import ufrn.imd.domain.Account;
-import ufrn.imd.service.DepositService;
+import ufrn.imd.domain.Client;
+import ufrn.imd.repository.Repository;
+import ufrn.imd.service.Service;
 
 import java.rmi.RemoteException;
 import java.util.Optional;
 
 @Log
-public class DepositServiceImpl implements DepositService {
+@RequiredArgsConstructor
+public class DepositServiceImpl implements Service {
 
-    public DepositServiceImpl() {
-        super();
-    }
 
-    public void deposit(Double value, Optional<Account> acOp) throws RemoteException, RuntimeException {
-        Account account = acOp.orElseThrow(() -> new RuntimeException("Null User!"));
-        if(account.getBalance() < value) throw new RuntimeException("There's no money!");
-        account.setBalance(account.getBalance() - value);
-        log.info("deposit");
+    private final Repository<Client> repository;
+
+    public void deposit(Double value, Optional<Client> clientOptional) throws RemoteException, RuntimeException {
+        Client user = clientOptional
+                .orElseThrow(() -> new RuntimeException("Null User!"));
+        Client client = repository.find(user.getId())
+                .orElseThrow(() -> new RuntimeException("Invalid user!"));
+        Account account = client.getAccount();
+        account.setBalance(account.getBalance() + value);
+        log.info(String.format("Deposit concluded!"));
+        log.info(String.format("Total: %.2f", account.getBalance()));
     }
 
 }
diff --git a/banking-server/target/classes/ufrn/imd/BankingServerApp.class b/banking-server/target/classes/ufrn/imd/BankingServerApp.class
index e981c23cd377d28abc4078145c4d6009f4c2c7e6..e7bc89caf443850f74b54ca56cfedf3e1bb21797 100644
GIT binary patch
delta 584
zcmZvY&uSA<6vlsdCdr*lW7?(~ja6%mZDx|zacZ?-MFqD}L9q~ArE!!gF)1+?TorfS
z4&xK(6Sx{MAh`7r1fRf15X3W6FdOgUob!F>&v(xKVf`w0zW@3171(Cm<`iq1rpB=`
zS+g;4H7%P$>f1IJ>zWN4n`;_Rb6rum6Ar`4U4`kmyYaF5WVAZbJ*T>(DDU+Ky<tCi
z8jKIaexOJ*)#$hqzc-$1U$d#X5#Kjg^Cim6N26Nwtl}%&w=c&-FMR#N8wUrYH{oP7
zekbr?;5`_G!Eo~AADi}VMWc4~(a&bwjJ5Kul)a^>#ottINwKisJM4L~$t&;i-hR-Z
z#6OMY__tAySImana612!n`!L0yNV4bJ<6KJ=@~}?sZ)|~OP_(9%)HnIL7sReKHo}E
zpR@F$*g{5@sYqNpDPW1yf{L7>Dnrud59G*;-<)D}r<mP@TtdDxr7(l~=;0Kr+fFDx
znqqg?6XtH`W>VE`#G-6e;gU!+MZo7=CcSksp0k3HiUu{#%Q|V@G8bfxCUaaAY)X$}
WMWP&+rPdOr&K2oU7FUHZSp5s$S7!47

literal 1114
zcmaKsTTc@~6vzM578XjOH(EguL93RFT{S+5no!ilWWj_gN#oOYcc_DVX{KAEU%>C<
zQxlu`0sK(LGuyJuHsC(Y?3~O0cg~#b{`vdsH-J}omPHC_4VfHfFw0OlH!n=xF}<$-
zp>xiyfMNEf@I>&MAzj}-)iB3UADl@~7p|@Mxx5e-r}v(tzu`T<FM`(C_MS{xXi9wH
z#+0T>D2pdjvMObXp%GCm-wUMgI9w(`hmm>AT0}v0QDmsqjVSrD#AJ2*s+IEpAd}Lj
zAth84q<TFh*-r>rVOWidX`0?w;dNENTpsj#44FgU<_vj5c>H+acDVd#b{w*l4Bs-H
zQ&S3co)|O17tv=}i`$!4+$Txb6dpsh{@IA9*$O0qsUq^5vP&Z6YupS=c4CSQTQTc~
ztE8k(Vvg4)O<fH`aYBl3m|-)9T^V{DLERN6tk}qqef!Pgy+HV0U&AiLO4zq_g?_?a
zKj4vD!()bx(ChI)KQf&&U%K4>bYfhI(Jy0^!hs{XX@76}1J90P2-)%n(&F!gnpI_b
z3Jrz87H-kkrJfX+`o3sgrISuOqkU#)2=+5{-=<Z$fjrh|&5Z-FjyrUk#|G|_h)Vu}
zG)V!q5w!LY^Tr5S+H*%EEVg%t$RCeTYVQrP{2~);SHqkV=1@if6;i6=KCO!Ne5{8}
sDi{>8j(g;ze*u<J!-J5!fQNWQWM!|@TL#-<Y#KY*LxZeO=$yjSe>tuukN^Mx

diff --git a/banking-server/target/classes/ufrn/imd/controller/Controller.class b/banking-server/target/classes/ufrn/imd/controller/Controller.class
index 4707c271c661d159f8019f881ffc3f31e61a85d3..f430dd8e588b7787d3b1e57839844a0ca969b2ba 100644
GIT binary patch
delta 154
zcmeyv_=i#W)W2Q(7#JAL8Ti;4xY!xE*%^2yM%pRxGBR)l=a&{Gr@Ce4q%tz_JLl(>
z6y@jSq!#IAC6*;l<W-z#C>#!y0P*yTax?XVQgic5fJ!CML|iM9QwvHm^Yhpk85kLu
ffS4I*AtMVT0}BHykjDn(u>fgyAm#wFnHV?$wzDFQ

delta 170
zcmeyv_=l1A)W2Q(7#J9A8Ti;4m?jn~YO^!2Ffs^aC6*=X=OpH(>-#5Vr6!lKGq5o-
z@PkE*ax?XVQgic5QYQ-ArE)VeNT3P3RwSnulw{`TF*0xk=a&{Gr@Ce4qyn`&=jW9a
s<>%z27U_Ys08M0MU<P7VpaU3zwz4yD0C}819t)7>0%9H@n~8xJ02DSS`2YX_

diff --git a/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl$Notify.class b/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl$Notify.class
index 7f067992c8a00c6fd8c3203ad80e171f7a42fb6b..6f1fd296957eb44ef8553d3843aed5dde42adc51 100644
GIT binary patch
literal 2838
zcmb7GU2_v<6n-{oyKTCX5DSH(Sg>FSND6{LQ~78qQb=2&wFp>ryLr<t-R#EArcnI;
z{`T4{Z@I<+EX?SPUOHa-Q=D<e3-Nh(x5-92d~~M!?w&p8ywCHT^PcSQ|K9xtzyW;M
zfgT)6U=s%9UA_YcG1!Tha9G|QX~)q7j$uezhSQ7~?ZhdZZsi^S2ELbp1r=inBr)EO
z2^Fs-a0X`+n8Z{9uVOlZb9haLpI31qfejc}aZ$zV3e>7_7fnMb$QEiP*Up*cVlK4t
zzGCHubW67lF&X%c(v(-w=FOYczJ3M$jVQyhJ=d`;;Wh;h*Uc-jgQjhIhZW3Z9yhq*
z|1gL<rWLddJ4F&p7ED`=*UGcPoziD5TG9o_(5-3RHRW??Y>|}6Y~1n8(vkvg)V75?
zZ0Xgip#4B&??)oq7v!N<akpmknvswc?%rFttS{<0syde&wLRgwwTdT-BUcSk@l3~N
zh+^`8RKXLIo^C9R>6H+pX6fbGqTa`hQv6L30gFyqH|^Z8WeVHN%e{JnecZB{J1feL
zC!#yF8NQ=}4Gmt+DHJ3ootkTi6Q<OxC+vgfa_*K?6ts_vs&~?<dMai#Y{oMhdXd%e
z6rR>_32&%)Q-h9K4F-w|*4d7?R5I<kUT<FX21u$~R0s_v%xRbh`KN{)$E$j-UKtbK
zyi=?u+i*FBg`^5Ag*_U|uvIu3DtJqS3)X1!gN4=LA<OCq8dZC*=%yz@Y$K#pBXnZ+
zvM|V`reP6RR9w}tglj6^*6<GARq>vN_wj*-5AhM@^W#?0Si%1Kd3v0NX@W8}?+Tsh
zc0XP!9_vt41#5#YsClN9J5v)i!S+h}pc^J0m8yA-MP`$->*AI(S8pHRi-tKWl`C)+
zE;9tQS9!-&rd@Ja<4mN@Cq0+pepj}!q(U#t=G_s27Fct1<jZ^lALEn%<p|2c90`ud
zPkB&vLmn6f(~(o~I7;WE`<H6AArD`U{avk<eUjY`nVR5H-jd^v=*Bz`b4b&d;{GJ^
z9JW?1Au1Fmb4orYE7ZdC5B8L+%gMX8(R*?pP+{({s9QBLQBtrzGa3S|PmG`jk(Q-w
z)R&qNS6QbfhgMPlVx%A|Vn$3s4%Rl^pgrLaB;8UFa|k69&Dxy8=fC34B$;~0K4emp
z>TK`}qo6w~W<8k{t<B{GTclQ9D_!G@5n@pBnTF5tm4<%oQLwe4r)e)b3nEwW$0p~9
zUeXQEaXH>Q%Z(=$-*Ah9<1Exzr$3@B!vw(yI;q=5OH}&;&;0%3MJ!E$Q%e;Qb$|4i
z!Ilq>jkZUad04lsNz)T~72hh@cAp@t@oAc$O$bBYoasIM)Bs{g%h3*`QgYbS5(ke0
zw(z=@PZRWrb4_M<-hz_-39;<1TZrHAL!ad}jTT<_pcQ-3ffuj_`_M<rdImBK+mPWZ
z@8mWyrrm*TnEcl;`LXOxC^yk^2dxTzxcAqOXiKZN(H<YHzv$ps&0QpbJLrs|3)(W)
zTu1xZuG>gmzxNvx_Txny;x=(eSlbB({NhSt0Nu!ABL?X)N}mF~PSJWAhcV_u?PbgW
zY3#%<0@_H(&to?;f?sL@{2cGQ=yi`7V=8+1lddB94_Z<&*{30$KhfrEWk~#MTYg6R
ze7sJ8%$D)w<TAQQjMn(hWvsi6^>v4C1?L_b7*gJN!-sbPGyDJy2yaC@K^|e@j*`YP
zk{rSXjL>74KikJKixYLSmwd8&{R$cN3K^{4KIWBVI}rODGb%Q;&~-lzF)DY!Uk~Cr
eu4!6&sK$1#U*KzeN!^aqt}(#~A)Ua>IQbucg8l~p

literal 2082
zcmb7FT~iZh7(H(YY>3N80YR`;XrYD=3AQ4IfL0JnFa(7(R;ATtc>{}^-LSi{=tb}R
z5A95+w_LZQDD6z!>)!U?Fw@erOGrY83(ZXS-F^1?IL~=L_OE|`{T;v*oO*;%qaduJ
z7Igxn#hhcsjr@9Cw=K`HO;b92EST|W&D1Pi&XmPTN_*3`XXKs<)OnkR+dCpKl6p4}
zi6|ndR}fWk2C6{wmiAPOGt@>rv*}1}oxUdx%kZuX)WrI;KHf$ZO=uQST<JVDbScnN
ziCU5!<6SvYNz|hStqR&yoJG69@VlX8EZsDu<+((d3Lq9e!;Gg4*GrtiIdm%MQgI&d
z3pAd5Ef98%=fp_#Ngu@p6&KOXXVcyg=&JHY!G^)aQ#_@Uh~PtkvzF~W%Te0xZOZNv
zh@L2V(Wl^J6_*ebI9CaI(g%YZR?eoI*ioE-*cH#A!$g19M?Rop5JLhH!;_BY*^WSa
ztiK9XvLt7o!-y*wQE>&I2((m!9;=Y1P0dZq9WO}tfp2kD#VD>3h!u$2j(rD6me#hU
z?j;m_#;E0ztlN3bu;McT<57%ZLPY|T0?`fW-PCovXfeQfdiuXf=_Q-$I&LWVT*XaH
zpMbhl@C@71Oo5P{6NpvwQbJRm{INQdzlB)^b1J^TyuihB<kS0&OspLZj6g>zM$j>3
zhy7Uv3&*8%@<x1F=50^T?&var7)25(6^s5*G!<AdZ^hH}CmBc6Wi4lyzlrbt;km0~
z87l&{t|?`KM8_6<-(Lz`2r3j1owQg*r&#dhdR2rBQVPCe6IK+L$*qyEhH(!M{Mmd+
ztkq<3I_+<@HB+*WBKTUMHEsJn>c~rOxlaW$u}YENYNaG9`lnONcuaD}Ugu0Tr3_1^
zi}^L_WPB_vb;{N?Gpjj<|6CG={p}<$R&o7SP)ge^!De=fmVluD(!8EhFsjuZ%_o_v
zL^{#T)akAo#M7!m6=Cq76le%4zNi&SX+&4-qNB?>!%wv9)P+3kSCYe=maaE%yBrfW
zX<5>lF*Vnf<e=_oW22jUG{PPVaU*e=0?p0-7a))bmirqBJmS-m|9#-uG%)xIV&FBD
zfuUDu_&HE~%xeq6yk4d8DC%(yjht7Fl6D%>3~SJN`geYq5Z$grJ#sE~=-Th)7XvRL
zUgEudbO`)}hri&1mYzL)R5MwA(J!z#w2#XIKVX12p9=hmu{7T|T;9X@8%*tECWKu?
zC&HcKJ>1?s{JRb5H@LHl$l}l*vb%>r9t#>$zv15f!PmI|haYN{p>_|yBbaf2==jfK
zmDy*ofjkO4Yw(yb(`e;2!9=Fe!41=i8?>0F{v54t@%=1TxF52VtWxp_3$(k<gcs>)
ziN2QU?GCna7tg8b({!Djr%8fDjzo^5i<+B3yf9@33G1YXEj%G*+a%bR3EI6V5o_}P
z3ZnQ2eL}(TA^H$j5c2O8R)S~p0Cfil%`3<pARL_a43MW`2o~(%Y#}hv4c8(ox{c6(
DKT8vu

diff --git a/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl.class b/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl.class
index d91152883436e27a0f69fc0c37cc6ebde16db26b..9f55bf8b7d1a386ab7716d59ba2a4476c94238ce 100644
GIT binary patch
delta 1187
zcma)+&r=*#5XV1nc6MhO21zzQfP|0*f-Xy74M_wcB=RFFh{U)GK~2nNGvL5xmh8-u
z5Pxjq#dGSFmsAekJ&6j$l$IASmX;^~9m^h|LRG4)at^Qib@#mY>F;#SM(XcW?e~9v
z`UM!^OPiw%Tb#2o7_Ot4kvh(E!R9qaZN?anwi7lNc|FR$k>pLANv15`vT0yCTHa1F
zV{ysm9WK}NF8L(yC3!z`XQPAWEUwth^Fj3HhZY|lwYaKC%#=fKVNKyo`o3EkFBO8o
z4Icj0Iij$NCC~N4K(T*%sjyneRYR|oyIggv?y#aR?=AX;uv&2yJ<sR$gZQyCiF2Os
zh36H$nd$06#m{-SZsr2Fvg#FG@mET@u|lcf7v20$Y*Iq{*Z7^$?Efwo4*TNWqPr4$
zWk0aEX7RDbb^S-;x*5xK&+4o-SaaxNKyh%dhtW!<ur}e|uDTBGbXXJ|Zcwzi>EN<p
zvFPv#p2HH$7A1#U_zuTOD_Zhlp%QxjVtT?|DF<Gd-tDN}qU^B3ZN=GV-4@G!sFzj7
zju<Kq0Ry_uXzf(&+oqBB7ju_xEV;$dB6O&-YH`QmE^B(mY&x!J49j7ml&;Dx!BDzO
z0PnHj@F|}u`t&u`*I@Cv!xu=K_j&NJDWfOi?Rq)UqQ6SC>u(dCddg_kDwfrQu`az7
zo7F|*r2aEDrrXp|OmS6zqsBY_<8usm&nn_U)UtkTTuBMfo{HO(pnJ_WOJN4yJy(Bi
zcIw~E)7prS)I`{3nQKL>O!bjSJQ?<}NN$OBif?d&nD|}1DE><lc|<}yn96RVvQIJQ
zH;Mg-xlVk8#1_`vI?3!7b?exv`VE|?G|XpvHhE!##wfPW{F(jpF{#Sewn$0EciR_b
zWbGg+YcnQ?XcV9pflCWqhBnR!-lU*)OU2<G1hVwVPGC4muVD6xpA_I6FLO%v{hZ##
zuIys>XMe!#dBOpMx%Hah929^E>(CBXlzzft#THHZ=kZbkhG<bQY8((XP6^l^PX9BU
zet|u^i(`t-3Dhg{6H(g=o)8;7PU=GQ1}$40`5rscK*@0kXOvD!7lUFAUS&vZbWDS&
M0QR=m%rT6A0g2}B>i_@%

delta 1219
zcmZ9LU0WMP6vzLwyV(iL6hgofX?QD8lhBfuYQ=`6Hnl2kN-JrhXsvF;f{V!pcQ;V#
z3)K&xkIr4cg{UF5k9zODAHZ85FZ={Po{30{dogq7%sF#@^PjW7#hdZ|U;qB`X8?J8
zVL^k=VF*NEeq*F^=B(?vVSzzUr58D(48802rk!nsZZ&(+_wDVH8-x}(^bT}Fa2yfn
zLN~*d?9r!QVBnRi>v&<n5Gy@RRarTe(IXH?@7IsU^eCQ_e`v{=g?=PBo);LvF@}VE
z$P@Cf$S`pY$}WAT+d>k<ig1MCW~!v>$fDVMqG(rbui}&)f77ivx%8q6JT5Q>lOYm>
zwjV|@A#do(0tb=B+BlT6mc4#&-Km5fNF&2BDR2^}sB&Y~_p)wnrG48VJ8##V@`hb;
z<XYt95er$I<~SoTjk9vgyltuUmjuq?W%-M7iUMB2d5)aGEb{VCV}d*v@G8eefg&!+
zp2#A3F5`8MHw50qoRpE`P$#aU#Bohv9@iPV4ofC~H-|{5x8zrP|LG{o4BcTpw5ubH
z!106gBNHns|CYca@(f1cK5!JqZGmOHEloZ~74P6(j=KWy;eDCrXDy}oJ%I{V<Q<+j
zIaV2lNYp-=H^g8^*<JJOu;Dulng2cDtSo4WNFm2CE=O5!*Wm|{SJ~FiXz4&iB2@2^
zJsd^J*5&&ZXCrj$Ucf<pl4#%AuesR;r&bT0gKdrmp|y8CC(K^6tE+Xt=B(UWC_NLi
z^<NB~Aip#cGNRp;u6AyRLCkrc<6o-ULEum!bG{zBtJ@f*KGeYA&^Vylk$#4v>SFS(
zk*(na=wwIWlD$rzM=;3(u4MMWGEcyl_t5bJtX;(7eN7yFg5+{$at}jIj4I!_@e_7V
zEbF^Sm0Osih+Vwc#7ql?CGurjc<tMEp$}<1jwp=-Fz8{rag4@6>fvF`5NMICIgF!9
z5l8<;Kn)(P2nKa*5avf@M+w+Rh)r7G$F{=WA-BKJJ)QX;*5qSc(LnWM@f&TTSbTvv
z2~+Jp#!ZG6miBp{;>8IJNReh~QYwQpn0y9j`T%Dd5Ag9mjzRO1PgI`}0BcJ)PP6(%
qyt9dSTCl%EOch~J8mK6sk8bfP%^E&~!dJ&6@sKR5ZFS;vX#W7kuJU~V

diff --git a/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl$Notify.class b/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl$Notify.class
index 9697b9b922e597e1104c36d785b29568877a9002..b8477ef07534ba6cd062501ed1b04324a2d61879 100644
GIT binary patch
literal 2927
zcmb7GYjYD-7=AWsyKTCf63exM1q-I-l8PYEa4T(rLfQ(gMMRWsa?&o{?8e<qp?JUF
z?>gfrzw#LeurQ-D`qA+h_&c0&#t-6icDKn!IzTg%J!jwZUY_@P-*e9X{_pKy0PMkc
zEm)8J32eXtIXl>bEDp8eF#6@}NHYc!7{rj298J+8*NPF0Hgd*a-}lmROvN(^Byp-4
zr&Ww6Fo9<in8cZ;!$zQ&z;ig8!1FklzzaApoxP~yr35-~O2q{gx&qY|&YY1K3VL#t
zqGM%@QXvz{I4_%-K~c6{!y6CuhAGM_X!2$Zx2sn{Z_O%iTb^T^rf}*E2dd&l+x>=R
zcn1}nPcPTFrhh+(-IEF$2J8Y8OXdtqj8;lh!kN&gOiEHYJFlCQx?{-qP}m?-VrHYZ
zXB6iZXv3BzoB>mJT|xPtTI>f(v@7sKuHsI`;xjEFDU9BkyQt6U8B@2WGsBiA9H&zD
zL}BQ1UX(q<wrHXl{0}R5Xx!8Dvm<&r#Hg8iX{w-i(W4~4BSK)oF6oAq888iDd0822
zT@c498JW|fWP2hSp(*bxDp*s?tKNlz#JF8?^5Uo=Ia?R@L47%Q$W#<Gj|$g2Zo8g}
zDGeL3NyFpVuHi9sYRIFYLTD&rTEh&O+Dgmz=8J|k-RaGU&H#zKQN=|KvoJN3K*HLN
z*tX|-j$R%S-i%#vlTEPOP)@3NxedECIB->X8Y-C6a0!<cY`8bE8s@Q`)ekswJ1^;m
zCqZm3Fj~!YZ0e%OGm|SCUcsv>UeoY8-ca$Te1A*D+Zx`%yDHw(@IF4!@F6}TjlTU7
zTr1dJ-B-(LoH|GoGmg-Sa>w#qaeIg4Dp(P8L&Y=9%&Cf~2)0?$2VE0!%eclB7Msn=
z?u(oDbhV9qEefW|SSH6&IP?&ty~G+_8CKC|t<#ZqANL%Z``y{Z(h9vKo47jyEs$oY
z$i-{|ALEn%`3TBG9|<0upK`<MdAV^EOh$IYa+uCW;}<JdUT(q+``oRR{3KV`XsUxp
zdW*I*q~~Y2slzmVD(-e7_hX}L3Q;C8=@arbStb{rzriOQU7o-zYCR~=1v1PCbGlg(
zV?_n4(!(Lp>d6t*Akw;|jr@`m;wtInWZx3(pNkY^k<5rF@WI+f{0`a`|KMDi9*klL
z#8gey7#j1>Fx^xTvxzz#1yCQ&r)p81PSVxpzR%%KRtmwTq@X+MKg1Jhr>c9&c$33p
zaE?T`FSeY|WQa<|XBs}oR~nweE(M!v#W1Wndsbv}{@KgJNH6Mn&vtl6w3cdbD!yTe
zoNdomSmZyVxIzcPId)vP3Z`(o0?q8*%ts`3h7<E;5mkTi#USLpZKHJ!JrC%nIc|6&
ztKwS)o9`lIseI}V;W~t2-st4E-M|l&7*g_n0NUE*jX_Bq3a^bWJ~#7ij2dx{$)2q@
zp!EENSkJZ_h+m^9hAn)i(7@-DXv9vmuxJls7oMPG71wEoG`4b-GZ`jEx7)BibpC7T
zyuar<l<R1?g+>KG-1+NAG^Ny=XpZl%F0}B|=r$6-Ewska4s8JsUq$oCwwq|XdgnJf
z?8VdA$1rgp))s<+|DMHa?8jOhpvEwDa+IDxA5P*Rzvd*=PTKS_jUC7k&|2o*%Y+oJ
z^oQ_wa^6m@JJ^euiuL?1P?7ux4Q(;mr(rsOqRHpVkoZ?L{EXDucr^iLwtz>*7tqec
zD2=yc<pNf3UBH@~SX)(Fr{K(e&BMeWz2<|wz`MO8OnVcW3H1<5d6@O+=j;eB;3zc)
zQNR!{{$tgY3x3MG{W=-dIvJ#B5B<uNTM+vjc@-TERNYHKjNJA4V-`IeQ<SXdr*b#P
WFYq<KBzwmw*XZClAq|u1lm7uRvKrd}

literal 2181
zcmb7FT~ixn6n@?iSV)(GKxv`cf>IkkN~rxn8j5ZCD4`*=5E-dxU6MDjbh8_GH+=NM
z@!oq!Z@lGNr=_4X>a{ceA!ZbxcN0i(xM(wzeRt2EbDnda^Ra*Z`|Ixj?&3uQLa5OY
z)=`T(fm_9#YsbudHkNU0-*qfYx_m5Hu?bmlJkuXP7AGj}Njbim+ZL$v*G#WxNMI=W
zb{^sp)T2Q|M8_HE0?q5jh7q$2do`9`bET1`?@`k>{V{=>Xz!wm_pFX4Gz(~+bT`b5
z6zHy?mSsorE|gT_4QN5DhBh7N&@M3ec2N>5W0}(SJw})eLM-~G6-%0)A3uW&=+Mxq
z<09S_ID7K7K-e>1Fh)k7P*GgcaT#5FwwzUg&MI#dteQ+b$y2)Vdb}@i&UXCm9Hm|U
zn(QhE(H%h#u4wpB$5liHE>s{-`XIPz=N!6;mT&@M7krlv<GqV2@;)8?7!as8ed!v$
z;|jD#d#j>Kl;zBG5HSryI<Dg*ftCvBkqT*AGrW}C@`H4rDvO&sZs9fqu>*12k?$aq
zxs`R9@#7jkChBoXvQFMG?bvw0c-=jdoyuPXqqwVKOvfj<ccM`yoZ^Z_hP4gDD$2Q>
zN_V21LI6`zV5<$|fsS!Z2t-z;e?OCPiZ)}t$e{j@UVcfVDLm9Lts{Y%6Iss{eABTF
zOCaPBGg?h?Ik9RUkJQOy60;goI_B_L;PNr@>8;DWvZdJ*=&i;mXH`|IV~E~G4f98R
z;pWZQyv#ekoZQODAm|95Ag$w5HE~S^c7wm*8=2>6*T~4)65V%xP?Nc&<0(EDsP!x<
z3#?*vM*03i;8IZjfZl}77IBLOUuLTimXX%*6+675I8V0Ce03Plu%ZS(!&s|R<LEn^
z28+rjtp`innsU?txbmuZJOl#iXr*j#w6Ee7{nN=N9+Mn*vczmknzl?8^DEL#t5{h4
zq?0kMMZ-1Kb6FTxt50CK;`)t3DX-2rC&ew=0)qa_%ixrPQLU~t{A8+vbYfDd(^WO)
zr&Wb2!sI_8&=^#F)+m(Ih%7ioHzTJ^m1yUw+kQ}0lA9tWJ%8HqI5>L3wxv668J;J}
zL0#!{fG#fSdbUxB>yDcmXl_=Ymp~#|?i>VG`820KK0KTH`d>lxy@u8|@CuDT2a0RF
zwjj*w4I1A>1NX>T+=f~Q?KGqr*72ODx>GPAy0xH}oQrShTJ`dGeJ>$i;+=h*7x)Rr
zFL<w|dlw(nj2^$}6__2^$2EZ;F~pl20)JvS#rKVE7}-Po+Ai+zVR9djYOsUIop48Z
z7YjRwf45<A51;Lzes*9NU+x@!e<Wy3{)T5u{jXvCp#ZZ4+&SE0NF&U8p5wQS6-Zw5
z@UX$N1}fncT6v8#ox3=XF?4X*jo<-orf4;RG$yfxhtyBdK1mNVWb+Y;n5CyV`kJS=
z$Jivow^#_s8YA;*Qjv#EI!9O?2L<Bg_>{-jq^*P6E^P(v8UmS6#Fgpwd4HYj_a9sl
z8U_#fy$EXvse6qZmFJTK)Eyu+tzr29;oxi_K#_(ahO-%*E!g52A&6>=ZG`><_!KgR

diff --git a/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl.class b/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl.class
index c429275f5abb1141d6e6335ce6730b9f9c18c9d7..47a33bc2bcf84a94279a49f43193a5456f898b72 100644
GIT binary patch
delta 1167
zcma)+-BTM?7>A#;*<{1ANE<32{Y*$v2tq8a5=&|2qZSaU6{W@6+B98oX&Tb(hL-w4
z>y6i)Gu}8}c<+^{klNAlrZ*iOul#p9z8f;)IOB|aao*p)=gj*)=eOtVR^rdZ#?xm%
z{Q?a0xy=DaEKb=Nj5N{7XgHjXbH?U%#w^Bd;!K3YWSp}WZ!~d^DVu3#LiMK2EN|J&
zao*-_E;REF^Kssd^Ij+y!s&|^muwb!KP-9K;)4SgR}`_i)xcX?S2)w9l3ST5=6&Dw
zAO4XZRak|h=avFrv3GVQzn0Hd1Fx99P<5;Bh@xrUTQ22;YQ<Ib|9f6Ph#oo-JLQ$U
z;Iv|(cec7zDP_G|H?qE4S@R06=yEYT>6TZ0FPPuSO-oAu8oe`?`QOWh!#;br;Fbe#
zwd7k|wfNBDn*J?z&5ZQ+E$EDun{nu2Sg~(+4`Y=|etputU3DE&bUPd&spy&y@|D0V
zEhigX$p&o7BJXgWg1)SBc3AF)gUhgPG7e5D_S6d(^QGnN`RglgA+T6-Smq-O&tZj|
z4n=NRlpIzmTikZ2Ah3Z$l{Jey4tH7Cb7sd8MQgAc<crCwwDwOXd!*4l$_^j%iDFP+
zRf8=SpE`WThQoaxJnZPzlhKsE8SBzt#8Ud(SXw7lE~2=izflw2|6%h;--06Qhx^r2
z#yS19aY;Wj26QgcqgNse`uE6qLRfYktABMpU>>#<rtjTz^_ON^KQWJMBRaYvCU(jh
zRveTQygzhP4)%Cxt>n_84UQ5K-NOr_UzE&O#6-bNW*e1xjIp>)<VVa+qKViR)??y}
znf`5>wy?uov-va5Vq}w+`5Mp3f=ybt*i&Qg#mx;`GBpz4)f@H7*ey2&K{9Ell`c92
zE-i354hvRN?oEn5S<$|OK!$#K6Bu4%KrjbI#|1dc%N&#UA&xh&D-G<S%nz9Tk7zRp
z`$rS|>PXSV^E;g3^ds68H98u=yLbr!L%e7fH`>IFWAy$5XXtO7Ax`j01ILt@6{uI`
zhoR~Y9+enAPU1}G7F{*=e@`@QqNE(c8BVv!E^-nLUgM<1uuNQB0K2X_IfU^S!bIvc

delta 1202
zcmZ9KU3(Kn6vzLw+3cj-p~O^ZC~ZiZwlt}9p(s?+R%v;$5I`GfsUo_h+qyN`)ZI;?
z_)_#9ePHhR7FJDzJnFsoegH1K@Ok_UKAs5?sCzMU=FEBd?SIZ6iAJL5_kVu=6~Gj}
zF`*&Cp$kM|Jk&=D#-!`H;WR^JB)7m3W9VM9H*BjOx)tlR@7tS2HwaB|L^{w3!Ldi6
z3ws&H<loxZVFq5VxQ-VF4DsTNRFzdw8LtQ=(EZ?1){0>t!+}z0`=RTtrq4L*wZIM2
zf#YwuWhY~z2T6_t0=+oMkd*g$QvRkNBHVuYmo~A-L>~?*@HE3!`Ba}BZkH%Mt5C=-
zsE`4HEDVNdpgP4cBu68CSq?&txA-cyw`yIvwdRz=4&;#M7!`O8N94Kad1_+eD915@
zaU7TTqt{Ip^M=3)oRoh?k5IsyIK@#An8cJ!7(?WF3vY9r7MQ`TJZUVD=Pb@~oELZp
zbMn41lj_7p6ge&lT*eiKuH8b(r$#Cg!+Y|(NYBw2N(_6$T4-0&brL5yl^$AF`PT#%
zFvXw;?p;S=To+iv`_kZ9>UaYma@-X72p`KFKW-{HZwZvKEN}2B5^+Ti>)HN}lDq2J
zVcmBa^8b6UNja@0qtgY3L78FQUAyI#7uoHtOtHS=dzM>Ww%YGz?T(^k^X#3nvmUxN
zFW{iDNVa~~ue#Q}Q>}&0^J|VeL#lP_IiYpQuB_Djs<V7;zW7qi?f+t^g8Wub%BXfz
zy4r~?1~KP(jz3$mgTSFi#^qY*u52PhW2b?^p|w{{AI<)Z8d~zLlC9wrM97Z9C3}rL
zk6@4mT*&W$<)45r?V#f)nA?aaUTt9i6Z9?RM|Y5FAftSP`Y+fTUW#mEq}0S1MQr2s
z1}2)AUL;?>i8J4~8huLZ0AjTELPwGi4$`~y(}bolfiz(aV2(}|irD`Q0abW(A{f-L
zPMDvO9V1{LAvWlI2b&6ei`;&jdp!Rm%+bfVpn>|w6YsW&;)!|UBusVt7*`pZSZwpY
zz)KJqaF{e3A*FIShWtx7<Ii!%aTlMradg@jeWLn;09Z@HLE6<P5}gfv(1iU1;;IRQ
e(m+K4`{*yeq+P>TQ244$AMTN5wyaKk4eejeHt|dV

diff --git a/banking-server/target/classes/ufrn/imd/domain/Account.class b/banking-server/target/classes/ufrn/imd/domain/Account.class
index 2a7ef8cf0adf2d1042b8a7ee3f230660df58ffeb..06c1afe87e3de366a0157786e0a200a2309ba51b 100644
GIT binary patch
literal 2901
zcma)8TXz#x6#h;!x1<vYu`L7<xfE@amMC7pq(z}n2)%%miwY{!WNe3~Gc}o@_#b$8
z`2*yI2VF~WEgoF@f@}GkMEuTN(n%X!vdEcz_WAbh+xr~&>z}8;0XPXeiyY=MP;o&n
z7v)mdaVg91yj&I}U{Oj-a=9$GR|>SfrsKMf8v^-`-FB?j4ZGcOJokG2oPf9_kel_~
zj&HgC4Xf3)Ra(eDDS?#J6nJIfu656<v@CbEQg?lO)o#}WG`G94Vz&hfiQ{Fz?YOHv
z)mJRy8+QNkIj_6YvZe8~<2wFnf$Dg|I(D8=MGh01$j1b$QD(g+BkW#qTze_V=9)$S
zGN#vHl@@E|K2j?Fn$r;|E_A<YyA@}nS!sG3mg82=G#Xyl^_f<BT)I_PZNJXCN5&@-
zapU9!GCU8%2@LmPdgW&cIU6(3kLhuscET{DgD8-BWC)1kj3hx(7>UUe(+kuGO7NuF
zUw5q*YwrVGUb$;G{My84oB^-DPtg&n@ccE|V_kALCWpZYG=XRa%3h;$;Yn{l6dcD>
zVuq*jHn;3sjrB!qGir{}u-x-9OGa3;I%{EP*^fGtxN^0=c%E5O*4lQb+w$3}Fq^Sn
zIDIVkZTMcu5b0U=y6uKN=g6rrqedT><7{F-4x1Rph>20`HL(vxfxR!84HH#VOdP>c
z6UU|W2HrF=hGQmbnC87Y>v?|1Z(Ey-w!h{zJG(X9H1LUuPeFe3TNfy#mV*<h9Ivt*
z+(_p;IjLFP!fk;gQKI8cb4E-a3hR<mRP2nHV5%F|y3Kpru>6~jPr||*%r4I-XC)rn
z#3V=KlhDMol2An;9iPh@EP=7D8XWhYw{BNLNSMN$)$qOceH{(<Xu<Q=yPG7u?z(n+
zwq<oXHuL&EnOEc^r0b&PHd}UQEHtd`Oe3M`GrV?x(;fi7mB7bio=`<DX029h+41d~
z4i5IQ9rX>$P2k{v<8YWSZw>;xpm4-?BTspcd`(f{kMkDD9J%1jspHoqW<Or#dVssz
z#3}p^mwtsPl^-KjntY6OY3ebQp98DcxN1ZL864zV3h{Uyhq$9<5J#R5%i*R!Dalyr
zAkyI|QiWfMQe~v=uCsw_nHm9+YtAN)?lArZsh<c+VJolvKx1B*0mkX=#)W~#ymAAK
zmF>pE1C7Tq5gAvRr{qHmnB89VP+&b8B6@sk5ubugmk0St|6f0{8<O)$Obzn0qrWf9
zNA^<s;bRo~5vQ1QhIKtCmwtq*JSzVI^#`cwN9Et4E>4!7Knu1M^rcBIRb}c=3>B4U
z*z*wPR8e^XBSvJZDj}JwR#YWMdxpY8<cexhOMtRfouF*hDC!bqL?FFr#31Dn6G|t>
zA}r^2m}rmQ2Y3r_vy2gZixV8-6kk>c?@*T};SIb?Nx=oo;XO(!7V#0@r=+39>voco
zjyA8)DM|)DV9YX1-S`{3bg0iUsw2n0hIo#Bp_oaEbj`;-WRb@FPY)fal0KPza;THd
zh;M|v8z&f7HiQ2Zgl@!f+G(`Dp07<SGXdoX^0hS*Zsf}kp-(-*&>gAIR26wpRH73@
zwjn&qR@LB$9SDq!q8c0>7)<KvFknP#8douc(@aOj6?{l3g)HVtoFw%qQ$9mUp?)vU
zQc?rjzJd0F3Wc-@L8>6c3&OYdDXAEN8UtdC(yxkOS^~C(+^!{<Y0mbZhG|BWZ%#qd
v#$Q&_^ptNTwqNzIAK?pC=oNl0=-PSQ;WtZ9Utk4a^16J?y}|ue{+9m*##ke1

literal 2901
zcmbVOZF3V<6n<{9Z%H>$LR$zT77W@ZEm71FlNN>2N}vU#P!v$vCTqJi-L1(6#s9!}
z#~&bH_<%ElGkkFL3(okPM11bPq?-~P$4;|*?!C`B_c_lw_a=Y-{p42wv#_&BA+19(
zp+XZFzHQyHDlN-ht6W^YZ8v-YZN_mO|D-^AVsa$|0~sAz6GJcs_I1B%yA@}%S!sHk
zmg81VH5y*mrB}*n3hZ6n4p(=5d(CdwWQ1KNc4L^K-R|b9-4@6vfXjZ{an}M|-o##v
z2<WR8DK+eV;2E#G+Olg|1{^c75Bmj-hULzG-L+Z*qZ5gkVJ@}F>k@px#49)`psv||
zoh(NuCKJ$@rxfOpiPvOU&6Y7c()qB7BY0gPOXt%utC7A430_A{yn#0bGDKg9a_t94
z*~;A}O_We(66;oHea>q#T}ochvry9}j-f)mH?0kO&T|`<f6eg;ay!1|`W=Du$#ml!
z5@|*IBxWL-$=oB5j<*Fyg3>u&W!Y{!R?GR$qS$PZPB2`t+a1Squh!29h;stDn97RP
z>e?zP%fFOB^?&nP5l})Eb}u@v9m;nlWRYL=8dht?A~UjzCKZ3(p%R6~mo#OKCGUhK
z9~;DKk~?Myhzr%%L6I~PlO?8C`aV!BDM7;PZ`P;-Nx}2iWy|Z5ZBd>QBbW(HGnnjk
zdoEn*jfaBe_|TZ)YCOy>`&MIP$=ZtKP%mAsFU^xloekW!JKYwKWjfrk*bAu_V}HZ<
z!X%mDve#`l>;*?w+>FljG1(AofYYAmcl@@swPgG2UbC}X!>3t%hU+?R$TqzxP~1ND
zj(f-3uq$EYuyYrzhVQlS3VffeLIezhp0(U&%kC5xJ#VACRZDbjRENY&pW~IgTlN6>
zjRZcv3ldXNh&ij(T6TQ9X5b5fBT?QHPIFdFjfXNxE7EROOj4Y>>)P$PmeuLl9Uau?
z=nJ_IN=ZjU;LyKAS++2L9OlK7g1}o)Z~({g4()g4`NDhr@FosyUa7&GS0>*kF)H5Y
z^8`mXiBtF<Dg6RbDnEi=ntFs>Y5EcN{1kY7z^6tukU^EtQiw+lGaS(~*hj99$jh7Y
zq$T%C2Rlh$xl@I2iBjcGJ40uK(2^PfQD`A=;}@KNhW?PC6t;N{4|L}JI>0%%(>XuT
znOFG$=RG@}M+Q32;$-ApB~Ph`7AU(j>7l@TEJXD5)FM3vKEy|Z;^h8o99a#i`6-+p
z6z7HdzKoBorHsR`yfBV9LCzWGb+26d5vuZ_{5y;vpr#*`e}l0!ReFrkU`V5IVTzBc
zGW`dJ3d&RLxes%?pghK_F=D)`5;9)Z3aZ3tPm#ZmTtO{p2~e@B6I84k1zm!S2&5N`
z7^FNPp>(1x!gOwiM0@hy!yL{qjZu7ydA4v0ML1aCT$-)jz{j){J{NG7mWm}7p-xLf
zi^uI8Egfxk=6PBM7P)5`rf&R&T{?_s7}JsBzagGse`scsCPVZ0NT?#I^5+l(s8T-3
zKH1dCV#Fsxo{f3#D~rKj1YsC)jD8xuuMXE{l-WS?gTu9T3T_OS??az{jEP%ve!Qy4
zg@O{T7_toEQn9KAORPZPWE9k3>EK{dPlg*tqNZ_~GF>1Y6_;?4Rti}Pbcs~cJV?j!
z2`z=EVjq!GR4Lmx(4KQbp=?4>DhTnM@a=I*PK-j00Wn7DpNe2w0=A9ZIZH5UF88j6
z8SW_WoV=8cpQ4oM38sLZM?I`ZcthoTiC+n-b`>jp8;o>~pU?3nM_F38u!<%M{{Y8?
BDS7|^

diff --git a/banking-server/target/classes/ufrn/imd/domain/Client.class b/banking-server/target/classes/ufrn/imd/domain/Client.class
index 38d7a3658a88a4078ee7e0545a2e76bfe87708c6..e09b310a54921733a8906a5ffc2612b07666c2b6 100644
GIT binary patch
literal 2918
zcmbtWU2_vv7=BK&o86>aD6uUBDxd~Ula?rcLDB-HPzkgJTRs#}*(PhdG~KPq2F3rt
zz2gs%8!mK4aE1#<Z*a!nB;s@SY|=Ch3^TUPIq!MT^M0J?ea}h%{`bl606vD3goZge
zd?JVQ1}Z7e7vyj;g+a_qX+aK)a(O9Dvt=n=F>uwuHG!d~({SzjHK);ZeeY`Jtbn*6
zFgWXb&A|48Yj(Zm=rof*LLlbW1YVoJW8bxlb=zAlR=mJjbsA*>&9gTgfppjAa?o(S
zRqh#fwd%LLKp->U`nus2-HlqY=5N@pSDaB>MCq$eP@(^k+<2Fht_ZV!jS+UwyPmVy
z+E{TKSL~H~7}Kxv5H^p(b)?jSHMc3SZ%4q{y6bp>%!=_A!=#6|MeL-VA|Ogn-~cf%
z$-Sv^AI<eieVj}i1gKym-H<4jM5Ku5L>tS!Fqp(9oNroooyXhe?9$2|ry7*UZ?KB~
z_EJP!B-szvoCfoe^kii@%}^7H$xx{ZnNn)Cu)>W_6$jPc)_OUxtLqE)X2iW&wY_sP
zLwaAcn`^3Y@!WWY30z*PESzJ8loJi7*{ZWG;$e6_tD>3Nj%PFQ6-5M3xt<%GBseE2
znCYgm-6UP)N6fyI#?-RkYE+#$S9Z~WYK)_@xh)K1#KI`{TG)q-z-Vvj71-i6oUpJT
z2P_n%^akFv@D{Qbj^hOH*BRdrnnA<fTyTOlzt-HHz;zR!S@;|`EX?2xF<ZAuRY_nt
zRJnd}IlP|k_p+~3xQSZ=hg9U8TbmXWhb3WhjtH9;;{tm(>~)7XxM~O2-GJn)yUcD`
z`oEm*<k!F#@-VhQcIzCjch_HcimC)ElR3K@_>Fr8s;uO^@2|Hu1+0qaIgQ!6-E2Bc
z?}zU6A|Hyk^R`#3JI$;zEbmOCOS8@J%Dqje5Bz2qzI|)DRFR8WyIx;*1E*|&_vFZq
z^YzP3;NZ(~Y!Qu5u)r?P`>`8Cl=tv?jUmks`!1B(dg09O<7^SbCgV89Rgtsctml7)
z_&J2V&M^@xhj5UxG#~(naG0}@eaW%cIM!>N?rY3`?qeM9H6HG3d<1Vt#w8vv#%vP#
z!Xt=ZD8;aqcQUjdRfs5Wc_vASJnlQl_45;ZRX>tY>1Q1IetzPw>PHqt`r&m~e#CL+
zoaAZl7xF(r*B%!Bg!Uu!_`|{<&=w~0kD-T43W>!D4kc~!FAQX~r`YoV)?`L|45N)O
zOFAKDDUs17Ch-*M2N=xgnM4;TSuzMpmduPHL1qLpGG-g3J!C@h9rWH(iFW9{k4YTm
zF-GtmyXr6xl7)+Rsf&}QD&C{Se=jhHW0Z6(;56Q+lt7&=^#LUV4ff@SluUfYm<3pd
z`44s((4Jw`z##uj@eKQvnCuqmn$M?V5hpmy?$9NDGW!=bN4u$Idlwm37K4wiawCq?
zE<x+7L**%LI;4DTsJuqP&7r~r7?Y2Yx-Io)Ns}8HE!r_<8Pry?q=#FqKxkxU^l)pe
zKdC2Gz=+g1mQX^O>FBtODM~S<a1ql?HO{YwV>n4k<G2^6DCr?>-y-px3XQZ0L8|!A
z)^ozQ)-kCVf!+qRG1_)j1WR<mwvfGAf|=&&&eJf(i1OJ;OWGtw{3M@X0O-By>awaw
zCf#{t_;seL(Dg$72CMgGrTV@TGnkExZ;>&LX$<FS9KIF#iARX#Cm&(QEgcAb<rTiu
s*2B@OK_Buvoc^RFZ*H8wXSs^u9By+?G3J+8!B^b7%(cn&r~EAa2Vg`hTL1t6

literal 2918
zcmb7GU2_vv7=BK&o86{cC?PEkR47`sP1;6LM@-r(l&?Tru!W+4$~IZsrRi=>HYolF
z?j3)C+;E{Yf-_t=dV@3mCb2$e&n8XN)WJ@(=RM~<=RNQHydS%N{qy`c05foU5JTL6
zW<f_nV6gF3&C9!+m3+nDv|TShS9KjP5Qw=Ify49n?FV+gYI|$>k{38@POT^vm==1F
z6wo|-(-BCu!Ip!X>#c<-%R(Ox2pD#`>^G#+%zWo{XVq3QNv-`B4k0CAmTm9C*A2TW
zFfi7p`r7J!ryLZ=Z%c66!T<&Z^ff0a(bR#l@iu7F*d&IKF>utvF{!zK#~r0iAmPZH
z>Qd!v7LMZt?WM}a(6RI`rIBkAdeXw{ctapbXyk&xF{1bPZwRL>yotBy-@092pYtnZ
zE<QG1N-;3w7P80*9NDxtoH^es+rce2Ajqo+wina|mfD$Uy4U7$WZb?6w6oK4WC)WM
zrjREM)2`<Rv!O*R2Hp`!hg`XSe%YzHcGdmPUaivN{(3lFacXtf_imQX3y3QMeN9tW
z>}tc&>5}{tOcCYi!Fktn78{$ZPVI(Ll$!U;c6G(3aw?7%wP4+)vqO8_P-$6Yyz467
zgWdQTUt#nJP|@3!Jdw{5ktCuOwBfNmcQtcTVuimuy`vnY9e%Lx)Oek=cvKdP8Lot4
zPq?UxBdM0v#0od;W<B(&y`A}TV3#)*?5&6n{rXaA;R3BFF+w$`-l(#O;^7tgsM2VT
zwoaRYue=mE+l`(7lP!{_Wxr7?I~QFU_Fff$DVY>Zf^)tf)PtJ6wcrHnex-geflrh8
z47Uy3k*R!FV05R}T<?Lu;pCNZD!VV*<-o5!6!^Z~(g>)OUbekT)v1rp`~F5_tJuZ*
zJvXR>Hy&;|UEp`xG(=%+FN)~yIlEe2b_1tq;tPQj%Iz_?G9xBNB;#_77@ra20#?cM
zoZ4K~uGgKq0g`iSAG3D*W1uW>{J)_Lx^f;T*>i><@HR9Y#c8}t`8^g`4Da*DP9Dna
z$>GSZ%h4i+Et1a<ILmVs9QEuk5I=>mGkhk(#eRH9Ssow&1r#~bI-KCM^RUr*IMwwq
z+hdo*y`6{CT@O$5O{H!w(7l+nGn;z~@iV0ucI@s6PY)_YWViH55+dE5#Yf%r7_X{F
z5-Rn4jI-VJ^uDSd84#(5FCnEzoT1G<^yX16`y+JiN$wBCet;f-lKUO8g^BDl91N!v
z4lhpdQP3v;L~llWfkTgBO=h%bIMPH67j!~~3yF*_F^LyQJw{(f&m`JFBL#z?k%E~q
zB*=_FM#gM{v?nwuzK7ns%Fq_Qk8loibYlSD;yhC&hEce<z_mClzl@8NG+g3%iIR>5
z(s!9s0#)X5iIRaDsklPP#8uvzgJqb1<A8zKOAHzq;=d_gh9kwEc9E+2k)T*)^!cGe
z1-hh9TEAa%G?QAU_j%qcgTZ&PQX{5#PFB#({^GPY6H-3hUtA~QW`FK6jLByhy(ia)
z3!2=>Xwi--!=ScC3VOK32!w~sj2><ccPDjLT^NxX#}ejA6kjX2jzvl_X5Lj?qp5Kg
z(rK<rQfF}lpHR|6+P*<zn+qCg6M{VPb-PXY&Ya8J43pjjG%?!lr3jX2gY6(YR|%$>
zORd&0%^PLgNJ-ixMf{CC#~9FA>Z({(lS#Fj48J~96xuq}ubAkptYp_dF@@#m@Le*d
z(TsGKhr?cxop=f(JNXoQs<b!Ml~wpwTBpgX>V|3gaZ7#FCO=^5U>r9%i{U0#IGVik
S7Jr}POU`76xQA6#kogx=Mlm1&

diff --git a/banking-server/target/classes/ufrn/imd/repository/Repository.class b/banking-server/target/classes/ufrn/imd/repository/Repository.class
index edf96faf080b1cb13de2680e95de0075fff887fd..1a11f1ee8fe4d9f5937cf449985bd127fe02bb02 100644
GIT binary patch
delta 158
zcmcc1^p#2K)W2Q(7#JAL8Ti>5c-a~F7#Ud7GV@Xx88j#QNz0a&WajAm7nEe?=OyM?
zGcs@nXQt;RmXsEyGBW4^6$qgyun7sVwwpM+Wg@TQL_=XaHbw?U1}3243=B*xj10^S
dEI>Xhh{wPN<g+ty!1<g&F^CKo12<R&4**su9d!Tz

delta 175
zcmey$beD<u)W2Q(7#J9A8Ti>5m?kqbDk`uuurM+RWF?j*>gOcprR)1AWu+#UFfy>D
zW#*+YGN@0Kk~Tt;ux4c749-l?ODriZN@Zk_(C|TM^~@_tO;0Vd)(i=mSl?pD#>l|P
ozznpFfq@BV2P*>`kk1a{F>nC+oD5uWJ~vPdBE!SL3s%7g01ss$wg3PC

diff --git a/banking-server/target/classes/ufrn/imd/repository/impl/ClientRepository.class b/banking-server/target/classes/ufrn/imd/repository/impl/ClientRepository.class
index d5200a1291f7edff2158f8e3b6c0276cee9f31ea..155a44b5c55392b0c43f96fcd159f827359a5777 100644
GIT binary patch
literal 1693
zcma)6Yg5`l6g@#8fYB-f_Fel1v{GN7VyzUV(xS9to$+IYNY{yp6BB3p2l{*3nYPk8
z)9L5_s7~)D5u#<R%&^(Lch9+Z?>)P}|NQs~AcuDmBrq-_6TwqVgfJ;$Dun6a5+gVL
zBA7uof&g+6_%Iv7TnO{QrESOCi#!&>h~pWDFY@K{2$oO~@j^sV#IgXft};b44+RWV
z_T(cuW0_3NRM?@J7Z9$orY4(~p$JHyb1zh^T|>*T{YIvt@5@Zf6m6#bA_0R7Ok?Jv
zfSzP(OMt(qH;Cd&g=xyVwZEenoAQoImS{z<%j%YFFurz;e)Bz}d`3F~4CO#SWTtL>
zpm+zW8)>6$rHKArrZohll1`ectTi)b%~YC-kxzM2uO668*JPC-K1P6{F8c)(FH3V_
z6-1s>K~?FTNpB8rb;tfOUdUGQWLn+XQ|e~EYlS*xxsWbW(=DT}lo;<r-058hI?lBq
z;U;bgNOW(sh!qJXyrk2W6ho7>hCWhKm|@Ug7BGAsRjAi>OEXDTQ<D?ZGuhnioQPFU
zQRabO@!_?AzBR6fk(Gue8x7(K&&}qtGt-0-QIW8QbqQB-O+poKB)r9jh#EI<QuEs(
z|0ftyyDfHGCQdO0-0lYNltjQ_2jfbM?$42|T1s`7%9Jd-O+F*OGohAs%hr87x$NER
zm`RfJ-E`;ad(AYM*35e>E|lN0!X?4&W4ia&ZA_kX^q+kL=#uDkw5*r;RC}FbxRx#w
z4>8T$;svr_f-;Rwg%l7!TPhb%Lh3|6y{7__U4nZ<o$k!zE<JS#ko4#eE)x1)r<o5o
z&_i=lGmW>&@)44~r;<K~kUoKL+uuS@)PI72GYiHbwh%r><QTo&AK-q8`|Vj@4E=3?
z3j<#<_}PwhhsFdw$oy^gqnAbrY4l-*<|AZv<5I5oXeHo29#DQfr&ap;=o?Fa!QkjO
zM89LmhhOlu5c@=SA2@f=&O2&zC7k^(7a{QwkI3(w`7zCsNYNh7o}m@5N`SMUryKU9
T7I5htk~G1c*(k>BB%b^QwF$0S

literal 2131
zcmbVNU3U{z6x}yXGtG3Mq1aMDt6-5Pg-#JgaZ0sBk?Qavsa4RI+vFx(n9RhP32X76
ze9*NN1lMBu?D99cJa=Z2xk*DGe8|U~xqF{|_BnIr?|)yu0&opKnkZn(K+(c9N(_}p
z{0X-`?sx1v`;SC3W+-h+U&dPuQ>)cI12YVZ{dVZvvfHv-L6=M4u6t7Wu?YiHvzUct
z;E08zm}5Aa@bzQq*{+O;tq`;suB^J_d7OihY8o1XoidJL-oSASZ(xC;I+PKLUJ%JR
z2%nOwo|oylH;ghE%|v2E6^^qi#V0H*;Uv`>#i8I`hSRHh_B3iYlAF#vId|H^n|O<%
z7z<U^Wxb#sKNcMkIyytU?>A!^`1ajUv}BXV!kNX}c*npQ3uo~z!-?Ffk#r=gExlNT
z3|F%(i6avj^@JlFj!Dj)v+y3yljOGaTMQQ`OCEYU(pn-gP_<CQ8pCu)#5=^WFz_fD
zmqFDgE@It)ZD9kK7>?zQ&Q4H4;-^0Ms22;mhIHPX>H`Cp8J34awC3s^EjMJx=W#z2
z47IVIZn{JCXc=1$)n5-<gqd@tFK+j{`y$-s`yNH+-Jr?6JswJRodt{WLrF^4az;(h
z#9^Zp1xfZC*Cu*k4h^Dmf7|mY-N3$lz!@$a2p(F?dELN4l57mLhnOTC@pyN?#aC4N
zl?{gVNyxm&QQN8y7+8~G>2(JfT&>!yllfuIvb=?d7G^ere%KT@q-xAUx?ghWx*95a
zl&=RtOoPsQw?zCfXhm}+d}ZQmxCU-nxQ#muXY=`!{*&Obu-(K6Lhv?ks-3|w+tsiB
z(XGiqX@Z;FZ+RkGaf9G-zo)M(S`E_g=#dfN?$e(5e>c;Vhhz1IXKCx)^BR)2Oa+(7
zm3wLdG%Rf6dIjIA^_Dm1V5_Yi-xp!s<546c1K%^8JK*9ZLk!TIEFXT9p8nK5oFPdC
zFuYG6sEtm)AJD%7KBRXMtr?W)`wB&FqL`dHReKIr`xD0f=O|}Cf57}5m0uIwNA#`U
zXTS_0%J`W6St$}%@d;fqwE{C%mrkm)OSRund4WZG$Y0_V@B+&P`~~9|x>tbWR60Ov
z72jft$@mBj2b*-C(aUs;?kT-?at%x?=5d-uP1bZqla~EyWt-%EMqov<L1ao^skZhE
zE8{FP8cQi<shFz08Twj=E)#gQ_6!$(CaTv}Q%-821LRp9pA$tf>%<qhk>I|h9;9CG
WU<!Bf4R*0d5tGh-hx_;eC;tP+Ju0OD

diff --git a/banking-server/target/classes/ufrn/imd/service/BalanceService.class b/banking-server/target/classes/ufrn/imd/service/BalanceService.class
deleted file mode 100644
index a3fa528b1ec10f571b2fa396f9a310eddca7e4cc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 319
zcmZutO>06i5S)G5M(u}!2Yc(aUJUeVD^zGtg5U%1F{ToEFDWsR{<a?a1N>2?+xI}I
zcvzU7WoLHw@bmQz;2AxEjBuacgOj#g%bf{(tBsthLOE^nx)o>=dRw(ulIe|{ueL@<
zflETSVnb==!jwK5f>_nNgu%nCnx<$AIsb^(J5`K_OG4-MQ=5v|30x8GPE?L#LOZt`
zr(y~${di9BX?DDR?Mr2ye9_t`7sr#@EB7gA^JWWH=>HEk`t#)!ga+3Izl1ocKnoe#
S+%=i);F?i}8^*U4>iz<$R8|!L

diff --git a/banking-server/target/classes/ufrn/imd/service/DepositService.class b/banking-server/target/classes/ufrn/imd/service/DepositService.class
deleted file mode 100644
index e417806b1752cd381b3bce46f34ff2a4c8e3b3d3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 389
zcma)&O-{ow5QX0asA>6Wfem8AmTvF?0!T=KRi#Re#NKsG<tnkO#I86S3l6}c5JMuR
zf)xvEX5M(7p1#ko_YVN~I2T9=*YUM>(pH6ROue<*$joefV?*AJ0{eu?T5Xjqm0QXA
za&2@F7!by-T31#sOyz?ih@!hCOmAkpo6N^$Y0^%K!IpBq3D!GRrqdU~=;=+HR%ir{
z2$z3+`?bIc;cDl*h%VU5^n1cEw=1VYtT{~fzX*4;o<QL%Wu1J~+Ou=|(51_LthITz
qC3{}{hI9Lqg-H<h_#H4-Vp;-+NHFASz;%RUoN}LF%zq|rclHh6K5kS1

diff --git a/banking-server/target/classes/ufrn/imd/service/WidthawService.class b/banking-server/target/classes/ufrn/imd/service/WidthawService.class
deleted file mode 100644
index 87f4370c406e13dec8e6ee9115f250d18054b342..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 269
zcmX^0Z`VEs1_oOOK6VBsMh5xPw4yxy%-j_H;?$zD%;Z%4@XVBwjKuO_2$!9Kg^@uZ
zE3qt5KPNFSUEe<`D>b=<oq>&!fgdbdl$)s^l$x7glFG=yUJlXA$e^d;gV5uWUz(JY
zYV8BJDkVQRF*8r!F*!NEG_S;3GmMde%e5jowV)(3Kd+dbft!&*0?lx^G*D@9erZv1
ws#|6b&`M!c=jws90o}&PzzoE!K#wv4-OtXz0pxK4c`QJh3y67uY$gU?0EMJT{r~^~

diff --git a/banking-server/target/classes/ufrn/imd/service/impl/BalanceServiceImpl.class b/banking-server/target/classes/ufrn/imd/service/impl/BalanceServiceImpl.class
index a5e1a4d127fd1ae794f2509bcd0e3fed486f2dbe..b4fa9209a9ee6e21b9c3435e2894b0809385ba08 100644
GIT binary patch
literal 2841
zcma)8YgZFj6y2AE3=9LLsq)aOQPBb_kycwJh*iW&8_^Q9we~e6lQ1xuNhcH3zTc03
z(<fTH+U4i2{-&<(J2PYwNTKuP-g}<=oO{l>^VdI*{{-+NzE5#^NyQ~xRxsO*J-DJG
zhPfVG#mgxO$%|oLGG6Jzs|s=|u46&P4ct`m8WvUbAg^Gl3%67xak~qzD|kc29lR;|
zcNM%P5VM@Jz`oq7zOHBLo@r%BD4TXUljCZ*S%GB1G7Z~XG^$R`^c?qrKsr}1xpu~^
z6f<svoQWi;)txuXw(iwkLtttb@#%<PbSk=OXJ&nu*%=yAmUT<F3p6u0+641P)iWJi
zx3Xim1>&<#kplfW(>50Bm1V<S(w8k#QaPufTeo%Bl;@Bb_g2iBz<A`fX1MES!C*jD
zD|0#Umk((3BoRelkc3UI0(;tFA(A?62@FNHTO$%k1eO?>UMM(q+Y=bxCVeSj(eXfQ
z1P`j4QB1S}uwx?Cx%&mf&st5v+X9pA(z$~Lndro{X`9}Rz|qkNbNdpI;um(4+QnVc
z(kshFeIzV_kx7ArqhmqfEQ)ewk@+(#Mk6vNY^%;`fv#!hJir|rmAKTrQ+Er-Ra4f;
z;PwljknKQImmSBed9Gf)Zg?wBvDTl!J4w9D<-H`%YS6K)prD}$+8Jo{M9Y<H*oXZZ
zN+>H>(O_bg>T4P-R5T1>n2O<Tr$Zo9>BW)su@e3JUFipUV|mpmcnWL{4yp>?*WiNp
z=xL~9UBe{Kv5h17t%(unowwI@%Pgj4g&vj~>+I5nTe)2NR(@_#V6=gMmv&HaPs4pY
z(C`61WUX)03tNXQACOxyIU6dD7u}PJkMJ>@sO2()7_%xT+9#Y$WrMA8Xj8(UO{KbB
zkZqsI*Q-^I2sxfoz7L-rb!U&`&RI2MX~lK!ZK?F_Hku16#30Z~_wz-8y_*31YnZn^
zBbbT@8&S6{e@=puX;XhJ?6Ma1&|?c|KkiRin{*r&gus4!Z#W9eDw++0|G^53gw?b)
z%U7H_N1<$#s9N%#%aPCaE;(*RXWGv<qYk*)yG?x;rl~n|q15K3w|PsL6Vom^GN(<Z
zLOt1*{Sl&BORsT8D@?|MUSW5&mP*4}HwA*1N?@X$*`_JE<z-XwnTF5twT2gDFQ36#
zfg=$D(_VMhj7-j-K<t0Lq!)tMucs276nx9H<s4_NUKP;hZQF2t>;}>Q-3%zS7fh0C
zx?Qx4+DM?7-JXsnN{iwWAAn}@|IZ9u?yTE<pP}Vh-LmqgXJi$8Cva?Ae%i&uDZR5C
z4ztI5_zyFP4vt4oLH_Hc<e((&8SXo90G-?)#3BCVq)B;#1S!Ck6OT#920ES~c76O8
z#7}OZ^EV_q@EFP_W8u^Wx~Aekp*y9<|3J^3*l>IUTK*AwH_-PZ?Zk)yv`-c6rR@Rq
z63roEIZiYuiDi~Zj*xpM@Qb4u;fV-vj4~Xk{7HKjqr`fgcE-4iQEv$2IDt5KfF_ap
z@~60);6BbZ6GnKN`$;@U{WLi@xpr_>#~-49{KT(_M<^4%ojxDUKp@pXqlQ_F{7K3I
zY6N+FKB>ym=2?0<LX7fLe@F68>ZylF{lJs(a}jtMqCESdt^Ct%<Ok5jJe&*VN4UyQ
zOYPaf-bWbt8Qn6DW)Ho@aGtadOyMi8D!E_a8+^&UXL*(pPE+OrW^ggwUBktH0Slb>
Ao&W#<

delta 939
zcmYjPOHUI~6#j0fo!brr9a<g&0)-ZA3ph%BQr-_01&daB_#UPM6v~v)mbf6{H<-Kf
zN0|6XfM7Ii+^E07wF_OibzwYH2w{@BkMErGo$s7;U)O!n#=ibL_zYkGD+*kYINT~c
zkQua9W6RKUhP|w(7FR8^$RPJ;?QC(7L5jv^0~F;|;e#T$Ct9gMMI}d-3O_WVd*+BL
zAmVbP=0go?IqFo@;|xPo<XH68dRX$JQT&k_6b02dtD+e#VqA_8Q3!1u?JB~Eh!uIB
zkWQTAh^mMoE)L~BqV5)b?&fYU&NKKY?JXmh&4dio%$Mw<f-YQeiij)dMS|m!ip#hn
z{>ll;)ro5=uA@)%@S$)&Lu+Yi)7G==8NFa_Ze>kNA2q0G(@Gy*MS^8SHH$QRh(0yL
zP%~9-OsSa7>8XukHg6lbr1;53m@aaz4ly9}U~(|YpiI0pt+GRbV@iB;H~ATS>Fly?
z6ib^HL$6qKbvphY@{i4mA*oh`q&A<o-^`U8Elg>kYF5D<<~bHrJi=qK%@b~h?@=-0
zZ4tltn_&%4NmMj;B<s|?l71P_6>9zq6)DVUAo1#?ZCjgTIipapNL7ZRLm1wA@x#l-
zZ_Z_oB}Q{NhIVM=Q~CT_X#;J<;{rpH{zhkzG<`Rn>8a2<KsTLsM!P4z2lkE*E)3G@
zn1Kom(W)LfU>GBGV;IF4q;l{!`ALLDx(>jBT~r*RdV1$Qf`JD2C%6`*?p-vc_tCnG
z4u@PSlUJ34G*r?P3L{uf5;`I}PC}Fz#{?y-B-J-?lVsgGk>c1U$#$C%r<yyMrjrYI
zHN|P!4na<7?PW?p`G~HCK+hiZw}i4&^=a_p-bpJWWOF_>P_v7R`?&f6K}YoI2!%NB
d6Xrr14;){zJ|yf3p25H(Aqsp9CM+zY;XiVToUi}@

diff --git a/banking-server/target/classes/ufrn/imd/service/impl/DepositServiceImpl.class b/banking-server/target/classes/ufrn/imd/service/impl/DepositServiceImpl.class
index 8a7bee88adf7fc8e715e5f685cc3ca200269eec5..cf644482cf2f5b0e07d532cd3dfeb33d543e52c6 100644
GIT binary patch
literal 3115
zcma)8`BxKH6#j+;28KasDhSvrC|W=zY8NX(TMbxgBUpm8*4lQMOki*_lTIe6-S>Up
zmw%#bwDz>8Klk(x>Q6oW-pr6pB%;a5ym{~4<-7OY`@Q`A-?cvh9K!br4kr{mgp)F+
z+t7=L6~ypJJ2E(xfF$-}m{o8Zk1Ci$Ry^j#^o$T*XvJeP9#?P{PbfHtCtGn|K_{M)
z@pLPmQLq_WD;8zw3UV-nNM6R0gqY><*`Ha_R<&f=Gp!^SmP~sonc---DG7>e6rGak
zIqqc%1DSH(wUcHcm#i%(=c*EvZ_AoXw&s;xL&Eq?#3yR|Ij5kRb~0_5hV7+}(vX}B
z%t{y;4ggvjflWH)MaxJ<AkP*()3G%xHL@Tfo_2Ed+?g?LW2RhKG~9WO@)8mmN7t+c
z%{9e5T#S3mW=X<m4M)jvS54huh(#+o86e08YtvjJuI5$ED*FcgtVKad*rfXbtU;2n
zxe-vpEYp#M-kRh31W0HJEHMw7t~+JhlhC(L`dF|<R6X_KT`sPLIMx8bhIv<}F6oA!
z(vpm23F%wQ{suP1xwK4}w&@*}uyeQ;MdKP0;zw>KbrW}8mR4BIX+vQR4IPlMZFnS7
zMsv)lSum=xGKJUc?3d6w!BYru$A$$iCF_)3-8f;2lG?JqKE^~%(A06q@k*Yn6;B!7
zvXd)yw!rMd3Wp0_NU5+;kYTHEP~_QFo2sq|RBXd`70<$zQBvWdO!ZY27ja3(Wfjli
zc^NOLco8qDcp0y#conayxC3{x+Cyjqx?}5BIcMYsiK<qxvx_T+?#Xyv#T$52##<`h
z#yb+)=N(V8#s_wd9n7mFCLUOSP3!ukN$8li*$!rIK-BY~(4Y}zrfgXQXT*wx;c9T4
zZ`4{c-c|7)-dFJfK4fdG)5`|>-0~5*1(VEEaJ<?fD)<N=v*+qgItVqTkS9MO<1HEN
zr0r`GKIi4jwk{|nnJpKK>|a593EzjmU2Eoc$DOiD#{9DDT$FGiY>XS&h*n#Of#gB=
z(>V#<YXE%un6^D5VB2lgs2lbMi6d{?)UTt&HTBSA9cVx9PkAPE9I}Okt@K`X6xLjg
zO19i!D=>0gBV?V`U!UcWmg|ZvSYuJ;e9m47c$1AZNmlb&bT%(iF&Rx&)sRv$ysESA
z1|%f<F;dc5&*jBMrpY^QLE|AGj_L%vsdEtu2oELdJd|21F+Y>_HzH5KwDXRD9WfQ^
z2}GT>c1c@WiMNZ))X!*zbt$VlYokDL-%1#3WHv(K^=MKuK2z~IzE&|IXk{EM-5oUq
zroHN1Fp?Rc3`s>=Uekk{yuDDH$@rFO%Q()3GTBI-wr#`pu^UAHPZUsSFCev(nw_(Z
z(omon-pGDEhml1RRHr!4+bJr3>zjegjdi2v8Cp(jmX$R<gX#KC!mf4sX%r7HjE&_m
zNJi=8f3vM<LcgG0{)bBl&gR+x-<v4W%=aDG$v<yHT=^F*`~oX`uW=m}H2sCx%;+zO
z@2jBsH?%b28sxQ&@pxang4XfoK7K1`t3cVqpMDkX6{tU<Be5y=2Rg5!tAg9aG!f_Y
zY|IzV2FpLvTMWDS+>JIqyXn6N9oRyYy|@c~7$f#HW0+$ECS%x5siOf(?hkWDycof#
zK+Ly2*vrT|a31@p8>37bNxsGTo4|e?V9W<8saEChru;ozY2kP;|B4Rqy$Sbm{}Ary
zo5;**j!hhu(JQ!pbkDDd*O0gPmNxmwdIG5`G9}D+&7)Wuq(<Q7aF-&Qf^*?z2l0xJ
z@;f%4O>|#D&kvljBKQov^irOk)KGp)1Nk1b;t2B<*dO93K5C-3g1)Qh{}~-3j;MzY
lVt9aSO?VJraa6eb1-`+TJd0zTiwKWXCXGo<g>N&M`X7iXM@;|#

delta 1117
zcmYjQS#J|p6#mZGo*7TC6UT%srXh>tWD=4ZNCTzWAPIYxf=wtbP$te`Cb7qkm#94D
z9rdNUFCg&`Dpf3!fgl0Th$sF4@H3DQ;>;L9M!IwFIrp6Jd}q1;b$n`>d;NLm1%N43
z4JZg`2nvLt5~AzYmX*p|ZZ5UFx^8Ey1a;DJo$53pU=FRs*h?1(!;qUHGh#p>qM=Ek
z8BuvJbXnC9BecsyO1oj81+4;m(I)>_``NYwof_f-`|zWDs}8d5enMPs2I6x%dI&9<
zTXxwVtn|3Wo<h;JZ}%GLLZ3%1LD*|9d?%N#mK`@YF|^{LCItpCC_k!we#{|(VH}YA
zv}81lQT(JKC2$aj2&TM4=D*vCxQ;P`wq}=#6^BbOjw2e53jBhEysPzf>G+jkEY<S)
zo=X+G%rqu3rD0lN2FK-FZH(iLV^&}e^D?B*Bu){!Yd6bo$|<a+*kjAd+Nt>le7YgZ
z3$!K&X(Sxlvhp>X5R<Re)=<#OE|=s7>Xb=khEnpGl9d0b`oi=CA(F0I*^Nc3l(AOx
z>|vbzJ8PG!PSLGs_?^(<*P~o;QWxz)v1)(2CWO;Y&b6wwGP})7lLq7)CFTLkOrVVp
z%8fuGtWRe1erx4}z*N(!fh^WE*aA0^lNo(1NO)t)cY23>p+7zzg+pjHhjulgF(DJp
zDmDx*bY9?3T#e!?L7a76yF8b-Dixc#mIz7tUT<fhChmHfu>Y&5ZS#OF6pI_R5_%a!
z0pTRCxYsbAwIH8)F!_I)r7_-#_t5YY&_g~bIKzK$hJhwFZpK+YiG~r*;XF&kZVL$b
z06Pp8WZmq@4m6;SAGTkiWofjIJ$1An;C1&tBG1uvCD#1}y)Q?1-Q=F4zYg;eMq-ES
z_}L2|^uxC?C=f#gdw338ag0a)1loKm!;NrXsc>K{V#%jBi)H)<Wt-i`aRC>ZVVYqY
z+`Y>TXLX4+I_MJyG=5AgEUB!$%&+1KpB4NOHN2WLpjVzg#_&GFPv96Q@PH-qNqQyp
zNb0!ut(^U=Tl5@6jPsm$iW849;^np5#bD6utW)q8Zg{qQYq9PY)=_}V8iO@OY@&kB
EFUd8_(*OVf

diff --git a/banking-server/target/classes/ufrn/imd/utils/NameSpace.class b/banking-server/target/classes/ufrn/imd/utils/NameSpace.class
index 84c708c4860b4dc11f4b780a762e8ab3b3db8aa2..4352c7ac97153fc0ffa5de6fbc6076a0ad780fa8 100644
GIT binary patch
delta 445
zcmYL^%}N4M7>3{D=$z4xrlyvamDQA*H5r5;5=2S4QdA^Y;vc1y{U~i(v~MSK4P8LB
zNP@b6poRC)bwuBcP#pN)_dMtOJ0p1{r$2w*J^&<<a6m@LfdwquA+ThGu!3cd6$Psf
zs8}=5x`K$IQI6Q)adVo%m(LYS)x%6aSIm~G#Y~}`J;>+}EUtgCpi@q_yY2oSgA|FD
z^>21}CNKpb$A&;0n*vU_1Sa8P@ZVgtQ<|38Np5Y^Nu<=KruG=zo!V_pJFj(5wOqZ^
zYV;X+vvqaZYxg;}1T<_5xZxpOuTff~CE$f;@DLgt@9GhDa*r@=EYmlw2pR*)1&x`e
zQl+U>LTUjs_M_;hn?}k=ZLwFdC-XT#Q8uB3Y4T#6fEj8DD46{#zJ`qmuz%#?{UIzb
vkUYF+8mrf4dxu<+o?$IktX^ImLV1DxA4>*yjPZmqnIWL7lFH}ETQL6%7UM#|

delta 470
zcmYLFTQ37a6#izn?W{HE&86<QrRp;3MIuOq5-%!N8hw)0F4;z_bV)q%7n=SJFL)pl
zet;(uzek*@gqh@g=X~EcXU@!L=rgqW{{8X>U<GLt8g!0;KoB8@aLKuH<f&6Rk=dh?
zTksh|%U;FvR~hu=RL+Ef77kOO6{7LM7LzS#M+Zk(Ac81E&*kw&MSA6;y!5@(n%r^9
zu3dEsZhd(+r@V22PGyYmX7~0FH!{0fdwc)T&g|v3*E0sX89Fb@-jbB*g~hpf+UX^$
zD6N`-1OqR+)w7!Co9IJ7$AG{fh8kQuFjeajfl-XrZ)ds<SY$qO=phAHNs|IelI{}q
zuj?C(5Tnui14yW;DNCrKnn)d*NOnREOnnT+DXJtPBMhdV!0wxJilUMM9n%!WuK_cd
zrOLqE-{Es=q}JM2g!|9nk7$eVS~H17yMnLK^7;c}c0Lg8v7gcVh~a;_P0{1O^n|*Z
OA=R*Si%ZHi%>Mx8MoUrv

-- 
GitLab