diff --git a/src/main/dig/lib/74xx/arithmetic/74181.dig b/src/main/dig/lib/74xx/arithmetic/74181.dig
index a262f768e..318a783b1 100644
--- a/src/main/dig/lib/74xx/arithmetic/74181.dig
+++ b/src/main/dig/lib/74xx/arithmetic/74181.dig
@@ -23,10 +23,6 @@
In
-
- rotation
-
-
Label
~B0
@@ -36,87 +32,56 @@
1
-
+
+
+
+ And
+
+
+
+
+ And
+
+
And
-
- rotation
-
-
-
-
-
-
- And
-
-
- rotation
-
-
-
-
-
-
- And
-
-
- rotation
-
-
Inputs
3
-
+
And
-
- rotation
-
-
Inputs
3
-
+
Not
-
-
- rotation
-
-
-
-
+
+
NOr
-
- rotation
-
-
Inputs
3
-
+
In
-
- rotation
-
-
Label
~A0
@@ -126,97 +91,61 @@
2
-
+
NOr
-
-
- rotation
-
-
-
-
+
+
+
+
+ And
+
+
+
+
+ And
+
+
And
-
- rotation
-
-
-
-
-
-
- And
-
-
- rotation
-
-
-
-
-
-
- And
-
-
- rotation
-
-
Inputs
3
-
+
And
-
- rotation
-
-
Inputs
3
-
+
NOr
-
- rotation
-
-
Inputs
3
-
+
NOr
-
-
- rotation
-
-
-
-
+
+
In
-
- rotation
-
-
Label
~A1
@@ -226,25 +155,16 @@
23
-
+
Not
-
-
- rotation
-
-
-
-
+
+
In
-
- rotation
-
-
Label
~B1
@@ -254,87 +174,56 @@
22
-
+
+
+
+ And
+
+
+
+
+ And
+
+
And
-
- rotation
-
-
-
-
-
-
- And
-
-
- rotation
-
-
-
-
-
-
- And
-
-
- rotation
-
-
Inputs
3
-
+
And
-
- rotation
-
-
Inputs
3
-
+
NOr
-
- rotation
-
-
Inputs
3
-
+
NOr
-
-
- rotation
-
-
-
-
+
+
In
-
- rotation
-
-
Label
~A2
@@ -344,25 +233,16 @@
21
-
+
Not
-
-
- rotation
-
-
-
-
+
+
In
-
- rotation
-
-
Label
~B2
@@ -372,87 +252,56 @@
20
-
+
+
+
+ And
+
+
+
+
+ And
+
+
And
-
- rotation
-
-
-
-
-
-
- And
-
-
- rotation
-
-
-
-
-
-
- And
-
-
- rotation
-
-
Inputs
3
-
+
And
-
- rotation
-
-
Inputs
3
-
+
NOr
-
- rotation
-
-
Inputs
3
-
+
NOr
-
-
- rotation
-
-
-
-
+
+
In
-
- rotation
-
-
Label
~A3
@@ -462,25 +311,16 @@
19
-
+
Not
-
-
- rotation
-
-
-
-
+
+
In
-
- rotation
-
-
Label
~B3
@@ -490,14 +330,14 @@
18
-
+
In
rotation
-
+
Label
@@ -508,14 +348,14 @@
6
-
+
In
rotation
-
+
Label
@@ -526,14 +366,14 @@
5
-
+
In
rotation
-
+
Label
@@ -544,14 +384,14 @@
4
-
+
In
rotation
-
+
Label
@@ -562,35 +402,21 @@
3
-
+
Not
-
-
- rotation
-
-
-
-
+
+
And
-
-
- rotation
-
-
-
-
+
+
In
-
- rotation
-
-
Label
Cn
@@ -600,15 +426,11 @@
7
-
+
In
-
- rotation
-
-
Label
M
@@ -618,151 +440,91 @@
8
-
+
+
+
+ And
+
+
And
-
- rotation
-
-
-
-
-
-
- And
-
-
- rotation
-
-
Inputs
3
-
+
XOr
-
-
- rotation
-
-
-
-
+
+
NOr
-
-
- rotation
-
-
-
-
+
+
XOr
-
-
- rotation
-
-
-
-
+
+
Not
-
-
- rotation
-
-
-
-
+
+
+
+
+ And
+
+
+
+
+ And
+
+
And
-
- rotation
-
-
-
-
-
-
- And
-
-
- rotation
-
-
-
-
-
-
- And
-
-
- rotation
-
-
Inputs
3
-
+
And
-
- rotation
-
-
Inputs
4
-
+
NOr
-
- rotation
-
-
Inputs
3
-
+
XOr
-
-
- rotation
-
-
-
-
+
+
Out
-
- rotation
-
-
Label
~F0
@@ -772,15 +534,11 @@
9
-
+
Out
-
- rotation
-
-
Label
~F1
@@ -790,29 +548,21 @@
10
-
+
And
-
- rotation
-
-
Inputs
4
-
+
Out
-
- rotation
-
-
Label
A=B
@@ -822,15 +572,11 @@
14
-
+
Out
-
- rotation
-
-
Label
~F2
@@ -840,111 +586,71 @@
11
-
+
+
+
+ And
+
+
And
-
- rotation
-
-
-
-
-
-
- And
-
-
- rotation
-
-
Inputs
3
-
+
And
-
- rotation
-
-
Inputs
4
-
+
And
-
- rotation
-
-
Inputs
5
-
+
NOr
-
- rotation
-
-
Inputs
4
-
+
Not
-
-
- rotation
-
-
-
-
+
+
And
-
-
- rotation
-
-
-
-
+
+
XOr
-
-
- rotation
-
-
-
-
+
+
Out
-
- rotation
-
-
Label
~F3
@@ -954,101 +660,66 @@
13
-
+
And
-
-
- rotation
-
-
-
-
+
+
Not
-
-
- rotation
-
-
-
-
+
+
And
-
- rotation
-
-
Inputs
4
-
+
And
-
- rotation
-
-
Inputs
3
-
+
And
-
-
- rotation
-
-
-
-
+
+
NAnd
-
- rotation
-
-
Inputs
4
-
+
NAnd
-
- rotation
-
-
Inputs
5
-
+
Out
-
- rotation
-
-
Label
~P
@@ -1058,15 +729,11 @@
15
-
+
Or
-
- rotation
-
-
inverterConfig
@@ -1075,29 +742,21 @@
-
+
NOr
-
- rotation
-
-
Inputs
4
-
+
Out
-
- rotation
-
-
Label
Cn+4
@@ -1107,15 +766,11 @@
16
-
+
Out
-
- rotation
-
-
Label
~G
@@ -1125,12 +780,12 @@
17
-
+
PowerSupply
-
+
In
@@ -1148,7 +803,7 @@
-
+
In
@@ -1162,27 +817,17 @@
12
-
+
NAnd
-
-
- rotation
-
-
-
-
+
+
Not
-
-
- rotation
-
-
-
-
+
+
Testcase
@@ -1203,7 +848,7 @@ repeat(16) 0 0 0 0 0 1 bits(4,n) X X X X bits(4,n)
-
+
Testcase
@@ -1226,7 +871,7 @@ end loop
-
+
Testcase
@@ -1249,7 +894,7 @@ end loop
-
+
Testcase
@@ -1269,7 +914,7 @@ end loop
-
+
Testcase
@@ -1293,7 +938,7 @@ end loop
-
+
Text
@@ -1308,7 +953,7 @@ end loop
(M=0, Cn=1)
-
+
Testcase
@@ -1331,7 +976,7 @@ end loop
-
+
Testcase
@@ -1355,7 +1000,7 @@ end loop
-
+
Testcase
@@ -1378,7 +1023,7 @@ end loop
-
+
Testcase
@@ -1401,7 +1046,7 @@ end loop
-
+
Testcase
@@ -1431,7 +1076,7 @@ end loop
-
+
Testcase
@@ -1453,7 +1098,7 @@ end loop
-
+
Testcase
@@ -1475,7 +1120,7 @@ end loop
-
+
Testcase
@@ -1495,7 +1140,7 @@ end loop
-
+
Testcase
@@ -1520,7 +1165,7 @@ end loop
-
+
Testcase
@@ -1546,7 +1191,7 @@ end loop
-
+
Testcase
@@ -1567,7 +1212,7 @@ end loop
-
+
Testcase
@@ -1588,7 +1233,7 @@ end loop
-
+
Testcase
@@ -1611,7 +1256,7 @@ end loop
-
+
Testcase
@@ -1634,7 +1279,7 @@ end loop
-
+
Testcase
@@ -1654,7 +1299,7 @@ end loop
-
+
Testcase
@@ -1677,7 +1322,7 @@ end loop
-
+
Text
@@ -1692,7 +1337,7 @@ end loop
(M=1)
-
+
Testcase
@@ -1715,7 +1360,7 @@ end loop
-
+
Testcase
@@ -1739,7 +1384,7 @@ end loop
-
+
Testcase
@@ -1762,7 +1407,7 @@ end loop
-
+
Testcase
@@ -1784,7 +1429,7 @@ end loop
-
+
Testcase
@@ -1807,7 +1452,7 @@ end loop
-
+
Testcase
@@ -1829,7 +1474,7 @@ end loop
-
+
Testcase
@@ -1851,7 +1496,7 @@ end loop
-
+
Testcase
@@ -1871,7 +1516,7 @@ end loop
-
+
Testcase
@@ -1896,7 +1541,7 @@ end loop
-
+
Testcase
@@ -1922,7 +1567,7 @@ end loop
-
+
Testcase
@@ -1943,1521 +1588,1429 @@ end loop
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+