diff --git a/Frontend Angular 4/package.json b/Frontend Angular 4/package.json
index b2605e1907836c13de998db98667cc4055a38580..aedf167b98f329ee166755c398f9bbc3c8dfd0c6 100755
--- a/Frontend Angular 4/package.json	
+++ b/Frontend Angular 4/package.json	
@@ -23,12 +23,12 @@
     "@ng-bootstrap/ng-bootstrap": "1.0.0-alpha.26",
     "@ngx-translate/core": "^7.2.2",
     "@ngx-translate/http-loader": "^0.1.0",
+    "function-plot": "git://github.com/diego-rey/function-plot.git#feature/discontinuidades",
+    "graph3D": "git://github.com/ifagian/graph3D#master",
     "core-js": "^2.4.1",
     "d3": "^4.12.2",
     "flag-icon-css": "^3.2.1",
     "font-awesome": "^4.7.0",
-    "function-plot": "git://github.com/diego-rey/function-plot.git#feature/integration-multigraf-shape",
-    "graph3D": "git://github.com/ifagian/graph3D#master",
     "ionicons": "^3.0.0",
     "jq-console": "^2.13.2",
     "jquery": "^3.2.1",
@@ -38,6 +38,7 @@
     "ng2-slider-component": "^1.0.9",
     "rxjs": "^5.1.0",
     "tippy.js": "^1.2.0",
