Added public files

Roughly added all public files. Probably missed some, though.
diff --git "a/doc/efun/\133\135" "b/doc/efun/\133\135"
new file mode 100644
index 0000000..a59696a
--- /dev/null
+++ "b/doc/efun/\133\135"
@@ -0,0 +1,66 @@
+SYNOPSIS
+        mixed  arr[index];
+        int    str[index];
+
+        *mixed arr[from .. to];
+        string str[from .. to];
+
+BESCHREIBUNG
+        Liefert ein Element aus einem Array oder String (erste Form), oder
+        eine Teilmenge (zweite Form).
+
+        Die Indizes <index>, <from> und <to> sind durchnummeriert von 0 bis
+        strlen(<str>)-1 bzw. sizeof(<arr>)-1. Wenn ein <index> als '<wert'
+        geschrieben wird, wird der Wert vom Ende des Stings / Arrays her
+        gezaehlt. Dabei wird nummeriert von 1 bis strlen(<str>) bzw.
+        sizeof(<arr>). Wird <from> weggelassen, beginnt die Teilmenge mit
+        dem ersten Element. Wird <to> weggelassen, endet die Teilmenge mit
+        dem letzten Element.
+
+        In der ersten Form muss <index> innerhalb der Grenzen des Strings /
+        Arrays sein, sonst wird ein Laufzeitfehler (RTE) verursacht. In der
+        zweiten Form werden die Indizes an die Groesse des Strings / Arrays
+        angepasst. Wenn <from> groesser ist als <to> oder beide ausserhalb
+        der Groesse des Strings / Arrays liegen, wird ein leerer String ""
+        bzw. ein leeres Array ({}) zurueck geliefert.
+
+        Die Notation als Closure ist entsprechend:
+
+            [index]      -> ({'#[,      arr, index })
+            [<index]     -> ({'#[<,     arr, index })
+            [from..to]   -> ({'#[..],   arr, from, to })
+            [<from..to]  -> ({'#[<..],  arr, from, to })
+            [from..<to]  -> ({'#[..<],  arr, from, to })
+            [<from..<to] -> ({'#[<..<], arr, from, to })
+
+BEISPIELE
+        foo = ({ 1, 2, 3, 4 });         str = "test";
+
+        foo[1]     -> 1                 str[1] -> 'e' == 101
+        foo[1..2]  -> ({ 2, 3 })        str[1..2]  -> "es"
+        foo[2..1]  -> ({ })             str[2..1]  -> ""
+        foo[0..<2] -> ({ 1, 2 })        str[0..<2]  -> "tes"
+
+        foo[..<2]  -> ({ 1, 2 })        str[..<2]  -> "tes"
+        foo[<3..]  -> ({ 2, 3, 4 })     str[<3..]  -> "est"
+
+        foo[1] = 5                      -> foo == ({ 1, 5, 3, 4 })
+        foo[1..2] = ({ 5, 6, 7 })       -> foo == ({ 1, 5, 6, 7, 4 })
+        foo[1..2] = ({ })               -> foo == ({ 1, 4 })
+
+        str[1] = 'a'                    -> str == "tast"
+        str[1..2] = "bar"               -> str == "tbart"
+        str[1..2] = ""                  -> str == "tt"
+
+AENDERUNGEN
+        slice_array() ist die alte Form der []-Operatoren fuer Arrays,
+        extract() ist die alte Form der []-Operatoren fuer Strings.
+        BEIDE VARIANTEN SIND VERALTET, WERDEN NICHT MEHR UNTERSTUETZT UND
+        SOLLTEN DESHALB NICHT MEHR VERWENDET WERDEN.
+
+        Die Syntax fuer 'rueckwaerts zaehlen vom letzten Element' hat sich von
+        Version 3.1.J zu 3.1.K geaendert von '-1' zu '<1'. Auch ist seit dann
+        foo[0..-1] ein leeres Array bzw. ein leerer String.
+
+SIEHE AUCH
+        member(E), sizeof(E), slice_array(E)