瀏覽代碼

Fixed code spacing and formatting

martin gillow 6 年之前
父節點
當前提交
23ddb87c9f
共有 1 個文件被更改,包括 458 次插入463 次删除
  1. 458 463
      src/core/operations/Lorenz.mjs

+ 458 - 463
src/core/operations/Lorenz.mjs

@@ -1,6 +1,6 @@
 /**
  * Emulation of the Lorenz SZ40/42a/42b cipher attachment.
- * 
+ *
  * @author VirtualColossus [martin@virtualcolossus.co.uk]
  * @copyright Crown Copyright 2019
  * @license Apache-2.0
@@ -36,26 +36,26 @@ class Lorenz extends Operation {
                 name: "Wheel Pattern",
                 type: "argSelector",
                 "value": [
-                	{
-                		name: "KH Pattern",
-                		off: [19,20,21,22,23,24,25,26,27,28,29,30],
-                	},
-                	{
-                		name: "ZMUG Pattern",
-                		off: [19,20,21,22,23,24,25,26,27,28,29,30]
-                	},
-                	{
-                		name: "BREAM Pattern",
-                		off: [19,20,21,22,23,24,25,26,27,28,29,30]
-                	},
-                	{
-                		name: "No Pattern",
-                		off: [19,20,21,22,23,24,25,26,27,28,29,30]
-                	},
-                	{
-                		name: "Custom",
-                		on: [19,20,21,22,23,24,25,26,27,28,29,30]
-                	}
+                    {
+                        name: "KH Pattern",
+                        off: [19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
+                    },
+                    {
+                        name: "ZMUG Pattern",
+                        off: [19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
+                    },
+                    {
+                        name: "BREAM Pattern",
+                        off: [19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
+                    },
+                    {
+                        name: "No Pattern",
+                        off: [19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
+                    },
+                    {
+                        name: "Custom",
+                        on: [19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
+                    }
                 ]
             },
             {
@@ -66,16 +66,16 @@ class Lorenz extends Operation {
                 name: "Mode",
                 type: "argSelector",
                 "value": [
-                	{
-                		name: "Send",
-                		on: [4],
-                		off: [5]
-                	},
-                	{
-                		name: "Receive",
-                		off: [4],
-                		on: [5]
-                	}
+                    {
+                        name: "Send",
+                        on: [4],
+                        off: [5]
+                    },
+                    {
+                        name: "Receive",
+                        off: [4],
+                        on: [5]
+                    }
                 ]
             },
             {
@@ -89,129 +89,129 @@ class Lorenz extends Operation {
                 "value": ["Plaintext", "ITA2"]
             },
             {
-            	name: "ITA2 Format",
-            	type: "option",
+                name: "ITA2 Format",
+                type: "option",
                 "value": ["5/8/9", "+/-/."]
             },
             {
-            	name: "Ψ1 start (1-43)",
-            	type: "number",
-            	"value": 1
+                name: "Ψ1 start (1-43)",
+                type: "number",
+                "value": 1
             },
             {
-            	name: "Ψ2 start (1-47)",
-            	type: "number",
-            	"value": 1
+                name: "Ψ2 start (1-47)",
+                type: "number",
+                "value": 1
             },
             {
-            	name: "Ψ3 start (1-51)",
-            	type: "number",
-            	"value": 1
+                name: "Ψ3 start (1-51)",
+                type: "number",
+                "value": 1
             },
             {
-            	name: "Ψ4 start (1-53)",
-            	type: "number",
-            	"value": 1
+                name: "Ψ4 start (1-53)",
+                type: "number",
+                "value": 1
             },
             {
-            	name: "Ψ5 start (1-59)",
-            	type: "number",
-            	"value": 1
+                name: "Ψ5 start (1-59)",
+                type: "number",
+                "value": 1
             },
             {
-            	name: "Μ37 start (1-37)",
-            	type: "number",
-            	"value": 1
+                name: "Μ37 start (1-37)",
+                type: "number",
+                "value": 1
             },
             {
-            	name: "Μ61 start (1-61)",
-            	type: "number",
-            	"value": 1
+                name: "Μ61 start (1-61)",
+                type: "number",
+                "value": 1
             },
             {
-            	name: "Χ1 start (1-41)",
-            	type: "number",
-            	"value": 1
+                name: "Χ1 start (1-41)",
+                type: "number",
+                "value": 1
             },
             {
-            	name: "Χ2 start (1-31)",
-            	type: "number",
-            	"value": 1
+                name: "Χ2 start (1-31)",
+                type: "number",
+                "value": 1
             },
             {
-            	name: "Χ3 start (1-29)",
-            	type: "number",
-            	"value": 1
+                name: "Χ3 start (1-29)",
+                type: "number",
+                "value": 1
             },
             {
-            	name: "Χ4 start (1-26)",
-            	type: "number",
-            	"value": 1
+                name: "Χ4 start (1-26)",
+                type: "number",
+                "value": 1
             },
             {
-            	name: "Χ5 start (1-23)",
-            	type: "number",
-            	"value": 1
+                name: "Χ5 start (1-23)",
+                type: "number",
+                "value": 1
             },
             {
-            	name: "Ψ1 lugs (43)",
-            	type: "string",
-            	value: ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x"
+                name: "Ψ1 lugs (43)",
+                type: "string",
+                value: ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x"
             },
             {
-            	name: "Ψ2 lugs (47)",
-            	type: "string",
-            	value: ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x"
+                name: "Ψ2 lugs (47)",
+                type: "string",
+                value: ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x"
             },
             {
-            	name: "Ψ3 lugs (51)",
-            	type: "string",
-            	value: ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x"
+                name: "Ψ3 lugs (51)",
+                type: "string",
+                value: ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x"
             },
             {
-            	name: "Ψ4 lugs (53)",
-            	type: "string",
-            	value: ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x."
+                name: "Ψ4 lugs (53)",
+                type: "string",
+                value: ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x."
             },
             {
-            	name: "Ψ5 lugs (59)",
-            	type: "string",
-            	value: "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x."
+                name: "Ψ5 lugs (59)",
+                type: "string",
+                value: "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x."
             },
             {
-            	name: "Μ37 lugs (37)",
-            	type: "string",
-            	value: "x.x.x.x.x.x...x.x.x...x.x.x...x.x...."
+                name: "Μ37 lugs (37)",
+                type: "string",
+                value: "x.x.x.x.x.x...x.x.x...x.x.x...x.x...."
             },
             {
-            	name: "Μ61 lugs (61)",
-            	type: "string",
-            	value: ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx..."
+                name: "Μ61 lugs (61)",
+                type: "string",
+                value: ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx..."
             },
             {
-            	name: "Χ1 lugs (41)",
-            	type: "string",
-            	value: ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx.."
+                name: "Χ1 lugs (41)",
+                type: "string",
+                value: ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx.."
             },
             {
-            	name: "Χ2 lugs (31)",
-            	type: "string",
-            	value: "x..xxx...x.xxxx..xx..x..xx.xx.."
+                name: "Χ2 lugs (31)",
+                type: "string",
+                value: "x..xxx...x.xxxx..xx..x..xx.xx.."
             },
             {
-            	name: "Χ3 lugs (29)",
-            	type: "string",
-            	value: "..xx..x.xxx...xx...xx..xx.xx."
+                name: "Χ3 lugs (29)",
+                type: "string",
+                value: "..xx..x.xxx...xx...xx..xx.xx."
             },
             {
-            	name: "Χ4 lugs (26)",
-            	type: "string",
-            	value: "xx..x..xxxx..xx.xxx....x.."
+                name: "Χ4 lugs (26)",
+                type: "string",
+                value: "xx..x..xxxx..xx.xxx....x.."
             },
             {
-            	name: "Χ5 lugs (23)",
-            	type: "string",
-            	value: "xx..xx....xxxx.x..x.x.."
+                name: "Χ5 lugs (23)",
+                type: "string",
+                value: "xx..xx....xxxx.x..x.x.."
             }
         ];
     }
@@ -222,330 +222,325 @@ class Lorenz extends Operation {
      * @returns {string}
      */
     run(input, args) {
-        
+
         const model = args[0],
-        	pattern = args[1],
-        	kt = args[2],
-        	mode = args[3],        	
-        	format = args[6];
-
-        var	intype = args[4],
-        	outtype = args[5],
-        	s1 = args[7],
-        	s2 = args[8],
-        	s3 = args[9],
-        	s4 = args[10],
-        	s5 = args[11],
-        	m37 = args[12],
-        	m61 = args[13],
-			x1 = args[14],
-        	x2 = args[15],
-        	x3 = args[16],
-        	x4 = args[17],
-        	x5 = args[18],
-        	lugs1 = args[19],
-        	lugs2 = args[20],
-        	lugs3 = args[21],
-        	lugs4 = args[22],
-        	lugs5 = args[23],
-        	lugm37 = args[24],
-        	lugm61 = args[25],
-        	lugx1 = args[26],
-        	lugx2 = args[27],
-        	lugx3 = args[28],
-        	lugx4 = args[29],
-        	lugx5 = args[30],
-        	figShifted = false;
+            pattern = args[1],
+            kt = args[2],
+            mode = args[3],
+            format = args[6];
+
+        let intype = args[4],
+            outtype = args[5],
+            s1 = args[7],
+            s2 = args[8],
+            s3 = args[9],
+            s4 = args[10],
+            s5 = args[11],
+            m37 = args[12],
+            m61 = args[13],
+            x1 = args[14],
+            x2 = args[15],
+            x3 = args[16],
+            x4 = args[17],
+            x5 = args[18],
+            lugs1 = args[19],
+            lugs2 = args[20],
+            lugs3 = args[21],
+            lugs4 = args[22],
+            lugs5 = args[23],
+            lugm37 = args[24],
+            lugm61 = args[25],
+            lugx1 = args[26],
+            lugx2 = args[27],
+            lugx3 = args[28],
+            lugx4 = args[29],
+            lugx5 = args[30],
+            figShifted = false;
 
         this.reverseTable();
- 		
- 		if (s1<1 || s1>43) throw new OperationError("Ψ1 start must be between 1 and 43");
- 		if (s2<1 || s2>47) throw new OperationError("Ψ2 start must be between 1 and 47");
- 		if (s3<1 || s3>51) throw new OperationError("Ψ3 start must be between 1 and 51");
- 		if (s4<1 || s4>53) throw new OperationError("Ψ4 start must be between 1 and 53");
- 		if (s5<1 || s5>59) throw new OperationError("Ψ5 start must be between 1 and 59");
- 		if (m37<1 || m37>37) throw new OperationError("Μ37 start must be between 1 and 37");
- 		if (m61<1 || m61>61) throw new OperationError("Μ61 start must be between 1 and 61");
- 		if (x1<1 || x1>41) throw new OperationError("Χ1 start must be between 1 and 41");
- 		if (x2<1 || x2>31) throw new OperationError("Χ2 start must be between 1 and 31");
- 		if (x3<1 || x3>29) throw new OperationError("Χ3 start must be between 1 and 29");
- 		if (x4<1 || x4>26) throw new OperationError("Χ4 start must be between 1 and 26");
- 		if (x5<1 || x5>23) throw new OperationError("Χ5 start must be between 1 and 23");
+
+        if (s1<1 || s1>43) throw new OperationError("Ψ1 start must be between 1 and 43");
+        if (s2<1 || s2>47) throw new OperationError("Ψ2 start must be between 1 and 47");
+        if (s3<1 || s3>51) throw new OperationError("Ψ3 start must be between 1 and 51");
+        if (s4<1 || s4>53) throw new OperationError("Ψ4 start must be between 1 and 53");
+        if (s5<1 || s5>59) throw new OperationError("Ψ5 start must be between 1 and 59");
+        if (m37<1 || m37>37) throw new OperationError("Μ37 start must be between 1 and 37");
+        if (m61<1 || m61>61) throw new OperationError("Μ61 start must be between 1 and 61");
+        if (x1<1 || x1>41) throw new OperationError("Χ1 start must be between 1 and 41");
+        if (x2<1 || x2>31) throw new OperationError("Χ2 start must be between 1 and 31");
+        if (x3<1 || x3>29) throw new OperationError("Χ3 start must be between 1 and 29");
+        if (x4<1 || x4>26) throw new OperationError("Χ4 start must be between 1 and 26");
+        if (x5<1 || x5>23) throw new OperationError("Χ5 start must be between 1 and 23");
 
         // Initialise chosen wheel pattern
-        if(pattern=="Custom") {
-        	var re = new RegExp("^[\.xX]*$");
-        	if (lugs1.length != 43 || !re.test(lugs1) ) throw new OperationError("Ψ1 custom lugs must be 43 long and can only include . or x ");
-        	if (lugs2.length != 47 || !re.test(lugs2) ) throw new OperationError("Ψ2 custom lugs must be 47 long and can only include . or x");
-        	if (lugs3.length != 51 || !re.test(lugs3) ) throw new OperationError("Ψ3 custom lugs must be 51 long and can only include . or x");
-        	if (lugs4.length != 53 || !re.test(lugs4) ) throw new OperationError("Ψ4 custom lugs must be 53 long and can only include . or x");
-        	if (lugs5.length != 59 || !re.test(lugs5) ) throw new OperationError("Ψ5 custom lugs must be 59 long and can only include . or x");
-        	if (lugm37.length != 37 || !re.test(lugm37) ) throw new OperationError("M37 custom lugs must be 37 long and can only include . or x");
-        	if (lugm61.length != 61 || !re.test(lugm61) ) throw new OperationError("M61 custom lugs must be 61 long and can only include . or x");
-        	if (lugx1.length != 41 || !re.test(lugx1) ) throw new OperationError("Χ1 custom lugs must be 41 long and can only include . or x");
-        	if (lugx2.length != 31 || !re.test(lugx2) ) throw new OperationError("Χ2 custom lugs must be 31 long and can only include . or x");
-        	if (lugx3.length != 29 || !re.test(lugx3) ) throw new OperationError("Χ3 custom lugs must be 29 long and can only include . or x");
-        	if (lugx4.length != 26 || !re.test(lugx4) ) throw new OperationError("Χ4 custom lugs must be 26 long and can only include . or x");
-        	if (lugx5.length != 23 || !re.test(lugx5) ) throw new OperationError("Χ5 custom lugs must be 23 long and can only include . or x");
-        	var chosenSetting = INIT_PATTERNS["No Pattern"];
-        	chosenSetting["S"][1] = this.readLugs(lugs1);
-        	chosenSetting["S"][2] = this.readLugs(lugs2);
-        	chosenSetting["S"][3] = this.readLugs(lugs3);
-        	chosenSetting["S"][4] = this.readLugs(lugs4);
-        	chosenSetting["S"][5] = this.readLugs(lugs5);
-        	chosenSetting["M"][1] = this.readLugs(lugm37);
-        	chosenSetting["M"][2] = this.readLugs(lugm61);
-        	chosenSetting["X"][1] = this.readLugs(lugx1);
-        	chosenSetting["X"][2] = this.readLugs(lugx2);
-        	chosenSetting["X"][3] = this.readLugs(lugx3);
-        	chosenSetting["X"][4] = this.readLugs(lugx4);
-        	chosenSetting["X"][5] = this.readLugs(lugx5);
+        let chosenSetting = '';
+        if (pattern === "Custom") {
+            let re = new RegExp("^[.xX]*$");
+            if (lugs1.length !== 43 || !re.test(lugs1)) throw new OperationError("Ψ1 custom lugs must be 43 long and can only include . or x ");
+            if (lugs2.length !== 47 || !re.test(lugs2)) throw new OperationError("Ψ2 custom lugs must be 47 long and can only include . or x");
+            if (lugs3.length !== 51 || !re.test(lugs3)) throw new OperationError("Ψ3 custom lugs must be 51 long and can only include . or x");
+            if (lugs4.length !== 53 || !re.test(lugs4)) throw new OperationError("Ψ4 custom lugs must be 53 long and can only include . or x");
+            if (lugs5.length !== 59 || !re.test(lugs5)) throw new OperationError("Ψ5 custom lugs must be 59 long and can only include . or x");
+            if (lugm37.length !== 37 || !re.test(lugm37)) throw new OperationError("M37 custom lugs must be 37 long and can only include . or x");
+            if (lugm61.length !== 61 || !re.test(lugm61)) throw new OperationError("M61 custom lugs must be 61 long and can only include . or x");
+            if (lugx1.length !== 41 || !re.test(lugx1)) throw new OperationError("Χ1 custom lugs must be 41 long and can only include . or x");
+            if (lugx2.length !== 31 || !re.test(lugx2)) throw new OperationError("Χ2 custom lugs must be 31 long and can only include . or x");
+            if (lugx3.length !== 29 || !re.test(lugx3)) throw new OperationError("Χ3 custom lugs must be 29 long and can only include . or x");
+            if (lugx4.length !== 26 || !re.test(lugx4)) throw new OperationError("Χ4 custom lugs must be 26 long and can only include . or x");
+            if (lugx5.length !== 23 || !re.test(lugx5)) throw new OperationError("Χ5 custom lugs must be 23 long and can only include . or x");
+            chosenSetting = INIT_PATTERNS["No Pattern"];
+            chosenSetting.S[1] = this.readLugs(lugs1);
+            chosenSetting.S[2] = this.readLugs(lugs2);
+            chosenSetting.S[3] = this.readLugs(lugs3);
+            chosenSetting.S[4] = this.readLugs(lugs4);
+            chosenSetting.S[5] = this.readLugs(lugs5);
+            chosenSetting.M[1] = this.readLugs(lugm37);
+            chosenSetting.M[2] = this.readLugs(lugm61);
+            chosenSetting.X[1] = this.readLugs(lugx1);
+            chosenSetting.X[2] = this.readLugs(lugx2);
+            chosenSetting.X[3] = this.readLugs(lugx3);
+            chosenSetting.X[4] = this.readLugs(lugx4);
+            chosenSetting.X[5] = this.readLugs(lugx5);
         } else {
-        	var chosenSetting = INIT_PATTERNS[pattern];
+            chosenSetting = INIT_PATTERNS[pattern];
         }
-        var chiSettings = chosenSetting["X"]; // Pin settings for Chi links (X)
-        var psiSettings = chosenSetting["S"]; // Pin settings for Psi links (S)
-        var muSettings = chosenSetting["M"]; // Pin settings for Motor links (M)
-
-        var ita2 = "";
-        if(mode == "Send") {
-
-	        // Convert input text to ITA2 (including figure/letter shifts)
-	        ita2 = Array.prototype.map.call(input, function(character) {
-	        	var letter = character.toUpperCase();
-	            
-	        	if(intype == "Plaintext") {
-		            if (validChars.indexOf(letter) === -1) throw new OperationError("Invalid Plaintext character : "+letter);
-
-		            if( !figShifted && figShiftedChars.indexOf(letter) !== -1 ) {
-		            	// in letters mode and next char needs to be figure shifted
-		            	figShifted = true;
-		            	return "55" + figShiftArr[letter];
-		            } else if( figShifted ) {
-		            	// in figures mode and next char needs to be letter shifted
-		            	if(letter=="\n") return "34";
-                        if(letter=="\r") return "4";
-                        if( figShiftedChars.indexOf(letter) === -1 ) {
-			            	figShifted = false;
-			            	return "88" + letter;
-		            	} else {
-		            		return figShiftArr[letter];
-		            	}
-		            	
-		            } else {
-		            	if(letter=="\n") return "34";
-                        if(letter=="\r") return "4";
+        var chiSettings = chosenSetting.X; // Pin settings for Chi links (X)
+        var psiSettings = chosenSetting.S; // Pin settings for Psi links (S)
+        var muSettings = chosenSetting.M; // Pin settings for Motor links (M)
+
+        let ita2 = "";
+        if (mode === "Send") {
+
+            // Convert input text to ITA2 (including figure/letter shifts)
+            ita2 = Array.prototype.map.call(input, function(character) {
+                let letter = character.toUpperCase();
+                
+                if (intype === "Plaintext") {
+                    if (validChars.indexOf(letter) === -1) throw new OperationError("Invalid Plaintext character : "+letter);
+
+                    if(!figShifted && figShiftedChars.indexOf(letter) !== -1) {
+                        // in letters mode and next char needs to be figure shifted
+                        figShifted = true;
+                        return "55" + figShiftArr[letter];
+                    } else if (figShifted) {
+                        // in figures mode and next char needs to be letter shifted
+                        if (letter==="\n") return "34";
+                        if (letter==="\r") return "4";
+                        if (figShiftedChars.indexOf(letter) === -1) {
+                            figShifted = false;
+                            return "88" + letter;
+                        } else {
+                            return figShiftArr[letter];
+                        }
+
+                    } else {
+                        if (letter==="\n") return "34";
+                        if (letter==="\r") return "4";
                         return letter;
-		            }
+                    }
 
-	        	} else {
+                } else {
 
-	        		if (validITA2.indexOf(letter) === -1) {
-                        var errltr = letter;
-                        if(errltr=="\n") errltr = "Carriage Return";
-                        if(errltr==" ") errltr = "Space";
+                    if (validITA2.indexOf(letter) === -1) {
+                        let errltr = letter;
+                        if (errltr==="\n") errltr = "Carriage Return";
+                        if (errltr===" ") errltr = "Space";
                         throw new OperationError("Invalid ITA2 character : "+errltr);
-	        		}
-	        		return letter;
+                    }
+                    return letter;
 
-	        	}
+                }
 
-	        });
+            });
 
         } else {
 
-        	// Receive input should always be ITA2
-	        ita2 = Array.prototype.map.call(input, function(character) {
-	        	var letter = character.toUpperCase();
-	        	if (validITA2.indexOf(letter) === -1) {
+            // Receive input should always be ITA2
+            ita2 = Array.prototype.map.call(input, function(character) {
+                let letter = character.toUpperCase();
+                if (validITA2.indexOf(letter) === -1) {
                     var errltr = letter;
-                    if(errltr=="\n") errltr = "Carriage Return";
-                    if(errltr==" ") errltr = "Space";
+                    if  (errltr==="\n") errltr = "Carriage Return";
+                    if(errltr===" ") errltr = "Space";
                     throw new OperationError("Invalid ITA2 character : "+errltr);
                 }
-	        	return letter;
-	        });
+                return letter;
+            });
 
         }
 
         const ita2Input = ita2.join("");
 
-        var thisPsi = [];
-        var thisChi = [];
-        var thisMu = [];
-        var m61lug = muSettings[1][m61-1];
-        var m37lug = muSettings[2][m37-1];
-		var p5 = [0,0,0];
+        let thisPsi = [];
+        let thisChi = [];
+        let m61lug = muSettings[1][m61-1];
+        let m37lug = muSettings[2][m37-1];
+        let p5 = [0,0,0];
 
         const self = this;
         const letters = Array.prototype.map.call(ita2Input, function(character) {
             const letter = character.toUpperCase();
 
-            var x2bptr = x2+1;
-    		if(x2bptr==32) x2bptr=1;
-    		var s1bptr = s1+1;
-    		if(s1bptr==44) s1bptr=1;
+            let x2bptr = x2+1;
+            if (x2bptr===32) x2bptr=1;
+            let s1bptr = s1+1;
+            if (s1bptr===44) s1bptr=1;
 
             thisChi = [
-				chiSettings[1][x1-1],
-				chiSettings[2][x2-1],
-				chiSettings[3][x3-1],
-				chiSettings[4][x4-1],
-				chiSettings[5][x5-1]
-			];
-
-			thisPsi = [
-				psiSettings[1][s1-1],
-				psiSettings[2][s2-1],
-				psiSettings[3][s3-1],
-				psiSettings[4][s4-1],
-				psiSettings[5][s5-1]
-			];
-
-			thisMu = [
-				muSettings[1][m61-1],
-				muSettings[2][m37-1]
-			];
+                chiSettings[1][x1-1], 
+                chiSettings[2][x2-1], 
+                chiSettings[3][x3-1], 
+                chiSettings[4][x4-1], 
+                chiSettings[5][x5-1]
+            ];
+
+            thisPsi = [
+                psiSettings[1][s1-1], 
+                psiSettings[2][s2-1], 
+                psiSettings[3][s3-1], 
+                psiSettings[4][s4-1], 
+                psiSettings[5][s5-1]
+            ];
 
             if (typeof ITA2_TABLE[letter] == "undefined") {
                 return "";
             }
 
-            var xorSum = [];
+            let xorSum = [];
             for(var i=0;i<=4;i++) {
                 xorSum[i] = ITA2_TABLE[letter][i] ^ thisPsi[i] ^ thisChi[i];
             }
             const resultStr = xorSum.join("");
 
             // Move Chi wheels one back after each letter
-            if(--x1 < 1) x1 = 41;
-            if(--x2 < 1) x2 = 31;
-            if(--x3 < 1) x3 = 29;
-            if(--x4 < 1) x4 = 26;
-            if(--x5 < 1) x5 = 23;
+            if (--x1 < 1) x1 = 41;
+            if (--x2 < 1) x2 = 31;
+            if (--x3 < 1) x3 = 29;
+            if (--x4 < 1) x4 = 26;
+            if (--x5 < 1) x5 = 23;
 
             // Motor wheel (61 pin) also moves one each letter
-            if(--m61 < 1) m61 = 61;
+            if (--m61 < 1) m61 = 61;
 
             // If M61 is set, we also move M37
-            if(m61lug == 1) {
-				if(--m37 < 1) m37 = 37;            	
+            if (m61lug === 1) {
+                if (--m37 < 1) m37 = 37;
             }
 
-            var basicmotor = m37lug;
-    		var totalmotor = basicmotor;
-    		var lim = 0;
+            let basicmotor = m37lug;
+            let totalmotor = basicmotor;
+            let lim = 0;
 
             p5[2] = p5[1];
             p5[1] = p5[0];
-            if(mode=="Send") {
+            if (mode==="Send") {
                 p5[0] = ITA2_TABLE[letter][4];
             } else {
                 p5[0] = xorSum[4];
             }
 
-		    // Limitations here
-			if(model=='SZ42a') {
-		    	// Chi 2 one back lim - The active character of chi 2 (2nd Chi wheel) in the previous position
-		    	lim = chiSettings[2][x2bptr-1];       	
-		    	if(kt) {
-                    if(lim==p5[2]) { lim = 0; } else { lim=1; } //p5 back 2
-		    	}
+            // Limitations here
+            if (model==='SZ42a') {
+                // Chi 2 one back lim - The active character of chi 2 (2nd Chi wheel) in the previous position
+                lim = chiSettings[2][x2bptr-1];
+                if(kt) {
+                    if (lim===p5[2]) { lim = 0; } else { lim=1; } //p5 back 2
+                }
                 
-		    	// If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move]
-		    	if(basicmotor==0 && lim==1) {
-		    		totalmotor = 0;
-		    	} else {
-		    		totalmotor = 1;
-		    	} 
-
-		    } else if(model=='SZ42b') {
-		    	// Chi 2 one back + Psi 1 one back.
-		    	const x2b1lug = chiSettings[2][x2bptr-1];
-		    	const s1b1lug = psiSettings[1][s1bptr-1];
-		    	lim = 1;
-		    	if(x2b1lug==s1b1lug) lim=0;
-		    	if(kt) {
-		    		if(lim==p5[2]) { lim=0; } else { lim=1; } //p5 back 2	
-		    	}
-		    	// If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move]
-		    	if(basicmotor==0 && lim==1) {
-		    		totalmotor = 0;
-		    	} else {
-		    		totalmotor = 1;
-		    	}
-
-    		} else if(model=="SZ40") {
-    			// SZ40
-	    		totalmotor = basicmotor;
-    		} else {
-    			throw new OperationError("Lorenz model type not recognised");
-    		}
-
-    		// increment Psi wheels when current totalmotor active
-    		if(totalmotor == 1) {
-	            if(--s1 < 1) s1 = 43;
-	            if(--s2 < 1) s2 = 47;
-	            if(--s3 < 1) s3 = 51;
-	            if(--s4 < 1) s4 = 53;
-	            if(--s5 < 1) s5 = 59;
-    		}
+                // If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move]
+                if (basicmotor===0 && lim===1) {
+                    totalmotor = 0;
+                } else {
+                    totalmotor = 1;
+                } 
+
+            } else if(model=='SZ42b') {
+                // Chi 2 one back + Psi 1 one back.
+                const x2b1lug = chiSettings[2][x2bptr-1];
+                const s1b1lug = psiSettings[1][s1bptr-1];
+                lim = 1;
+                if (x2b1lug===s1b1lug) lim=0;
+                if(kt) {
+                    if (lim===p5[2]) { lim=0; } else { lim=1; } //p5 back 2   
+                }
+                // If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move]
+                if (basicmotor===0 && lim===1) {
+                    totalmotor = 0;
+                } else {
+                    totalmotor = 1;
+                }
+
+            } else if (model==="SZ40") {
+                // SZ40
+                totalmotor = basicmotor;
+            } else {
+                throw new OperationError("Lorenz model type not recognised");
+            }
+
+            // increment Psi wheels when current totalmotor active
+            if (totalmotor === 1) {
+                if(--s1 < 1) s1 = 43;
+                if(--s2 < 1) s2 = 47;
+                if(--s3 < 1) s3 = 51;
+                if(--s4 < 1) s4 = 53;
+                if(--s5 < 1) s5 = 59;
+            }
 
             m61lug = muSettings[1][m61-1];
             m37lug = muSettings[2][m37-1];
 
-	  		var rtnstr = self.REVERSE_ITA2_TABLE[resultStr];
-            if(format=="5/8/9") {
-            	if(rtnstr=="+") rtnstr="5";
-            	if(rtnstr=="-") rtnstr="8";
-            	if(rtnstr==".") rtnstr="9";
+            let rtnstr = self.REVERSE_ITA2_TABLE[resultStr];
+            if (format==="5/8/9") {
+                if (rtnstr==="+") rtnstr="5";
+                if (rtnstr==="-") rtnstr="8";
+                if (rtnstr===".") rtnstr="9";
             }
             return rtnstr;
         });
 
-        var ita2output = letters.join("");
-        var output = "";
-
-        if(mode == "Receive") {
+        let ita2output = letters.join("");
+        let output = "";
 
-        	figShifted = false;
+        if (mode === "Receive") {
 
-	        // Convert output ITA2 to plaintext (including figure/letter shifts)
-	        const out = Array.prototype.map.call(ita2output, function(letter) {
-	            
-	        	if(outtype == "Plaintext") {
+            figShifted = false;
 
-	        		if( letter == "5" || letter == "+" ) {
-	        			figShifted = true;
-	        			return;
-	        		} else if( letter == "8" || letter == "-" ) {
-	        			figShifted = false;
-	        			return;
-	        		} else if( letter == "9" ) {
-	        			return " ";
-	        		} else if( letter == "3" ) {
+            // Convert output ITA2 to plaintext (including figure/letter shifts)
+            const out = Array.prototype.map.call(ita2output, function(letter) {
+                
+                if (outtype === "Plaintext") {
+
+                    if (letter === "5" || letter === "+") {
+                        figShifted = true;
+                        return;
+                    } else if (letter === "8" || letter === "-") {
+                        figShifted = false;
+                        return;
+                    } else if (letter === "9") {
+                        return " ";
+                    } else if (letter === "3") {
                         return "\n";
-                    } else if( letter == "4" ) {
+                    } else if (letter === "4") {
                         return "";
                     }
 
 
-	        		if(figShifted) {
-	        			return self.REVERSE_FIGSHIFT_TABLE[letter];
-	        		} else {
-	        			return letter;
-	        		}
+                    if (figShifted) {
+                        return self.REVERSE_FIGSHIFT_TABLE[letter];
+                    } else {
+                        return letter;
+                    }
 
-	        	} else {        		
-	        		return letter;
-	        	}
+                } else {                
+                    return letter;
+                }
 
-	        });
-	        output = out.join("");
+            });
+            output = out.join("");
 
-       	} else {
-       		output = ita2output;
-       	}
+        } else {
+            output = ita2output;
+        }
 
         return output;
 
@@ -563,20 +558,20 @@ class Lorenz extends Operation {
             this.REVERSE_ITA2_TABLE[code] = letter;
         }
         for (const letter in figShiftArr) {
-        	const ltr = figShiftArr[letter];
-        	this.REVERSE_FIGSHIFT_TABLE[ltr] = letter;
+            const ltr = figShiftArr[letter];
+            this.REVERSE_FIGSHIFT_TABLE[ltr] = letter;
         }
     }
 
     readLugs(lugstr) {
-    	var arr = Array.prototype.map.call(lugstr, function(lug) {
-    		if(lug==".") {
-    			return 0;
-    		} else {
-    			return 1;
-    		} 
-    	});
-    	return arr;
+        let arr = Array.prototype.map.call(lugstr, function(lug) {
+            if(lug==".") {
+                return 0;
+            } else {
+                return 1;
+            } 
+        });
+        return arr;
     }
 
 }
@@ -625,118 +620,118 @@ const validITA2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ34589+-./";
 const figShiftedChars = "1234567890+-'()/:=?,."
 
 const figShiftArr = {
-  "1" : "Q",
-  "2" : "W",
-  "3" : "E",
-  "4" : "R",
-  "5" : "T",
-  "6" : "Y",
-  "7" : "U",
-  "8" : "I",
-  "9" : "O",
-  "0" : "P",
-  " " : "9",
-  "-" : "A",
-  "?" : "B",
-  ":" : "C",
-  "#" : "D",
-  "%" : "F",
-  "@" : "G",
-  "£" : "H",
-  "(" : "K",
-  ")" : "L",
-  "." : "M",
-  "," : "N",
-  "'" : "S",
-  "=" : "V",
-  "/" : "X",
-  "+" : "Z",
-  "\n" : "3",
-  "\r" : "4"
+  "1": "Q", 
+  "2": "W", 
+  "3": "E", 
+  "4": "R", 
+  "5": "T", 
+  "6": "Y", 
+  "7": "U", 
+  "8": "I", 
+  "9": "O", 
+  "0": "P", 
+  " ": "9", 
+  "-": "A", 
+  "?": "B", 
+  ":": "C", 
+  "#": "D", 
+  "%": "F", 
+  "@": "G", 
+  "£": "H", 
+  "(": "K", 
+  ")": "L", 
+  ".": "M", 
+  ",": "N", 
+  "'": "S", 
+  "=": "V", 
+  "/": "X", 
+  "+": "Z", 
+  "\n": "3", 
+  "\r": "4"
 };
 
 const INIT_PATTERNS = {
-    "No Pattern" : {
-        "X" : {
-            1 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
-            2 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
-            3 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
-            4 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
-            5 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
-        },
-        "S" : {
-            1 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
-            2 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
-            3 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
-            4 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
-            5 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
-        },
-        "M" : {
-            1 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
-            2 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
+    "No Pattern": {
+        "X": {
+            1: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
+            2: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
+            3: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
+            4: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
+            5: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
+        }, 
+        "S": {
+            1: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
+            2: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
+            3: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
+            4: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
+            5: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
+        }, 
+        "M": {
+            1: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
+            2: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
         }
 
     },
-    "KH Pattern" : {
-        "X" : {
-            1 : [0,1,0,0,0,1,1,1,0,1,0,1,1,1,1,0,1,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,1,1,0,1,1,1,1,0,0],
-            2 : [1,0,0,1,1,1,0,0,0,1,0,1,1,1,1,0,0,1,1,0,0,1,0,0,1,1,0,1,1,0,0],
-            3 : [0,0,1,1,0,0,1,0,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0],
-            4 : [1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,0,0,0,0,1,0,0],
-            5 : [1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,1,0,0,1,0,1,0,0]
-        },
-        "S" : {
-            1 : [0,1,0,0,0,1,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,1,0,1],
-            2 : [0,1,1,0,1,0,1,1,1,0,0,1,0,1,0,1,0,0,1,0,1,1,0,1,0,1,1,1,0,1,0,0,0,0,1,0,1,1,0,1,0,1,0,1,0,0,1],
-            3 : [0,1,0,1,0,1,0,0,1,1,1,0,0,0,0,1,0,1,0,1,1,0,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,0,1,0,1,0,1],
-            4 : [0,1,1,0,0,0,1,1,1,1,1,0,1,0,1,0,1,1,0,0,0,1,0,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0],
-            5 : [1,1,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,1,1,1,0,1,0,1,0,0,0,1,1,0,1,0,0,1,0]
-        },
+    "KH Pattern": {
+        "X": {
+            1: [0,1,0,0,0,1,1,1,0,1,0,1,1,1,1,0,1,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,1,1,0,1,1,1,1,0,0], 
+            2: [1,0,0,1,1,1,0,0,0,1,0,1,1,1,1,0,0,1,1,0,0,1,0,0,1,1,0,1,1,0,0], 
+            3: [0,0,1,1,0,0,1,0,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0], 
+            4: [1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,0,0,0,0,1,0,0], 
+            5: [1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,1,0,0,1,0,1,0,0]
+        }, 
+        "S": {
+            1: [0,1,0,0,0,1,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,1,0,1], 
+            2: [0,1,1,0,1,0,1,1,1,0,0,1,0,1,0,1,0,0,1,0,1,1,0,1,0,1,1,1,0,1,0,0,0,0,1,0,1,1,0,1,0,1,0,1,0,0,1], 
+            3: [0,1,0,1,0,1,0,0,1,1,1,0,0,0,0,1,0,1,0,1,1,0,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,0,1,0,1,0,1], 
+            4: [0,1,1,0,0,0,1,1,1,1,1,0,1,0,1,0,1,1,0,0,0,1,0,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0], 
+            5: [1,1,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,1,1,1,0,1,0,1,0,0,0,1,1,0,1,0,0,1,0]
+        }, 
         "M":  {
-            1 : [0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,0],
-            2 : [1,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,0,0,0]
+            1: [0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,0], 
+            2: [1,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,0,0,0]
         }
     },
-    "ZMUG Pattern" :  {
-        "X" : {
-            1 : [0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,0],
-            2 : [1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,0,0,0,1,1,0,0,1,1,0,0,0],
-            3 : [0,0,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,0,0,0,1,1,0,1,1,1,1,0],
-            4 : [1,0,1,0,1,0,0,1,1,0,0,0,1,1,0,0,1,0,1,1,1,0,0,1,0,1],
-            5 : [0,1,0,0,1,1,1,1,0,0,0,1,0,1,1,1,0,0,0,0,1,0,1],
-        },
-        "S" : {
-            1 : [1,1,0,1,0,0,1,1,0,0,0,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,0],
-            2 : [0,0,0,1,0,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,1,1],
-            3 : [0,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0,1,0,0,0,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,1,1],
-            4 : [0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,1,0,0,0,1,0,0,0,1,1,0,0,1,1,1,0,0,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,0,1],
-            5 : [1,0,0,1,1,1,0,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,0,0,0,1,1,0]
-        },
-        "M" : {
-            1 : [1,0,1,1,0,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,1],
-            2 : [0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1]
+    "ZMUG Pattern":  {
+        "X": {
+            1: [0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,0], 
+            2: [1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,0,0,0,1,1,0,0,1,1,0,0,0], 
+            3: [0,0,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,0,0,0,1,1,0,1,1,1,1,0], 
+            4: [1,0,1,0,1,0,0,1,1,0,0,0,1,1,0,0,1,0,1,1,1,0,0,1,0,1], 
+            5: [0,1,0,0,1,1,1,1,0,0,0,1,0,1,1,1,0,0,0,0,1,0,1]
+        }, 
+        "S": {
+            1: [1,1,0,1,0,0,1,1,0,0,0,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,0], 
+            2: [0,0,0,1,0,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,1,1], 
+            3: [0,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0,1,0,0,0,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,1,1], 
+            4: [0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,1,0,0,0,1,0,0,0,1,1,0,0,1,1,1,0,0,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,0,1], 
+            5: [1,0,0,1,1,1,0,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,0,0,0,1,1,0]
+        }, 
+        "M": {
+            1: [1,0,1,1,0,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,1], 
+            2: [0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1]
         }
     },
-    "BREAM Pattern" : {
-        "X" : {
-            1 : [0,1,1,1,1,0,1,0,1,1,0,1,0,1,1,0,0,1,0,0,1,1,0,1,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0],
-            2 : [0,1,1,1,0,0,0,0,1,0,0,0,1,1,0,1,0,1,0,0,0,1,1,0,1,1,1,0,0,1,1],
-            3 : [1,1,0,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,0,0,1,1,0,1,1,1,0,0],
-            4 : [1,1,1,1,0,0,1,0,0,1,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0,0],
-            5 : [0,1,1,1,0,1,1,1,0,0,0,1,0,0,1,1,0,1,0,0,0,1,0]
-        },
-        "S" : {
-            1 : [0,0,0,1,1,1,0,0,1,1,1,0,1,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,0],
-            2 : [1,1,0,1,0,0,1,1,1,0,0,0,0,0,1,1,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,0],
-            3 : [1,0,0,1,0,0,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,0,1,0,1,0,1,1,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1],
-            4 : [0,1,0,0,0,0,1,0,0,1,0,1,1,1,1,1,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,0,1],
-            5 : [1,0,1,0,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,0,0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,1,1,1,0,0,1,0,1,0,0,0,1,1,0,1,0,1,0,1,0,1,0]
-        },
-        "M" : {
-            1 : [1,0,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,1,1,0,0,0,0,1,1,0,0,0,1,1,0,1,1,0,1,0,1,1,1,1,0,0,0,1,1,0,0,1,1,0,0,1,1,0,1,0,1,1,1],
-            2 : [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,1,1,0,1]
+    "BREAM Pattern": {
+        "X": {
+            1: [0,1,1,1,1,0,1,0,1,1,0,1,0,1,1,0,0,1,0,0,1,1,0,1,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0], 
+            2: [0,1,1,1,0,0,0,0,1,0,0,0,1,1,0,1,0,1,0,0,0,1,1,0,1,1,1,0,0,1,1], 
+            3: [1,1,0,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,0,0,1,1,0,1,1,1,0,0], 
+            4: [1,1,1,1,0,0,1,0,0,1,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0,0], 
+            5: [0,1,1,1,0,1,1,1,0,0,0,1,0,0,1,1,0,1,0,0,0,1,0]
+        }, 
+        "S": {
+            1: [0,0,0,1,1,1,0,0,1,1,1,0,1,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,0], 
+            2: [1,1,0,1,0,0,1,1,1,0,0,0,0,0,1,1,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,0], 
+            3: [1,0,0,1,0,0,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,0,1,0,1,0,1,1,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1], 
+            4: [0,1,0,0,0,0,1,0,0,1,0,1,1,1,1,1,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,0,1], 
+            5: [1,0,1,0,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,0,0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,1,1,1,0,0,1,0,1,0,0,0,1,1,0,1,0,1,0,1,0,1,0]
+        }, 
+        "M": {
+            1: [1,0,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,1,1,0,0,0,0,1,1,0,0,0,1,1,0,1,1,0,1,0,1,1,1,1,0,0,0,1,1,0,0,1,1,0,0,1,1,0,1,0,1,1,1], 
+            2: [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,1,1,0,1]
         }
     }
 };
 
-export default Lorenz;
+export default Lorenz;