+    "web-animations-js": "^2.3.1",
     "zone.js": "^0.8.4"
   },
   "devDependencies": {
diff --git a/Frontend Angular 4/src/app/layout/plotter/graph3D/graph3D.component.ts b/Frontend Angular 4/src/app/layout/plotter/graph3D/graph3D.component.ts
index 1497584f994f1f2b41d24bb7505eba2f9728cd84..3ea6aabb835b68e77ee19961e43bc76c4f9ab48b 100644
--- a/Frontend Angular 4/src/app/layout/plotter/graph3D/graph3D.component.ts	
+++ b/Frontend Angular 4/src/app/layout/plotter/graph3D/graph3D.component.ts	
@@ -84,10 +84,11 @@ export class Graph3DComponent implements AfterViewInit {
   }
 
   onResize(event){
-      const {width, height} = this.graph3DRef.nativeElement.getBoundingClientRect();
-     
-      if (width > 0 && height > 0)
-        graph3DLib.changeSize({width, height});
+    const {width, height} = this.graph3DRef.nativeElement.getBoundingClientRect();
+      
+    if (width > 0 && height > 0) {
+      graph3DLib.changeSize({width, height});
+    }
   }
 
   onAnimationChangeSpeed = (value) => {
diff --git a/Frontend Angular 4/src/app/shared/config.ts b/Frontend Angular 4/src/app/shared/config.ts
index fcd425f3002f91e68c0a83fc131176589b3eb779..a174ee9a63ec1992d2c8da76be66aa0165f2ea6f 100755
--- a/Frontend Angular 4/src/app/shared/config.ts	
+++ b/Frontend Angular 4/src/app/shared/config.ts	
@@ -21,12 +21,12 @@
 // export const GHCI_URL = 'ws://35.199.110.129:9090/endpoint';
 
 // Google cloud platform v2
-export const SERVER = 'http://35.198.52.82:9090';
-export const GHCI_URL = 'ws://35.198.52.82:9090/endpoint';
+// export const SERVER = 'http://35.198.52.82:9090';
+// export const GHCI_URL = 'ws://35.198.52.82:9090/endpoint';
 
 // psico
-// export const SERVER = 'https://matefun.math.psico.edu.uy';
-// export const GHCI_URL = 'wss://matefun.math.psico.edu.uy/endpoint';
+export const SERVER = 'https://matefun.math.psico.edu.uy';
+export const GHCI_URL = 'wss://matefun.math.psico.edu.uy/endpoint';
 
 
 //diego docker
diff --git a/Frontend Angular 4/src/app/shared/services/ghci.service.ts b/Frontend Angular 4/src/app/shared/services/ghci.service.ts
index 86c757f0b81a5bf390bae5bd71f3c1198869a828..c8f7e0e1142a0449aed97facea920942789a8fdb 100755
--- a/Frontend Angular 4/src/app/shared/services/ghci.service.ts	
+++ b/Frontend Angular 4/src/app/shared/services/ghci.service.ts	
@@ -186,10 +186,10 @@ export class GHCIService {
 				var line = this.lastWarning;
 				var title = this.warningText;
 
-				var columna = title.split("columna:")[1].split("}")[0];
+				var columna = title.split(`${this.translateService.get('i18n.codemirror.command.column').value}:`)[1].split("}")[0];
 				var warningTextToShow = title.split("}")[1];
 
-				var warningFinalText = "En columna " + columna + ": " + warningTextToShow;
+				var warningFinalText = `${this.translateService.get('i18n.codemirror.command.inColumn').value}` + columna + ": " + warningTextToShow;
 
 				if(this.codemirrorRef!==null){
 					var makeMarker = function() {
@@ -215,16 +215,21 @@ export class GHCIService {
 		if(this.warningStepReaded===0){
 
 			try{
+				// retrive line of warning
+				var line = m.resultado
+					.split(`${this.translateService.get('i18n.codemirror.command.outWarning').value}:`)[1]
+					.trim()
+					.split(`${this.translateService.get('i18n.codemirror.command.line').value}:`)[1]
+					.split(" ")[1]-1;
 
-				var line = m.resultado.split("OUTAdvertencia:")[1].trim().split("línea:")[1].split(" ")[1]-1;
 				this.lastWarning = line;
 				this.warnings.push(line);
-				var warningText = m.resultado.split("OUTAdvertencia:")[1].trim();
+				var warningText = m.resultado.split(`${this.translateService.get('i18n.codemirror.command.outWarning').value}:`)[1].trim();
 				this.warningStepReaded = 1;
 				this.warningText = warningText;
 				if(this.waitingForWarning){
 
-					this.outputConsole('El programa contiene advertencias\n');
+					this.outputConsole(`${this.translateService.get('i18n.msg.codemirror.consoleWarnings').value}\n`);
 					this.waitingForWarning = false;	
 				}
 				
diff --git a/Frontend Angular 4/src/assets/i18n/en.json b/Frontend Angular 4/src/assets/i18n/en.json
index 87fb427ef1a4d2abd1aa01ab84dc88d809367abf..e3a3cdcb18e05100af31ce4228ca5508cfd5693b 100644
--- a/Frontend Angular 4/src/assets/i18n/en.json	
+++ b/Frontend Angular 4/src/assets/i18n/en.json	
@@ -80,7 +80,8 @@
                 "infixOperatorsWarnings" : "Show warnings of use of infix operators",
                 "cursorPosition" : "Cursor position",
                 "showHints" : "Show autocomplete hints",
-                "functionTyping" : "Show functions typing"
+                "functionTyping" : "Show functions typing",
+                "consoleWarnings": "Program contains warnings"
             },
             "figure" : {
                 "multiPlot" : "Multi graph",
diff --git a/Frontend Angular 4/src/assets/i18n/es.json b/Frontend Angular 4/src/assets/i18n/es.json
index 3365760bd658978a9bbca49b156fed6adf642fb2..e0013a7c280576ab3682e0a6b3cf711f1a9c0b3f 100644
--- a/Frontend Angular 4/src/assets/i18n/es.json	
+++ b/Frontend Angular 4/src/assets/i18n/es.json	
@@ -64,7 +64,7 @@
                 "inLine" : "en línea",
                 "column" : "columna",
                 "inColumn" : "En columna",
-                "line" : "línea",
+                "line" : "linea",
                 "outWarning" : "OUTAdvertencia"
             }
         },
@@ -80,7 +80,8 @@
                 "infixOperatorsWarnings" : "Mostrar advertencias de uso de operadores infijos",
                 "cursorPosition" : "Posición del cursor",
                 "showHints" : "Mostrar sugerencias de autocompletar",
-                "functionTyping" : "Mostrar tipado de funciones"
+                "functionTyping" : "Mostrar tipado de funciones",
+                "consoleWarnings": "El programa contiene advertencias"
             },
             "figure" : {
                 "multiPlot" : "Multi gráfica",
diff --git a/Frontend Angular 4/src/polyfills.ts b/Frontend Angular 4/src/polyfills.ts
index 53bdaf1b86424df5230596f8352e78e4a4de66f5..f989042f10d1f5f98caf8e83543cb261d7413ec0 100755
--- a/Frontend Angular 4/src/polyfills.ts	
+++ b/Frontend Angular 4/src/polyfills.ts	
@@ -19,19 +19,19 @@
  */
 
 /** IE9, IE10 and IE11 requires all of the following polyfills. **/
-// import 'core-js/es6/symbol';
-// import 'core-js/es6/object';
-// import 'core-js/es6/function';
-// import 'core-js/es6/parse-int';
-// import 'core-js/es6/parse-float';
-// import 'core-js/es6/number';
-// import 'core-js/es6/math';
-// import 'core-js/es6/string';
-// import 'core-js/es6/date';
-// import 'core-js/es6/array';
-// import 'core-js/es6/regexp';
-// import 'core-js/es6/map';
-// import 'core-js/es6/set';
+import 'core-js/es6/symbol';
+import 'core-js/es6/object';
+import 'core-js/es6/function';
+import 'core-js/es6/parse-int';
+import 'core-js/es6/parse-float';
+import 'core-js/es6/number';
+import 'core-js/es6/math';
+import 'core-js/es6/string';
+import 'core-js/es6/date';
+import 'core-js/es6/array';
+import 'core-js/es6/regexp';
+import 'core-js/es6/map';
+import 'core-js/es6/set';
 
 /** IE10 and IE11 requires the following for NgClass support on SVG elements */
 // import 'classlist.js';  // Run `npm install --save classlist.js`.
@@ -46,7 +46,7 @@ import 'core-js/es7/reflect';
 
 
 /** ALL Firefox browsers require the following to support `@angular/animation`. **/
-// import 'web-animations-js';  // Run `npm install --save web-animations-js`.
+import 'web-animations-js';  // Run `npm install --save web-animations-js`.
 
 
 
diff --git a/Servidor JEE/WebContent/WEB-INF/matefun.properties b/Servidor JEE/WebContent/WEB-INF/matefun.properties
index 730c4254c7ec168c624a02fd3ff1e14e10d65c45..0eb3a559bb41850b200a8513fe62f16ad602fb4f 100644
--- a/Servidor JEE/WebContent/WEB-INF/matefun.properties	
+++ b/Servidor JEE/WebContent/WEB-INF/matefun.properties	
@@ -1,7 +1,7 @@
 #Deben definirse moodle_endpoint y moodle_group para conectar con el API de moodle. 
 #De lo contrario solo se realizara login local.
-moodle_endpoint=https://matefun.moodlecloud.com
-moodle_group=introduction to moodle
+moodle_endpoint=https://cursos-matefun.moodlecloud.com
+moodle_group=MateFun
 #El grupo se define como liceoId#grado#grupo#anio
 #Si no se sefine default_group entonces no se asigna grupo para docente o alumno.
-default_group=0#2#Año#2017
+#default_group=0#2#Año#2017
diff --git a/Servidor JEE/src/main/java/edu/proygrado/binarios/MateFun b/Servidor JEE/src/main/java/edu/proygrado/binarios/MateFun
index a4cf332c93bf1354d308552e8eb8245a6b22fd8e..2bb658ac029e9e9583a0fc2a36a708beb872d65b 100755
Binary files a/Servidor JEE/src/main/java/edu/proygrado/binarios/MateFun and b/Servidor JEE/src/main/java/edu/proygrado/binarios/MateFun differ
diff --git a/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/en.po b/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/en.po
new file mode 100644
index 0000000000000000000000000000000000000000..d7903d761691aee34e6f409e77b56d18e7d6d132
--- /dev/null
+++ b/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/en.po	
@@ -0,0 +1,557 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-01-13 06:05-0800\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: en\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+# MateFun messages.pot file
+#: src/MateFun/ReservedNames.hs:20
+msgid "3D Figure"
+msgstr "3D Figure"
+
+#: src/MateFun.hs:346
+msgid "3D Figures"
+msgstr "3D Figures"
+
+#: src/MateFun/ReservedNames.hs:79
+msgid "<function>"
+msgstr "<function>"
+
+#: src/MateFun/ReservedNames.hs:78
+msgid "<program>"
+msgstr "<program>"
+
+#: src/MateFun/ReservedNames.hs:81
+msgid "<set>"
+msgstr "<set>"
+
+#: src/MateFun/ReservedNames.hs:80
+msgid "<variable>"
+msgstr "<variable>"
+
+#: src/MateFun/Core.hs:195
+msgid "Any"
+msgstr "Any"
+
+#: src/MateFun/Core.hs:182
+msgid "Any Enumerate"
+msgstr "Any Enumerate"
+
+#: src/MateFun/Core.hs:183
+msgid "Any Tuple"
+msgstr "Any Tuple"
+
+#: src/MateFun/ReservedNames.hs:15
+msgid "Black"
+msgstr "Black"
+
+#: src/MateFun/ReservedNames.hs:11
+msgid "Blue"
+msgstr "Blue"
+
+#: src/MateFun/Core.hs:108
+msgid "Brain exploded!"
+msgstr "Brain exploded!"
+
+#: src/MateFun.hs:126 src/MateFun.hs:142
+msgid "Bye!!"
+msgstr "Bye!!"
+
+#: src/MateFun/Parser.hs:217
+msgid "Circular inclusion"
+msgstr "Circular inclusion"
+
+#: src/MateFun/ReservedNames.hs:21
+msgid "Color"
+msgstr "Color"
+
+#: src/MateFun.hs:347
+msgid "Colors"
+msgstr "Colors"
+
+#: src/MateFun/Parser.hs:222
+msgid "Could not open file"
+msgstr "Could not open file"
+
+#: src/MateFun/TypeCheck.hs:75
+msgid "Division is a partial function, not defined in 0."
+msgstr "Division is a partial function, not defined in 0."
+
+#: src/MateFun/ReservedNames.hs:103
+msgid "Does not exist"
+msgstr "Does not exist"
+
+#: src/MateFun/TypeCheck.hs:76
+msgid "Empty sequence."
+msgstr "Empty sequence."
+
+#: src/MateFun/ReservedNames.hs:22
+msgid "EmptyFig"
+msgstr "EmptyFig"
+
+#: src/MateFun/ReservedNames.hs:23
+msgid "EmptyFig3D"
+msgstr "EmptyFig3D"
+
+#: src/MateFun.hs:54
+msgid "Enables arithmetic function usage warnings"
+msgstr "Enables arithmetic function usage warnings"
+
+#: src/MateFun.hs:52
+msgid "Enables function usage warnings"
+msgstr "Enables function usage warnings"
+
+#: src/MateFun.hs:164
+msgid "Error"
+msgstr "Error"
+
+#: src/MateFun.hs:309
+msgid "Error in line"
+msgstr "Error in line"
+
+#: src/MateFun.hs:124
+msgid "Error reading command to interpretate."
+msgstr "Error reading command to interpretate."
+
+#: src/MateFun/TypeCheck.hs:74
+msgid "Evaluation steps limit exceeded."
+msgstr "Evaluation steps limit exceeded."
+
+#: src/MateFun/TypeCheck.hs:70
+msgid "Expected elements of"
+msgstr "Expected elements of"
+
+#: src/MateFun.hs:47
+msgid "FILE"
+msgstr "FILE"
+
+#: src/MateFun/ReservedNames.hs:19
+msgid "Figure"
+msgstr "Figure"
+
+#: src/MateFun.hs:345
+msgid "Figures"
+msgstr "Figures"
+
+#: src/MateFun.hs:287 src/MateFun.hs:288
+msgid "Found"
+msgstr "Found"
+
+#: src/MateFun/ReservedNames.hs:102
+msgid "Function"
+msgstr "Function"
+
+#: src/MateFun.hs:360
+msgid "Graph"
+msgstr "Graph"
+
+#: src/MateFun/ReservedNames.hs:17
+msgid "Gray"
+msgstr "Gray"
+
+#: src/MateFun/ReservedNames.hs:14
+msgid "Green"
+msgstr "Green"
+
+#: src/MateFun.hs:343
+msgid "Integer"
+msgstr "Integer"
+
+#: src/MateFun/TypeCheck.hs:83
+msgid "Interpreter"
+msgstr "Interpreter"
+
+#: src/MateFun.hs:327
+msgid "Interpreter Commands:"
+msgstr "Interpreter Commands:"
+
+#: src/MateFun/TypeCheck.hs:71
+msgid "Invalid index."
+msgstr "Invalid index."
+
+#: src/MateFun.hs:163
+msgid "Loading"
+msgstr "Loading"
+
+#: src/MateFun.hs:230
+msgid "No File"
+msgstr "No File"
+
+#: src/MateFun.hs:140
+msgid "OUTError reading command to interpretate."
+msgstr "OUTError reading command to interpretate."
+
+#: src/MateFun/ReservedNames.hs:97
+msgid "On definition of"
+msgstr "On definition of"
+
+#: src/MateFun/TypeCheck.hs:57
+msgid "On set definition"
+msgstr "On set definition"
+
+#: src/MateFun/TypeCheck.hs:72
+msgid "Out of range index."
+msgstr "Out of range index."
+
+#: src/MateFun.hs:49
+msgid "PATH"
+msgstr "PATH"
+
+#: src/MateFun/Core.hs:108
+msgid "Please report this error with code"
+msgstr "Please report this error with code"
+
+#: src/MateFun.hs:344
+msgid "Real"
+msgstr "Real"
+
+#: src/MateFun/ReservedNames.hs:13
+msgid "Red"
+msgstr "Red"
+
+#: src/MateFun/ReservedNames.hs:101
+msgid "Set"
+msgstr "Set"
+
+#: src/MateFun.hs:50
+msgid "Sets a path PATH where to find the program to evaluate"
+msgstr "Sets a path PATH where to find the program to evaluate"
+
+#: src/MateFun.hs:48
+msgid "Sets the file FILE with the program to evaluate"
+msgstr "Sets the file FILE with the program to evaluate"
+
+#: src/MateFun/TypeCheck.hs:63
+msgid "The element"
+msgstr "The element"
+
+#: src/MateFun/ReservedNames.hs:98
+msgid "The number of arguments does not match with domain of the function"
+msgstr "The number of arguments does not match with domain of the function"
+
+#: src/MateFun/ReservedNames.hs:106
+msgid "There is a chance that its value is out of the set."
+msgstr "There is a chance that its value is out of the set."
+
+#: src/MateFun/TypeCheck.hs:73
+msgid "Tuple length is not the expected"
+msgstr "Tuple length is not the expected"
+
+#: src/MateFun.hs:90
+msgid "Usage: MateFun [-c FILE] [-p PATH] [-f] [-i]"
+msgstr "Usage: MateFun [-c FILE] [-p PATH] [-f] [-i]"
+
+#: src/MateFun/TypeCheck.hs:68
+msgid "Value"
+msgstr "Value"
+
+#: src/MateFun/TypeCheck.hs:64
+msgid "Variable"
+msgstr "Variable"
+
+#: src/MateFun/Warning.hs:21
+msgid "Warning"
+msgstr "Warning"
+
+#: src/MateFun.hs:56
+msgid "Web Mode"
+msgstr "Web Mode"
+
+#: src/MateFun/ReservedNames.hs:16
+msgid "White"
+msgstr "White"
+
+#: src/MateFun/ReservedNames.hs:12
+msgid "Yellow"
+msgstr "Yellow"
+
+#: src/MateFun/TypeCheck.hs:75
+msgid "Zero division."
+msgstr "Zero division."
+
+#: src/MateFun/ReservedNames.hs:100
+msgid "against"
+msgstr "against"
+
+#: src/MateFun/TypeCheck.hs:69
+msgid "because the following condition is false"
+msgstr "because the following condition is false"
+
+#: src/MateFun.hs:268
+msgid "but expected"
+msgstr "but expected"
+
+#: src/MateFun/TypeCheck.hs:70
+msgid "but found"
+msgstr "but found"
+
+#: src/MateFun/ReservedNames.hs:33
+msgid "circ"
+msgstr "circ"
+
+#: src/MateFun/ReservedNames.hs:37
+msgid "color"
+msgstr "color"
+
+#: src/MateFun/ReservedNames.hs:50
+msgid "color3D"
+msgstr "color3D"
+
+#: src/MateFun.hs:309 src/MateFun/TypeCheck.hs:85
+msgid "column"
+msgstr "column"
+
+#: src/MateFun/ReservedNames.hs:28
+msgid "cos"
+msgstr "cos"
+
+#: src/MateFun/ReservedNames.hs:47
+msgid "cube"
+msgstr "cube"
+
+#: src/MateFun/ReservedNames.hs:46
+msgid "cylinder"
+msgstr "cylinder"
+
+#: src/MateFun/Parser.hs:217
+msgid "depends on itself."
+msgstr "depends on itself."
+
+#: src/MateFun/TypeCheck.hs:63
+msgid "does not belong to any defined set."
+msgstr "does not belong to any defined set."
+
+#: src/MateFun/TypeCheck.hs:68
+msgid "does not belong to set"
+msgstr "does not belong to set"
+
+#: src/MateFun/ReservedNames.hs:104
+msgid "duplicate elements"
+msgstr "duplicate elements"
+
+#: src/MateFun/ReservedNames.hs:67 src/MateFun/ReservedNames.hs:83
+msgid "exit"
+msgstr "exit"
+
+#: src/MateFun/Parser.hs:159
+msgid "expression"
+msgstr "expression"
+
+#: src/MateFun.hs:164 src/MateFun/Parser.hs:217 src/MateFun/TypeCheck.hs:84
+msgid "file"
+msgstr "file"
+
+#: src/MateFun/ReservedNames.hs:57
+msgid "first"
+msgstr "first"
+
+#: src/MateFun/ReservedNames.hs:74
+msgid "fun"
+msgstr "fun"
+
+#: src/MateFun/ReservedNames.hs:71
+msgid "funs"
+msgstr "funs"
+
+#: src/MateFun/ReservedNames.hs:70
+msgid "help"
+msgstr "help"
+
+#: src/MateFun/ReservedNames.hs:63
+msgid "if"
+msgstr "if"
+
+#: src/MateFun/Core.hs:113 src/MateFun/ReservedNames.hs:62
+msgid "in"
+msgstr "in"
+
+#: src/MateFun/ReservedNames.hs:60
+msgid "include"
+msgstr "include"
+
+#: src/MateFun/ReservedNames.hs:99
+msgid "is not defined."
+msgstr "is not defined."
+
+#: src/MateFun/TypeCheck.hs:76
+msgid "is partial, not defined for empty sequences."
+msgstr "is partial, not defined for empty sequences."
+
+#: src/MateFun/ReservedNames.hs:59
+msgid "isEmpty"
+msgstr "isEmpty"
+
+#: src/MateFun/ReservedNames.hs:36
+msgid "join"
+msgstr "join"
+
+#: src/MateFun/ReservedNames.hs:49
+msgid "join3D"
+msgstr "join3D"
+
+#: src/MateFun/ReservedNames.hs:34 src/MateFun/TypeCheck.hs:84
+msgid "line"
+msgstr "line"
+
+#: src/MateFun/ReservedNames.hs:44
+msgid "line3D"
+msgstr "line3D"
+
+#: src/MateFun/ReservedNames.hs:86
+msgid "list functions"
+msgstr "list functions"
+
+#: src/MateFun/ReservedNames.hs:88
+msgid "list sets"
+msgstr "list sets"
+
+#: src/MateFun/ReservedNames.hs:87
+msgid "list variables and its values"
+msgstr "list variables and its values"
+
+#: src/MateFun/ReservedNames.hs:68
+msgid "load"
+msgstr "load"
+
+#: src/MateFun/ReservedNames.hs:84
+msgid "load a program"
+msgstr "load a program"
+
+#: src/MateFun/ReservedNames.hs:38
+msgid "move"
+msgstr "move"
+
+#: src/MateFun/ReservedNames.hs:51
+msgid "move3D"
+msgstr "move3D"
+
+#: src/MateFun/ReservedNames.hs:64
+msgid "or"
+msgstr "or"
+
+#: src/MateFun/ReservedNames.hs:77
+msgid "plot"
+msgstr "plot"
+
+#: src/MateFun/ReservedNames.hs:92
+msgid "plot a function R -> R"
+msgstr "plot a function R -> R"
+
+#: src/MateFun/ReservedNames.hs:35
+msgid "poli"
+msgstr "poli"
+
+#: src/MateFun.hs:347
+msgid "predefined"
+msgstr "predefined"
+
+#: src/MateFun/ReservedNames.hs:56
+msgid "range"
+msgstr "range"
+
+#: src/MateFun/ReservedNames.hs:32
+msgid "rect"
+msgstr "rect"
+
+#: src/MateFun/ReservedNames.hs:69
+msgid "reload"
+msgstr "reload"
+
+#: src/MateFun/ReservedNames.hs:85
+msgid "reload actual program"
+msgstr "reload actual program"
+
+#: src/MateFun/ReservedNames.hs:105
+msgid "required is a subset of resulting"
+msgstr "required is a subset of resulting"
+
+#: src/MateFun/ReservedNames.hs:58
+msgid "rest"
+msgstr "rest"
+
+#: src/MateFun/ReservedNames.hs:30
+msgid "rgb"
+msgstr "rgb"
+
+#: src/MateFun/ReservedNames.hs:48
+msgid "ring"
+msgstr "ring"
+
+#: src/MateFun/ReservedNames.hs:39
+msgid "rotate"
+msgstr "rotate"
+
+#: src/MateFun/ReservedNames.hs:52
+msgid "rotate3D"
+msgstr "rotate3D"
+
+#: src/MateFun/ReservedNames.hs:26
+msgid "round"
+msgstr "round"
+
+#: src/MateFun/ReservedNames.hs:40
+msgid "scale"
+msgstr "scale"
+
+#: src/MateFun/ReservedNames.hs:53
+msgid "scale3D"
+msgstr "scale3D"
+
+#: src/MateFun/ReservedNames.hs:61 src/MateFun/ReservedNames.hs:76
+msgid "set"
+msgstr "set"
+
+#: src/MateFun/ReservedNames.hs:73
+msgid "sets"
+msgstr "sets"
+
+#: src/MateFun/ReservedNames.hs:90
+msgid "show a variable value"
+msgstr "show a variable value"
+
+#: src/MateFun/ReservedNames.hs:89
+msgid "show domain and codomain of a function"
+msgstr "show domain and codomain of a function"
+
+#: src/MateFun/ReservedNames.hs:91
+msgid "show set definition"
+msgstr "show set definition"
+
+#: src/MateFun/ReservedNames.hs:93
+msgid "show this help message"
+msgstr "show this help message"
+
+#: src/MateFun/ReservedNames.hs:27
+msgid "sin"
+msgstr "sin"
+
+#: src/MateFun/ReservedNames.hs:45
+msgid "sphere"
+msgstr "sphere"
+
+#: src/MateFun/ReservedNames.hs:29
+msgid "squareroot"
+msgstr "squareroot"
+
+#: src/MateFun/ReservedNames.hs:42
+msgid "toFig"
+msgstr "toFig"
+
+#: src/MateFun/ReservedNames.hs:75
+msgid "var"
+msgstr "var"
+
+#: src/MateFun/ReservedNames.hs:72
+msgid "vars"
+msgstr "vars"
+
+#: src/MateFun/ReservedNames.hs:96
+msgid "was defined more than once. Defined in:"
+msgstr "was defined more than once. Defined in:"
diff --git a/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/es.po b/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/es.po
new file mode 100644
index 0000000000000000000000000000000000000000..349cbf1a5861234c8c7cdc5ed71e7fa8c6cd1e3c
--- /dev/null
+++ b/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/es.po	
@@ -0,0 +1,558 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-01-13 06:05-0800\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+# MateFun messages.pot file
+#: src/MateFun/ReservedNames.hs:20
+msgid "3D Figure"
+msgstr "Figura 3D"
+
+#: src/MateFun.hs:346
+msgid "3D Figures"
+msgstr "Figuras 3D"
+
+#: src/MateFun/ReservedNames.hs:79
+msgid "<function>"
+msgstr "<funcion>"
+
+#: src/MateFun/ReservedNames.hs:78
+msgid "<program>"
+msgstr "<programa>"
+
+#: src/MateFun/ReservedNames.hs:81
+msgid "<set>"
+msgstr "<conjunto>"
+
+#: src/MateFun/ReservedNames.hs:80
+msgid "<variable>"
+msgstr "<variable>"
+
+#: src/MateFun/Core.hs:195
+msgid "Any"
+msgstr "Cualquiera"
+
+#: src/MateFun/Core.hs:182
+msgid "Any Enumerate"
+msgstr "Cualquier Enumerado"
+
+#: src/MateFun/Core.hs:183
+msgid "Any Tuple"
+msgstr "Cualquier Tupla"
+
+#: src/MateFun/ReservedNames.hs:15
+msgid "Black"
+msgstr "Negro"
+
+#: src/MateFun/ReservedNames.hs:11
+msgid "Blue"
+msgstr "Azul"
+
+#: src/MateFun/Core.hs:108
+msgid "Brain exploded!"
+msgstr "Eeemm ... emmmm ... me rompiste la cabeza!"
+
+#: src/MateFun.hs:126 src/MateFun.hs:142
+msgid "Bye!!"
+msgstr "Chau!!"
+
+#: src/MateFun/Parser.hs:217
+msgid "Circular inclusion"
+msgstr "Inclusion Circular"
+
+#: src/MateFun/ReservedNames.hs:21
+msgid "Color"
+msgstr "Color"
+
+#: src/MateFun.hs:347
+msgid "Colors"
+msgstr "Colors"
+
+#: src/MateFun/Parser.hs:222
+msgid "Could not open file"
+msgstr "No se puede abrir el archivo"
+
+#: src/MateFun/TypeCheck.hs:75
+msgid "Division is a partial function, not defined in 0."
+msgstr "La division es una funcion parcial, no esta definida para 0."
+
+#: src/MateFun/ReservedNames.hs:103
+msgid "Does not exist"
+msgstr "No existe"
+
+#: src/MateFun/TypeCheck.hs:76
+msgid "Empty sequence."
+msgstr "Secuencia vacia"
+
+#: src/MateFun/ReservedNames.hs:22
+msgid "EmptyFig"
+msgstr "FigVacia"
+
+#: src/MateFun/ReservedNames.hs:23
+msgid "EmptyFig3D"
+msgstr "FigVacia3D"
+
+#: src/MateFun.hs:54
+msgid "Enables arithmetic function usage warnings"
+msgstr "Habilita las advertencias de uso de funciones aritmeticas"
+
+#: src/MateFun.hs:52
+msgid "Enables function usage warnings"
+msgstr "Habilita las advertencias de uso de funciones"
+
+#: src/MateFun.hs:164
+msgid "Error"
+msgstr "Error"
+
+#: src/MateFun.hs:309
+msgid "Error in line"
+msgstr "Error en linea"
+
+#: src/MateFun.hs:124
+msgid "Error reading command to interpretate."
+msgstr "Error al leer el comando a interpretar."
+
+#: src/MateFun/TypeCheck.hs:74
+msgid "Evaluation steps limit exceeded."
+msgstr "Se ha excedido el limite de pasos de evaluacion."
+
+#: src/MateFun/TypeCheck.hs:70
+msgid "Expected elements of"
+msgstr "Se esperan elementos de"
+
+#: src/MateFun.hs:47
+msgid "FILE"
+msgstr "ARCHIVO"
+
+#: src/MateFun/ReservedNames.hs:19
+msgid "Figure"
+msgstr "Figura"
+
+#: src/MateFun.hs:345
+msgid "Figures"
+msgstr "Figuras"
+
+#: src/MateFun.hs:287 src/MateFun.hs:288
+msgid "Found"
+msgstr "Se encontro"
+
+#: src/MateFun/ReservedNames.hs:102
+msgid "Function"
+msgstr "Funcion"
+
+#: src/MateFun.hs:360
+msgid "Graph"
+msgstr "Grafica"
+
+#: src/MateFun/ReservedNames.hs:17
+msgid "Gray"
+msgstr "Gris"
+
+#: src/MateFun/ReservedNames.hs:14
+msgid "Green"
+msgstr "Verde"
+
+#: src/MateFun.hs:343
+msgid "Integer"
+msgstr "Enteros"
+
+#: src/MateFun/TypeCheck.hs:83
+msgid "Interpreter"
+msgstr "Interprete"
+
+#: src/MateFun.hs:327
+msgid "Interpreter Commands:"
+msgstr "Comandos del Interprete"
+
+#: src/MateFun/TypeCheck.hs:71
+msgid "Invalid index."
+msgstr "Indice invalido."
+
+#: src/MateFun.hs:163
+msgid "Loading"
+msgstr "Cargando"
+
+#: src/MateFun.hs:230
+msgid "No File"
+msgstr "Sin Archivo"
+
+#: src/MateFun.hs:140
+msgid "OUTError reading command to interpretate."
+msgstr "OUTError al leer el comando a interpretar"
+
+#: src/MateFun/ReservedNames.hs:97
+msgid "On definition of"
+msgstr "En la definicion de"
+
+#: src/MateFun/TypeCheck.hs:57
+msgid "On set definition"
+msgstr "En la definicion del conjunto"
+
+#: src/MateFun/TypeCheck.hs:72
+msgid "Out of range index."
+msgstr "Indice fuera de rango."
+
+#: src/MateFun.hs:49
+msgid "PATH"
+msgstr "RUTA"
+
+#: src/MateFun/Core.hs:108
+msgid "Please report this error with code"
+msgstr "Por favor avisar de este error con codigo"
+
+#: src/MateFun.hs:344
+msgid "Real"
+msgstr "Reales"
+
+#: src/MateFun/ReservedNames.hs:13
+msgid "Red"
+msgstr "Rojo"
+
+#: src/MateFun/ReservedNames.hs:101
+msgid "Set"
+msgstr "Conjunto"
+
+#: src/MateFun.hs:50
+msgid "Sets a path PATH where to find the program to evaluate"
+msgstr "Determina una ruta donde encontrar el programa a evaluar"
+
+#: src/MateFun.hs:48
+msgid "Sets the file FILE with the program to evaluate"
+msgstr "Determina el archivo ARCHIVO con el programa a evaluar"
+
+#: src/MateFun/TypeCheck.hs:63
+msgid "The element"
+msgstr "El elemento"
+
+#: src/MateFun/ReservedNames.hs:98
+msgid "The number of arguments does not match with domain of the function"
+msgstr "El numero de argumentos no coincide con el dominio de la funcion"
+
+#: src/MateFun/ReservedNames.hs:106
+msgid "There is a chance that its value is out of the set."
+msgstr ""
+"Por lo que existe la posibilidad de que su valor quede fuera del conjunto."
+
+#: src/MateFun/TypeCheck.hs:73
+msgid "Tuple length is not the expected"
+msgstr "El largo de la tupla es distinto al esperado"
+
+#: src/MateFun.hs:90
+msgid "Usage: MateFun [-c FILE] [-p PATH] [-f] [-i]"
+msgstr "Uso: MateFun [-c ARCHIVO] [-p RUTA] [-f] [-i]"
+
+#: src/MateFun/TypeCheck.hs:68
+msgid "Value"
+msgstr "Valor"
+
+#: src/MateFun/TypeCheck.hs:64
+msgid "Variable"
+msgstr "Variable"
+
+#: src/MateFun/Warning.hs:21
+msgid "Warning"
+msgstr "Advertencia"
+
+#: src/MateFun.hs:56
+msgid "Web Mode"
+msgstr "Modo Web"
+
+#: src/MateFun/ReservedNames.hs:16
+msgid "White"
+msgstr "Blanco"
+
+#: src/MateFun/ReservedNames.hs:12
+msgid "Yellow"
+msgstr "Amarillo"
+
+#: src/MateFun/TypeCheck.hs:75
+msgid "Zero division."
+msgstr "Division por 0"
+
+#: src/MateFun/ReservedNames.hs:100
+msgid "against"
+msgstr "contra"
+
+#: src/MateFun/TypeCheck.hs:69
+msgid "because the following condition is false"
+msgstr "porque no se cumple"
+
+#: src/MateFun.hs:268
+msgid "but expected"
+msgstr "pero se esperaba"
+
+#: src/MateFun/TypeCheck.hs:70
+msgid "but found"
+msgstr "pero se encontro"
+
+#: src/MateFun/ReservedNames.hs:33
+msgid "circ"
+msgstr "circ"
+
+#: src/MateFun/ReservedNames.hs:37
+msgid "color"
+msgstr "color"
+
+#: src/MateFun/ReservedNames.hs:50
+msgid "color3D"
+msgstr "color3D"
+
+#: src/MateFun.hs:309 src/MateFun/TypeCheck.hs:85
+msgid "column"
+msgstr "columna"
+
+#: src/MateFun/ReservedNames.hs:28
+msgid "cos"
+msgstr "cos"
+
+#: src/MateFun/ReservedNames.hs:47
+msgid "cube"
+msgstr "cubo"
+
+#: src/MateFun/ReservedNames.hs:46
+msgid "cylinder"
+msgstr "cilindro"
+
+#: src/MateFun/Parser.hs:217
+msgid "depends on itself."
+msgstr "depende de si mismo."
+
+#: src/MateFun/TypeCheck.hs:63
+msgid "does not belong to any defined set."
+msgstr "no pertenece a ningun conjunto definido."
+
+#: src/MateFun/TypeCheck.hs:68
+msgid "does not belong to set"
+msgstr "no pertenece al conjunto"
+
+#: src/MateFun/ReservedNames.hs:104
+msgid "duplicate elements"
+msgstr "elementos duplicados"
+
+#: src/MateFun/ReservedNames.hs:67 src/MateFun/ReservedNames.hs:83
+msgid "exit"
+msgstr "salir"
+
+#: src/MateFun/Parser.hs:159
+msgid "expression"
+msgstr "expresion"
+
+#: src/MateFun.hs:164 src/MateFun/Parser.hs:217 src/MateFun/TypeCheck.hs:84
+msgid "file"
+msgstr "archivo"
+
+#: src/MateFun/ReservedNames.hs:57
+msgid "first"
+msgstr "primero"
+
+#: src/MateFun/ReservedNames.hs:74
+msgid "fun"
+msgstr "fun"
+
+#: src/MateFun/ReservedNames.hs:71
+msgid "funs"
+msgstr "funs"
+
+#: src/MateFun/ReservedNames.hs:70
+msgid "help"
+msgstr "ayuda"
+
+#: src/MateFun/ReservedNames.hs:63
+msgid "if"
+msgstr "si"
+
+#: src/MateFun/Core.hs:113 src/MateFun/ReservedNames.hs:62
+msgid "in"
+msgstr "en"
+
+#: src/MateFun/ReservedNames.hs:60
+msgid "include"
+msgstr "incluir"
+
+#: src/MateFun/ReservedNames.hs:99
+msgid "is not defined."
+msgstr "no esta definido"
+
+#: src/MateFun/TypeCheck.hs:76
+msgid "is partial, not defined for empty sequences."
+msgstr "es parcial, no esta definida para secuencias vacias."
+
+#: src/MateFun/ReservedNames.hs:59
+msgid "isEmpty"
+msgstr "esVacia"
+
+#: src/MateFun/ReservedNames.hs:36
+msgid "join"
+msgstr "juntar"
+
+#: src/MateFun/ReservedNames.hs:49
+msgid "join3D"
+msgstr "juntar3D"
+
+#: src/MateFun/ReservedNames.hs:34 src/MateFun/TypeCheck.hs:84
+msgid "line"
+msgstr "linea"
+
+#: src/MateFun/ReservedNames.hs:44
+msgid "line3D"
+msgstr "linea3D"
+
+#: src/MateFun/ReservedNames.hs:86
+msgid "list functions"
+msgstr "lista las funciones"
+
+#: src/MateFun/ReservedNames.hs:88
+msgid "list sets"
+msgstr "lista los conjuntos"
+
+#: src/MateFun/ReservedNames.hs:87
+msgid "list variables and its values"
+msgstr "lista las variables y sus valores"
+
+#: src/MateFun/ReservedNames.hs:68
+msgid "load"
+msgstr "cargar"
+
+#: src/MateFun/ReservedNames.hs:84
+msgid "load a program"
+msgstr "cargar un programa"
+
+#: src/MateFun/ReservedNames.hs:38
+msgid "move"
+msgstr "mover"
+
+#: src/MateFun/ReservedNames.hs:51
+msgid "move3D"
+msgstr "mover3D"
+
+#: src/MateFun/ReservedNames.hs:64
+msgid "or"
+msgstr "o"
+
+#: src/MateFun/ReservedNames.hs:77
+msgid "plot"
+msgstr "grafica"
+
+#: src/MateFun/ReservedNames.hs:92
+msgid "plot a function R -> R"
+msgstr "grafica una funcion de R -> R"
+
+#: src/MateFun/ReservedNames.hs:35
+msgid "poli"
+msgstr "poli"
+
+#: src/MateFun.hs:347
+msgid "predefined"
+msgstr "predefinidos"
+
+#: src/MateFun/ReservedNames.hs:56
+msgid "range"
+msgstr "rango"
+
+#: src/MateFun/ReservedNames.hs:32
+msgid "rect"
+msgstr "rect"
+
+#: src/MateFun/ReservedNames.hs:69
+msgid "reload"
+msgstr "recargar"
+
+#: src/MateFun/ReservedNames.hs:85
+msgid "reload actual program"
+msgstr "volver a cargar el programa actual"
+
+#: src/MateFun/ReservedNames.hs:105
+msgid "required is a subset of resulting"
+msgstr "requerido es subconjunto del resultante"
+
+#: src/MateFun/ReservedNames.hs:58
+msgid "rest"
+msgstr "resto"
+
+#: src/MateFun/ReservedNames.hs:30
+msgid "rgb"
+msgstr "rgb"
+
+#: src/MateFun/ReservedNames.hs:48
+msgid "ring"
+msgstr "anillo"
+
+#: src/MateFun/ReservedNames.hs:39
+msgid "rotate"
+msgstr "rotar"
+
+#: src/MateFun/ReservedNames.hs:52
+msgid "rotate3D"
+msgstr "rotar3D"
+
+#: src/MateFun/ReservedNames.hs:26
+msgid "round"
+msgstr "red"
+
+#: src/MateFun/ReservedNames.hs:40
+msgid "scale"
+msgstr "escalar"
+
+#: src/MateFun/ReservedNames.hs:53
+msgid "scale3D"
+msgstr "escalar3D"
+
+#: src/MateFun/ReservedNames.hs:61 src/MateFun/ReservedNames.hs:76
+msgid "set"
+msgstr "conj"
+
+#: src/MateFun/ReservedNames.hs:73
+msgid "sets"
+msgstr "conjs"
+
+#: src/MateFun/ReservedNames.hs:90
+msgid "show a variable value"
+msgstr "despliega el valor de una variable"
+
+#: src/MateFun/ReservedNames.hs:89
+msgid "show domain and codomain of a function"
+msgstr "despliega el dominio y codominio de una funcion"
+
+#: src/MateFun/ReservedNames.hs:91
+msgid "show set definition"
+msgstr "despliega la definicion del conjunto"
+
+#: src/MateFun/ReservedNames.hs:93
+msgid "show this help message"
+msgstr "despliega este mensaje de ayuda"
+
+#: src/MateFun/ReservedNames.hs:27
+msgid "sin"
+msgstr "sen"
+
+#: src/MateFun/ReservedNames.hs:45
+msgid "sphere"
+msgstr "esfera"
+
+#: src/MateFun/ReservedNames.hs:29
+msgid "squareroot"
+msgstr "raizcuad"
+
+#: src/MateFun/ReservedNames.hs:42
+msgid "toFig"
+msgstr "aFig"
+
+#: src/MateFun/ReservedNames.hs:75
+msgid "var"
+msgstr "var"
+
+#: src/MateFun/ReservedNames.hs:72
+msgid "vars"
+msgstr "vars"
+
+#: src/MateFun/ReservedNames.hs:96
+msgid "was defined more than once. Defined in:"
+msgstr "se definio mas de una vez. Definida en"
diff --git a/Servidor JEE/src/main/resources/META-INF/persistence.xml b/Servidor JEE/src/main/resources/META-INF/persistence.xml
index 16c1f8e6adea2d398c6b0eb89b5321c00a4ddd3d..a4db38c81d6b7c31f5a40d8452e0e8728689db67 100644
--- a/Servidor JEE/src/main/resources/META-INF/persistence.xml	
+++ b/Servidor JEE/src/main/resources/META-INF/persistence.xml	
@@ -24,7 +24,6 @@
 <!-- 	</persistence-unit> -->
 
 	<persistence-unit name="matefunDS" transaction-type="JTA">
-	<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
 	<jta-data-source>java:/matefun</jta-data-source>
 	<class>edu.proygrado.modelo.Alumno</class>
 	<class>edu.proygrado.modelo.Archivo</class>