Check-in [b199651992]
Not logged in
Overview
Comment:fossil download script update
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: b19965199207ed204575454f382833df7d26eb9b
User & Date: martin_vahi on 2016-08-16 05:02:15
Other Links: manifest | tags
Context
2016-08-16 05:15
fossil download script update 2 check-in: 9b836f32e2 user: martin_vahi tags: trunk
2016-08-16 05:02
fossil download script update check-in: b199651992 user: martin_vahi tags: trunk
2016-08-03 05:16
logo bitmap version bugfix check-in: 6f624639e6 user: martin_vahi tags: trunk
Changes
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

Deleted COMMENTS.txt version [fa3c2fb228].

     1         -
     2         -
     3         -The latest milestone releases of the Silktorrent 
     4         -are published as part of the mmmv_devel_tools 
     5         -
     6         -    http://technology.softf1.com/mmmv_devel_tools/
     7         -
     8         -

Deleted milestone_releases/2016_06_24_Silktorrent/README.md version [0143b10a32].

     1         -
     2         -#                            Silktorrent
     3         -
     4         ----------------------------------------------------------------------------
     5         -
     6         -The current version of the Silktorrent is 
     7         -**INCOMPLETE** and **VERY EXPERIMENTAL**. 
     8         -
     9         -Up to date Silktorrent documentation **MIGHT**
    10         -resides at [silktorrent.ch](http://www.silktorrent.ch).
    11         -
    12         -
    13         -The Silktorrent is meant to be a doomsday last resort network software
    14         -infrastructure that allows to create reliable information systems
    15         -that can withstand a situation, where Police/adversaries have
    16         -taken down literally all servers of the authors of the censored
    17         -files and, at the same time, have access to all of the encryption
    18         -keys of the authors of the censored files and, at the same time,
    19         -have taken down internet connections of the general public.
    20         -
    21         -
    22         ----------------------------------------------------------------------------
    23         -
    24         -##              The Ideas that are used in this Version
    25         -
    26         -This version of the Silktorrent is based on the idea that 
    27         -**tar-files can be named according to their secure hash and size**. 
    28         -Applications that use the Silktorrent system for "networking", 
    29         -write and read the tar-files from some local folder
    30         -and that folder is then filled with or emptied from
    31         -tar-files by some Silktorrent "P2P agent".
    32         -In the simplest case the "P2P agent" can be 
    33         -literally a human, who copies tar-files
    34         -between a USB-stick and the local folder,
    35         -but in practice there can be more automated
    36         -solutions. Due to the fact that the 
    37         -names of the tar-files contain their 
    38         -size and secure hash, it does not matter,
    39         -which foes help to transport the files. From
    40         -Silktorrent architecture point of view, it is
    41         -perfectly OK for the NSA to offer a Dropbox service
    42         -to privacy advocates, as long as the timing and
    43         -location based metadata is hidden from the NSA.
    44         -
    45         -
    46         -Redundancy is achieved by just having a copy of a
    47         -collection of the tar-files at multiple locations.
    48         -It's a lot like the software package 
    49         -collections of various Linux distributions. 
    50         -The path, how the software packages reach the computer, 
    51         -copied from a DVD, downloaded from a local server,
    52         -etc. does not matter. The tar-files can be delivered
    53         -by pigeons that have memory cards attached to their
    54         -feet, mail-drones, commuters, who just pick up and
    55         -dump files through their cellphone WiFi, etc.
    56         -**Silktorrent e-mail or an instant messaging
    57         -service can be implemented by saving extra
    58         -records to a separate database, where there is a
    59         -relation between the tar-file name, recipient ID and 
    60         -suggested-deletion-date.** 
    61         -Counter-measures for Denial-of-Service attacks are 
    62         -based on authentication, timing, location(channel).
    63         -
    64         -
    65         -One of the core ideas of the Silktorrent is that 
    66         -the Silktorrent applications must assume that the 
    67         -location of the tar-file can not be concluded from
    68         -its name. Silktorrent applications ask for tar-files
    69         -from agents, who might not have the requested tar-file 
    70         -available and the agents might not even be able to 
    71         -retrieve the requested tar-file. The agents are free to
    72         -use whatever [crazy](http://longterm.softf1.com/specifications/lightmsgp/v2/)
    73         -addressing scheme that they want.
    74         -
    75         -
    76         ----------------------------------------------------------------------------
    77         -
    78         -##             Further Censorship Countermeasures
    79         -
    80         -In practice a relatively short fixed width string, for example, a 
    81         -[GUID](http://longterm.softf1.com/specifications/third_party/ietf/mmmv_highlighted_RFCs/RFC_00004122_GUID_spec.txt)
    82         -can be searched from a database table in a fraction of a second. 
    83         -Even the [SQLite](https://www.sqlite.org/)
    84         -database engine is that fast.
    85         -That makes it feasible for people to use a set of 
    86         -one-time ID-s, user-names, with every person that they 
    87         -exchange Silktorrent based e-mails with. An e-mail server
    88         -tells an e-mail client that it has a set of encrypted blobs
    89         -that are addressed to Joe, Micky, Jill, Jack and it's up to You
    90         -to figure out, which one You are. Each e-mail has a 
    91         -suggested-deletion-date attached to it, either in the 
    92         -tar-file, which contains folders
    93         -
    94         -* payload
    95         -* header
    96         -
    97         -or the e-mail client, which gave the tar-file to the 
    98         -e-mail server, told the e-mail server the 
    99         -suggested-deletion-date. The header contains a file
   100         -named 
   101         -
   102         -    ./silktorrent_salt.txt
   103         -    
   104         -which probabilistically guarantees that the 
   105         -size and bit-stream of the payload can not be
   106         -fully deduced from the tar-file name, forcing
   107         -censoring parties to download a considerable 
   108         -amount of tar-files that they do not need.
   109         -
   110         -
   111         ----------------------------------------------------------------------------
   112         -
   113         -##          The Silktorrent is Licensed Under the MIT License
   114         -
   115         - The MIT license from the 
   116         - http://www.opensource.org/licenses/mit-license.php
   117         -
   118         - Copyright 2016, martin.vahi@softf1.com that has an
   119         - Estonian personal identification code of 38108050020.
   120         -
   121         - Permission is hereby granted, free of charge, to 
   122         - any person obtaining a copy of this software and 
   123         - associated documentation files (the "Software"), 
   124         - to deal in the Software without restriction, including 
   125         - without limitation the rights to use, copy, modify, merge, publish, 
   126         - distribute, sublicense, and/or sell copies of the Software, and 
   127         - to permit persons to whom the Software is furnished to do so, 
   128         - subject to the following conditions:
   129         -
   130         - The above copyright notice and this permission notice shall be included 
   131         - in all copies or substantial portions of the Software.
   132         -
   133         - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
   134         - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
   135         - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
   136         - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 
   137         - CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
   138         - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
   139         - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   140         -
   141         -
   142         ----------------------------------------------------------------------------
   143         -

Deleted milestone_releases/2016_06_24_Silktorrent/doc/COMMENTS.txt version [13686783ef].

     1         -
     2         -You may want find out, whether more up to date
     3         -documentation is available from the 
     4         -
     5         -    http://www.silktorrent.ch
     6         -
     7         -The 
     8         -
     9         -    ./clone_of_the_public_regions_of_the_Fossil_repository
    10         -
    11         -is likely to be a waste of Your time.
    12         -It exists only to make at least something 
    13         -available, if the online version is not available
    14         -or has been compromised in some relevant manner.
    15         -
    16         -
    17         -The 
    18         -
    19         -    ./clone_of_the_public_regions_of_the_Fossil_repository/mmmv_Fossil_operator_t1.bash
    20         -
    21         -is a convenience script, a wrapper to the Fossil. 
    22         -It requires Bash and has been properly tested only on Linux.
    23         -If it is executed without any arguments, it 
    24         -displays a help message that describes the possible arguments.
    25         -
    26         -

Deleted milestone_releases/2016_06_24_Silktorrent/doc/clone_of_the_public_regions_of_the_Fossil_repository/fossil-src-1.34.tar.gz version [38e2a26b1e].

cannot compute difference between binary files

Deleted milestone_releases/2016_06_24_Silktorrent/doc/clone_of_the_public_regions_of_the_Fossil_repository/mmmv_Fossil_operator_t1.bash version [5bfcf24cc9].

     1         -#!/usr/bin/env bash
     2         -# Initial author: Martin.Vahi@softf1.com
     3         -# This file is in the public domain.
     4         -#==========================================================================
     5         -S_FP_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
     6         -S_FP_ORIG="`pwd`"
     7         -S_TIMESTAMP="`date +%Y`_`date +%m`_`date +%d`_T_`date +%H`h_`date +%M`min_`date +%S`s"
     8         -
     9         -fun_assert_exists_on_path_t1 () {
    10         -    local S_NAME_OF_THE_EXECUTABLE=$1 # first function argument
    11         -    local S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE 2>/dev/null\`"
    12         -    local S_TMP_1=""
    13         -    local S_TMP_2="S_TMP_1=$S_TMP_0"
    14         -    eval ${S_TMP_2}
    15         -    if [ "$S_TMP_1" == "" ] ; then
    16         -        echo ""
    17         -        echo "This bash script requires the \"$S_NAME_OF_THE_EXECUTABLE\" to be on the PATH."
    18         -        echo ""
    19         -        #----
    20         -        cd $S_FP_ORIG
    21         -        exit 1 # exit with error
    22         -    fi
    23         -} # fun_assert_exists_on_path_t1
    24         -
    25         -fun_assert_exists_on_path_t1 "file"    # for checking MIME types
    26         -fun_assert_exists_on_path_t1 "find"    # for recursing
    27         -fun_assert_exists_on_path_t1 "fossil"  # tested with v1.34
    28         -fun_assert_exists_on_path_t1 "gawk"
    29         -fun_assert_exists_on_path_t1 "grep"
    30         -fun_assert_exists_on_path_t1 "cat"
    31         -fun_assert_exists_on_path_t1 "ruby"    # anything over/equal v.2.1 will probably do
    32         -fun_assert_exists_on_path_t1 "shred"   # for secure delete
    33         -fun_assert_exists_on_path_t1 "uname"   # to check the OS type
    34         -fun_assert_exists_on_path_t1 "uuidgen" # needed for generating tmp file names
    35         -fun_assert_exists_on_path_t1 "xargs"   # find . -name '*' | xargs blabla
    36         -
    37         -#--------------------------------------------------------------------------
    38         -S_TMP_0="`uname -a | grep -E [Ll]inux`"
    39         -if [ "$S_TMP_0" == "" ]; then
    40         -    echo ""
    41         -    echo "  The classical command line utilities at "
    42         -    echo "  different operating systems, for example, Linux and BSD,"
    43         -    echo "  differ. This script is designed to run only on Linux."
    44         -    echo "  If You are willing to risk that some of Your data "
    45         -    echo "  is deleted and/or Your operating system instance"
    46         -    echo "  becomes permanently flawed, to the point that "
    47         -    echo "  it will not even boot, then You may edit the Bash script that "
    48         -    echo "  displays this error message by modifying the test that "
    49         -    echo "  checks for the operating system type."
    50         -    echo ""
    51         -    echo "  If You do decide to edit this Bash script, then "
    52         -    echo "  a recommendation is to test Your modifications "
    53         -    echo "  within a virtual machine or, if virtual machines are not"
    54         -    echo "  an option, as some new operating system user that does not have "
    55         -    echo "  any access to the vital data/files."
    56         -    echo "  GUID=='10b1e716-b716-4be1-950e-60c2018160e7'"
    57         -    echo ""
    58         -    echo "  Aborting script without doing anything."
    59         -    echo ""
    60         -    exit 1 # exit with error
    61         -fi
    62         -
    63         -
    64         -#--------------------------------------------------------------------------
    65         -S_TMP_0=""
    66         -S_ACTIVITY_OF_THIS_SCRIPT=$1
    67         -S_URL_REMOTE_REPOSITORY=""
    68         -SB_EXIT_WITH_ERROR="f"
    69         -
    70         -# needed for scriptability
    71         -S_ARGNAME_ACTIVITY_SHRED_ARG_2="do_not_prompt_for_confirmation" 
    72         -
    73         -fun_print_msg_t1() {
    74         -    echo ""
    75         -    echo "The second console argument "
    76         -    echo "is expected to be the URL of the remote repository."
    77         -} # fun_print_msg_t1
    78         -
    79         -
    80         -fun_exit_without_any_errors_t1() {
    81         -    local X_SKIP_MESSAGE="$1"
    82         -    if [ "$X_SKIP_MESSAGE" == "" ]; then
    83         -        echo ""
    84         -        echo "Aborting script without doing anything."
    85         -        echo ""
    86         -    fi 
    87         -    #----
    88         -    cd $S_FP_ORIG
    89         -    exit 0
    90         -} # fun_exit_without_any_errors_t1
    91         -
    92         -
    93         -#--------------------------------------------------------------------------
    94         -# Activity aliases for comfort.
    95         -
    96         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "up" ]; then
    97         -    S_ACTIVITY_OF_THIS_SCRIPT="overwrite_remote_with_local"
    98         -fi
    99         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "upload" ]; then
   100         -    S_ACTIVITY_OF_THIS_SCRIPT="overwrite_remote_with_local"
   101         -fi
   102         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "ci" ]; then
   103         -    S_ACTIVITY_OF_THIS_SCRIPT="overwrite_remote_with_local"
   104         -fi
   105         -#--------
   106         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "down" ]; then
   107         -    S_ACTIVITY_OF_THIS_SCRIPT="overwrite_local_with_remote"
   108         -fi
   109         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "download" ]; then
   110         -    S_ACTIVITY_OF_THIS_SCRIPT="overwrite_local_with_remote"
   111         -fi
   112         -#--------
   113         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "co" ]; then
   114         -    S_ACTIVITY_OF_THIS_SCRIPT="clone_all"
   115         -fi
   116         -#--------
   117         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "?" ]; then
   118         -    S_ACTIVITY_OF_THIS_SCRIPT="help"
   119         -fi
   120         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "-?" ]; then
   121         -    S_ACTIVITY_OF_THIS_SCRIPT="help"
   122         -fi
   123         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "--help" ]; then
   124         -    S_ACTIVITY_OF_THIS_SCRIPT="help"
   125         -fi
   126         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "-help" ]; then
   127         -    S_ACTIVITY_OF_THIS_SCRIPT="help"
   128         -fi
   129         -#--------
   130         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "rm" ]; then
   131         -    S_ACTIVITY_OF_THIS_SCRIPT="shred_local_copy"
   132         -fi
   133         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "del" ]; then
   134         -    S_ACTIVITY_OF_THIS_SCRIPT="shred_local_copy"
   135         -fi
   136         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "delete" ]; then
   137         -    S_ACTIVITY_OF_THIS_SCRIPT="shred_local_copy"
   138         -fi
   139         -#--------
   140         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "info" ]; then
   141         -    S_ACTIVITY_OF_THIS_SCRIPT="about"
   142         -fi
   143         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "--info" ]; then
   144         -    S_ACTIVITY_OF_THIS_SCRIPT="about"
   145         -fi
   146         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "-info" ]; then
   147         -    S_ACTIVITY_OF_THIS_SCRIPT="about"
   148         -fi
   149         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "--about" ]; then
   150         -    S_ACTIVITY_OF_THIS_SCRIPT="about"
   151         -fi
   152         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "-about" ]; then
   153         -    S_ACTIVITY_OF_THIS_SCRIPT="about"
   154         -fi
   155         -#--------
   156         -#--------------------------------------------------------------------------
   157         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "about" ]; then
   158         -    echo ""
   159         -    echo "    The initial version of this script has been written by "
   160         -    echo "    Martin.Vahi@softf1.com         "
   161         -    echo "    in 2016_02. The initial version is in public domain."
   162         -    echo "    The command \"help\" offers more information. "
   163         -    echo ""
   164         -    echo "    Thank You for using this script :-)"
   165         -    echo ""
   166         -    echo ""
   167         -    fun_exit_without_any_errors_t1 "t"
   168         -fi 
   169         -#--------------------------------------------------------------------------
   170         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "exit" ]; then
   171         -    fun_exit_without_any_errors_t1
   172         -else
   173         -    if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "clone_all" ]; then
   174         -        if [ "$2" == "" ]; then
   175         -            fun_print_msg_t1
   176         -            S_ACTIVITY_OF_THIS_SCRIPT="help"
   177         -            SB_EXIT_WITH_ERROR="t"
   178         -        else
   179         -            S_URL_REMOTE_REPOSITORY="$2"
   180         -        fi
   181         -    else
   182         -        if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "clone_public" ]; then
   183         -            if [ "$2" == "" ]; then
   184         -                fun_print_msg_t1
   185         -                S_ACTIVITY_OF_THIS_SCRIPT="help"
   186         -                SB_EXIT_WITH_ERROR="t"
   187         -            else
   188         -                S_URL_REMOTE_REPOSITORY="$2"
   189         -            fi
   190         -        else
   191         -            if [ "$S_ACTIVITY_OF_THIS_SCRIPT" != "overwrite_local_with_remote" ]; then
   192         -                if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "overwrite_remote_with_local" ]; then
   193         -                    if [ "$2" != "" ]; then
   194         -                        if [ "$2" == "use_autogenerated_commit_message" ]; then
   195         -                            if [ "$3" != "" ]; then
   196         -                                echo ""
   197         -                                echo "If the first console argument is \"overwrite_local_with_remote\" and"
   198         -                                echo "the second console argument is \"use_autogenerated_commit_message\", "
   199         -                                echo "then there should not be a 3. console argument."
   200         -                                echo "GUID=='94e31fd3-85c9-4dfb-a2fd-60c2018160e7'"
   201         -                                S_ACTIVITY_OF_THIS_SCRIPT="help"
   202         -                                SB_EXIT_WITH_ERROR="t"
   203         -                            fi
   204         -                        else
   205         -                            if [ "$2" == "read_commit_message_from_file" ]; then
   206         -                                S_FP_MESSAGE_FILE_CANDIDATE="$3" # file path candidate
   207         -                                if [ "$S_FP_MESSAGE_FILE_CANDIDATE" == "" ]; then
   208         -                                    echo ""
   209         -                                    echo "If the first console argument is "
   210         -                                    echo "\"overwrite_local_with_remote\" and"
   211         -                                    echo "the second console argument is "
   212         -                                    echo "\"read_commit_message_from_file\", "
   213         -                                    echo "then there should be also a 3. console argument "
   214         -                                    echo "that is expected to be a file path to a text file."
   215         -                                    echo "GUID=='adfce255-e3fe-40ae-84fd-60c2018160e7'"
   216         -                                    S_ACTIVITY_OF_THIS_SCRIPT="help"
   217         -                                    SB_EXIT_WITH_ERROR="t"
   218         -                                fi
   219         -                                if [ "$SB_EXIT_WITH_ERROR" == "f" ]; then
   220         -                                    if [ "$4" != "" ]; then
   221         -                                        echo ""
   222         -                                        echo "If the first console argument is "
   223         -                                        echo "\"overwrite_local_with_remote\" and"
   224         -                                        echo "the second console argument is "
   225         -                                        echo "\"read_commit_message_from_file\", "
   226         -                                        echo "then there should be exactly 3. console arguments, "
   227         -                                        echo "not 4 or more. Unfortunately the 4. argument is currently "
   228         -                                        echo "---citation--start---"
   229         -                                        echo "$4"
   230         -                                        echo "---citation--end-----"
   231         -                                        echo "GUID=='0b03ec37-da96-456e-b3fd-60c2018160e7'"
   232         -                                        S_ACTIVITY_OF_THIS_SCRIPT="help"
   233         -                                        SB_EXIT_WITH_ERROR="t"
   234         -                                    fi
   235         -                                fi
   236         -                                if [ "$SB_EXIT_WITH_ERROR" == "f" ]; then
   237         -                                    if [ ! -e "$S_FP_MESSAGE_FILE_CANDIDATE" ]; then 
   238         -                                        echo ""
   239         -                                        echo "The commit message file path candidate "
   240         -                                        echo "references either a missing file or "
   241         -                                        echo "a broken symlink."
   242         -                                        echo "GUID=='4c29c433-48e4-4ced-a4fd-60c2018160e7'"
   243         -                                        S_ACTIVITY_OF_THIS_SCRIPT="help"
   244         -                                        SB_EXIT_WITH_ERROR="t"
   245         -                                    fi
   246         -                                fi 
   247         -                                if [ "$SB_EXIT_WITH_ERROR" == "f" ]; then
   248         -                                    if [ -d "$S_FP_MESSAGE_FILE_CANDIDATE" ]; then 
   249         -                                        echo ""
   250         -                                        echo "The commit message file path candidate "
   251         -                                        echo "references a folder, but it should "
   252         -                                        echo "reference a text file."
   253         -                                        echo "GUID=='fee26538-6bfb-4adb-b4fd-60c2018160e7'"
   254         -                                        S_ACTIVITY_OF_THIS_SCRIPT="help"
   255         -                                        SB_EXIT_WITH_ERROR="t"
   256         -                                    fi
   257         -                                fi
   258         -                                if [ "$SB_EXIT_WITH_ERROR" == "f" ]; then
   259         -                                    S_TMP_0="`filesize $S_FP_MESSAGE_FILE_CANDIDATE`"
   260         -                                    S_TMP_1="`ruby -e \"s_out='OK'; if (2000<$S_TMP_0) then s_out='too_big' end; print(s_out);\"`"
   261         -                                    if [ "$S_TMP_1" == "too_big" ]; then
   262         -                                        echo ""
   263         -                                        echo "The commit message file path "
   264         -                                        echo "references a file that has a size of $S_TMP_0 bytes."
   265         -                                        echo "The suspicion is that it is a wrong file. "
   266         -                                        echo "because a commit message is usually not that lengthy."
   267         -                                        echo "GUID=='b95f593c-5140-4506-84ed-60c2018160e7'"
   268         -                                        S_ACTIVITY_OF_THIS_SCRIPT="help"
   269         -                                        SB_EXIT_WITH_ERROR="t"
   270         -                                    else
   271         -                                        if [ "$S_TMP_0" == "0" ]; then
   272         -                                            echo ""
   273         -                                            echo "The commit message file path "
   274         -                                            echo "references a file that has a size of 0 (zero) bytes."
   275         -                                            echo ""
   276         -                                            echo "The generation of commit message files "
   277         -                                            echo "can be avoided by using the option "
   278         -                                            echo ""
   279         -                                            echo "    \"use_autogenerated_commit_message\""
   280         -                                            echo ""
   281         -                                            echo "in stead of the option "
   282         -                                            echo ""
   283         -                                            echo "    \"read_commit_message_from_file\" ."
   284         -                                            echo ""
   285         -                                            echo "GUID=='31b2b6aa-10c1-4349-93ed-60c2018160e7'"
   286         -                                            S_ACTIVITY_OF_THIS_SCRIPT="help"
   287         -                                            SB_EXIT_WITH_ERROR="t"
   288         -                                        fi
   289         -                                    fi
   290         -                                fi 
   291         -                                if [ "$SB_EXIT_WITH_ERROR" == "f" ]; then
   292         -                                    S_TMP_0="`file --mime-type $S_FP_MESSAGE_FILE_CANDIDATE | grep text `"
   293         -                                    if [ "$S_TMP_0" == "" ]; then
   294         -                                        echo ""
   295         -                                        echo "The commit message file path "
   296         -                                        echo "references a file that has a  MIME type of "
   297         -                                        echo ""
   298         -                                        echo "`file --mime-type $S_FP_MESSAGE_FILE_CANDIDATE`"
   299         -                                        echo ""
   300         -                                        echo "The commit message file must be a text file and "
   301         -                                        echo "text files have the string \"text\" in their MIME type name."
   302         -                                        echo "GUID=='fc0cb22c-578d-47a2-92ed-60c2018160e7'"
   303         -                                        S_ACTIVITY_OF_THIS_SCRIPT="help"
   304         -                                        SB_EXIT_WITH_ERROR="t"
   305         -                                    fi
   306         -                                fi 
   307         -                            fi # read_commit_message_from_file
   308         -                        fi
   309         -                    fi
   310         -                else
   311         -                    if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "shred_local_copy" ]; then
   312         -                        if [ "$2" != "" ]; then # the 2. arg is optional here
   313         -                            if [ "$2" != "$S_ARGNAME_ACTIVITY_SHRED_ARG_2" ]; then 
   314         -                                echo ""
   315         -                                echo "If the first console argument is \"shred_local_copy\", then"
   316         -                                echo "the second console argument is allowed to be only "
   317         -                                echo ""
   318         -                                echo "    \"$S_ARGNAME_ACTIVITY_SHRED_ARG_2\", without quotation marks."
   319         -                                echo "GUID=='1a618c55-ef9a-4a2f-aeed-60c2018160e7'"
   320         -                                S_ACTIVITY_OF_THIS_SCRIPT="help"
   321         -                                SB_EXIT_WITH_ERROR="t"
   322         -                            fi
   323         -                        fi
   324         -                    else
   325         -                        if [ "$S_ACTIVITY_OF_THIS_SCRIPT" != "print_script_version" ]; then
   326         -                            if [ "$S_ACTIVITY_OF_THIS_SCRIPT" != "help" ]; then
   327         -                                echo ""
   328         -                                echo "The very first console argument "
   329         -                                echo "of this script is expected to be "
   330         -                                echo "a command that is specific to this script."
   331         -                                echo "GUID=='a6728226-e43f-4baa-93ed-60c2018160e7'"
   332         -                                S_ACTIVITY_OF_THIS_SCRIPT="help"
   333         -                                SB_EXIT_WITH_ERROR="t"
   334         -                            fi
   335         -                        fi
   336         -                    fi
   337         -                fi
   338         -            fi
   339         -        fi
   340         -    fi
   341         -fi 
   342         -
   343         -#--------------------------------------------------------------------------
   344         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "help" ]; then
   345         -    echo ""
   346         -    echo "Possible console argument sets are:"
   347         -    echo ""
   348         -    echo "    clone_all    <remote repository url>"
   349         -    echo "    clone_public <remote repository url>"
   350         -    echo "    overwrite_local_with_remote"
   351         -    echo ""
   352         -    echo "    overwrite_remote_with_local (use_autogenerated_commit_message)?"
   353         -    echo "    overwrite_remote_with_local read_commit_message_from_file <path to a text file>"
   354         -    echo ""
   355         -    echo "    shred_local_copy ($S_ARGNAME_ACTIVITY_SHRED_ARG_2)?"
   356         -    echo "    help"
   357         -    echo "    print_script_version"
   358         -    echo "    exit # just for testing"
   359         -    echo ""
   360         -    #----
   361         -    cd $S_FP_ORIG
   362         -    if [ "$SB_EXIT_WITH_ERROR" == "t" ]; then
   363         -        exit 1 # To let the parent script know that 
   364         -               # the parent script calls this script with 
   365         -               # flawed console argument values.    
   366         -    else
   367         -        exit 0
   368         -    fi
   369         -fi 
   370         -
   371         -#--------------------------------------------------------------------------
   372         -# The script version is needed by other scripts that depend on this script.
   373         -# The script version GUID must not be surrounded by 
   374         -# any quote signs (',"), because otherwise the 
   375         -# version GUID will be overwritten by the UpGUID tool,
   376         -# but unlike error message GUID-s this GUID must stay constant. 
   377         -# To allow the version to be used as sub-part of file names and 
   378         -# folder names, the version must not contain any spaces, line breaks
   379         -# and other characters that have a special meaning in Bash.
   380         -#
   381         -# If the version ID did not match the GUID regex, then I would have to 
   382         -# write a long comment about it not being allowed to match the 
   383         -# GUID regex. :-D 
   384         -S_VERSION_OF_THIS_SCRIPT="c52b5919-3ea2-4ebd-94fd-60c2018160e7"
   385         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "print_script_version" ]; then
   386         -    echo "The version of this script is: $S_VERSION_OF_THIS_SCRIPT"
   387         -    #----
   388         -    cd $S_FP_ORIG
   389         -    exit 0
   390         -fi 
   391         -
   392         -
   393         -#--------------------------------------------------------------------------
   394         -S_FP_SANDBOX_DIRECTORY_NAME="sandbox_of_the_Fossil_repository"
   395         -S_FP_SANDBOX="$S_FP_DIR/$S_FP_SANDBOX_DIRECTORY_NAME"
   396         -#----
   397         -S_FP_ARCHIVES_DIRECTORY_NAME="archival_copies_of_the_Fossil_repository_sandbox"
   398         -S_FP_ARCHIVES="$S_FP_DIR/$S_FP_ARCHIVES_DIRECTORY_NAME"
   399         -S_FP_ARCHIVES_TS="$S_FP_ARCHIVES/v$S_TIMESTAMP"
   400         -#----
   401         -S_FP_FOSSILFILE_NAME="repository_storage.fossil"
   402         -S_FP_FOSSILFILE="$S_FP_DIR/$S_FP_FOSSILFILE_NAME"
   403         -
   404         -#--------
   405         -S_LC_NOT_DETERMINED="not determined"
   406         -SB_SANDBOX_DIR_EXISTS="$S_LC_NOT_DETERMINED"
   407         -fun_sandbox_folder_or_symlink_exists() {
   408         -    SB_SANDBOX_DIR_EXISTS="f"
   409         -    if [ ! -e $S_FP_SANDBOX ]; then
   410         -        # Does not exist or it is a broken symbolic link.
   411         -        SB_SANDBOX_DIR_EXISTS="f"
   412         -    else
   413         -        if [ -d $S_FP_SANDBOX ]; then
   414         -            SB_SANDBOX_DIR_EXISTS="t"
   415         -        fi
   416         -    fi
   417         -} # fun_sandbox_folder_or_symlink_exists
   418         -
   419         -SB_FOSSILFILE_EXISTS="$S_LC_NOT_DETERMINED"
   420         -fun_fossil_repository_file_or_symlink_exists() {
   421         -    SB_FOSSILFILE_EXISTS="t"
   422         -    if [ ! -e $S_FP_FOSSILFILE ]; then
   423         -        # Does not exist or it is a broken symbolic link.
   424         -        SB_FOSSILFILE_EXISTS="f"
   425         -    else
   426         -        if [ -d $S_FP_FOSSILFILE ]; then
   427         -            SB_FOSSILFILE_EXISTS="f"
   428         -        fi
   429         -    fi
   430         -} # fun_fossil_repository_file_or_symlink_exists
   431         -
   432         -S_LC_NOT_DETERMINED="not determined"
   433         -SB_ARCHIVE_DIR_EXISTS="$S_LC_NOT_DETERMINED"
   434         -fun_archives_folder_or_symlink_exists() {
   435         -    SB_ARCHIVE_DIR_EXISTS="f"
   436         -    if [ ! -e $S_FP_ARCHIVES ]; then
   437         -        # Does not exist or it is a broken symbolic link.
   438         -        SB_ARCHIVE_DIR_EXISTS="f"
   439         -    else
   440         -        if [ -d $S_FP_ARCHIVES ]; then
   441         -            SB_ARCHIVE_DIR_EXISTS="t"
   442         -        fi
   443         -    fi
   444         -} # fun_archives_folder_or_symlink_exists
   445         -
   446         -#--------
   447         -fun_fossil_repository_file_or_symlink_exists
   448         -fun_sandbox_folder_or_symlink_exists
   449         -fun_archives_folder_or_symlink_exists
   450         -
   451         -fun_assertion_t1() {
   452         -    local SB_CANDIDATE=$1
   453         -    local SB_THROW="t"
   454         -    #----
   455         -    if [ "$SB_CANDIDATE" == "t" ]; then
   456         -        SB_THROW="f"
   457         -    else
   458         -        if [ "$SB_CANDIDATE" == "f" ]; then
   459         -            SB_THROW="f"
   460         -        fi
   461         -    fi
   462         -    #----
   463         -    if [ "$SB_THROW" == "t" ]; then
   464         -        echo ""
   465         -        echo "This Bash script is flawed. "
   466         -        echo "fun_assertion_t1() assertion failed."
   467         -        echo "GUID=='0e253639-885d-49b9-a4ed-60c2018160e7'"
   468         -        echo ""
   469         -        #----
   470         -        cd $S_FP_ORIG
   471         -        exit 1
   472         -    fi
   473         -} # fun_assertion_t1
   474         -
   475         -fun_assertion_t1 "$SB_FOSSILFILE_EXISTS"
   476         -fun_assertion_t1 "$SB_SANDBOX_DIR_EXISTS"
   477         -fun_assertion_t1 "$SB_ARCHIVE_DIR_EXISTS"
   478         -
   479         -#--------------------------------------------------------------------------
   480         -
   481         -fun_assert_repository_local_copy_existence() {
   482         -    fun_fossil_repository_file_or_symlink_exists
   483         -    if [ "$SB_FOSSILFILE_EXISTS" == "f" ]; then
   484         -        echo ""
   485         -        echo "The directory "
   486         -        echo "`pwd`"
   487         -        echo "does not contain a Fossil repository file named "
   488         -        echo ""
   489         -        echo "    $S_FP_FOSSILFILE_NAME"
   490         -        echo ""
   491         -        echo "Aborting script."
   492         -        echo "GUID=='9e259331-2604-424b-b2dd-60c2018160e7'"
   493         -        echo ""
   494         -        #----
   495         -        cd $S_FP_ORIG
   496         -        exit 1
   497         -    fi
   498         -    fun_sandbox_folder_or_symlink_exists
   499         -    if [ "$SB_SANDBOX_DIR_EXISTS" == "f" ]; then
   500         -        echo ""
   501         -        echo "The directory "
   502         -        echo "`pwd`"
   503         -        echo "does not contain a directory named "
   504         -        echo ""
   505         -        echo "    $S_FP_SANDBOX_DIRECTORY_NAME"
   506         -        echo ""
   507         -        echo "Aborting script."
   508         -        echo "GUID=='bd274616-5c19-4da2-b3dd-60c2018160e7'"
   509         -        echo ""
   510         -        #----
   511         -        cd $S_FP_ORIG
   512         -        exit 1
   513         -    fi
   514         -} # fun_assert_repository_local_copy_existence
   515         -
   516         -
   517         -fun_assert_the_lack_of_repository_local_copy_t1() {
   518         -    if [ "$SB_FOSSILFILE_EXISTS" == "t" ]; then
   519         -        echo ""
   520         -        echo "The directory "
   521         -        echo "`pwd`"
   522         -        echo "already contain a file named "
   523         -        echo ""
   524         -        echo "    $S_FP_FOSSILFILE_NAME"
   525         -        echo ""
   526         -        echo "To avoid overwriting an existing local copy, this script is aborted"
   527         -        echo "and nothing is downloaded/uploaded by this script."
   528         -        echo "GUID=='e82ebd3b-eeec-4eaa-b5dd-60c2018160e7'"
   529         -        echo ""
   530         -        #----
   531         -        cd $S_FP_ORIG
   532         -        exit 1
   533         -    fi
   534         -    if [ "$SB_SANDBOX_DIR_EXISTS" == "t" ]; then
   535         -        echo ""
   536         -        echo "The directory "
   537         -        echo "`pwd`"
   538         -        echo "already contains a directory named "
   539         -        echo ""
   540         -        echo "    $S_FP_SANDBOX_DIRECTORY_NAME"
   541         -        echo ""
   542         -        echo "To avoid overwriting an existing local copy, this script is aborted"
   543         -        echo "and nothing is downloaded/uploaded by this script."
   544         -        echo "GUID=='12ece555-f0b7-4b68-91dd-60c2018160e7'"
   545         -        echo ""
   546         -        #----
   547         -        cd $S_FP_ORIG
   548         -        exit 1
   549         -    fi
   550         -} # fun_assert_the_lack_of_repository_local_copy_t1
   551         -
   552         -
   553         -
   554         -fun_initialize_sandbox_t1() {
   555         -    mkdir -p $S_FP_SANDBOX
   556         -    sync;
   557         -    cd $S_FP_SANDBOX
   558         -    fossil open $S_FP_DIR/$S_FP_FOSSILFILE_NAME # full path for reliability 
   559         -    fossil settings autosync off ;
   560         -    fossil settings case-sensitive TRUE ;
   561         -    fossil checkout --force --latest
   562         -    fossil pull 
   563         -    fossil close
   564         -    sync;
   565         -} # fun_initialize_sandbox_t1
   566         -
   567         -
   568         -#--------------------------------------------------------------------------
   569         -fun_last_minute_checks_t1() {
   570         -    # Last minute checks, just to be sure.
   571         -    local S_FP_FORBIDDEN_VALUE=$1
   572         -    if [ "$S_FP_FORBIDDEN_VALUE" == "/" ]; then
   573         -        echo ""
   574         -        echo "This Bash script is flawed."
   575         -        echo "GUID=='731d2a24-b82e-4703-b4dd-60c2018160e7'"
   576         -        echo ""
   577         -        #----
   578         -        cd $S_FP_ORIG
   579         -        exit 1
   580         -    fi
   581         -    if [ "$S_FP_FORBIDDEN_VALUE" == "$HOME" ]; then
   582         -        echo ""
   583         -        echo "This Bash script is flawed."
   584         -        echo "GUID=='31c15b4f-e658-41c0-92dd-60c2018160e7'"
   585         -        echo ""
   586         -        #----
   587         -        cd $S_FP_ORIG
   588         -        exit 1
   589         -    fi
   590         -    if [ "$S_FP_FORBIDDEN_VALUE" == "/home" ]; then
   591         -        echo ""
   592         -        echo "This Bash script is flawed."
   593         -        echo "GUID=='b9f58420-e95a-488e-84cd-60c2018160e7'"
   594         -        echo ""
   595         -        #----
   596         -        cd $S_FP_ORIG
   597         -        exit 1
   598         -    fi
   599         -    if [ "$S_FP_FORBIDDEN_VALUE" == "/root" ]; then
   600         -        echo ""
   601         -        echo "This Bash script is flawed."
   602         -        echo "GUID=='40236327-50d4-45aa-83cd-60c2018160e7'"
   603         -        echo ""
   604         -        #----
   605         -        cd $S_FP_ORIG
   606         -        exit 1
   607         -    fi
   608         -    if [ "$S_FP_FORBIDDEN_VALUE" == "/etc" ]; then
   609         -        echo ""
   610         -        echo "This Bash script is flawed."
   611         -        echo "GUID=='d26ba631-c952-4f73-b4cd-60c2018160e7'"
   612         -        echo ""
   613         -        #----
   614         -        cd $S_FP_ORIG
   615         -        exit 1
   616         -    fi
   617         -    if [ "$S_FP_FORBIDDEN_VALUE" == "/usr" ]; then
   618         -        echo ""
   619         -        echo "This Bash script is flawed."
   620         -        echo "GUID=='398688e1-00d4-47b1-98cd-60c2018160e7'"
   621         -        echo ""
   622         -        #----
   623         -        cd $S_FP_ORIG
   624         -        exit 1
   625         -    fi
   626         -} # fun_last_minute_checks_t1
   627         -
   628         -
   629         -#--------------------------------------------------------------------------
   630         -SB_FOLDER_IS_EMPTY="$S_LC_NOT_DETERMINED"
   631         -fun_folder_is_empty_t1() {
   632         -    local S_FP_FOLDER_TO_STUDY=$1
   633         -    local S_FP_ORIG_LOCAL="`pwd`"
   634         -    #--------
   635         -    SB_FOLDER_IS_EMPTY="t"
   636         -    local S_TMP_0="`cd $S_FP_FOLDER_TO_STUDY; ls -l | grep \"total 0\"`"
   637         -    if [ "$S_TMP_0" == "" ]; then
   638         -        SB_FOLDER_IS_EMPTY="f"
   639         -    fi
   640         -    #--------
   641         -    cd $S_FP_ORIG_LOCAL # just in case
   642         -} # fun_folder_is_empty_t1
   643         -
   644         -fun_folder_is_empty_t1 "$S_FP_DIR"
   645         -fun_assertion_t1 "$SB_FOLDER_IS_EMPTY"
   646         -if [ "$SB_FOLDER_IS_EMPTY" == "t" ]; then
   647         -    echo ""
   648         -    echo "This Bash script is flawed. The "
   649         -    echo "$S_FP_DIR" 
   650         -    echo "can not possibly be empty, because it contains "
   651         -    echo "at least one file, whcih is "
   652         -    echo "this very same Bash script that outputs the current error message."
   653         -    echo "GUID=='ca6dfb51-7279-415f-a1bd-60c2018160e7'"
   654         -    echo ""
   655         -    #----
   656         -    cd $S_FP_ORIG
   657         -    exit 1
   658         -fi
   659         -
   660         -#--------------------------------------------------------------------------
   661         -
   662         -fun_activity_core_overwrite_local_with_remote() {
   663         -    fun_assert_repository_local_copy_existence
   664         -    #--------
   665         -    # The checks are party to cope with the `whoami`=="root" case.
   666         -    fun_last_minute_checks_t1 "$S_FP_SANDBOX"
   667         -    fun_last_minute_checks_t1 "$S_FP_ARCHIVES"
   668         -    fun_last_minute_checks_t1 "$S_FP_ARCHIVES_TS"
   669         -    #--------
   670         -    chmod -f -R u+rx $S_FP_SANDBOX
   671         -    fun_folder_is_empty_t1 "$S_FP_SANDBOX"
   672         -    if [ "$SB_FOLDER_IS_EMPTY" == "f" ]; then
   673         -        # This if-statement is needed because the 
   674         -        #      cp -f -R AnEmptyDirectory/* ToSomewhere/
   675         -        # gives an error.
   676         -        #----
   677         -        mkdir -p $S_FP_ARCHIVES_TS
   678         -        #----
   679         -        # The "chmod -f -R " is not used because it would
   680         -        # waste time on folders that are named by 
   681         -        # the older $S_FP_ARCHIVES_TS values.
   682         -        chmod -f 0700 $S_FP_ARCHIVES
   683         -        chmod -f 0700 $S_FP_ARCHIVES_TS 
   684         -        #----
   685         -        # The separate cp and rm of the sandbox
   686         -        # contents is to somewhat retain the original
   687         -        # file premissions of the sandbox contents.
   688         -        cp -f -R $S_FP_SANDBOX/* $S_FP_ARCHIVES_TS/
   689         -        fun_last_minute_checks_t1 "$S_FP_SANDBOX"
   690         -        chmod -f -R u+rwx $S_FP_SANDBOX
   691         -        rm -fr $S_FP_SANDBOX/*
   692         -    fi
   693         -    #--------
   694         -    cd $S_FP_SANDBOX
   695         -    fossil open $S_FP_DIR/$S_FP_FOSSILFILE_NAME # full path for reliability 
   696         -    fossil settings autosync off ;
   697         -    fossil checkout --force --latest
   698         -    fossil pull 
   699         -    fossil close
   700         -} # fun_activity_core_overwrite_local_with_remote
   701         -
   702         -
   703         -
   704         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "overwrite_local_with_remote" ]; then
   705         -    fun_activity_core_overwrite_local_with_remote
   706         -    #----
   707         -    cd $S_FP_ORIG
   708         -    exit 0
   709         -fi # overwrite_local_with_remote
   710         -
   711         -
   712         -
   713         -#--------------------------------------------------------------------------
   714         -fossil close 2>/dev/null
   715         -
   716         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "clone_public" ]; then
   717         -    fun_assert_the_lack_of_repository_local_copy_t1
   718         -    cd $S_FP_DIR 
   719         -    fossil clone $S_URL_REMOTE_REPOSITORY ./$S_FP_FOSSILFILE_NAME
   720         -    fun_initialize_sandbox_t1
   721         -    cd $S_FP_ORIG
   722         -    #----
   723         -    sync
   724         -    fun_activity_core_overwrite_local_with_remote
   725         -    cd $S_FP_ORIG
   726         -    sync
   727         -    #----
   728         -    exit 0
   729         -fi # clone_public
   730         -
   731         -
   732         -#--------------------------------------------------------------------------
   733         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "clone_all" ]; then
   734         -    fun_assert_the_lack_of_repository_local_copy_t1
   735         -    cd $S_FP_DIR 
   736         -    #--------
   737         -    S_USERNAME=""
   738         -    while [ "$S_USERNAME" == "" ]
   739         -    do
   740         -        echo ""
   741         -        echo "Please enter a username: "
   742         -        S_USERNAME="`ruby -e \"s=gets.gsub(/[\n\r\s]/,'');print(s)\"`" 
   743         -        S_URL="`export S_USERNAME=\"$S_USERNAME\"; S_URL=\"$S_URL_REMOTE_REPOSITORY\" ruby -e 's_0=ENV[\"S_URL\"].sub(\"http://\",\"http:/\").sub(\"http:/\",\"http://\"+ENV[\"S_USERNAME\"].to_s+\":nonsensepassword@\");print(s_0)'`"
   744         -    done
   745         -    #--------
   746         -    fossil clone --private $S_URL ./$S_FP_FOSSILFILE_NAME
   747         -    fun_initialize_sandbox_t1
   748         -    cd $S_FP_ORIG
   749         -    #----
   750         -    sync
   751         -    fun_activity_core_overwrite_local_with_remote
   752         -    cd $S_FP_ORIG
   753         -    sync
   754         -    #----
   755         -    exit 0
   756         -fi # clone_all
   757         -
   758         -
   759         -#--------------------------------------------------------------------------
   760         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "overwrite_remote_with_local" ]; then
   761         -    fun_assert_repository_local_copy_existence
   762         -    #--------
   763         -    # It's important that this script will not try 
   764         -    # to recursively copy/move the content of the "/" to 
   765         -    # a subfolder of the "/", the "/tmp". 
   766         -    # The other folders that are covered by the
   767         -    # test are a bit of an overkill here, may be even an
   768         -    # annoying and unjustified restrictions, but 
   769         -    # in most cases those restrictions do not hurt either.
   770         -    fun_last_minute_checks_t1 "$S_FP_SANDBOX"
   771         -    #----
   772         -    S_TMP_0="/tmp/tmp_mmmv_$S_VERSION_OF_THIS_SCRIPT"
   773         -    S_TMP_1="__"
   774         -    S_TMP_FOR_LOCAL="$S_TMP_0$S_TMP_1`uuidgen`"
   775         -    S_TMP_FOR_COMMIT_MESSAGE="$S_TMP_0$S_TMP_1`uuidgen`"
   776         -    mkdir -p $S_TMP_FOR_LOCAL
   777         -    chmod -f -R u+rwx $S_FP_SANDBOX
   778         -    mv -f $S_FP_SANDBOX/* $S_TMP_FOR_LOCAL/ # the -f is for empty sandbox
   779         -    #--------
   780         -    fun_activity_core_overwrite_local_with_remote 
   781         -    fun_last_minute_checks_t1 "$S_FP_SANDBOX" # should there be flaws elsewhere
   782         -    chmod -f -R u+rwx $S_FP_SANDBOX # to be able to delete the old content
   783         -    #--------
   784         -    cd $S_FP_SANDBOX
   785         -        fossil open $S_FP_DIR/$S_FP_FOSSILFILE_NAME # full path for reliability 
   786         -        fossil settings autosync off ;
   787         -        fun_folder_is_empty_t1 "$S_FP_SANDBOX"
   788         -        SB_SANDBOX_CONTENT_MIGHT_HAVE_BEEN_CHANGED="f"
   789         -        if [ "$SB_FOLDER_IS_EMPTY" == "f" ]; then
   790         -            fossil rm --hard --case-sensitive TRUE ./* 
   791         -            SB_SANDBOX_CONTENT_MIGHT_HAVE_BEEN_CHANGED="t"
   792         -            fun_last_minute_checks_t1 "`pwd`"
   793         -            if [ "$S_FP_SANDBOX" == "`pwd`" ]; then
   794         -                rm -fr ./*
   795         -            else
   796         -                echo ""
   797         -                echo "This Bash script is flawed."
   798         -                echo "GUID=='39b31171-e088-4d93-94bd-60c2018160e7'"
   799         -                echo ""
   800         -                #----
   801         -                cd $S_FP_ORIG
   802         -                exit 1
   803         -            fi
   804         -        fi
   805         -        mv -f $S_TMP_FOR_LOCAL/* $S_FP_SANDBOX/ # the -f is for empty source
   806         -        #----
   807         -        fun_last_minute_checks_t1 "$S_TMP_FOR_LOCAL"
   808         -        rm -fr $S_TMP_FOR_LOCAL
   809         -        #----
   810         -        fun_folder_is_empty_t1 "$S_FP_SANDBOX"
   811         -        if [ "$SB_FOLDER_IS_EMPTY" == "f" ]; then
   812         -            if [ "$S_FP_SANDBOX" != "`pwd`" ]; then
   813         -                echo ""
   814         -                echo "This Bash script is flawed."
   815         -                echo "GUID=='7e89c51b-f97c-43d2-a5bd-60c2018160e7'"
   816         -                echo ""
   817         -                #----
   818         -                cd $S_FP_ORIG
   819         -                exit 1
   820         -            fi
   821         -            find . -name '*' | xargs fossil add --force --dotfiles --case-sensitive TRUE  
   822         -            SB_SANDBOX_CONTENT_MIGHT_HAVE_BEEN_CHANGED="t"
   823         -        fi
   824         -        if [ "$SB_SANDBOX_CONTENT_MIGHT_HAVE_BEEN_CHANGED" == "t" ]; then
   825         -            if [ "$2" == "" ]; then
   826         -                echo ""
   827         -                #echo "Please enter a one-liner commit message: "
   828         -                #S_TMP_0="`ruby -e \"s=gets.gsub(/[\n\r\s]/,'');print(s)\"`" 
   829         -                # TODO: improve this script so that it would not ask 
   830         -                # for a commit message, when nothing changed. It requires
   831         -                # some recursive analysis of files, which might be slow.
   832         -                # This script is not optimal for speed even now and that would
   833         -                # make it even slower. On the other hand, usually when 
   834         -                # the upload operation is initiated, there are some changes,
   835         -                # which means that the slow analysis would be useless in 
   836         -                # most frequent cases. So this thing needs to be figured out 
   837         -                # at some later time, when there is more experience with the
   838         -                # use of this script.
   839         -                read -p "Please enter a one-liner commit message: " S_TMP_0
   840         -                echo $S_TMP_0 > $S_TMP_FOR_COMMIT_MESSAGE
   841         -            else
   842         -                if [ "$2" == "use_autogenerated_commit_message" ]; then
   843         -                    echo "Autogenerated commit message timestamp: $S_TIMESTAMP" > $S_TMP_FOR_COMMIT_MESSAGE
   844         -                else
   845         -                    if [ "$2" == "read_commit_message_from_file" ]; then
   846         -                        S_FP_MESSAGE_FILE_CANDIDATE="$3" # file path candidate
   847         -                        # Initial file existence and type checks for the 
   848         -                        # $S_FP_MESSAGE_FILE_CANDIDATE 
   849         -                        # were conducted at the start of the script.
   850         -                        # but the $S_FP_MESSAGE_FILE_CANDIDATE  might have
   851         -                        # referenced a file in the sandbox and 
   852         -                        # that file might have been just removed/deleted.
   853         -                        #
   854         -                        # There is no threat that the file got changed to a folder
   855         -                        # or a symlink switched from a file to a folder,
   856         -                        # at least that's the case for the single threaded model.
   857         -                        if [ ! -e "$S_FP_MESSAGE_FILE_CANDIDATE" ]; then 
   858         -                            # missing or a broken symlink
   859         -                            echo ""
   860         -                            echo "The commit message file is missing or "
   861         -                            echo "references a broken symlink."
   862         -                            echo "The file or symlink to it was fine at "
   863         -                            echo "the start of this script, it passed the various tests, "
   864         -                            echo "but for some reason it got deleted or its target . "
   865         -                            echo "got deleted. If the commit message file or"
   866         -                            echo "the symlink target resided within the sandbox, then "
   867         -                            echo "a recommendation is to use a file that resides "
   868         -                            echo "outside of the sandbox."
   869         -                            echo "GUID=='9c0865d1-1134-4203-92bd-60c2018160e7'"
   870         -                            echo ""
   871         -                            #----
   872         -                            cd $S_FP_ORIG
   873         -                            exit 1
   874         -                        fi
   875         -                        if [ -d "$S_FP_MESSAGE_FILE_CANDIDATE" ]; then 
   876         -                            # folder or a symlink to a folder
   877         -                            echo ""
   878         -                            echo "The commit message file path does not reference "
   879         -                            echo "a file. It references a folder or a symlink to a folder."
   880         -                            echo "The file or symlink to it was fine at "
   881         -                            echo "the start of this script, it passed the various tests, "
   882         -                            echo "but for some reason there were changes. "
   883         -                            echo "GUID=='4a707715-ffe8-47ca-b4bd-60c2018160e7'"
   884         -                            echo ""
   885         -                            #----
   886         -                            cd $S_FP_ORIG
   887         -                            exit 1
   888         -                        fi
   889         -                        cat $S_FP_MESSAGE_FILE_CANDIDATE > $S_TMP_FOR_COMMIT_MESSAGE
   890         -                    # else
   891         -                    #     Due to the checks at the start of the script 
   892         -                    #     this else branch is useless.
   893         -                    fi
   894         -                fi
   895         -            fi
   896         -            #--------
   897         -            fossil commit --message-file $S_TMP_FOR_COMMIT_MESSAGE
   898         -            #----
   899         -            fun_last_minute_checks_t1 "$S_TMP_FOR_COMMIT_MESSAGE"
   900         -            rm -f $S_TMP_FOR_COMMIT_MESSAGE
   901         -            #----
   902         -        fi
   903         -    #--------
   904         -    fossil push --private
   905         -    fossil push 
   906         -    fossil pull --private
   907         -    fossil close
   908         -    #----
   909         -    cd $S_FP_ORIG
   910         -    exit 0
   911         -fi # overwrite_remote_with_local
   912         -
   913         -
   914         -#--------------------------------------------------------------------------
   915         -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "shred_local_copy" ]; then
   916         -    #--------
   917         -    SB_THERE_IS_SOMETHING_TO_DELETE="f"
   918         -    if [ "$SB_FOSSILFILE_EXISTS" == "t" ]; then
   919         -        SB_THERE_IS_SOMETHING_TO_DELETE="t"
   920         -    fi
   921         -    if [ "$SB_SANDBOX_DIR_EXISTS" == "t" ]; then
   922         -        SB_THERE_IS_SOMETHING_TO_DELETE="t"
   923         -    fi
   924         -    if [ "$SB_ARCHIVE_DIR_EXISTS" == "t" ]; then
   925         -        SB_THERE_IS_SOMETHING_TO_DELETE="t"
   926         -    fi
   927         -    #--------
   928         -    if [ "$SB_THERE_IS_SOMETHING_TO_DELETE" == "t" ]; then 
   929         -        if [ "$2" != "$S_ARGNAME_ACTIVITY_SHRED_ARG_2" ]; then 
   930         -            # Includes the $2=="" case
   931         -            # id est if the control flow is in here, then there 
   932         -            # is a need to prompt for confirmation.
   933         -            # The skipping of the prompt is necessary for
   934         -            # software that use this script as its sub-component.
   935         -            #--------
   936         -            echo ""
   937         -            echo "The command \"shred_local_copy\" deletes "
   938         -            echo "the repository file, the sandbox and "
   939         -            echo "the associated automatically created archives."
   940         -            echo ""
   941         -            read -p "Proceed with deletion?  (Yes/whatever_else)  " S_TMP_0
   942         -            S_TMP_1="`echo $S_TMP_0 | gawk '{print tolower($1)}'`"
   943         -            if [ "$S_TMP_1" == "yes" ]; then
   944         -                echo ""
   945         -                printf "Deleting ... "
   946         -            else
   947         -                fun_exit_without_any_errors_t1
   948         -            fi
   949         -       fi
   950         -    fi
   951         -    #--------
   952         -    if [ "$SB_FOSSILFILE_EXISTS" == "t" ]; then
   953         -        cd $S_FP_DIR  # just in case
   954         -        # The     shred "-f" option re-sets file access permissions as needed.
   955         -        nice -n10 shred  -f --remove $S_FP_FOSSILFILE  
   956         -    fi
   957         -    #--------
   958         -    if [ "$SB_SANDBOX_DIR_EXISTS" == "t" ]; then
   959         -        cd $S_FP_SANDBOX
   960         -        fun_last_minute_checks_t1 "`pwd`"
   961         -        #--------
   962         -        # The S_TMP_0 is to suppress shred output.
   963         -        S_TMP_0="`find . -name '*' | xargs shred -f --remove 2>/dev/null`"
   964         -        #----
   965         -        cd $S_FP_DIR  # step out of the sandbox directory
   966         -        fun_last_minute_checks_t1 "$S_FP_SANDBOX"
   967         -        chmod -f -R 0700 $S_FP_SANDBOX 
   968         -        rm -fr $S_FP_SANDBOX 
   969         -    fi
   970         -    #--------
   971         -    if [ "$SB_ARCHIVE_DIR_EXISTS" == "t" ]; then
   972         -        cd $S_FP_ARCHIVES 
   973         -        fun_last_minute_checks_t1 "`pwd`"
   974         -        #--------
   975         -        # The S_TMP_0 is to suppress shred output.
   976         -        S_TMP_0="`find . -name '*' | xargs shred -f --remove 2>/dev/null`" 
   977         -        #----
   978         -        cd $S_FP_DIR  # step out of the archive directory
   979         -        fun_last_minute_checks_t1 "$S_FP_ARCHIVES"
   980         -        chmod -f -R 0700 $S_FP_ARCHIVES
   981         -        rm -fr $S_FP_ARCHIVES 
   982         -    fi
   983         -    #--------
   984         -    if [ "$SB_THERE_IS_SOMETHING_TO_DELETE" == "t" ]; then 
   985         -        if [ "$2" != "$S_ARGNAME_ACTIVITY_SHRED_ARG_2" ]; then 
   986         -            echo "✓"
   987         -            echo ""
   988         -        fi
   989         -    fi
   990         -    #--------
   991         -    cd $S_FP_ORIG
   992         -    exit 0
   993         -fi # shred_local_copy
   994         -
   995         -
   996         -#--------------------------------------------------------------------------
   997         -# All possible actions must have been described
   998         -# above this code block.
   999         -echo ""
  1000         -echo "This Bash script is flawed."
  1001         -echo "GUID=='4332a245-ca3c-45d0-8bad-60c2018160e7'"
  1002         -echo ""
  1003         -#----
  1004         -cd $S_FP_ORIG
  1005         -exit 1
  1006         -
  1007         -#==========================================================================
  1008         -

Deleted milestone_releases/2016_06_24_Silktorrent/doc/clone_of_the_public_regions_of_the_Fossil_repository/repository_storage.fossil version [c392fefe63].

cannot compute difference between binary files

Deleted milestone_releases/2016_06_24_Silktorrent/src/silktorrent_packager_t1_v2016_06_24.bash version [5cd5733ef1].

     1         -#!/usr/bin/env bash
     2         -#==========================================================================
     3         -#
     4         -# The MIT license from the 
     5         -# http://www.opensource.org/licenses/mit-license.php
     6         -#
     7         -# Copyright 2016, martin.vahi@softf1.com that has an
     8         -# Estonian personal identification code of 38108050020.
     9         -#
    10         -# Permission is hereby granted, free of charge, to 
    11         -# any person obtaining a copy of this software and 
    12         -# associated documentation files (the "Software"), 
    13         -# to deal in the Software without restriction, including 
    14         -# without limitation the rights to use, copy, modify, merge, publish, 
    15         -# distribute, sublicense, and/or sell copies of the Software, and 
    16         -# to permit persons to whom the Software is furnished to do so, 
    17         -# subject to the following conditions:
    18         -#
    19         -# The above copyright notice and this permission notice shall be included 
    20         -# in all copies or substantial portions of the Software.
    21         -#
    22         -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
    23         -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
    24         -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
    25         -# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 
    26         -# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
    27         -# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
    28         -# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    29         -#
    30         -#==========================================================================
    31         -S_FP_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
    32         -S_FP_ORIG="`pwd`"
    33         -S_TIMESTAMP="`date +%Y`_`date +%m`_`date +%d`_T_`date +%H`h_`date +%M`min_`date +%S`s"
    34         -
    35         -#--------------------------------------------------------------------------
    36         -
    37         -SB_TMP_FOLDER_EXISTS="f" # to omit one useless and slow file system access
    38         -S_FP_TMP_FOLDER=""
    39         -
    40         -
    41         -func_mmmv_silktorrent_packager_t1_exit_without_any_errors() {
    42         -    local S_0=""
    43         -    local S_1=""
    44         -    if [ "$SB_TMP_FOLDER_EXISTS" == "t" ]; then
    45         -       S_0= 
    46         -    fi
    47         -    exit 0 # exit without an error
    48         -} # func_mmmv_silktorrent_packager_t1_exit_without_any_errors
    49         -
    50         -#--------------------------------------------------------------------------
    51         -
    52         -S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT=""
    53         -func_mmmv_operating_system_type_t1() {
    54         -    if [ "$S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT" == "" ]; then
    55         -        S_TMP_0="`uname -a | grep -E [Ll]inux`"
    56         -        if [ "$S_TMP_0" != "" ]; then
    57         -            S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT="Linux"
    58         -        else
    59         -            S_TMP_0="`uname -a | grep BSD `"
    60         -            if [ "$S_TMP_0" != "" ]; then
    61         -                S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT="BSD"
    62         -            else
    63         -                S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT="undetermined"
    64         -            fi
    65         -        fi
    66         -    fi
    67         -} # func_mmmv_operating_system_type_t1
    68         -
    69         -#--------------------------------------------------------------------------
    70         -
    71         -func_mmmv_operating_system_type_t1
    72         -if [ "$S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT" != "Linux" ]; then
    73         -    if [ "$S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT" != "BSD" ]; then
    74         -        echo ""
    75         -        echo "  The classical command line utilities at "
    76         -        echo "  different operating systems, for example, Linux and BSD,"
    77         -        echo "  differ. This script is designed to run only on "
    78         -        echo "  Linux and some BSD variants."
    79         -        echo "  If You are willing to risk that some of Your data "
    80         -        echo "  is deleted and/or Your operating system instance"
    81         -        echo "  becomes permanently flawed, to the point that "
    82         -        echo "  it will not even boot, then You may edit the Bash script that "
    83         -        echo "  displays this error message by modifying the test that "
    84         -        echo "  checks for the operating system type."
    85         -        echo ""
    86         -        echo "  If You do decide to edit this Bash script, then "
    87         -        echo "  a recommendation is to test Your modifications "
    88         -        echo "  within a virtual machine or, if virtual machines are not"
    89         -        echo "  an option, as some new operating system user that does not have "
    90         -        echo "  any access to the vital data/files."
    91         -        echo "  GUID=='ae8bec13-4773-4811-94a2-83f2c08160e7'"
    92         -        echo ""
    93         -        echo "  Aborting script without doing anything."
    94         -        echo ""
    95         -        exit 1 # exit with error
    96         -    fi
    97         -fi
    98         -
    99         -
   100         -#--------------------------------------------------------------------------
   101         -
   102         -SB_EXISTS_ON_PATH_T1_RESULT="f"
   103         -func_sb_exists_on_path_t1 () {
   104         -    local S_NAME_OF_THE_EXECUTABLE_1="$1" # first function argument
   105         -    #--------
   106         -    # Function calls like
   107         -    #
   108         -    #     func_sb_exists_on_path_t1 ""
   109         -    #     func_sb_exists_on_path_t1 " "
   110         -    #     func_sb_exists_on_path_t1 "ls ps" # contains a space
   111         -    #
   112         -    # are not allowed.
   113         -    if [ "$S_NAME_OF_THE_EXECUTABLE_1" == "" ] ; then
   114         -        echo ""
   115         -        echo "The Bash function "
   116         -        echo ""
   117         -        echo "    func_sb_exists_on_path_t1 "
   118         -        echo ""
   119         -        echo "is not designed to handle an argument that "
   120         -        echo "equals with an empty string."
   121         -        echo "GUID=='d26d1825-90bf-4ab7-94a2-83f2c08160e7'"
   122         -        echo ""
   123         -        #----
   124         -        cd $S_FP_ORIG
   125         -        exit 1 # exit with error
   126         -    fi
   127         -    local S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_1\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
   128         -    if [ "$S_NAME_OF_THE_EXECUTABLE_1" != "$S_TMP_0" ] ; then
   129         -        echo ""
   130         -        echo "The Bash function "
   131         -        echo ""
   132         -        echo "    func_sb_exists_on_path_t1 "
   133         -        echo ""
   134         -        echo "is not designed to handle an argument value that contains "
   135         -        echo "spaces or tabulation characters."
   136         -        echo "The received value in parenthesis:($S_NAME_OF_THE_EXECUTABLE_1)."
   137         -        echo "GUID=='8b402457-dd5b-4921-b2a2-83f2c08160e7'"
   138         -        echo ""
   139         -        #----
   140         -        cd $S_FP_ORIG
   141         -        exit 1 # exit with error
   142         -    fi
   143         -    #--------
   144         -    S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_1 2>/dev/null\`"
   145         -    local S_TMP_1=""
   146         -    local S_TMP_2="S_TMP_1=$S_TMP_0"
   147         -    eval ${S_TMP_2}
   148         -    #----
   149         -    if [ "$S_TMP_1" == "" ] ; then
   150         -        SB_EXISTS_ON_PATH_T1_RESULT="f"
   151         -    else
   152         -        SB_EXISTS_ON_PATH_T1_RESULT="t"
   153         -    fi
   154         -} # func_sb_exists_on_path_t1 
   155         -
   156         -
   157         -
   158         -func_assert_exists_on_path_t2 () {
   159         -    local S_NAME_OF_THE_EXECUTABLE_1="$1" # first function argument
   160         -    local S_NAME_OF_THE_EXECUTABLE_2="$2" # optional argument
   161         -    local S_NAME_OF_THE_EXECUTABLE_3="$3" # optional argument
   162         -    local S_NAME_OF_THE_EXECUTABLE_4="$4" # optional argument
   163         -    #--------
   164         -    # Function calls like
   165         -    #
   166         -    #     func_assert_exists_on_path_t2  ""    ""  "ls"
   167         -    #     func_assert_exists_on_path_t2  "ls"  ""  "ps"
   168         -    #
   169         -    # are not allowed by the spec of this function, but it's OK to call
   170         -    #
   171         -    #     func_assert_exists_on_path_t2  "ls" "" 
   172         -    #     func_assert_exists_on_path_t2  "ls" "ps" ""
   173         -    #     func_assert_exists_on_path_t2  "ls" ""   "" ""
   174         -    #
   175         -    #
   176         -    local SB_THROW="f"
   177         -    if [ "$S_NAME_OF_THE_EXECUTABLE_1" == "" ] ; then
   178         -        SB_THROW="t"
   179         -    else
   180         -        if [ "$S_NAME_OF_THE_EXECUTABLE_2" == "" ] ; then
   181         -            if [ "$S_NAME_OF_THE_EXECUTABLE_3" != "" ] ; then
   182         -                SB_THROW="t"
   183         -            fi
   184         -            if [ "$S_NAME_OF_THE_EXECUTABLE_4" != "" ] ; then
   185         -                SB_THROW="t"
   186         -            fi
   187         -        else
   188         -            if [ "$S_NAME_OF_THE_EXECUTABLE_3" == "" ] ; then
   189         -                if [ "$S_NAME_OF_THE_EXECUTABLE_4" != "" ] ; then
   190         -                    SB_THROW="t"
   191         -                fi
   192         -            fi
   193         -        fi
   194         -    fi
   195         -    #----
   196         -    if [ "$SB_THROW" == "t" ] ; then
   197         -        echo ""
   198         -        echo "The Bash function "
   199         -        echo ""
   200         -        echo "    func_assert_exists_on_path_t2 "
   201         -        echo ""
   202         -        echo "is not designed to handle series of arguments, where "
   203         -        echo "empty strings preced non-empty strings."
   204         -        echo "GUID=='ebdae326-6445-46bf-9292-83f2c08160e7'"
   205         -        echo ""
   206         -        #----
   207         -        cd $S_FP_ORIG
   208         -        exit 1 # exit with error
   209         -    fi
   210         -    if [ "$5" != "" ] ; then
   211         -        echo ""
   212         -        echo "This Bash function is designed to work with at most 4 input arguments"
   213         -        echo "GUID=='522b025f-199b-49f1-a292-83f2c08160e7'"
   214         -        echo ""
   215         -        #----
   216         -        cd $S_FP_ORIG
   217         -        exit 1 # exit with error
   218         -    fi
   219         -    #--------
   220         -    # Function calls like
   221         -    #
   222         -    #     func_assert_exists_on_path_t2 " "
   223         -    #     func_assert_exists_on_path_t2 "ls ps" # contains a space
   224         -    #
   225         -    # are not allowed.
   226         -    SB_THROW="f" 
   227         -    local S_TMP_0=""
   228         -    local S_TMP_1=""
   229         -    local S_TMP_2=""
   230         -    #----
   231         -    if [ "$SB_THROW" == "f" ] ; then
   232         -        S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_1\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
   233         -        if [ "$S_NAME_OF_THE_EXECUTABLE_1" != "$S_TMP_0" ] ; then
   234         -            SB_THROW="t" 
   235         -            S_TMP_1="$S_NAME_OF_THE_EXECUTABLE_1"
   236         -            S_TMP_2="GUID=='4f034735-f71d-4fda-9192-83f2c08160e7'"
   237         -        fi
   238         -    fi
   239         -    #----
   240         -    if [ "$SB_THROW" == "f" ] ; then
   241         -        S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_2\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
   242         -        if [ "$S_NAME_OF_THE_EXECUTABLE_2" != "$S_TMP_0" ] ; then
   243         -            SB_THROW="t" 
   244         -            S_TMP_1="$S_NAME_OF_THE_EXECUTABLE_2"
   245         -            S_TMP_2="GUID=='d8ee8e35-3634-4963-b192-83f2c08160e7'"
   246         -        fi
   247         -    fi
   248         -    #----
   249         -    if [ "$SB_THROW" == "f" ] ; then
   250         -        S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_3\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
   251         -        if [ "$S_NAME_OF_THE_EXECUTABLE_3" != "$S_TMP_0" ] ; then
   252         -            SB_THROW="t" 
   253         -            S_TMP_1="$S_NAME_OF_THE_EXECUTABLE_3"
   254         -            S_TMP_2="GUID=='198c2e17-f678-451d-8192-83f2c08160e7'"
   255         -        fi
   256         -    fi
   257         -    #----
   258         -    if [ "$SB_THROW" == "f" ] ; then
   259         -        S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_4\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
   260         -        if [ "$S_NAME_OF_THE_EXECUTABLE_4" != "$S_TMP_0" ] ; then
   261         -            SB_THROW="t" 
   262         -            S_TMP_1="$S_NAME_OF_THE_EXECUTABLE_4"
   263         -            S_TMP_2="GUID=='405c6c1c-7830-4bc4-a492-83f2c08160e7'"
   264         -        fi
   265         -    fi
   266         -    #--------
   267         -    if [ "$SB_THROW" == "t" ] ; then
   268         -        echo ""
   269         -        echo "The Bash function "
   270         -        echo ""
   271         -        echo "    func_assert_exists_on_path_t2 "
   272         -        echo ""
   273         -        echo "is not designed to handle an argument value that contains "
   274         -        echo "spaces or tabulation characters."
   275         -        echo "The unaccepted value in parenthesis:($S_TMP_1)."
   276         -        echo "Branch $S_TMP_2."
   277         -        echo "GUID=='efcc3ce1-f52a-4f28-b582-83f2c08160e7'"
   278         -        echo ""
   279         -        #----
   280         -        cd $S_FP_ORIG
   281         -        exit 1 # exit with error
   282         -    fi
   283         -    SB_THROW="f" # Just a reset, should I forget to reset it later.
   284         -    #---------------
   285         -    S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_1 2>/dev/null\`"
   286         -    local S_TMP_1=""
   287         -    local S_TMP_2="S_TMP_1=$S_TMP_0"
   288         -    eval ${S_TMP_2}
   289         -    #----
   290         -    if [ "$S_TMP_1" == "" ] ; then
   291         -        if [ "$S_NAME_OF_THE_EXECUTABLE_2" == "" ] ; then
   292         -        if [ "$S_NAME_OF_THE_EXECUTABLE_3" == "" ] ; then
   293         -        if [ "$S_NAME_OF_THE_EXECUTABLE_4" == "" ] ; then
   294         -            echo ""
   295         -            echo "This bash script requires the \"$S_NAME_OF_THE_EXECUTABLE_1\" to be on the PATH."
   296         -            echo "GUID=='b10b8c12-1d9e-4a4b-b482-83f2c08160e7'"
   297         -            echo ""
   298         -            #----
   299         -            cd $S_FP_ORIG
   300         -            exit 1 # exit with error
   301         -        fi
   302         -        fi
   303         -        fi
   304         -    else
   305         -        return # at least one of the programs was available at the PATH
   306         -    fi
   307         -    #--------
   308         -    S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_2 2>/dev/null\`"
   309         -    S_TMP_1=""
   310         -    S_TMP_2="S_TMP_1=$S_TMP_0"
   311         -    eval ${S_TMP_2}
   312         -    #----
   313         -    if [ "$S_TMP_1" == "" ] ; then
   314         -        if [ "$S_NAME_OF_THE_EXECUTABLE_3" == "" ] ; then
   315         -        if [ "$S_NAME_OF_THE_EXECUTABLE_4" == "" ] ; then
   316         -            echo ""
   317         -            echo "This bash script requires that either \"$S_NAME_OF_THE_EXECUTABLE_1\" or "
   318         -            echo " \"$S_NAME_OF_THE_EXECUTABLE_2\" is available on the PATH."
   319         -            echo "GUID=='a3730829-4edf-4221-9482-83f2c08160e7'"
   320         -            echo ""
   321         -            #----
   322         -            cd $S_FP_ORIG
   323         -            exit 1 # exit with error
   324         -        fi
   325         -        fi
   326         -    else
   327         -        return # at least one of the programs was available at the PATH
   328         -    fi
   329         -    #--------
   330         -    S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_3 2>/dev/null\`"
   331         -    S_TMP_1=""
   332         -    S_TMP_2="S_TMP_1=$S_TMP_0"
   333         -    eval ${S_TMP_2}
   334         -    #----
   335         -    if [ "$S_TMP_1" == "" ] ; then
   336         -        if [ "$S_NAME_OF_THE_EXECUTABLE_4" == "" ] ; then
   337         -            echo ""
   338         -            echo "This bash script requires that either \"$S_NAME_OF_THE_EXECUTABLE_1\" or "
   339         -            echo " \"$S_NAME_OF_THE_EXECUTABLE_2\" or \"$S_NAME_OF_THE_EXECUTABLE_3\" "
   340         -            echo "is available on the PATH."
   341         -            echo "GUID=='50757072-5884-4bf0-8482-83f2c08160e7'"
   342         -            echo ""
   343         -            #----
   344         -            cd $S_FP_ORIG
   345         -            exit 1 # exit with error
   346         -        fi
   347         -    else
   348         -        return # at least one of the programs was available at the PATH
   349         -    fi
   350         -    #--------
   351         -    S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_4 2>/dev/null\`"
   352         -    S_TMP_1=""
   353         -    S_TMP_2="S_TMP_1=$S_TMP_0"
   354         -    eval ${S_TMP_2}
   355         -    #----
   356         -    if [ "$S_TMP_1" == "" ] ; then
   357         -        echo ""
   358         -        echo "This bash script requires that either \"$S_NAME_OF_THE_EXECUTABLE_1\" or "
   359         -        echo " \"$S_NAME_OF_THE_EXECUTABLE_2\" or \"$S_NAME_OF_THE_EXECUTABLE_3\" or "
   360         -        echo " \"$S_NAME_OF_THE_EXECUTABLE_4\" is available on the PATH."
   361         -        echo "GUID=='ece93119-b340-44ea-8382-83f2c08160e7'"
   362         -        echo ""
   363         -        #----
   364         -        cd $S_FP_ORIG
   365         -        exit 1 # exit with error
   366         -    else
   367         -        return # at least one of the programs was available at the PATH
   368         -    fi
   369         -    #--------
   370         -} # func_assert_exists_on_path_t2
   371         -
   372         -func_assert_exists_on_path_t2 "bash"     # this is a bash script, but it does not hurt
   373         -func_assert_exists_on_path_t2 "basename" # for extracting file names from full paths
   374         -func_assert_exists_on_path_t2 "cat"    # opposite to split
   375         -func_assert_exists_on_path_t2 "sha256sum" "sha256" "rhash"
   376         -func_assert_exists_on_path_t2 "tigerdeep" "rhash"
   377         -func_assert_exists_on_path_t2 "whirlpooldeep" "rhash"
   378         -func_assert_exists_on_path_t2 "tar"
   379         -#--------
   380         -func_assert_exists_on_path_t2 "file"   # for checking the MIME type of the potential tar file
   381         -func_assert_exists_on_path_t2 "filesize" "ruby"
   382         -func_assert_exists_on_path_t2 "gawk"
   383         -#func_assert_exists_on_path_t2 "grep"
   384         -#func_assert_exists_on_path_t2 "readlink"
   385         -func_assert_exists_on_path_t2 "ruby"  # anything over/equal v.2.1 will probably do
   386         -#func_assert_exists_on_path_t2 "split" # for cutting files
   387         -#func_assert_exists_on_path_t2 "test"
   388         -func_assert_exists_on_path_t2 "uname"  # to check the OS type
   389         -func_assert_exists_on_path_t2 "uuidgen" "uuid" # GUID generation on Linux and BSD
   390         -#func_assert_exists_on_path_t2 "xargs"   
   391         -func_assert_exists_on_path_t2 "wc" # for checking hash lengths   
   392         -
   393         -
   394         -#--------------------------------------------------------------------------
   395         -
   396         -func_mmmv_exc_hash_function_input_verification_t1() { 
   397         -    local S_NAME_OF_THE_BASH_FUNCTION="$1" # The name of the Bash function.
   398         -    local S_FP_2_AN_EXISTING_FILE="$2" # The first argument of the Bash function.
   399         -    #--------
   400         -    if [ "$S_NAME_OF_THE_BASH_FUNCTION" == "" ] ; then
   401         -        echo ""
   402         -        echo "The implementation of the function that "
   403         -        echo "calls the "
   404         -        echo ""
   405         -        echo "    func_mmmv_exc_hash_function_input_verification_t1"
   406         -        echo ""
   407         -        echo "is flawed. The call to the "
   408         -        echo ""
   409         -        echo "    func_mmmv_exc_hash_function_input_verification_t1"
   410         -        echo ""
   411         -        echo "misses the first argument or the first argument is an empty string."
   412         -        echo "GUID=='5daa2d36-5d4a-45ac-b482-83f2c08160e7'"
   413         -        echo ""
   414         -        #----
   415         -        cd $S_FP_ORIG
   416         -        exit 1 # exit with error
   417         -    fi
   418         -    local S_TMP_0="`printf \"$S_NAME_OF_THE_BASH_FUNCTION\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
   419         -    if [ "$S_NAME_OF_THE_BASH_FUNCTION" != "$S_TMP_0" ] ; then
   420         -        echo ""
   421         -        echo "The implementation of the function that "
   422         -        echo "calls the "
   423         -        echo ""
   424         -        echo "    func_mmmv_exc_hash_function_input_verification_t1"
   425         -        echo ""
   426         -        echo "is flawed. Function names are not allowed to contain spaces or tabs."
   427         -        echo "GUID=='32fcb7e5-7f9c-42c5-a382-83f2c08160e7'"
   428         -        echo ""
   429         -        #----
   430         -        cd $S_FP_ORIG
   431         -        exit 1 # exit with error
   432         -    fi
   433         -    #--------
   434         -    # Function calls like
   435         -    #
   436         -    #     <function name> ""
   437         -    #     <function name> " "
   438         -    #
   439         -    # are not allowed.
   440         -    local S_TMP_0="`printf \"$S_FP_2_AN_EXISTING_FILE\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
   441         -    if [ "$S_TMP_0" == "" ] ; then
   442         -        echo ""
   443         -        echo "The Bash function "
   444         -        echo ""
   445         -        echo "    $S_NAME_OF_THE_BASH_FUNCTION"
   446         -        echo ""
   447         -        echo "is not designed to handle an argument that "
   448         -        echo "equals with an empty string or a series of spaces and tabs."
   449         -        echo "GUID=='59c6d156-1693-41f5-a282-83f2c08160e7'"
   450         -        echo ""
   451         -        #----
   452         -        cd $S_FP_ORIG
   453         -        exit 1 # exit with error
   454         -    fi
   455         -    #--------
   456         -    if [ ! -e $S_FP_2_AN_EXISTING_FILE ] ; then
   457         -        echo ""
   458         -        echo "The file "
   459         -        echo ""
   460         -        echo "    $S_FP_2_AN_EXISTING_FILE "
   461         -        echo ""
   462         -        echo "is missing or it is a broken link."
   463         -        echo "GUID=='2bdfa731-a82d-4c24-9182-83f2c08160e7'"
   464         -        echo ""
   465         -        #----
   466         -        cd $S_FP_ORIG
   467         -        exit 1 # exit with error
   468         -    fi
   469         -    if [ -d $S_FP_2_AN_EXISTING_FILE ] ; then
   470         -        echo ""
   471         -        echo "The file path "
   472         -        echo ""
   473         -        echo "    $S_FP_2_AN_EXISTING_FILE "
   474         -        echo ""
   475         -        echo "references a folder, but a file is expected."
   476         -        echo "GUID=='342e52a2-f7fa-41c9-b572-83f2c08160e7'"
   477         -        echo ""
   478         -        #----
   479         -        cd $S_FP_ORIG
   480         -        exit 1 # exit with error
   481         -    fi
   482         -    #--------------------
   483         -    # At this line the verifications have all passed.
   484         -    #--------------------
   485         -} # func_mmmv_exc_hash_function_input_verification_t1
   486         -
   487         -
   488         -#--------------------------------------------------------------------------
   489         -
   490         -S_FUNC_MMMV_GUID_T1_RESULT="not_yet_set"
   491         -S_FUNC_MMMV_GUID_T1_MODE="" # optim. to skip repeating console tool selection
   492         -func_mmmv_GUID_t1() { 
   493         -    # Does not take any arguments.
   494         -    #--------
   495         -    #func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_GUID_t1" "$1"
   496         -    #--------------------
   497         -    # Mode selection:
   498         -    if [ "$S_FUNC_MMMV_GUID_T1_MODE" == "" ] ; then
   499         -        SB_EXISTS_ON_PATH_T1_RESULT="f"  # if-block init
   500         -        #----
   501         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
   502         -            S_TMP_0="uuidgen" # Linux version
   503         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
   504         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
   505         -                 S_FUNC_MMMV_GUID_T1_MODE="$S_TMP_0"
   506         -            fi
   507         -        fi
   508         -        #----
   509         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
   510         -            S_TMP_0="uuid"    # BSD version
   511         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
   512         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
   513         -                 S_FUNC_MMMV_GUID_T1_MODE="$S_TMP_0"
   514         -            fi
   515         -        fi
   516         -        #--------
   517         -        if [ "$S_FUNC_MMMV_GUID_T1_MODE" == "" ] ; then
   518         -            echo ""
   519         -            echo "All of the GUID generation implementations that this script " 
   520         -            echo "is capable of using (uuidgen, uuid) "
   521         -            echo "are missing from the PATH."
   522         -            echo "GUID=='92cc9502-5791-4674-8672-83f2c08160e7'"
   523         -            echo ""
   524         -            #----
   525         -            cd $S_FP_ORIG
   526         -            exit 1 # exit with error
   527         -        fi
   528         -        #--------
   529         -        if [ "$?" != "0" ]; then
   530         -            echo ""
   531         -            echo "This script is flawed."
   532         -            echo "GUID=='69f2c03e-920f-4bbf-8472-83f2c08160e7'"
   533         -            echo ""
   534         -            #----
   535         -            cd $S_FP_ORIG
   536         -            exit 1 # exit with error
   537         -        fi
   538         -        #--------
   539         -    fi
   540         -    #--------------------
   541         -    S_FUNC_MMMV_GUID_T1_RESULT=""
   542         -    #--------------------
   543         -    if [ "$S_FUNC_MMMV_GUID_T1_MODE" == "uuidgen" ]; then
   544         -        S_TMP_0="`uuidgen`"
   545         -        if [ "$?" != "0" ]; then
   546         -            echo ""
   547         -            echo "The console application \"uuidgen\" "
   548         -            echo "exited with an error."
   549         -            echo ""
   550         -            echo "----console--outut--citation--start-----"
   551         -            echo "`uuidgen`" # stdout and stderr
   552         -            echo "----console--outut--citation--end-------"
   553         -            echo ""
   554         -            echo "GUID=='899ef135-d280-406a-b362-83f2c08160e7'"
   555         -            echo ""
   556         -            #----
   557         -            cd $S_FP_ORIG
   558         -            exit 1 # exit with error
   559         -        fi
   560         -        #---- 
   561         -        S_FUNC_MMMV_GUID_T1_RESULT="$S_TMP_0"
   562         -    fi
   563         -    #--------------------
   564         -    if [ "$S_FUNC_MMMV_GUID_T1_MODE" == "uuid" ]; then
   565         -        S_TMP_0="`uuid`"
   566         -        if [ "$?" != "0" ]; then
   567         -            echo ""
   568         -            echo "The console application \"uuid\" "
   569         -            echo "exited with an error."
   570         -            echo ""
   571         -            echo "----console--outut--citation--start-----"
   572         -            echo "`uuid`" # stdout and stderr
   573         -            echo "----console--outut--citation--end-------"
   574         -            echo ""
   575         -            echo "GUID=='185b4073-5086-4196-9462-83f2c08160e7'"
   576         -            echo ""
   577         -            #----
   578         -            cd $S_FP_ORIG
   579         -            exit 1 # exit with error
   580         -        fi
   581         -        #---- 
   582         -        S_FUNC_MMMV_GUID_T1_RESULT="$S_TMP_0"
   583         -    fi
   584         -    #--------------------
   585         -    S_TMP_0="`printf \"$S_FUNC_MMMV_GUID_T1_RESULT\" | wc -m | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
   586         -    S_TMP_1="36"
   587         -    if [ "$S_TMP_0" != "$S_TMP_1" ]; then
   588         -        echo ""
   589         -        echo "According to the GUID specification, IETF RFC 4122,  "
   590         -        echo "the lenght of the GUID is "
   591         -        echo "$S_TMP_1 characters, but the result of the "
   592         -        echo ""
   593         -        echo "    func_mmmv_GUID_t1"
   594         -        echo ""
   595         -        echo "is something else. The flawed GUID candidate in parenthesis:"
   596         -        echo "($S_FUNC_MMMV_GUID_T1_RESULT)"
   597         -        echo ""
   598         -        echo "The lenght candidate of the flawed GUID candidate in parenthesis:"
   599         -        echo "($S_TMP_0)."
   600         -        echo ""
   601         -        echo "GUID=='8fc9064f-4364-490c-9262-83f2c08160e7'"
   602         -        echo ""
   603         -        #----
   604         -        cd $S_FP_ORIG
   605         -        exit 1 # exit with error
   606         -    fi
   607         -    #--------------------
   608         -} # func_mmmv_GUID_t1
   609         -
   610         -
   611         -#--------------------------------------------------------------------------
   612         -
   613         -S_FUNC_MMMV_SHA256_T1_RESULT="not_yet_set"
   614         -S_FUNC_MMMV_SHA256_T1_MODE="" # optim. to skip repeating console tool selection
   615         -func_mmmv_sha256_t1() { # requires also ruby and gawk 
   616         -    local S_FP_2_AN_EXISTING_FILE="$1" # first function argument
   617         -    #--------
   618         -    func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_sha256_t1" "$1"
   619         -    #--------------------
   620         -    # Mode selection:
   621         -    if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "" ] ; then
   622         -        SB_EXISTS_ON_PATH_T1_RESULT="f"  # if-block init
   623         -        #----
   624         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
   625         -            S_TMP_0="sha256sum" # usually available on Linux
   626         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
   627         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
   628         -                 S_FUNC_MMMV_SHA256_T1_MODE="$S_TMP_0"
   629         -            fi
   630         -        fi
   631         -        #----
   632         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
   633         -            S_TMP_0="rhash"    # part of the BSD package collection in 2016
   634         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
   635         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
   636         -                 S_FUNC_MMMV_SHA256_T1_MODE="$S_TMP_0"
   637         -            fi
   638         -        fi
   639         -        #----
   640         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
   641         -            S_TMP_0="sha256"    # usually available on BSD
   642         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
   643         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
   644         -                 S_FUNC_MMMV_SHA256_T1_MODE="$S_TMP_0"
   645         -            fi
   646         -        fi
   647         -        # The console application "rhash" is preferred to the "sha256"
   648         -        # because the "rhash" output can be simply processed with 
   649         -        # "gawk", which takes over 5x less memory than the Ruby interpreter,
   650         -        # not to mention the initialization cost of the Ruby interpreter.
   651         -        #--------
   652         -        if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "" ] ; then
   653         -            echo ""
   654         -            echo "All of the SHA-256 implementations that this script " 
   655         -            echo "is capable of using (sha256sum, rhash, sha256) "
   656         -            echo "are missing from the PATH."
   657         -            echo "GUID=='446b14b1-7fc2-494d-8362-83f2c08160e7'"
   658         -            echo ""
   659         -            #----
   660         -            cd $S_FP_ORIG
   661         -            exit 1 # exit with error
   662         -        fi
   663         -        #--------
   664         -        if [ "$?" != "0" ]; then
   665         -            echo ""
   666         -            echo "This script is flawed."
   667         -            echo "GUID=='7d241052-f154-434c-a262-83f2c08160e7'"
   668         -            echo ""
   669         -            #----
   670         -            cd $S_FP_ORIG
   671         -            exit 1 # exit with error
   672         -        fi
   673         -        #--------
   674         -    fi
   675         -    #--------------------
   676         -    S_FUNC_MMMV_SHA256_T1_RESULT=""
   677         -    #--------------------
   678         -    if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "sha256sum" ]; then
   679         -        S_TMP_0="`sha256sum $S_FP_2_AN_EXISTING_FILE 2>/dev/null`"
   680         -        if [ "$?" != "0" ]; then
   681         -            echo ""
   682         -            echo "The console application \"sha256sum\" "
   683         -            echo "exited with an error."
   684         -            echo ""
   685         -            echo "----console--outut--citation--start-----"
   686         -            echo "`sha256sum $S_FP_2_AN_EXISTING_FILE`" # stdout and stderr
   687         -            echo "----console--outut--citation--end-------"
   688         -            echo ""
   689         -            echo "GUID=='ec70acd6-b0de-4e1b-a262-83f2c08160e7'"
   690         -            echo ""
   691         -            #----
   692         -            cd $S_FP_ORIG
   693         -            exit 1 # exit with error
   694         -        fi
   695         -        #---- 
   696         -        # The gawk is used for selecting the 1. column because 
   697         -        # according to the
   698         -        #
   699         -        #     echo "aa bb" | time -v gawk '{printf $1}'
   700         -        #
   701         -        # the gawk takes about 3MiB, which is far less than the 
   702         -        #
   703         -        #     time -v ruby -e "puts 'hi'"
   704         -        #
   705         -        # indicated 16MiB
   706         -        #
   707         -        S_FUNC_MMMV_SHA256_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`"
   708         -    fi
   709         -    #--------------------
   710         -    if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "rhash" ]; then
   711         -        S_TMP_0="`rhash --sha256 $S_FP_2_AN_EXISTING_FILE 2>/dev/null`"
   712         -        if [ "$?" != "0" ]; then
   713         -            echo ""
   714         -            echo "The console application \"rhash\" "
   715         -            echo "exited with an error."
   716         -            echo ""
   717         -            echo "----console--outut--citation--start-----"
   718         -            echo "`rhash --sha256 $S_FP_2_AN_EXISTING_FILE `"
   719         -            echo "----console--outut--citation--end-------"
   720         -            echo ""
   721         -            echo "GUID=='56091f39-0544-449c-a562-83f2c08160e7'"
   722         -            echo ""
   723         -            #----
   724         -            cd $S_FP_ORIG
   725         -            exit 1 # exit with error
   726         -        fi
   727         -        S_FUNC_MMMV_SHA256_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`"
   728         -    fi
   729         -    #--------------------
   730         -    if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "sha256" ]; then
   731         -        #----
   732         -        S_FUNC_MMMV_SHA256_T1_RESULT=\
   733         -        "`S_TMP_0=\"\`sha256 $S_FP_2_AN_EXISTING_FILE\`\" ruby -e \"s0=ENV['S_TMP_0'].to_s;ix_0=s0.index(') = ');print s0[(ix_0+4)..(-1)]\" 2>/dev/null`"
   734         -        #----
   735         -        if [ "$?" != "0" ]; then
   736         -            echo ""
   737         -            echo "The console application \"sha256\" "
   738         -            echo "exited with an error."
   739         -            echo ""
   740         -            echo "----console--outut--citation--start-----"
   741         -            echo \
   742         -            "`S_TMP_0=\"\`sha256 $S_FP_2_AN_EXISTING_FILE\`\" ruby -e \"s0=ENV['S_TMP_0'].to_s;ix_0=s0.index(') = ');print s0[(ix_0+4)..(-1)]\"`"
   743         -            echo "----console--outut--citation--end-------"
   744         -            echo ""
   745         -            echo "GUID=='65d0c243-954c-4d36-a452-83f2c08160e7'"
   746         -            echo ""
   747         -            #----
   748         -            cd $S_FP_ORIG
   749         -            exit 1 # exit with error
   750         -        fi
   751         -    fi
   752         -    #--------------------
   753         -    S_TMP_0="`printf \"$S_FUNC_MMMV_SHA256_T1_RESULT\" | wc -m | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
   754         -    S_TMP_1="64"
   755         -    if [ "$S_TMP_0" != "$S_TMP_1" ]; then
   756         -        echo ""
   757         -        echo "According to the specification of the SHA-256 hash algorithm"
   758         -        echo "the lenght of the SHA-256 hash is "
   759         -        echo "$S_TMP_1 hexadecimal characters, but the result of the "
   760         -        echo ""
   761         -        echo "    func_mmmv_sha256_t1"
   762         -        echo ""
   763         -        echo "is something else. The flawed hash candidate in parenthesis:"
   764         -        echo "($S_FUNC_MMMV_SHA256_T1_RESULT)"
   765         -        echo ""
   766         -        echo "The lenght candidate of the flawed hash candidate in parenthesis:"
   767         -        echo "($S_TMP_0)."
   768         -        echo ""
   769         -        echo "GUID=='9fbed31c-5742-4c66-a352-83f2c08160e7'"
   770         -        echo ""
   771         -        #----
   772         -        cd $S_FP_ORIG
   773         -        exit 1 # exit with error
   774         -    fi
   775         -    #--------------------
   776         -} # func_mmmv_sha256_t1
   777         -
   778         -
   779         -#--------------------------------------------------------------------------
   780         -
   781         -S_FUNC_MMMV_TIGERHASH_T1_RESULT="not_yet_set"
   782         -S_FUNC_MMMV_TIGERHASH_T1_MODE="" # optim. to skip repeating console tool selection
   783         -func_mmmv_tigerhash_t1() { # requires also ruby and gawk 
   784         -    local S_FP_2_AN_EXISTING_FILE="$1" # first function argument
   785         -    #--------
   786         -    func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_tigerhash_t1" "$1"
   787         -    #--------------------
   788         -    # Mode selection:
   789         -    if [ "$S_FUNC_MMMV_TIGERHASH_T1_MODE" == "" ] ; then
   790         -        SB_EXISTS_ON_PATH_T1_RESULT="f"  # if-block init
   791         -        #----
   792         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
   793         -            S_TMP_0="tigerdeep" # usually available on Linux
   794         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
   795         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
   796         -                 S_FUNC_MMMV_TIGERHASH_T1_MODE="$S_TMP_0"
   797         -            fi
   798         -        fi
   799         -        #----
   800         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
   801         -            S_TMP_0="rhash"    # part of the BSD package collection in 2016
   802         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
   803         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
   804         -                 S_FUNC_MMMV_TIGERHASH_T1_MODE="$S_TMP_0"
   805         -            fi
   806         -        fi
   807         -        #--------
   808         -        if [ "$S_FUNC_MMMV_TIGERHASH_T1_MODE" == "" ] ; then
   809         -            echo ""
   810         -            echo "All of the Tiger hash implementations that this script " 
   811         -            echo "is capable of using (tigerdeep, rhash) "
   812         -            echo "are missing from the PATH."
   813         -            echo "GUID=='e0e0004d-7492-4aae-8152-83f2c08160e7'"
   814         -            echo ""
   815         -            #----
   816         -            cd $S_FP_ORIG
   817         -            exit 1 # exit with error
   818         -        fi
   819         -        #--------
   820         -        if [ "$?" != "0" ]; then
   821         -            echo ""
   822         -            echo "This script is flawed."
   823         -            echo "GUID=='4e6ce53e-0891-4a84-a152-83f2c08160e7'"
   824         -            echo ""
   825         -            #----
   826         -            cd $S_FP_ORIG
   827         -            exit 1 # exit with error
   828         -        fi
   829         -        #--------
   830         -    fi
   831         -    #--------------------
   832         -    S_FUNC_MMMV_TIGERHASH_T1_RESULT=""
   833         -    #--------------------
   834         -    if [ "$S_FUNC_MMMV_TIGERHASH_T1_MODE" == "tigerdeep" ]; then
   835         -        S_TMP_0="`tigerdeep $S_FP_2_AN_EXISTING_FILE 2>/dev/null`"
   836         -        if [ "$?" != "0" ]; then
   837         -            echo ""
   838         -            echo "The console application \"tigerdeep\" "
   839         -            echo "exited with an error."
   840         -            echo ""
   841         -            echo "----console--outut--citation--start-----"
   842         -            echo "`tigerdeep $S_FP_2_AN_EXISTING_FILE`" # stdout and stderr
   843         -            echo "----console--outut--citation--end-------"
   844         -            echo ""
   845         -            echo "GUID=='0ac9014e-b1d8-49c0-a352-83f2c08160e7'"
   846         -            echo ""
   847         -            #----
   848         -            cd $S_FP_ORIG
   849         -            exit 1 # exit with error
   850         -        fi
   851         -        S_FUNC_MMMV_TIGERHASH_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`"
   852         -    fi
   853         -    #--------------------
   854         -    if [ "$S_FUNC_MMMV_TIGERHASH_T1_MODE" == "rhash" ]; then
   855         -        S_TMP_0="`rhash --tiger $S_FP_2_AN_EXISTING_FILE 2>/dev/null`"
   856         -        if [ "$?" != "0" ]; then
   857         -            echo ""
   858         -            echo "The console application \"rhash\" "
   859         -            echo "exited with an error."
   860         -            echo ""
   861         -            echo "----console--outut--citation--start-----"
   862         -            echo "`rhash --tiger $S_FP_2_AN_EXISTING_FILE `"
   863         -            echo "----console--outut--citation--end-------"
   864         -            echo ""
   865         -            echo "GUID=='0d5ce111-3bf8-4eee-9252-83f2c08160e7'"
   866         -            echo ""
   867         -            #----
   868         -            cd $S_FP_ORIG
   869         -            exit 1 # exit with error
   870         -        fi
   871         -        S_FUNC_MMMV_TIGERHASH_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`"
   872         -    fi
   873         -    #--------------------
   874         -    S_TMP_0="`printf \"$S_FUNC_MMMV_TIGERHASH_T1_RESULT\" | wc -m | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
   875         -    S_TMP_1="48"
   876         -    if [ "$S_TMP_0" != "$S_TMP_1" ]; then
   877         -        echo ""
   878         -        echo "According to the specification of the Tiger hash algorithm"
   879         -        echo "the lenght of the Tiger hash is "
   880         -        echo "$S_TMP_1 hexadecimal characters, but the result of the "
   881         -        echo ""
   882         -        echo "    func_mmmv_tigerhash_t1"
   883         -        echo ""
   884         -        echo "is something else. The flawed hash candidate in parenthesis:"
   885         -        echo "($S_FUNC_MMMV_TIGERHASH_T1_RESULT)"
   886         -        echo ""
   887         -        echo "The lenght candidate of the flawed hash candidate in parenthesis:"
   888         -        echo "($S_TMP_0)."
   889         -        echo ""
   890         -        echo "GUID=='23b13133-f4fb-46fd-8552-83f2c08160e7'"
   891         -        echo ""
   892         -        #----
   893         -        cd $S_FP_ORIG
   894         -        exit 1 # exit with error
   895         -    fi
   896         -    #--------------------
   897         -} # func_mmmv_tigerhash_t1
   898         -
   899         -
   900         -#--------------------------------------------------------------------------
   901         -
   902         -S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT="not_yet_set"
   903         -S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE="" # optim. to skip repeating console tool selection
   904         -func_mmmv_whirlpoolhash_t1() { # requires also ruby and gawk 
   905         -    local S_FP_2_AN_EXISTING_FILE="$1" # first function argument
   906         -    #--------
   907         -    func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_whirlpoolhash_t1" "$1"
   908         -    #--------------------
   909         -    # Mode selection:
   910         -    if [ "$S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE" == "" ] ; then
   911         -        SB_EXISTS_ON_PATH_T1_RESULT="f"  # if-block init
   912         -        #----
   913         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
   914         -            S_TMP_0="whirlpooldeep" # usually available on Linux
   915         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
   916         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
   917         -                 S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE="$S_TMP_0"
   918         -            fi
   919         -        fi
   920         -        #----
   921         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
   922         -            S_TMP_0="rhash"    # part of the BSD package collection in 2016
   923         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
   924         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
   925         -                 S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE="$S_TMP_0"
   926         -            fi
   927         -        fi
   928         -        #--------
   929         -        if [ "$S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE" == "" ] ; then
   930         -            echo ""
   931         -            echo "All of the Whirlpool hash implementations that this script " 
   932         -            echo "is capable of using (whirlpooldeep, rhash) "
   933         -            echo "are missing from the PATH."
   934         -            echo "GUID=='3ec66a62-8721-42e7-b252-83f2c08160e7'"
   935         -            echo ""
   936         -            #----
   937         -            cd $S_FP_ORIG
   938         -            exit 1 # exit with error
   939         -        fi
   940         -        #--------
   941         -        if [ "$?" != "0" ]; then
   942         -            echo ""
   943         -            echo "This script is flawed."
   944         -            echo "GUID=='a812ee31-2b39-4268-9242-83f2c08160e7'"
   945         -            echo ""
   946         -            #----
   947         -            cd $S_FP_ORIG
   948         -            exit 1 # exit with error
   949         -        fi
   950         -        #--------
   951         -    fi
   952         -    #--------------------
   953         -    S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT=""
   954         -    #--------------------
   955         -    if [ "$S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE" == "whirlpooldeep" ]; then
   956         -        S_TMP_0="`whirlpooldeep $S_FP_2_AN_EXISTING_FILE 2>/dev/null`"
   957         -        if [ "$?" != "0" ]; then
   958         -            echo ""
   959         -            echo "The console application \"whirlpooldeep\" "
   960         -            echo "exited with an error."
   961         -            echo ""
   962         -            echo "----console--outut--citation--start-----"
   963         -            echo "`whirlpooldeep $S_FP_2_AN_EXISTING_FILE`" # stdout and stderr
   964         -            echo "----console--outut--citation--end-------"
   965         -            echo ""
   966         -            echo "GUID=='5ac1162f-5b05-4db9-8442-83f2c08160e7'"
   967         -            echo ""
   968         -            #----
   969         -            cd $S_FP_ORIG
   970         -            exit 1 # exit with error
   971         -        fi
   972         -        S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`"
   973         -    fi
   974         -    #--------------------
   975         -    if [ "$S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE" == "rhash" ]; then
   976         -        S_TMP_0="`rhash --whirlpool $S_FP_2_AN_EXISTING_FILE 2>/dev/null`"
   977         -        if [ "$?" != "0" ]; then
   978         -            echo ""
   979         -            echo "The console application \"rhash\" "
   980         -            echo "exited with an error."
   981         -            echo ""
   982         -            echo "----console--outut--citation--start-----"
   983         -            echo "`rhash --whirlpool $S_FP_2_AN_EXISTING_FILE `"
   984         -            echo "----console--outut--citation--end-------"
   985         -            echo ""
   986         -            echo "GUID=='37202b22-1600-406b-9142-83f2c08160e7'"
   987         -            echo ""
   988         -            #----
   989         -            cd $S_FP_ORIG
   990         -            exit 1 # exit with error
   991         -        fi
   992         -        S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`"
   993         -    fi
   994         -    #--------------------
   995         -    S_TMP_0="`printf \"$S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT\" | wc -m | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
   996         -    S_TMP_1="128"
   997         -    if [ "$S_TMP_0" != "$S_TMP_1" ]; then
   998         -        echo ""
   999         -        echo "According to the specification of the Whirlpool hash algorithm"
  1000         -        echo "the lenght of the Tiger hash is "
  1001         -        echo "$S_TMP_1 hexadecimal characters, but the result of the "
  1002         -        echo ""
  1003         -        echo "    func_mmmv_whirlpoolhash_t1"
  1004         -        echo ""
  1005         -        echo "is something else. The flawed hash candidate in parenthesis:"
  1006         -        echo "($S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT)"
  1007         -        echo ""
  1008         -        echo "The lenght candidate of the flawed hash candidate in parenthesis:"
  1009         -        echo "($S_TMP_0)."
  1010         -        echo ""
  1011         -        echo "GUID=='6f22524d-5309-48d6-9142-83f2c08160e7'"
  1012         -        echo ""
  1013         -        #----
  1014         -        cd $S_FP_ORIG
  1015         -        exit 1 # exit with error
  1016         -    fi
  1017         -    #--------------------
  1018         -} # func_mmmv_whirlpoolhash_t1
  1019         -
  1020         -
  1021         -#--------------------------------------------------------------------------
  1022         -
  1023         -S_FUNC_MMMV_FILESIZE_T1_RESULT="not_yet_set"
  1024         -S_FUNC_MMMV_FILESIZE_T1_MODE="" # optim. to skip repeating console tool selection
  1025         -func_mmmv_filesize_t1() { 
  1026         -    local S_FP_2_AN_EXISTING_FILE="$1" # first function argument
  1027         -    #--------
  1028         -    func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_filesize_t1" "$1"
  1029         -    #--------------------
  1030         -    # Mode selection:
  1031         -    if [ "$S_FUNC_MMMV_FILESIZE_T1_MODE" == "" ] ; then
  1032         -        SB_EXISTS_ON_PATH_T1_RESULT="f"  # if-block init
  1033         -        #----
  1034         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
  1035         -            S_TMP_0="filesize" # usually available on Linux
  1036         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
  1037         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
  1038         -                 S_FUNC_MMMV_FILESIZE_T1_MODE="$S_TMP_0"
  1039         -            fi
  1040         -        fi
  1041         -        #----
  1042         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
  1043         -            S_TMP_0="ruby"    # helps on BSD
  1044         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
  1045         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
  1046         -                 S_FUNC_MMMV_FILESIZE_T1_MODE="$S_TMP_0"
  1047         -            fi
  1048         -        fi
  1049         -        #--------
  1050         -        if [ "$S_FUNC_MMMV_FILESIZE_T1_MODE" == "" ] ; then
  1051         -            echo ""
  1052         -            echo "All of the applications that this function is " 
  1053         -            echo "capable of using for finding out file size (filesize, ruby)"
  1054         -            echo "are missing from the PATH."
  1055         -            echo "GUID=='c16c313b-1051-410e-a242-83f2c08160e7'"
  1056         -            echo ""
  1057         -            #----
  1058         -            cd $S_FP_ORIG
  1059         -            exit 1 # exit with error
  1060         -        fi
  1061         -        #--------
  1062         -        if [ "$?" != "0" ]; then
  1063         -            echo ""
  1064         -            echo "This script is flawed."
  1065         -            echo "GUID=='3b8d513c-90dd-406b-a442-83f2c08160e7'"
  1066         -            echo ""
  1067         -            #----
  1068         -            cd $S_FP_ORIG
  1069         -            exit 1 # exit with error
  1070         -        fi
  1071         -        #--------
  1072         -    fi
  1073         -    #--------------------
  1074         -    S_FUNC_MMMV_FILESIZE_T1_RESULT=""
  1075         -    #--------------------
  1076         -    if [ "$S_FUNC_MMMV_FILESIZE_T1_MODE" == "filesize" ]; then
  1077         -        S_TMP_0="`filesize $S_FP_2_AN_EXISTING_FILE 2>/dev/null`"
  1078         -        if [ "$?" != "0" ]; then
  1079         -            echo ""
  1080         -            echo "The console application \"filesize\" "
  1081         -            echo "exited with an error."
  1082         -            echo ""
  1083         -            echo "----console--outut--citation--start-----"
  1084         -            echo "`filesize $S_FP_2_AN_EXISTING_FILE`" # stdout and stderr
  1085         -            echo "----console--outut--citation--end-------"
  1086         -            echo ""
  1087         -            echo "GUID=='28f88541-0f95-4a94-8442-83f2c08160e7'"
  1088         -            echo ""
  1089         -            #----
  1090         -            cd $S_FP_ORIG
  1091         -            exit 1 # exit with error
  1092         -        fi
  1093         -        S_FUNC_MMMV_FILESIZE_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`"
  1094         -    fi
  1095         -    #--------------------
  1096         -    if [ "$S_FUNC_MMMV_FILESIZE_T1_MODE" == "ruby" ]; then
  1097         -        S_TMP_0="`ruby -e \"printf(File.size('$S_FP_2_AN_EXISTING_FILE').to_s)\" 2>/dev/null`"
  1098         -        if [ "$?" != "0" ]; then
  1099         -            echo ""
  1100         -            echo "The console application \"ruby\" "
  1101         -            echo "exited with an error."
  1102         -            echo ""
  1103         -            echo "----console--outut--citation--start-----"
  1104         -            echo "`ruby -e \"printf(File.size('$S_FP_2_AN_EXISTING_FILE').to_s)\"`"
  1105         -            echo "----console--outut--citation--end-------"
  1106         -            echo ""
  1107         -            echo "GUID=='53b91474-cdfe-43f8-b242-83f2c08160e7'"
  1108         -            echo ""
  1109         -            #----
  1110         -            cd $S_FP_ORIG
  1111         -            exit 1 # exit with error
  1112         -        fi
  1113         -        S_FUNC_MMMV_FILESIZE_T1_RESULT="$S_TMP_0"
  1114         -    fi
  1115         -    #--------------------
  1116         -    S_TMP_0="`printf \"$S_FUNC_MMMV_FILESIZE_T1_RESULT\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
  1117         -    local SB_THROW="f"
  1118         -    if [ "$S_TMP_0" != "$S_FUNC_MMMV_FILESIZE_T1_RESULT" ]; then
  1119         -        SB_THROW="t"
  1120         -    else
  1121         -        if [ "$S_FUNC_MMMV_FILESIZE_T1_RESULT" == "" ]; then
  1122         -            SB_THROW="t"
  1123         -        fi
  1124         -    fi
  1125         -    #----
  1126         -    if [ "$SB_THROW" == "t" ]; then
  1127         -        echo ""
  1128         -        echo "The result of the "
  1129         -        echo ""
  1130         -        echo "    func_mmmv_filesize_t1"
  1131         -        echo ""
  1132         -        echo "for "
  1133         -        echo ""
  1134         -        echo "($S_FUNC_MMMV_FILESIZE_T1_RESULT)"
  1135         -        echo ""
  1136         -        echo "either contain spaces, tabs or is an empty string," 
  1137         -        echo "which is wrong, because even a file with the size of 0 "
  1138         -        echo "should have a file size of \"0\", which is not an empty string."
  1139         -        echo "GUID=='4e5a622c-7b21-4de0-a432-83f2c08160e7'"
  1140         -        echo ""
  1141         -        #----
  1142         -        cd $S_FP_ORIG
  1143         -        exit 1 # exit with error
  1144         -    fi
  1145         -    #--------------------
  1146         -} # func_mmmv_filesize_t1
  1147         -
  1148         -
  1149         -#--------------------------------------------------------------------------
  1150         -
  1151         -func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1() { 
  1152         -    echo ""
  1153         -    echo "Command line format: "
  1154         -    echo ""
  1155         -    echo "<the name of this script>  ARGLIST "
  1156         -    echo ""
  1157         -    echo "        ARGLIST :== help | WRAP | UNWRAP | VERIFY | RUN_SELFTEST "
  1158         -    echo "           WRAP :== wrap <file path> "
  1159         -    echo "         UNWRAP :== unwrap <file path> "
  1160         -    echo "         VERIFY :== verify <file path> "
  1161         -    echo "   RUN_SELFTEST :== test_hash_t1 <file path> "
  1162         -    echo ""
  1163         -    echo ""
  1164         -    echo ""
  1165         -} # func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1
  1166         -
  1167         -#--------------------------------------------------------------------------
  1168         -
  1169         -func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1() { 
  1170         -    local S_FP_0="$1" # Path to the file. 
  1171         -    #--------
  1172         -    if [ "$S_FP_0" == "" ]; then
  1173         -        echo ""
  1174         -        echo "The 2. console argument is expected to be "
  1175         -        echo "a path to a file, but currently "
  1176         -        echo "the 2. console argument is missing."
  1177         -        echo "GUID=='fe2aff9e-9555-40a3-b332-83f2c08160e7'"
  1178         -        echo ""
  1179         -        #----
  1180         -        cd $S_FP_ORIG
  1181         -        exit 1 # exit with error
  1182         -    fi
  1183         -    #--------
  1184         -    if [ ! -e "$S_FP_0" ]; then
  1185         -        if [ -h "$S_FP_0" ]; then
  1186         -            echo ""
  1187         -            echo "The file path "
  1188         -            echo ""
  1189         -            echo "    $S_FP_0"
  1190         -            echo ""
  1191         -            echo "is a path of a broken symlink, but symlinks "
  1192         -            echo "are not supported at all."
  1193         -            echo "The reason, why symlinks to files are not supported is that "
  1194         -            echo "the file size of symlinks can differ from "
  1195         -            echo "the file size of the target of the symlink."
  1196         -            echo "GUID=='60e5391a-37c5-48e4-b332-83f2c08160e7'"
  1197         -            echo ""
  1198         -        else
  1199         -            echo ""
  1200         -            echo "The file with the path of "
  1201         -            echo ""
  1202         -            echo "    $S_FP_0"
  1203         -            echo ""
  1204         -            echo "does not exist."
  1205         -            echo "GUID=='45c4b001-7a5c-4a0a-b732-83f2c08160e7'"
  1206         -            echo ""
  1207         -        fi
  1208         -        #----
  1209         -        cd $S_FP_ORIG
  1210         -        exit 1 # exit with error
  1211         -    fi
  1212         -    #--------
  1213         -    if [ -d "$S_FP_0" ]; then
  1214         -        if [ -h "$S_FP_0" ]; then
  1215         -            echo ""
  1216         -            echo "The path "
  1217         -            echo ""
  1218         -            echo "    $S_FP_0"
  1219         -            echo ""
  1220         -            echo "references a symlink that references folder, but "
  1221         -            echo "a file is expected."
  1222         -            echo "GUID=='4b3f22d7-441b-4de8-b432-83f2c08160e7'"
  1223         -            echo ""
  1224         -        else
  1225         -            echo ""
  1226         -            echo "The path "
  1227         -            echo ""
  1228         -            echo "    $S_FP_0"
  1229         -            echo ""
  1230         -            echo "references a folder, but it is expected to "
  1231         -            echo "to reference a file."
  1232         -            echo "GUID=='f3d00ec1-40be-4f84-a432-83f2c08160e7'"
  1233         -            echo ""
  1234         -        fi
  1235         -        #----
  1236         -        cd $S_FP_ORIG
  1237         -        exit 1 # exit with error
  1238         -    fi
  1239         -    #--------
  1240         -    if [ -h "$S_FP_0" ]; then
  1241         -        echo ""
  1242         -        echo "The path "
  1243         -        echo ""
  1244         -        echo "    $S_FP_0"
  1245         -        echo ""
  1246         -        echo "references a symlink, a file is expected."
  1247         -        echo "The reason, why symlinks to files are not supported is that "
  1248         -        echo "the file size of symlinks can differ from "
  1249         -        echo "the file size of the target of the symlink."
  1250         -        echo "GUID=='20430c48-653d-4a05-b432-83f2c08160e7'"
  1251         -        echo ""
  1252         -        #----
  1253         -        cd $S_FP_ORIG
  1254         -        exit 1 # exit with error
  1255         -    fi
  1256         -} # func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1
  1257         -
  1258         -
  1259         -#--------------------------------------------------------------------------
  1260         -
  1261         -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER="for input and output"
  1262         -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE="" # optim.  hack
  1263         -func_mmmv_silktorrent_packager_t1_bash_reverse_string() { 
  1264         -    local S_IN="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER"
  1265         -    #--------------------
  1266         -    local S_TMP_0="not set"
  1267         -    # Mode selection:
  1268         -    if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE" == "" ] ; then
  1269         -        SB_EXISTS_ON_PATH_T1_RESULT="f"  # if-block init
  1270         -        #----
  1271         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
  1272         -            S_TMP_0="gawk" # usually available on Linux
  1273         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
  1274         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
  1275         -                 S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE="$S_TMP_0"
  1276         -            fi
  1277         -        fi
  1278         -        #----
  1279         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
  1280         -            S_TMP_0="ruby"    # helps on BSD
  1281         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
  1282         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
  1283         -                 S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE="$S_TMP_0"
  1284         -            fi
  1285         -        fi
  1286         -        #--------
  1287         -        if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE" == "" ] ; then
  1288         -            echo ""
  1289         -            echo "All of the applications that this function is " 
  1290         -            echo "capable of using for finding out file size (gawk, ruby)"
  1291         -            echo "are missing from the PATH."
  1292         -            echo "GUID=='35084451-8a4f-465e-a222-83f2c08160e7'"
  1293         -            echo ""
  1294         -            #----
  1295         -            cd $S_FP_ORIG
  1296         -            exit 1 # exit with error
  1297         -        fi
  1298         -        #--------
  1299         -        if [ "$?" != "0" ]; then
  1300         -            echo ""
  1301         -            echo "This script is flawed."
  1302         -            echo "GUID=='d1cca38b-d5ee-4fc9-a822-83f2c08160e7'"
  1303         -            echo ""
  1304         -            #----
  1305         -            cd $S_FP_ORIG
  1306         -            exit 1 # exit with error
  1307         -        fi
  1308         -        #--------
  1309         -    fi
  1310         -    #--------------------
  1311         -    #--------------------
  1312         -    S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER=""
  1313         -    #--------
  1314         -    if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE" == "gawk" ]; then
  1315         -        # The awk code example originates from 
  1316         -        # http://www.linuxandlife.com/2013/06/how-to-reverse-string.html
  1317         -        # archival copy: https://archive.is/Cx0xF
  1318         -        #----
  1319         -        S_TMP_0="`printf "$S_IN" | \
  1320         -            awk '{ for(i=length;i!=0;i--)x=x substr($0,i,1);}END{printf  x}'`"
  1321         -        if [ "$?" != "0" ]; then
  1322         -            echo ""
  1323         -            echo "The console application \"gawk\" "
  1324         -            echo "exited with an error."
  1325         -            echo ""
  1326         -            echo "----console--outut--citation--start-----"
  1327         -            echo "`printf "$S_IN" | awk '{ for(i=length;i!=0;i--)x=x substr($0,i,1);}END{printf  x}'`"
  1328         -            echo "----console--outut--citation--end-------"
  1329         -            echo ""
  1330         -            echo "GUID=='2e32181a-f13c-49bf-8222-83f2c08160e7'"
  1331         -            echo ""
  1332         -            #----
  1333         -            cd $S_FP_ORIG
  1334         -            exit 1 # exit with error
  1335         -        fi
  1336         -        S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER="$S_TMP_0"
  1337         -    fi
  1338         -    #--------
  1339         -    if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE" == "ruby" ]; then
  1340         -        #----
  1341         -        S_TMP_0="`ruby -e \"puts(ARGV[0].to_s.reverse)\" "$S_IN" 2>/dev/null`"
  1342         -        if [ "$?" != "0" ]; then
  1343         -            echo ""
  1344         -            echo "The console application \"ruby\" "
  1345         -            echo "exited with an error."
  1346         -            echo ""
  1347         -            echo "----console--outut--citation--start-----"
  1348         -            echo "`ruby -e \"puts('$S_IN'.reverse)\"`" # with the stderr
  1349         -            echo "----console--outut--citation--end-------"
  1350         -            echo ""
  1351         -            echo "GUID=='4707c539-4300-4cb5-8322-83f2c08160e7'"
  1352         -            echo ""
  1353         -            #----
  1354         -            cd $S_FP_ORIG
  1355         -            exit 1 # exit with error
  1356         -        fi
  1357         -        S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER="$S_TMP_0"
  1358         -    fi
  1359         -    #--------------------
  1360         -} # func_mmmv_silktorrent_packager_t1_bash_reverse_string
  1361         -
  1362         -
  1363         -#--------------------------------------------------------------------------
  1364         -
  1365         -# As of 2016 the maximum file name length on Linux is 255 characters.
  1366         -# At
  1367         -#
  1368         -#    http://unix.stackexchange.com/questions/32795/what-is-the-maximum-allowed-filename-and-folder-size-with-ecryptfs
  1369         -#
  1370         -# the eCryptfs related recommendation is to keep the lengths
  1371         -# of file names to less than 140 characters. 
  1372         -#
  1373         -# A citation from 
  1374         -# http://windows.microsoft.com/en-us/windows/file-names-extensions-faq#1TC=windows-7
  1375         -# archieval copy: https://archive.is/UKBmd
  1376         -#     "Windows limits a single path to 260 characters."
  1377         -#
  1378         -# A citation from CygWin mailing list:
  1379         -# https://cygwin.com/ml/cygwin/2004-10/msg01323.html
  1380         -# archival copy: https://archive.is/GRvFK
  1381         -#     "The Unicode versions of several functions permit a 
  1382         -#     maximum path length of 32,767 characters, 
  1383         -#     composed of components up to 255 characters in length. 
  1384         -#     To specify such a path, use the "\\?\" prefix. For example, 
  1385         -#     "\\?\D:\<path>". To specify such a UNC path, use the "\\?\UNC\" 
  1386         -#     prefix. For example, "\\?\UNC\<server>\<share>". 
  1387         -#     Note that these prefixes are not used as part of the path 
  1388         -#     itself. They indicate that the path should be passed to the 
  1389         -#     system with minimal modification. An implication of this is 
  1390         -#     that you cannot use forward slashes to represent path separators 
  1391         -#     or a period to represent the current directory."
  1392         -# Related pages:
  1393         -# https://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx
  1394         -# archival copy: https://archive.is/p891y
  1395         -#
  1396         -# To allow database indexes that store the 
  1397         -# file names of the blogs 
  1398         -# to work as efficiently as possible, the first
  1399         -# characters of the file name should be as 
  1400         -# uniformly random set of characters as possible.
  1401         -# If file name starts with a secure hash, then 
  1402         -# that requirement is met. 
  1403         -#
  1404         -# The parser that dismantles the file name to relevant components 
  1405         -# should be implementable in different programming languages
  1406         -# without investing considerable amount of development time.
  1407         -# The syntax of the file name should also allow the
  1408         -# file name to be parsed computationally cheaply.
  1409         -#
  1410         -# As of 2016_05 the file extension  .stblob seems to be unused.
  1411         -# Therefore the "silktorrent blob", .stblob, can be used for the 
  1412         -# extension of the blob files.
  1413         -#
  1414         -# Compression of the blobs IS NOT ALLOWED, because the 
  1415         -# blobs must be extractable without becoming a victim 
  1416         -# of an attack, where 100GiB of zeros is packed to a
  1417         -# small file. The container format is the tar format,
  1418         -# without any compression.
  1419         -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT="not set"
  1420         -func_mmmv_silktorrent_packager_t1_bash_blob2filename_t1() { 
  1421         -    local S_FP_0="$1" # Path to the file. 
  1422         -    #----
  1423         -    func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0"
  1424         -    #--------
  1425         -    # The Tiger     hash has  48 characters.
  1426         -    # The Whirlpool hash has 128 characters.
  1427         -    # The SHA-256   hash has  64 characters.
  1428         -    #
  1429         -    # A file size of 1TiB is ~10^12 ~ 13 characters
  1430         -    # A file size of 1PiB is ~10^15 ~ 14 characters
  1431         -    # A file size of 1EiB is ~10^18 ~ 19 characters
  1432         -    # A file size of 1ZiB is ~10^21 ~ 22 characters
  1433         -    # A file size of 1YiB is ~10^24 ~ 25 characters
  1434         -    # 
  1435         -    # The max. file name length on Linux and 
  1436         -    # Windows (Unicode API) is 255 characters.
  1437         -    #----
  1438         -    # The character budget:
  1439         -    #        6 characters --- file name format type ID 
  1440         -    #                         rgx_in_ruby=/v[\d]{4}[_]/
  1441         -    # echo "v0034_s2342_" | gawk '{ gsub(/_/, "_\n"); print }' | \
  1442         -    #                       gawk '/^v[0-9]{4}_/ {printf "%s",$1 }' | \
  1443         -    #                       gawk '{gsub(/[v_]/,"");printf "%s", $1 }'
  1444         -    #
  1445         -    #   max 32 characters --- file size    
  1446         -    #                         rgx_in_ruby=/s[\d]+[_]/
  1447         -    #                         echo "v0034_" | gawk '/^v[0-9]{4}_/ {printf "%s",$1 }'
  1448         -    # echo "v0034_s2342_" | gawk '{ gsub(/_/, "_\n"); print }' | \
  1449         -    #                       gawk '/^s[0-9]+_/ {printf "%s",$1 }' | \
  1450         -    #                       gawk '{gsub(/[s_]/,"");printf "%s", $1 }'
  1451         -    #
  1452         -    #
  1453         -    #       66 characters --- SHA-256  
  1454         -    #                         rgx_in_ruby=/h[\dabcdef]{64}[_]/
  1455         -    # echo "h`sha256sum /dev/null | gawk '/[0-9abcdef]/ {printf "%s",$1}'`_" | \
  1456         -    #                               gawk '/^h[0-9abcdef]+_/ {printf "%s",$1 }' | \
  1457         -    #                               gawk '{gsub(/[h_]/,"");printf "%s", $1 }'
  1458         -    #
  1459         -    #
  1460         -    #       50 characters --- Tiger
  1461         -    #                         rgx_in_ruby=/i[\dabcdef]{48}$/   # lacks the ending "_" 
  1462         -    #                                                          # for db index optimization
  1463         -    #                         The gawk code is as with the sha256, 
  1464         -    #                         except that sha256sum-> tigerdeep, "^h"->"^i",
  1465         -    #                         "[h_]"->"[i_]"
  1466         -    #
  1467         -    #--------
  1468         -    # As the current version of this script depends on Ruby anyway,
  1469         -    # the gawk regex based branches that are really
  1470         -    # complex and require multiple gawk calls can be left unimplemented.
  1471         -    # That way this script becomes more succinct.
  1472         -    #--------------------
  1473         -    func_mmmv_tigerhash_t1 "$S_FP_0"
  1474         -    #echo "       Tiger: $S_FUNC_MMMV_TIGERHASH_T1_RESULT"
  1475         -    #func_mmmv_whirlpoolhash_t1 "$S_FP_0"
  1476         -    #echo "   Whirlpool: $S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT"
  1477         -    func_mmmv_sha256_t1 "$S_FP_0"
  1478         -    #echo "      SHA256: $S_FUNC_MMMV_SHA256_T1_RESULT"
  1479         -    func_mmmv_filesize_t1 "$S_FP_0"
  1480         -    #echo "   file size: $S_FUNC_MMMV_FILESIZE_T1_RESULT"
  1481         -    #--------
  1482         -    local S_NAME_REVERSED="bolbts." # ".stblob".reverse
  1483         -    local S_0="v0001_s$S_FUNC_MMMV_FILESIZE_T1_RESULT"
  1484         -    S_NAME_REVERSED="$S_NAME_REVERSED$S_0"
  1485         -    S_0="_h$S_FUNC_MMMV_SHA256_T1_RESULT"
  1486         -    S_NAME_REVERSED="$S_NAME_REVERSED$S_0"
  1487         -    S_0="_i$S_FUNC_MMMV_TIGERHASH_T1_RESULT"
  1488         -    S_NAME_REVERSED="$S_NAME_REVERSED$S_0"
  1489         -    #----
  1490         -    S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER="$S_NAME_REVERSED"
  1491         -    func_mmmv_silktorrent_packager_t1_bash_reverse_string
  1492         -    S_0="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER"
  1493         -    S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT="$S_0"
  1494         -} # func_mmmv_silktorrent_packager_t1_bash_blob2filename_t1
  1495         -
  1496         -
  1497         -#--------------------------------------------------------------------------
  1498         -
  1499         -func_mmmv_delete_tmp_folder_t1(){
  1500         -    local S_FP_0="$1" # folder path
  1501         -    #--------
  1502         -    if [ ! -e "$S_FP_0" ]; then
  1503         -        echo ""
  1504         -        echo "This script is flawed. The folder "
  1505         -        echo "    $S_FP_0"
  1506         -        echo "is expected to exist during the "
  1507         -        echo "call to this function."
  1508         -        echo "GUID=='28744c23-746a-45de-8322-83f2c08160e7'"
  1509         -        echo ""
  1510         -        #----
  1511         -        cd $S_FP_ORIG
  1512         -        exit 1 # exit with error
  1513         -    fi
  1514         -    #--------
  1515         -    # To avoid a situation, where due to some 
  1516         -    # flaw the home folder or something else important 
  1517         -    # gets accidentally recursively deleted, 
  1518         -    # the following test transforms the path from 
  1519         -    # /tmp/../home/blabla
  1520         -    # to a full path without the dots and then studies, whether
  1521         -    # the full path points to somehwere in the /tmp
  1522         -    local S_FP_1="`cd $S_FP_0; pwd`"
  1523         -    if [ ! -e "$S_FP_1" ]; then
  1524         -        echo ""
  1525         -        echo "This script is flawed. The folder "
  1526         -        echo "    $S_FP_1"
  1527         -        echo "is missing."
  1528         -        echo "GUID=='d16bd124-bc70-4114-8322-83f2c08160e7'"
  1529         -        echo ""
  1530         -        #----
  1531         -        cd $S_FP_ORIG
  1532         -        exit 1 # exit with error
  1533         -    fi
  1534         -    local S_TMP_0="`echo \"$S_FP_1\" | grep -E ^/home `"
  1535         -    if [ "$S_TMP_0" != "" ]; then
  1536         -        echo ""
  1537         -        echo "This script is flawed."
  1538         -        echo "The temporary sandbox folder must reside in /tmp."
  1539         -        echo ""
  1540         -        echo "S_FP_0==$S_FP_0"
  1541         -        echo ""
  1542         -        echo "S_FP_1==$S_FP_1"
  1543         -        echo ""
  1544         -        echo "S_TMP_0==$S_TMP_0"
  1545         -        echo ""
  1546         -        echo "GUID=='5eca69e7-8b8d-47d8-8122-83f2c08160e7'"
  1547         -        echo ""
  1548         -        #----
  1549         -        cd $S_FP_ORIG
  1550         -        exit 1 # exit with error
  1551         -    fi
  1552         -    # Just to be sure, the same thing is checked by a slightly 
  1553         -    # different regex and using the "==" in stead of the "!=".
  1554         -    S_TMP_0="`echo \"$S_FP_1\" | grep -E ^/tmp/`" 
  1555         -    if [ "$S_TMP_0" == "" ]; then
  1556         -        echo ""
  1557         -        echo "This script is flawed."
  1558         -        echo "The temporary sandbox folder must reside in /tmp."
  1559         -        echo ""
  1560         -        echo "S_FP_0==$S_FP_0"
  1561         -        echo ""
  1562         -        echo "S_FP_1==$S_FP_1"
  1563         -        echo ""
  1564         -        echo "S_TMP_0==$S_TMP_0"
  1565         -        echo ""
  1566         -        echo "GUID=='2dafcbf1-68f7-4e41-8512-83f2c08160e7'"
  1567         -        echo ""
  1568         -        #----
  1569         -        cd $S_FP_ORIG
  1570         -        exit 1 # exit with error
  1571         -    fi
  1572         -    #--------
  1573         -    rm -fr $S_FP_1
  1574         -    if [ -e "$S_FP_1" ]; then
  1575         -        echo ""
  1576         -        echo "Something went wrong. The recursive deletion of the temporary folder, "
  1577         -        echo "    $S_FP_1"
  1578         -        echo "failed."
  1579         -        echo "GUID=='1de602b5-174e-4dee-b812-83f2c08160e7'"
  1580         -        echo ""
  1581         -        #----
  1582         -        cd $S_FP_ORIG
  1583         -        exit 1 # exit with error
  1584         -    fi
  1585         -} # func_mmmv_delete_tmp_folder_t1
  1586         -
  1587         -
  1588         -#--------------------------------------------------------------------------
  1589         -
  1590         -# Throws, if there exists a file with the same path.
  1591         -func_mmmv_create_folder_if_it_does_not_already_exist_t1(){
  1592         -    local S_FP_0="$1" # folder path
  1593         -    #--------
  1594         -    if [ "$S_FP_0" == "" ]; then
  1595         -        # Using gawk and alike to cover also cases, where
  1596         -        # $S_FP_0=="  "
  1597         -        # is intentionally left out to avoid the overhead, but
  1598         -        # due to some luck the mkdir exits with an error code greater than 0,
  1599         -        # if it misses a path argument. 
  1600         -        echo ""
  1601         -        echo "S_FP_0==\"\""
  1602         -        echo "GUID=='25389fb4-7fb5-4b04-b312-83f2c08160e7'"
  1603         -        echo ""
  1604         -        #----
  1605         -        cd $S_FP_ORIG
  1606         -        exit 1 # exit with error
  1607         -    fi
  1608         -    #--------------------
  1609         -    if [ -e "$S_FP_0" ]; then
  1610         -        if [ ! -d "$S_FP_0" ]; then
  1611         -            echo ""
  1612         -            echo "The path that is suppose to reference either "
  1613         -            echo "an existing folder or a non-existent folder, "
  1614         -            echo "references a file."
  1615         -            echo "GUID=='3d10cbe1-d097-42a5-9f12-83f2c08160e7'"
  1616         -            echo ""
  1617         -            #----
  1618         -            cd $S_FP_ORIG
  1619         -            exit 1 # exit with error
  1620         -        fi
  1621         -    fi
  1622         -    #--------
  1623         -    mkdir -p $S_FP_0
  1624         -    if [ "$?" != "0" ]; then 
  1625         -        echo ""
  1626         -        echo "mkdir for path "
  1627         -        echo "    $S_FP_0"
  1628         -        echo "failed."
  1629         -        echo "GUID=='15fbef3b-805a-45e2-9312-83f2c08160e7'"
  1630         -        echo ""
  1631         -        #----
  1632         -        cd $S_FP_ORIG
  1633         -        exit 1 # exit with error
  1634         -    fi
  1635         -    #----
  1636         -    if [ ! -e "$S_FP_0" ]; then
  1637         -        echo ""
  1638         -        echo "mkdir execution succeeded, but for some other reason the folder "
  1639         -        echo "    $S_FP_0"
  1640         -        echo "does not exist."
  1641         -        echo "GUID=='e281e242-6195-4fd5-b312-83f2c08160e7'"
  1642         -        echo ""
  1643         -        #----
  1644         -        cd $S_FP_ORIG
  1645         -        exit 1 # exit with error
  1646         -    fi
  1647         -} # func_mmmv_create_folder_if_it_does_not_already_exist_t1
  1648         -
  1649         -
  1650         -#--------------------------------------------------------------------------
  1651         -
  1652         -S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT="" # == "" on failure
  1653         -                                                # otherwise full file path
  1654         -func_mmmv_create_tmp_folder_t1(){
  1655         -    # Does not take any arguments.
  1656         -    #--------
  1657         -    #func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_GUID_t1" "$1"
  1658         -    #--------------------
  1659         -    S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT="" # value for failure
  1660         -    func_mmmv_GUID_t1
  1661         -    if [ "$S_FUNC_MMMV_GUID_T1_RESULT" == "" ]; then
  1662         -        echo ""
  1663         -        echo "This script is flawed. GUID generation failed and "
  1664         -        echo "the GUID generation function did not throw despite "
  1665         -        echo "the fact that it should have detected its own failure."
  1666         -        echo "GUID=='3cc92c1c-4df7-4091-8112-83f2c08160e7'"
  1667         -        echo ""
  1668         -        #----
  1669         -        cd $S_FP_ORIG
  1670         -        exit 1 # exit with error
  1671         -    fi
  1672         -    #----
  1673         -    local S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT"
  1674         -    # The following few if-clauses form a short unrolled loop. The unrolling 
  1675         -    # is for simplicity, because it is Bash, where loops are nasty.
  1676         -    if [ -e "$S_TMP_0" ]; then
  1677         -        func_mmmv_GUID_t1
  1678         -        S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT"
  1679         -    fi
  1680         -    if [ -e "$S_TMP_0" ]; then
  1681         -        func_mmmv_GUID_t1
  1682         -        S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT"
  1683         -    fi
  1684         -    if [ -e "$S_TMP_0" ]; then
  1685         -        func_mmmv_GUID_t1
  1686         -        S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT"
  1687         -    fi
  1688         -    if [ -e "$S_TMP_0" ]; then
  1689         -        func_mmmv_GUID_t1
  1690         -        S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT"
  1691         -    fi
  1692         -    #----
  1693         -    if [ -e "$S_TMP_0" ]; then
  1694         -        echo ""
  1695         -        echo "This script failed to generate a locally unique path."
  1696         -        echo "GUID=='208aa0d2-e05b-4d70-b512-83f2c08160e7'"
  1697         -        echo ""
  1698         -        #----
  1699         -        cd $S_FP_ORIG
  1700         -        exit 1 # exit with error
  1701         -    fi
  1702         -    func_mmmv_create_folder_if_it_does_not_already_exist_t1 "$S_TMP_0"
  1703         -    if [ ! -e "$S_TMP_0" ]; then
  1704         -        echo ""
  1705         -        echo "mkdir for path "
  1706         -        echo "    $S_TMP_0"
  1707         -        echo "failed."
  1708         -        echo "GUID=='9fe0c330-c713-46b9-b502-83f2c08160e7'"
  1709         -        echo ""
  1710         -        #----
  1711         -        cd $S_FP_ORIG
  1712         -        exit 1 # exit with error
  1713         -    fi
  1714         -    S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT="$S_TMP_0"
  1715         -} # func_mmmv_create_tmp_folder_t1 
  1716         -
  1717         -
  1718         -#--------------------------------------------------------------------------
  1719         -
  1720         -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT="not set"
  1721         -func_mmmv_silktorrent_packager_t1_bash_get_packet_format_version_t1() { 
  1722         -    local S_FP_0="$1" # Path to the file. 
  1723         -    #----
  1724         -    # It's not necessary for the file to actually exist,
  1725         -    # because this function only analyzes the file path string.
  1726         -    # func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0"
  1727         -    if [ "$S_FP_0" == "" ]; then
  1728         -        echo ""
  1729         -        echo "The file path candidate must not be an empty string."
  1730         -        echo "GUID=='2edcf528-cd73-42d3-9402-83f2c08160e7'"
  1731         -        echo ""
  1732         -        #----
  1733         -        cd $S_FP_ORIG
  1734         -        exit 1 # exit with error
  1735         -    fi 
  1736         -    #----
  1737         -    # The 
  1738         -    #
  1739         -    #     basename /tmp/foo/
  1740         -    #
  1741         -    # returns
  1742         -    #
  1743         -    #     foo
  1744         -    #
  1745         -    # That is to say, the "basename" ignores the rightmost slash.
  1746         -    #----
  1747         -    local S_TMP_0="`ruby -e \"\
  1748         -        s='noslash';\
  1749         -        if(('$S_FP_0'.reverse)[0..0]=='/') then \
  1750         -            s='slash_present';\
  1751         -        end;\
  1752         -        puts(s);\
  1753         -        \"`"
  1754         -    if [ "$S_TMP_0" != "noslash" ]; then
  1755         -        echo ""
  1756         -        echo "The path candidate must not end with a slash."
  1757         -        echo ""
  1758         -        echo "    S_FP_0==$S_FP_0"
  1759         -        echo ""
  1760         -        echo "    S_TMP_0==$S_TMP_0"
  1761         -        echo ""
  1762         -        echo "GUID=='22c77358-4f17-4c98-9102-83f2c08160e7'"
  1763         -        echo ""
  1764         -        #----
  1765         -        cd $S_FP_ORIG
  1766         -        exit 1 # exit with error
  1767         -    fi
  1768         -    basename $S_FP_0 1>/dev/null # to set a value to the $? in this scope 
  1769         -    if [ "$?" != "0" ]; then
  1770         -        echo ""
  1771         -        echo "The command "
  1772         -        echo ""
  1773         -        echo "    basename $S_FP_0 "
  1774         -        echo ""
  1775         -        echo "exited with an error."
  1776         -        echo "GUID=='fba39e45-4c8a-4b37-b402-83f2c08160e7'"
  1777         -        echo ""
  1778         -        #----
  1779         -        cd $S_FP_ORIG
  1780         -        exit 1 # exit with error
  1781         -    fi 
  1782         -    S_TMP_0="`basename $S_FP_0`"
  1783         -    if [ "$S_TMP_0" == "" ]; then
  1784         -        echo ""
  1785         -        echo "The file path candidate must be a string that "
  1786         -        echo "is not an empty string after "
  1787         -        echo "all of the spaces and tabs have been removed from it."
  1788         -        echo "GUID=='90849917-3e05-40ae-a302-83f2c08160e7'"
  1789         -        echo ""
  1790         -        #----
  1791         -        cd $S_FP_ORIG
  1792         -        exit 1 # exit with error
  1793         -    fi 
  1794         -    #--------
  1795         -    S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT=""
  1796         -    local S_OUT="unsupported_by_this_script_version"
  1797         -    #--------
  1798         -    # In Ruby
  1799         -    #     "foo.stblob"[0..(-8)]=="foo"
  1800         -    #     "foo.stblob"[(-99)..(-1)]==nil
  1801         -    # 
  1802         -    local S_TMP_1="`ruby -e \"\
  1803         -        x='$S_TMP_0'[0..(-8)];\
  1804         -        if(x!=nil) then\
  1805         -            md=x.reverse.match(/v[\\d]+/);\
  1806         -            if(md!=nil) then\
  1807         -                s_0=(md[0].to_s)[1..(-1)];\
  1808         -                print(s_0.sub(/^[0]+/,''));\
  1809         -            end;\
  1810         -        end;\
  1811         -        \"`"
  1812         -    # echo "$S_TMP_0"
  1813         -    # echo "$S_TMP_1"
  1814         -    #----
  1815         -    if [ "$S_TMP_1" != "" ]; then
  1816         -        S_OUT="silktorrent_packet_format_version_$S_TMP_1"
  1817         -    fi 
  1818         -    S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT="$S_OUT"
  1819         -} # func_mmmv_silktorrent_packager_t1_bash_get_packet_format_version_t1
  1820         -
  1821         -
  1822         -#--------------------------------------------------------------------------
  1823         -
  1824         -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_VERIFY_FILE_NAME_T1_RESULT="not set"
  1825         -func_mmmv_silktorrent_packager_t1_bash_verify_file_name_t1() { 
  1826         -    local S_FP_0="$1" # Path to the file. 
  1827         -    #----
  1828         -    func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0"
  1829         -    #--------
  1830         -    func_mmmv_silktorrent_packager_t1_bash_get_packet_format_version_t1 "$S_FP_0"
  1831         -    local S_PACKET_FORMAT="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT"
  1832         -    if [ "$S_PACKET_FORMAT" == "unsupported_by_this_script_version" ]; then
  1833         -        echo ""
  1834         -        echo "There exists a possibility that the "
  1835         -        echo "Silktorrent packet candidate is actually OK, but "
  1836         -        echo "this is an older version of the Silktorrent implementaiton and "
  1837         -        echo "the older version does not support "
  1838         -        echo "newer Silktorrent packet formats. "
  1839         -        echo "The file path of the Silktorrent packet candidate:"
  1840         -        echo ""
  1841         -        echo "    $S_FP_0"
  1842         -        echo ""
  1843         -        echo "GUID=='3e96d920-02dc-43a2-a202-83f2c08160e7'"
  1844         -        echo ""
  1845         -        #----
  1846         -        cd $S_FP_ORIG
  1847         -        exit 1 # exit with error
  1848         -    fi
  1849         -    #--------
  1850         -    local S_TMP_1=""
  1851         -    if [ "$S_PACKET_FORMAT" == "silktorrent_packet_format_version_1" ]; then
  1852         -        func_mmmv_silktorrent_packager_t1_bash_blob2filename_t1 "$S_FP_0"
  1853         -        #echo "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT"
  1854         -        S_TMP_1="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT"
  1855         -    fi
  1856         -    #----
  1857         -    if [ "$S_TMP_1" == "" ]; then
  1858         -        echo ""
  1859         -        echo "This script is flawed."
  1860         -        echo "It should have thrown before the control flow reaches this line."
  1861         -        echo "GUID=='95af1748-4736-48dd-b102-83f2c08160e7'"
  1862         -        echo ""
  1863         -        #----
  1864         -        cd $S_FP_ORIG
  1865         -        exit 1 # exit with error
  1866         -    fi
  1867         -    #--------
  1868         -    local S_TMP_0="`basename $S_FP_0`" # The S_TMP_0 must be evaluated 
  1869         -                                       # after the various functions to 
  1870         -                                       # counter a situation, where 
  1871         -                                       # the S_TMP_0 is overwritten 
  1872         -                                       # by the name-calc function 
  1873         -                                       # or by one of the sub-functions
  1874         -                                       # of the name-calc function.
  1875         -                                       # The flaw occurs, when the 
  1876         -                                       # S_TMP_0 is used within the 
  1877         -                                       # name-calc function without  
  1878         -                                       # declaring it to be a local
  1879         -                                       # variable.
  1880         -    #--------
  1881         -    #echo "S_FP_0==$S_FP_0"
  1882         -    #echo "S_TMP_0==$S_TMP_0"
  1883         -    #echo "S_TMP_1==$S_TMP_1"
  1884         -    local S_OUT=""
  1885         -    if [ "$S_TMP_1" == "$S_TMP_0" ]; then
  1886         -        S_OUT="verification_passed"
  1887         -    else
  1888         -        S_OUT="verification_failed"
  1889         -    fi
  1890         -    S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_VERIFY_FILE_NAME_T1_RESULT="$S_OUT"
  1891         -} # func_mmmv_silktorrent_packager_t1_bash_verify_file_name_t1
  1892         -
  1893         -
  1894         -#--------------------------------------------------------------------------
  1895         -
  1896         -func_mmmv_silktorrent_packager_t1_bash_test_1() { 
  1897         -    local S_FP_0="$1" # Path to the file. 
  1898         -    #----
  1899         -    func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0"
  1900         -    #--------
  1901         -    echo ""
  1902         -    #----
  1903         -    func_mmmv_tigerhash_t1 "$S_FP_0"
  1904         -    echo "       Tiger: $S_FUNC_MMMV_TIGERHASH_T1_RESULT"
  1905         -    func_mmmv_whirlpoolhash_t1 "$S_FP_0"
  1906         -    echo "   Whirlpool: $S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT"
  1907         -    func_mmmv_sha256_t1 "$S_FP_0"
  1908         -    echo "      SHA256: $S_FUNC_MMMV_SHA256_T1_RESULT"
  1909         -    func_mmmv_filesize_t1 "$S_FP_0"
  1910         -    echo "   file size: $S_FUNC_MMMV_FILESIZE_T1_RESULT"
  1911         -    #----
  1912         -    echo ""
  1913         -} # func_mmmv_silktorrent_packager_t1_bash_test_1
  1914         -
  1915         -
  1916         -#--------------------------------------------------------------------------
  1917         -
  1918         -func_mmmv_silktorrent_packager_t1_bash_wrap_t1() {
  1919         -    local S_FP_0="$1" # Path to the file. 
  1920         -    #----
  1921         -    func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0"
  1922         -    #--------
  1923         -    func_mmmv_create_tmp_folder_t1
  1924         -    if [ "$S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT" == "" ]; then
  1925         -        echo "This script is flawed, because the folder "
  1926         -        echo "creation function should have thrown "
  1927         -        echo "before the control flow reaches this branch." 
  1928         -        echo "GUID=='86a9f465-fc12-4f17-b2f1-83f2c08160e7'"
  1929         -        #----
  1930         -        cd $S_FP_ORIG
  1931         -        exit 1 # exit with error
  1932         -    fi
  1933         -    local S_FP_TMP_0="$S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT"
  1934         -    if [ ! -e "$S_FP_TMP_0" ]; then
  1935         -        echo "This script is flawed."
  1936         -        echo "May be some other thread deleted the folder or"
  1937         -        echo "the folder creation function returned a valid path, but"
  1938         -        echo "did not actually create the folder that it was supposed create."
  1939         -        echo "S_FP_TMP_0==$S_FP_TMP_0"
  1940         -        echo "GUID=='58b79d45-c739-4cf0-a2f1-83f2c08160e7'"
  1941         -        #----
  1942         -        cd $S_FP_ORIG
  1943         -        exit 1 # exit with error
  1944         -    fi
  1945         -    #--------
  1946         -    local S_FP_TMP_SILKTORRENT_PACKET="$S_FP_TMP_0/silktorrent_packet"
  1947         -    local S_FP_TMP_SILKTORRENT_PACKET_TAR="$S_FP_TMP_0/silktorrent_packet.tar"
  1948         -    local S_FP_TMP_PAYLOAD="$S_FP_TMP_SILKTORRENT_PACKET/payload"
  1949         -    local S_FP_TMP_HEADER="$S_FP_TMP_SILKTORRENT_PACKET/header"
  1950         -    local S_FP_TMP_HEADER_SALT_TXT="$S_FP_TMP_HEADER/silktorrent_salt.txt"
  1951         -    func_mmmv_create_folder_if_it_does_not_already_exist_t1 "$S_FP_TMP_PAYLOAD" # uses mkdir -p
  1952         -    func_mmmv_create_folder_if_it_does_not_already_exist_t1 "$S_FP_TMP_HEADER"
  1953         -    #--------
  1954         -    # Salting makes sure that it is not possible to 
  1955         -    # conclude the payload bitstream from the 
  1956         -    # Silktorrent packet (file) name, forcing censoring
  1957         -    # parties to download packages 
  1958         -    # that they are not looking for and allowing
  1959         -    # censorship dodgers to publish the same payload bitstream
  1960         -    # in multiple, differet, Silktorrent packages.
  1961         -    func_mmmv_GUID_t1
  1962         -    echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT
  1963         -    func_mmmv_GUID_t1
  1964         -    echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT
  1965         -    func_mmmv_GUID_t1
  1966         -    echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT
  1967         -    func_mmmv_GUID_t1
  1968         -    echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT
  1969         -    func_mmmv_GUID_t1
  1970         -    echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT
  1971         -    func_mmmv_GUID_t1
  1972         -    echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT
  1973         -    #--------
  1974         -    # The file size/Silktorrent pakcket size must also be salted.
  1975         -    ruby -e \
  1976         -        "Random.new_seed;i=0;\
  1977         -         puts '';\
  1978         -         rand(10**6).times{\
  1979         -             i=i+1;\
  1980         -             print(rand(10**6).to_s(16));\
  1981         -             if((i%10)==0) then \
  1982         -                 puts '';\
  1983         -                 i=0;\
  1984         -             end;\
  1985         -         }" \
  1986         -         >> $S_FP_TMP_HEADER_SALT_TXT
  1987         -    #--------
  1988         -    cp -f $S_FP_0 $S_FP_TMP_PAYLOAD/
  1989         -    if [ "$?" != "0" ]; then
  1990         -        echo ""
  1991         -        echo "The command "
  1992         -        echo ""
  1993         -        echo "    cp -f \$S_FP_0 \$S_FP_TMP_PAYLOAD/ "
  1994         -        echo ""
  1995         -        echo "failed. Either this script is flawed or something else went wrong. "
  1996         -        echo ""
  1997         -        echo "    S_FP_0==$S_FP_0"
  1998         -        echo ""
  1999         -        echo "    S_FP_TMP_PAYLOAD=$S_FP_TMP_PAYLOAD"
  2000         -        echo ""
  2001         -        echo "GUID=='82573133-665f-4630-93f1-83f2c08160e7'"
  2002         -        echo ""
  2003         -        #----
  2004         -        cd $S_FP_ORIG
  2005         -        exit 1 # exit with error
  2006         -    fi
  2007         -    #--------
  2008         -    local S_FP_TMP_ORIG_0="`pwd`"
  2009         -    cd $S_FP_TMP_SILKTORRENT_PACKET/.. 
  2010         -    tar -cf $S_FP_TMP_SILKTORRENT_PACKET_TAR ./`basename $S_FP_TMP_SILKTORRENT_PACKET` 2>/dev/null
  2011         -    cd $S_FP_TMP_ORIG_0
  2012         -    if [ "$?" != "0" ]; then
  2013         -        echo ""
  2014         -        echo "The command "
  2015         -        echo ""
  2016         -        echo "    tar -cf \$S_FP_TMP_SILKTORRENT_PACKET_TAR \$S_FP_TMP_SILKTORRENT_PACKET "
  2017         -        echo ""
  2018         -        echo "failed. Either this script is flawed or something else went wrong. "
  2019         -        echo ""
  2020         -        echo "    S_FP_TMP_SILKTORRENT_PACKET=$S_FP_TMP_SILKTORRENT_PACKET"
  2021         -        echo ""
  2022         -        echo "    S_FP_TMP_SILKTORRENT_PACKET_TAR==$S_FP_TMP_SILKTORRENT_PACKET_TAR"
  2023         -        echo ""
  2024         -        echo "GUID=='36819d11-7f01-4740-a4f1-83f2c08160e7'"
  2025         -        echo ""
  2026         -        #----
  2027         -        cd $S_FP_ORIG
  2028         -        exit 1 # exit with error
  2029         -    fi
  2030         -    #----
  2031         -    func_mmmv_silktorrent_packager_t1_bash_blob2filename_t1 "$S_FP_TMP_SILKTORRENT_PACKET_TAR"
  2032         -    local S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME="$S_FP_ORIG/$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT"
  2033         -    mv $S_FP_TMP_SILKTORRENT_PACKET_TAR $S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME 2>/dev/null
  2034         -    if [ "$?" != "0" ]; then
  2035         -        echo ""
  2036         -        echo "Something went wrong."
  2037         -        echo "The renaming and copying of "
  2038         -        echo "    $S_FP_TMP_SILKTORRENT_PACKET_TAR "
  2039         -        echo "to "
  2040         -        echo "    $S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME "
  2041         -        echo "failed."
  2042         -        echo "GUID=='db65c191-4ba3-4672-b3f1-83f2c08160e7'"
  2043         -        echo ""
  2044         -        #----
  2045         -        cd $S_FP_ORIG
  2046         -        exit 1 # exit with error
  2047         -    fi
  2048         -    if [ ! -e "$S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME" ]; then
  2049         -        echo ""
  2050         -        echo "Something went wrong."
  2051         -        echo "The renaming and copying of "
  2052         -        echo ""
  2053         -        echo "    $S_FP_TMP_SILKTORRENT_PACKET_TAR "
  2054         -        echo ""
  2055         -        echo "to "
  2056         -        echo ""
  2057         -        echo "    $S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME "
  2058         -        echo ""
  2059         -        echo "failed. The mv command succeed, but for some reason "
  2060         -        echo "the destination file does not exist."
  2061         -        echo "GUID=='83fae955-7e6b-4a80-85f1-83f2c08160e7'"
  2062         -        echo ""
  2063         -        #----
  2064         -        cd $S_FP_ORIG
  2065         -        exit 1 # exit with error
  2066         -    fi
  2067         -    #--------
  2068         -    func_mmmv_delete_tmp_folder_t1 "$S_FP_TMP_0"
  2069         -    if [ -e "$S_FP_TMP_0" ]; then
  2070         -        echo ""
  2071         -        echo "Something went wrong."
  2072         -        echo "The deletion of the temporary folder, "
  2073         -        echo ""
  2074         -        echo "    $S_FP_TMP_0"
  2075         -        echo ""
  2076         -        echo "failed."
  2077         -        echo "GUID=='2dd1f121-5407-48a0-b2f1-83f2c08160e7'"
  2078         -        echo ""
  2079         -        #----
  2080         -        cd $S_FP_ORIG
  2081         -        exit 1 # exit with error
  2082         -    fi
  2083         -} # func_mmmv_silktorrent_packager_t1_bash_wrap_t1
  2084         -
  2085         -
  2086         -#--------------------------------------------------------------------------
  2087         -
  2088         -func_mmmv_silktorrent_packager_t1_bash_unwrap_t1() {
  2089         -    local S_FP_0="$1" # Path to the file. 
  2090         -    #----
  2091         -    func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0"
  2092         -    #--------
  2093         -    func_mmmv_silktorrent_packager_t1_bash_verify_file_name_t1 "$S_FP_0"
  2094         -    local S_PACKET_FORMAT="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT"
  2095         -    if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_VERIFY_FILE_NAME_T1_RESULT" != "verification_passed" ]; then
  2096         -        echo ""
  2097         -        echo "The Silktorrent packet candidate, "
  2098         -        echo ""
  2099         -        echo "    $S_FP_0"
  2100         -        echo ""
  2101         -        echo "failed Silktorrent packet name verification."
  2102         -        echo "There exists a possibility that the "
  2103         -        echo "Silktorrent packet candidate is actually OK, but "
  2104         -        echo "this is an older version of the Silktorrent implementaiton and "
  2105         -        echo "this, the older, version does not support "
  2106         -        echo "newer Silktorrent packet formats. "
  2107         -        echo "GUID=='859bd022-e09e-4d45-94e1-83f2c08160e7'"
  2108         -        echo ""
  2109         -        #----
  2110         -        cd $S_FP_ORIG
  2111         -        exit 1 # exit with error
  2112         -    fi
  2113         -    #--------
  2114         -    local SB_FORMAT_BRANCH_EXISTS_IN_THIS_FUNCTION="f"
  2115         -    if [ "$S_PACKET_FORMAT" == "silktorrent_packet_format_version_1" ]; then
  2116         -        SB_FORMAT_BRANCH_EXISTS_IN_THIS_FUNCTION="t"
  2117         -        #----
  2118         -        local S_FP_TMP_SILKTORRENT_PACKET="`pwd`/silktorrent_packet"
  2119         -        if [ -e $S_FP_TMP_SILKTORRENT_PACKET ]; then
  2120         -            echo ""
  2121         -            echo "To avoid accidental deletion of files, "
  2122         -            echo "and some other types of flaws, "
  2123         -            echo "there is a requirement that the folder "
  2124         -            echo ""
  2125         -            echo "    ./silktorrent_packet"
  2126         -            echo ""
  2127         -            echo "must be explicitly deleted before calling this script."
  2128         -            echo "GUID=='c2967e69-c2b9-4774-91e1-83f2c08160e7'"
  2129         -            echo ""
  2130         -            #----
  2131         -            cd $S_FP_ORIG
  2132         -            exit 1 # exit with error
  2133         -        fi
  2134         -        #----
  2135         -        tar -xf $S_FP_0 2>/dev/null
  2136         -        if [ "$?" != "0" ]; then
  2137         -            echo ""
  2138         -            echo "Something went wrong. The command "
  2139         -            echo ""
  2140         -            echo "    tar -xf $S_FP_0"
  2141         -            echo ""
  2142         -            echo "exited with an error code, which is $? ."
  2143         -            echo "GUID=='aef74f24-a969-470f-85e1-83f2c08160e7'"
  2144         -            echo ""
  2145         -            #----
  2146         -            cd $S_FP_ORIG
  2147         -            exit 1 # exit with error
  2148         -        fi
  2149         -        rm -f $S_FP_TMP_SILKTORRENT_PACKET/header/silktorrent_salt.txt
  2150         -        #----
  2151         -        if [ ! -e $S_FP_TMP_SILKTORRENT_PACKET ]; then
  2152         -            echo ""
  2153         -            echo "Something went wrong. "
  2154         -            echo "The unpacking of the Silktorrent packet with the path of "
  2155         -            echo ""
  2156         -            echo "    $S_FP_0"
  2157         -            echo ""
  2158         -            echo "failed. The folder \"silktorrent_packet\" "
  2159         -            echo "is missing after the \"tar\" exited without any errors."
  2160         -            echo "GUID=='b6ee795a-4468-480f-a2e1-83f2c08160e7'"
  2161         -            echo ""
  2162         -            #----
  2163         -            cd $S_FP_ORIG
  2164         -            exit 1 # exit with error
  2165         -        fi
  2166         -    fi # silktorrent_packet_format_version_1
  2167         -    #--------
  2168         -    if [ "$SB_FORMAT_BRANCH_EXISTS_IN_THIS_FUNCTION" != "t" ]; then
  2169         -        echo ""
  2170         -        echo "This script is flawed."
  2171         -        echo "There is at least one branch missing from this function."
  2172         -        echo "GUID=='d0662736-c1b5-4902-a1e1-83f2c08160e7'"
  2173         -        echo ""
  2174         -        #----
  2175         -        cd $S_FP_ORIG
  2176         -        exit 1 # exit with error
  2177         -    fi
  2178         -    #--------
  2179         -} # func_mmmv_silktorrent_packager_t1_bash_unwrap_t1
  2180         -
  2181         -
  2182         -#--------------------------------------------------------------------------
  2183         -
  2184         -# The 
  2185         -S_SILKTORRENT_PACKAGER_T1_ACTION="" # is global to allow it to be used
  2186         -# in the error messages of different functions.
  2187         -
  2188         -func_mmmv_silktorrent_packager_t1_bash_determine_action() { 
  2189         -    local S_ARGV_0="$1" # Ruby style ARGV, 0 is the first command line argument.
  2190         -    local S_ARGV_1="$2" 
  2191         -    local S_ARGV_2="$3" 
  2192         -    local S_ARGV_3="$4" 
  2193         -    #--------
  2194         -    if [ "$S_ARGV_0" == "" ]; then
  2195         -        func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1
  2196         -        #----
  2197         -        cd $S_FP_ORIG
  2198         -        exit 1 # exit with an error
  2199         -    fi
  2200         -    #----
  2201         -    local SB_0="f"
  2202         -    if [ "$S_ARGV_0" == "help" ]; then
  2203         -        SB_0="t"
  2204         -    fi
  2205         -    if [ "$S_ARGV_0" == "--help" ]; then
  2206         -        SB_0="t"
  2207         -    fi
  2208         -    if [ "$S_ARGV_0" == "-?" ]; then
  2209         -        SB_0="t"
  2210         -    fi
  2211         -    if [ "$S_ARGV_0" == "-h" ]; then
  2212         -        SB_0="t"
  2213         -    fi
  2214         -    #----
  2215         -    if [ "$SB_0" == "t" ]; then
  2216         -        func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1
  2217         -        #----
  2218         -        cd $S_FP_ORIG
  2219         -        exit 0 # exit without an error
  2220         -    fi
  2221         -    #--------------------------
  2222         -    # Start of actions that require the existance of at least one file.
  2223         -    local S_TMP_0=""
  2224         -    local S_TMP_1=""
  2225         -    #----
  2226         -    S_TMP_0="wrap" 
  2227         -    if [ "$S_ARGV_0" == "$S_TMP_0" ]; then
  2228         -        S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0"
  2229         -    fi
  2230         -    if [ "$S_ARGV_0" == "pack" ]; then   # alias
  2231         -        S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0"
  2232         -    fi
  2233         -    #----
  2234         -    S_TMP_0="unwrap" 
  2235         -    if [ "$S_ARGV_0" == "$S_TMP_0" ]; then
  2236         -        S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0"
  2237         -    fi
  2238         -    if [ "$S_ARGV_0" == "unpack" ]; then # alias
  2239         -        S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0"
  2240         -    fi
  2241         -    #----
  2242         -    S_TMP_0="verify" # checks the matche between the blob and the file name
  2243         -    if [ "$S_ARGV_0" == "$S_TMP_0" ]; then
  2244         -        S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0"
  2245         -    fi
  2246         -    #----
  2247         -    S_TMP_0="test_hash_t1" 
  2248         -    if [ "$S_ARGV_0" == "$S_TMP_0" ]; then
  2249         -        S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0"
  2250         -    fi
  2251         -    #--------
  2252         -    if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "" ]; then
  2253         -        func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1
  2254         -        #----
  2255         -        cd $S_FP_ORIG
  2256         -        exit 1 # exit with an error
  2257         -    fi
  2258         -    # The action name test above has to be before the 
  2259         -    func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_ARGV_1"
  2260         -    # because otherwise the texts of the 
  2261         -    # error messages are incorrect. Indeed, it does
  2262         -    # introduce the following duplicating series of if-clauses,
  2263         -    # but it's all in the name of producing helpful error
  2264         -    # messages at different situations.
  2265         -    #----
  2266         -    if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "wrap" ]; then
  2267         -        func_mmmv_silktorrent_packager_t1_bash_wrap_t1 "$S_ARGV_1"
  2268         -        #----
  2269         -        cd $S_FP_ORIG
  2270         -        exit 0 # exit without an error
  2271         -    fi
  2272         -    #----
  2273         -    if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "unwrap" ]; then
  2274         -        func_mmmv_silktorrent_packager_t1_bash_unwrap_t1 "$S_ARGV_1"
  2275         -        #----
  2276         -        cd $S_FP_ORIG
  2277         -        exit 0 # exit without an error
  2278         -    fi
  2279         -    #----
  2280         -    if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "verify" ]; then
  2281         -        func_mmmv_silktorrent_packager_t1_bash_verify_file_name_t1 "$S_ARGV_1"
  2282         -        echo "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_VERIFY_FILE_NAME_T1_RESULT"
  2283         -        #----
  2284         -        cd $S_FP_ORIG
  2285         -        exit 0 # exit without an error
  2286         -    fi
  2287         -    #----
  2288         -    if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "test_hash_t1" ]; then
  2289         -        func_mmmv_silktorrent_packager_t1_bash_test_1 "$S_ARGV_1"
  2290         -        #----
  2291         -        cd $S_FP_ORIG
  2292         -        exit 0 # exit without an error
  2293         -    fi
  2294         -    #--------------------------
  2295         -        echo "" 
  2296         -        echo "This bash script is flawed. The control flow " 
  2297         -        echo "should have never reached this line."
  2298         -        echo "GUID=='87e4c185-e25f-4047-a8e1-83f2c08160e7'"
  2299         -        echo ""
  2300         -        #----
  2301         -        cd $S_FP_ORIG
  2302         -        exit 1 # exit with an error
  2303         -} # func_mmmv_silktorrent_packager_t1_bash_determine_action
  2304         -
  2305         -func_mmmv_silktorrent_packager_t1_bash_determine_action $1 $2 $3 $4 $5 $6 $7
  2306         -
  2307         -
  2308         -#--------------------------------------------------------------------------
  2309         -
  2310         -
  2311         -#--------------------------------------------------------------------------
  2312         -cd $S_FP_ORIG
  2313         -exit 0 # 
  2314         -
  2315         -#==========================================================================
  2316         -# Fragments of comments and code that might find use some times later:
  2317         -#--------------------------------------------------------------------------
  2318         -#
  2319         -#   max 55 characters --- package suggested deprecation date in nanoseconds
  2320         -#                         relative to the Unix Epoch, 
  2321         -#                         written in base 10. It can be negative.
  2322         -#                         rgx_in_ruby=/t((y[-]?[\d]+)|n)[_]/
  2323         -# echo "v0034_s2342_tn_" | gawk '{ gsub(/_/, "_\n"); print }' | \
  2324         -#                          gawk '/^t(y[-]?[0-9]+|n)_/ {printf "%s",$1 }' |
  2325         -#                          gawk '{gsub(/[tyn_]/,"");printf "%s", $1 }'
  2326         -#                         
  2327         -#
  2328         -
  2329         -
  2330         -#==========================================================================
  2331         -

Deleted milestone_releases/silktorrent_packager_t1_2016_07_16.bash version [6caf32f071].

     1         -#!/usr/bin/env bash
     2         -#==========================================================================
     3         -#
     4         -# Copyright 2016, martin.vahi@softf1.com that has an
     5         -# Estonian personal identification code of 38108050020.
     6         -# All rights reserved.
     7         -#
     8         -# Redistribution and use in source and binary forms, with or
     9         -# without modification, are permitted provided that the following
    10         -# conditions are met:
    11         -#
    12         -# * Redistributions of source code must retain the above copyright
    13         -#   notice, this list of conditions and the following disclaimer.
    14         -# * Redistributions in binary form must reproduce the above copyright
    15         -#   notice, this list of conditions and the following disclaimer
    16         -#   in the documentation and/or other materials provided with the
    17         -#   distribution.
    18         -# * Neither the name of the Martin Vahi nor the names of its
    19         -#   contributors may be used to endorse or promote products derived
    20         -#   from this software without specific prior written permission.
    21         -#
    22         -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
    23         -# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
    24         -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    25         -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    26         -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
    27         -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    28         -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
    29         -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
    30         -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    31         -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
    32         -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
    33         -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    34         -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    35         -#
    36         -#==========================================================================
    37         -S_FP_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
    38         -S_FP_ORIG="`pwd`"
    39         -S_TIMESTAMP="`date +%Y`_`date +%m`_`date +%d`_T_`date +%H`h_`date +%M`min_`date +%S`s"
    40         -
    41         -#--------------------------------------------------------------------------
    42         -# Settings:
    43         -S_SCRIPT_VERSION="2016_07_16_a"
    44         -#--------------------------------------------------------------------------
    45         -
    46         -SB_TMP_FOLDER_EXISTS="f" # to omit one useless and slow file system access
    47         -S_FP_TMP_FOLDER=""
    48         -
    49         -
    50         -func_mmmv_silktorrent_packager_t1_exit_without_any_errors() {
    51         -    local S_0=""
    52         -    local S_1=""
    53         -    if [ "$SB_TMP_FOLDER_EXISTS" == "t" ]; then
    54         -       S_0= 
    55         -    fi
    56         -    exit 0 # exit without an error
    57         -} # func_mmmv_silktorrent_packager_t1_exit_without_any_errors
    58         -
    59         -#--------------------------------------------------------------------------
    60         -
    61         -S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT=""
    62         -func_mmmv_operating_system_type_t1() {
    63         -    if [ "$S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT" == "" ]; then
    64         -        S_TMP_0="`uname -a | grep -E [Ll]inux`"
    65         -        if [ "$S_TMP_0" != "" ]; then
    66         -            S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT="Linux"
    67         -        else
    68         -            S_TMP_0="`uname -a | grep BSD `"
    69         -            if [ "$S_TMP_0" != "" ]; then
    70         -                S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT="BSD"
    71         -            else
    72         -                S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT="undetermined"
    73         -            fi
    74         -        fi
    75         -    fi
    76         -} # func_mmmv_operating_system_type_t1
    77         -
    78         -#--------------------------------------------------------------------------
    79         -
    80         -func_mmmv_operating_system_type_t1
    81         -if [ "$S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT" != "Linux" ]; then
    82         -    if [ "$S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT" != "BSD" ]; then
    83         -        echo ""
    84         -        echo "  The classical command line utilities at "
    85         -        echo "  different operating systems, for example, Linux and BSD,"
    86         -        echo "  differ. This script is designed to run only on "
    87         -        echo "  Linux and some BSD variants."
    88         -        echo "  If You are willing to risk that some of Your data "
    89         -        echo "  is deleted and/or Your operating system instance"
    90         -        echo "  becomes permanently flawed, to the point that "
    91         -        echo "  it will not even boot, then You may edit the Bash script that "
    92         -        echo "  displays this error message by modifying the test that "
    93         -        echo "  checks for the operating system type."
    94         -        echo ""
    95         -        echo "  If You do decide to edit this Bash script, then "
    96         -        echo "  a recommendation is to test Your modifications "
    97         -        echo "  within a virtual machine or, if virtual machines are not"
    98         -        echo "  an option, as some new operating system user that does not have "
    99         -        echo "  any access to the vital data/files."
   100         -        echo "  GUID=='33d63375-7582-49dd-aa88-71b3900170e7'"
   101         -        echo ""
   102         -        echo "  Aborting script without doing anything."
   103         -        echo ""
   104         -        exit 1 # exit with error
   105         -    fi
   106         -fi
   107         -
   108         -
   109         -#--------------------------------------------------------------------------
   110         -
   111         -SB_EXISTS_ON_PATH_T1_RESULT="f"
   112         -func_sb_exists_on_path_t1 () {
   113         -    local S_NAME_OF_THE_EXECUTABLE_1="$1" # first function argument
   114         -    #--------
   115         -    # Function calls like
   116         -    #
   117         -    #     func_sb_exists_on_path_t1 ""
   118         -    #     func_sb_exists_on_path_t1 " "
   119         -    #     func_sb_exists_on_path_t1 "ls ps" # contains a space
   120         -    #
   121         -    # are not allowed.
   122         -    if [ "$S_NAME_OF_THE_EXECUTABLE_1" == "" ] ; then
   123         -        echo ""
   124         -        echo "The Bash function "
   125         -        echo ""
   126         -        echo "    func_sb_exists_on_path_t1 "
   127         -        echo ""
   128         -        echo "is not designed to handle an argument that "
   129         -        echo "equals with an empty string."
   130         -        echo "GUID=='39128b22-8ba8-4037-bb88-71b3900170e7'"
   131         -        echo ""
   132         -        #----
   133         -        cd $S_FP_ORIG
   134         -        exit 1 # exit with error
   135         -    fi
   136         -    local S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_1\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
   137         -    if [ "$S_NAME_OF_THE_EXECUTABLE_1" != "$S_TMP_0" ] ; then
   138         -        echo ""
   139         -        echo "The Bash function "
   140         -        echo ""
   141         -        echo "    func_sb_exists_on_path_t1 "
   142         -        echo ""
   143         -        echo "is not designed to handle an argument value that contains "
   144         -        echo "spaces or tabulation characters."
   145         -        echo "The received value in parenthesis:($S_NAME_OF_THE_EXECUTABLE_1)."
   146         -        echo "GUID=='47c83d31-51ea-4119-ae88-71b3900170e7'"
   147         -        echo ""
   148         -        #----
   149         -        cd $S_FP_ORIG
   150         -        exit 1 # exit with error
   151         -    fi
   152         -    #--------
   153         -    S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_1 2>/dev/null\`"
   154         -    local S_TMP_1=""
   155         -    local S_TMP_2="S_TMP_1=$S_TMP_0"
   156         -    eval ${S_TMP_2}
   157         -    #----
   158         -    if [ "$S_TMP_1" == "" ] ; then
   159         -        SB_EXISTS_ON_PATH_T1_RESULT="f"
   160         -    else
   161         -        SB_EXISTS_ON_PATH_T1_RESULT="t"
   162         -    fi
   163         -} # func_sb_exists_on_path_t1 
   164         -
   165         -
   166         -
   167         -func_assert_exists_on_path_t2 () {
   168         -    local S_NAME_OF_THE_EXECUTABLE_1="$1" # first function argument
   169         -    local S_NAME_OF_THE_EXECUTABLE_2="$2" # optional argument
   170         -    local S_NAME_OF_THE_EXECUTABLE_3="$3" # optional argument
   171         -    local S_NAME_OF_THE_EXECUTABLE_4="$4" # optional argument
   172         -    #--------
   173         -    # Function calls like
   174         -    #
   175         -    #     func_assert_exists_on_path_t2  ""    ""  "ls"
   176         -    #     func_assert_exists_on_path_t2  "ls"  ""  "ps"
   177         -    #
   178         -    # are not allowed by the spec of this function, but it's OK to call
   179         -    #
   180         -    #     func_assert_exists_on_path_t2  "ls" "" 
   181         -    #     func_assert_exists_on_path_t2  "ls" "ps" ""
   182         -    #     func_assert_exists_on_path_t2  "ls" ""   "" ""
   183         -    #
   184         -    #
   185         -    local SB_THROW="f"
   186         -    if [ "$S_NAME_OF_THE_EXECUTABLE_1" == "" ] ; then
   187         -        SB_THROW="t"
   188         -    else
   189         -        if [ "$S_NAME_OF_THE_EXECUTABLE_2" == "" ] ; then
   190         -            if [ "$S_NAME_OF_THE_EXECUTABLE_3" != "" ] ; then
   191         -                SB_THROW="t"
   192         -            fi
   193         -            if [ "$S_NAME_OF_THE_EXECUTABLE_4" != "" ] ; then
   194         -                SB_THROW="t"
   195         -            fi
   196         -        else
   197         -            if [ "$S_NAME_OF_THE_EXECUTABLE_3" == "" ] ; then
   198         -                if [ "$S_NAME_OF_THE_EXECUTABLE_4" != "" ] ; then
   199         -                    SB_THROW="t"
   200         -                fi
   201         -            fi
   202         -        fi
   203         -    fi
   204         -    #----
   205         -    if [ "$SB_THROW" == "t" ] ; then
   206         -        echo ""
   207         -        echo "The Bash function "
   208         -        echo ""
   209         -        echo "    func_assert_exists_on_path_t2 "
   210         -        echo ""
   211         -        echo "is not designed to handle series of arguments, where "
   212         -        echo "empty strings preced non-empty strings."
   213         -        echo "GUID=='1ae7a9bd-e472-4344-8188-71b3900170e7'"
   214         -        echo ""
   215         -        #----
   216         -        cd $S_FP_ORIG
   217         -        exit 1 # exit with error
   218         -    fi
   219         -    if [ "$5" != "" ] ; then
   220         -        echo ""
   221         -        echo "This Bash function is designed to work with at most 4 input arguments"
   222         -        echo "GUID=='05af1c56-ee4e-485e-8388-71b3900170e7'"
   223         -        echo ""
   224         -        #----
   225         -        cd $S_FP_ORIG
   226         -        exit 1 # exit with error
   227         -    fi
   228         -    #--------
   229         -    # Function calls like
   230         -    #
   231         -    #     func_assert_exists_on_path_t2 " "
   232         -    #     func_assert_exists_on_path_t2 "ls ps" # contains a space
   233         -    #
   234         -    # are not allowed.
   235         -    SB_THROW="f" 
   236         -    local S_TMP_0=""
   237         -    local S_TMP_1=""
   238         -    local S_TMP_2=""
   239         -    #----
   240         -    if [ "$SB_THROW" == "f" ] ; then
   241         -        S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_1\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
   242         -        if [ "$S_NAME_OF_THE_EXECUTABLE_1" != "$S_TMP_0" ] ; then
   243         -            SB_THROW="t" 
   244         -            S_TMP_1="$S_NAME_OF_THE_EXECUTABLE_1"
   245         -            S_TMP_2="GUID=='eb3a821d-b300-4128-8588-71b3900170e7'"
   246         -        fi
   247         -    fi
   248         -    #----
   249         -    if [ "$SB_THROW" == "f" ] ; then
   250         -        S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_2\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
   251         -        if [ "$S_NAME_OF_THE_EXECUTABLE_2" != "$S_TMP_0" ] ; then
   252         -            SB_THROW="t" 
   253         -            S_TMP_1="$S_NAME_OF_THE_EXECUTABLE_2"
   254         -            S_TMP_2="GUID=='071590a7-41d2-467f-8888-71b3900170e7'"
   255         -        fi
   256         -    fi
   257         -    #----
   258         -    if [ "$SB_THROW" == "f" ] ; then
   259         -        S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_3\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
   260         -        if [ "$S_NAME_OF_THE_EXECUTABLE_3" != "$S_TMP_0" ] ; then
   261         -            SB_THROW="t" 
   262         -            S_TMP_1="$S_NAME_OF_THE_EXECUTABLE_3"
   263         -            S_TMP_2="GUID=='1beff945-939d-48f9-a178-71b3900170e7'"
   264         -        fi
   265         -    fi
   266         -    #----
   267         -    if [ "$SB_THROW" == "f" ] ; then
   268         -        S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_4\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
   269         -        if [ "$S_NAME_OF_THE_EXECUTABLE_4" != "$S_TMP_0" ] ; then
   270         -            SB_THROW="t" 
   271         -            S_TMP_1="$S_NAME_OF_THE_EXECUTABLE_4"
   272         -            S_TMP_2="GUID=='9bf9ca59-4c78-4fb6-8378-71b3900170e7'"
   273         -        fi
   274         -    fi
   275         -    #--------
   276         -    if [ "$SB_THROW" == "t" ] ; then
   277         -        echo ""
   278         -        echo "The Bash function "
   279         -        echo ""
   280         -        echo "    func_assert_exists_on_path_t2 "
   281         -        echo ""
   282         -        echo "is not designed to handle an argument value that contains "
   283         -        echo "spaces or tabulation characters."
   284         -        echo "The unaccepted value in parenthesis:($S_TMP_1)."
   285         -        echo "Branch $S_TMP_2."
   286         -        echo "GUID=='24b11e55-b4ea-419c-8578-71b3900170e7'"
   287         -        echo ""
   288         -        #----
   289         -        cd $S_FP_ORIG
   290         -        exit 1 # exit with error
   291         -    fi
   292         -    SB_THROW="f" # Just a reset, should I forget to reset it later.
   293         -    #---------------
   294         -    S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_1 2>/dev/null\`"
   295         -    local S_TMP_1=""
   296         -    local S_TMP_2="S_TMP_1=$S_TMP_0"
   297         -    eval ${S_TMP_2}
   298         -    #----
   299         -    if [ "$S_TMP_1" == "" ] ; then
   300         -        if [ "$S_NAME_OF_THE_EXECUTABLE_2" == "" ] ; then
   301         -        if [ "$S_NAME_OF_THE_EXECUTABLE_3" == "" ] ; then
   302         -        if [ "$S_NAME_OF_THE_EXECUTABLE_4" == "" ] ; then
   303         -            echo ""
   304         -            echo "This bash script requires the \"$S_NAME_OF_THE_EXECUTABLE_1\" to be on the PATH."
   305         -            echo "GUID=='62b54420-f8c0-4d4b-b278-71b3900170e7'"
   306         -            echo ""
   307         -            #----
   308         -            cd $S_FP_ORIG
   309         -            exit 1 # exit with error
   310         -        fi
   311         -        fi
   312         -        fi
   313         -    else
   314         -        return # at least one of the programs was available at the PATH
   315         -    fi
   316         -    #--------
   317         -    S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_2 2>/dev/null\`"
   318         -    S_TMP_1=""
   319         -    S_TMP_2="S_TMP_1=$S_TMP_0"
   320         -    eval ${S_TMP_2}
   321         -    #----
   322         -    if [ "$S_TMP_1" == "" ] ; then
   323         -        if [ "$S_NAME_OF_THE_EXECUTABLE_3" == "" ] ; then
   324         -        if [ "$S_NAME_OF_THE_EXECUTABLE_4" == "" ] ; then
   325         -            echo ""
   326         -            echo "This bash script requires that either \"$S_NAME_OF_THE_EXECUTABLE_1\" or "
   327         -            echo " \"$S_NAME_OF_THE_EXECUTABLE_2\" is available on the PATH."
   328         -            echo "GUID=='aa80d32e-c312-40b0-8478-71b3900170e7'"
   329         -            echo ""
   330         -            #----
   331         -            cd $S_FP_ORIG
   332         -            exit 1 # exit with error
   333         -        fi
   334         -        fi
   335         -    else
   336         -        return # at least one of the programs was available at the PATH
   337         -    fi
   338         -    #--------
   339         -    S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_3 2>/dev/null\`"
   340         -    S_TMP_1=""
   341         -    S_TMP_2="S_TMP_1=$S_TMP_0"
   342         -    eval ${S_TMP_2}
   343         -    #----
   344         -    if [ "$S_TMP_1" == "" ] ; then
   345         -        if [ "$S_NAME_OF_THE_EXECUTABLE_4" == "" ] ; then
   346         -            echo ""
   347         -            echo "This bash script requires that either \"$S_NAME_OF_THE_EXECUTABLE_1\" or "
   348         -            echo " \"$S_NAME_OF_THE_EXECUTABLE_2\" or \"$S_NAME_OF_THE_EXECUTABLE_3\" "
   349         -            echo "is available on the PATH."
   350         -            echo "GUID=='3ae0cfcc-0a10-45c5-8168-71b3900170e7'"
   351         -            echo ""
   352         -            #----
   353         -            cd $S_FP_ORIG
   354         -            exit 1 # exit with error
   355         -        fi
   356         -    else
   357         -        return # at least one of the programs was available at the PATH
   358         -    fi
   359         -    #--------
   360         -    S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_4 2>/dev/null\`"
   361         -    S_TMP_1=""
   362         -    S_TMP_2="S_TMP_1=$S_TMP_0"
   363         -    eval ${S_TMP_2}
   364         -    #----
   365         -    if [ "$S_TMP_1" == "" ] ; then
   366         -        echo ""
   367         -        echo "This bash script requires that either \"$S_NAME_OF_THE_EXECUTABLE_1\" or "
   368         -        echo " \"$S_NAME_OF_THE_EXECUTABLE_2\" or \"$S_NAME_OF_THE_EXECUTABLE_3\" or "
   369         -        echo " \"$S_NAME_OF_THE_EXECUTABLE_4\" is available on the PATH."
   370         -        echo "GUID=='64dba5fe-7564-4666-a468-71b3900170e7'"
   371         -        echo ""
   372         -        #----
   373         -        cd $S_FP_ORIG
   374         -        exit 1 # exit with error
   375         -    else
   376         -        return # at least one of the programs was available at the PATH
   377         -    fi
   378         -    #--------
   379         -} # func_assert_exists_on_path_t2
   380         -
   381         -func_assert_exists_on_path_t2 "bash"     # this is a bash script, but it does not hurt
   382         -func_assert_exists_on_path_t2 "basename" # for extracting file names from full paths
   383         -func_assert_exists_on_path_t2 "cat"    # opposite to split
   384         -func_assert_exists_on_path_t2 "sha256sum" "sha256" "rhash"
   385         -func_assert_exists_on_path_t2 "tigerdeep" "rhash"
   386         -func_assert_exists_on_path_t2 "whirlpooldeep" "rhash"
   387         -func_assert_exists_on_path_t2 "tar"
   388         -#--------
   389         -func_assert_exists_on_path_t2 "file"   # for checking the MIME type of the potential tar file
   390         -func_assert_exists_on_path_t2 "filesize" "ruby"
   391         -func_assert_exists_on_path_t2 "gawk"
   392         -#func_assert_exists_on_path_t2 "grep"
   393         -#func_assert_exists_on_path_t2 "readlink"
   394         -func_assert_exists_on_path_t2 "ruby"  # anything over/equal v.2.1 will probably do
   395         -#func_assert_exists_on_path_t2 "split" # for cutting files
   396         -#func_assert_exists_on_path_t2 "test"
   397         -func_assert_exists_on_path_t2 "uname"  # to check the OS type
   398         -func_assert_exists_on_path_t2 "uuidgen" "uuid" # GUID generation on Linux and BSD
   399         -#func_assert_exists_on_path_t2 "xargs"   
   400         -func_assert_exists_on_path_t2 "wc" # for checking hash lengths   
   401         -
   402         -
   403         -#--------------------------------------------------------------------------
   404         -
   405         -func_mmmv_exc_hash_function_input_verification_t1() { 
   406         -    local S_NAME_OF_THE_BASH_FUNCTION="$1" # The name of the Bash function.
   407         -    local S_FP_2_AN_EXISTING_FILE="$2" # The first argument of the Bash function.
   408         -    #--------
   409         -    if [ "$S_NAME_OF_THE_BASH_FUNCTION" == "" ] ; then
   410         -        echo ""
   411         -        echo "The implementation of the function that "
   412         -        echo "calls the "
   413         -        echo ""
   414         -        echo "    func_mmmv_exc_hash_function_input_verification_t1"
   415         -        echo ""
   416         -        echo "is flawed. The call to the "
   417         -        echo ""
   418         -        echo "    func_mmmv_exc_hash_function_input_verification_t1"
   419         -        echo ""
   420         -        echo "misses the first argument or the first argument is an empty string."
   421         -        echo "GUID=='b91da738-c651-4c2a-8b68-71b3900170e7'"
   422         -        echo ""
   423         -        #----
   424         -        cd $S_FP_ORIG
   425         -        exit 1 # exit with error
   426         -    fi
   427         -    local S_TMP_0="`printf \"$S_NAME_OF_THE_BASH_FUNCTION\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
   428         -    if [ "$S_NAME_OF_THE_BASH_FUNCTION" != "$S_TMP_0" ] ; then
   429         -        echo ""
   430         -        echo "The implementation of the function that "
   431         -        echo "calls the "
   432         -        echo ""
   433         -        echo "    func_mmmv_exc_hash_function_input_verification_t1"
   434         -        echo ""
   435         -        echo "is flawed. Function names are not allowed to contain spaces or tabs."
   436         -        echo "GUID=='405b2523-bd54-463b-9368-71b3900170e7'"
   437         -        echo ""
   438         -        #----
   439         -        cd $S_FP_ORIG
   440         -        exit 1 # exit with error
   441         -    fi
   442         -    #--------
   443         -    # Function calls like
   444         -    #
   445         -    #     <function name> ""
   446         -    #     <function name> " "
   447         -    #
   448         -    # are not allowed.
   449         -    local S_TMP_0="`printf \"$S_FP_2_AN_EXISTING_FILE\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
   450         -    if [ "$S_TMP_0" == "" ] ; then
   451         -        echo ""
   452         -        echo "The Bash function "
   453         -        echo ""
   454         -        echo "    $S_NAME_OF_THE_BASH_FUNCTION"
   455         -        echo ""
   456         -        echo "is not designed to handle an argument that "
   457         -        echo "equals with an empty string or a series of spaces and tabs."
   458         -        echo "GUID=='7118e122-ef7a-43e6-af68-71b3900170e7'"
   459         -        echo ""
   460         -        #----
   461         -        cd $S_FP_ORIG
   462         -        exit 1 # exit with error
   463         -    fi
   464         -    #--------
   465         -    if [ ! -e $S_FP_2_AN_EXISTING_FILE ] ; then
   466         -        echo ""
   467         -        echo "The file "
   468         -        echo ""
   469         -        echo "    $S_FP_2_AN_EXISTING_FILE "
   470         -        echo ""
   471         -        echo "is missing or it is a broken link."
   472         -        echo "GUID=='1c0b3101-7922-42b3-ac68-71b3900170e7'"
   473         -        echo ""
   474         -        #----
   475         -        cd $S_FP_ORIG
   476         -        exit 1 # exit with error
   477         -    fi
   478         -    if [ -d $S_FP_2_AN_EXISTING_FILE ] ; then
   479         -        echo ""
   480         -        echo "The file path "
   481         -        echo ""
   482         -        echo "    $S_FP_2_AN_EXISTING_FILE "
   483         -        echo ""
   484         -        echo "references a folder, but a file is expected."
   485         -        echo "GUID=='04596259-93f4-45f3-8368-71b3900170e7'"
   486         -        echo ""
   487         -        #----
   488         -        cd $S_FP_ORIG
   489         -        exit 1 # exit with error
   490         -    fi
   491         -    #--------------------
   492         -    # At this line the verifications have all passed.
   493         -    #--------------------
   494         -} # func_mmmv_exc_hash_function_input_verification_t1
   495         -
   496         -
   497         -#--------------------------------------------------------------------------
   498         -
   499         -S_FUNC_MMMV_GUID_T1_RESULT="not_yet_set"
   500         -S_FUNC_MMMV_GUID_T1_MODE="" # optim. to skip repeating console tool selection
   501         -func_mmmv_GUID_t1() { 
   502         -    # Does not take any arguments.
   503         -    #--------
   504         -    #func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_GUID_t1" "$1"
   505         -    #--------------------
   506         -    # Mode selection:
   507         -    if [ "$S_FUNC_MMMV_GUID_T1_MODE" == "" ] ; then
   508         -        SB_EXISTS_ON_PATH_T1_RESULT="f"  # if-block init
   509         -        #----
   510         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
   511         -            S_TMP_0="uuidgen" # Linux version
   512         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
   513         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
   514         -                 S_FUNC_MMMV_GUID_T1_MODE="$S_TMP_0"
   515         -            fi
   516         -        fi
   517         -        #----
   518         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
   519         -            S_TMP_0="uuid"    # BSD version
   520         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
   521         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
   522         -                 S_FUNC_MMMV_GUID_T1_MODE="$S_TMP_0"
   523         -            fi
   524         -        fi
   525         -        #--------
   526         -        if [ "$S_FUNC_MMMV_GUID_T1_MODE" == "" ] ; then
   527         -            echo ""
   528         -            echo "All of the GUID generation implementations that this script " 
   529         -            echo "is capable of using (uuidgen, uuid) "
   530         -            echo "are missing from the PATH."
   531         -            echo "GUID=='25286e58-fb76-41f5-8568-71b3900170e7'"
   532         -            echo ""
   533         -            #----
   534         -            cd $S_FP_ORIG
   535         -            exit 1 # exit with error
   536         -        fi
   537         -        #--------
   538         -        if [ "$?" != "0" ]; then
   539         -            echo ""
   540         -            echo "This script is flawed."
   541         -            echo "GUID=='31132449-5de3-431f-a258-71b3900170e7'"
   542         -            echo ""
   543         -            #----
   544         -            cd $S_FP_ORIG
   545         -            exit 1 # exit with error
   546         -        fi
   547         -        #--------
   548         -    fi
   549         -    #--------------------
   550         -    S_FUNC_MMMV_GUID_T1_RESULT=""
   551         -    #--------------------
   552         -    if [ "$S_FUNC_MMMV_GUID_T1_MODE" == "uuidgen" ]; then
   553         -        S_TMP_0="`uuidgen`"
   554         -        if [ "$?" != "0" ]; then
   555         -            echo ""
   556         -            echo "The console application \"uuidgen\" "
   557         -            echo "exited with an error."
   558         -            echo ""
   559         -            echo "----console--outut--citation--start-----"
   560         -            echo "`uuidgen`" # stdout and stderr
   561         -            echo "----console--outut--citation--end-------"
   562         -            echo ""
   563         -            echo "GUID=='2d8df7d1-9ef0-4531-b558-71b3900170e7'"
   564         -            echo ""
   565         -            #----
   566         -            cd $S_FP_ORIG
   567         -            exit 1 # exit with error
   568         -        fi
   569         -        #---- 
   570         -        S_FUNC_MMMV_GUID_T1_RESULT="$S_TMP_0"
   571         -    fi
   572         -    #--------------------
   573         -    if [ "$S_FUNC_MMMV_GUID_T1_MODE" == "uuid" ]; then
   574         -        S_TMP_0="`uuid`"
   575         -        if [ "$?" != "0" ]; then
   576         -            echo ""
   577         -            echo "The console application \"uuid\" "
   578         -            echo "exited with an error."
   579         -            echo ""
   580         -            echo "----console--outut--citation--start-----"
   581         -            echo "`uuid`" # stdout and stderr
   582         -            echo "----console--outut--citation--end-------"
   583         -            echo ""
   584         -            echo "GUID=='7616c855-15e3-4331-a158-71b3900170e7'"
   585         -            echo ""
   586         -            #----
   587         -            cd $S_FP_ORIG
   588         -            exit 1 # exit with error
   589         -        fi
   590         -        #---- 
   591         -        S_FUNC_MMMV_GUID_T1_RESULT="$S_TMP_0"
   592         -    fi
   593         -    #--------------------
   594         -    S_TMP_0="`printf \"$S_FUNC_MMMV_GUID_T1_RESULT\" | wc -m `"
   595         -    S_TMP_1="36"
   596         -    if [ "$S_TMP_0" != "$S_TMP_1" ]; then
   597         -        echo ""
   598         -        echo "According to the GUID specification, IETF RFC 4122,  "
   599         -        echo "the lenght of the GUID is "
   600         -        echo "$S_TMP_1 characters, but the result of the "
   601         -        echo ""
   602         -        echo "    func_mmmv_GUID_t1"
   603         -        echo ""
   604         -        echo "is something else. The flawed GUID candidate in parenthesis:"
   605         -        echo "($S_FUNC_MMMV_GUID_T1_RESULT)"
   606         -        echo ""
   607         -        echo "The lenght candidate of the flawed GUID candidate in parenthesis:"
   608         -        echo "($S_TMP_0)."
   609         -        echo ""
   610         -        echo "GUID=='7a226a41-91ce-4ab9-a258-71b3900170e7'"
   611         -        echo ""
   612         -        #----
   613         -        cd $S_FP_ORIG
   614         -        exit 1 # exit with error
   615         -    fi
   616         -    #--------------------
   617         -} # func_mmmv_GUID_t1
   618         -
   619         -
   620         -#--------------------------------------------------------------------------
   621         -
   622         -S_FUNC_MMMV_SHA256_T1_RESULT="not_yet_set"
   623         -S_FUNC_MMMV_SHA256_T1_MODE="" # optim. to skip repeating console tool selection
   624         -func_mmmv_sha256_t1() { # requires also ruby and gawk 
   625         -    local S_FP_2_AN_EXISTING_FILE="$1" # first function argument
   626         -    #--------
   627         -    func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_sha256_t1" "$1"
   628         -    #--------------------
   629         -    # Mode selection:
   630         -    if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "" ] ; then
   631         -        SB_EXISTS_ON_PATH_T1_RESULT="f"  # if-block init
   632         -        #----
   633         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
   634         -            S_TMP_0="sha256sum" # usually available on Linux
   635         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
   636         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
   637         -                 S_FUNC_MMMV_SHA256_T1_MODE="$S_TMP_0"
   638         -            fi
   639         -        fi
   640         -        #----
   641         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
   642         -            S_TMP_0="rhash"    # part of the BSD package collection in 2016
   643         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
   644         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
   645         -                 S_FUNC_MMMV_SHA256_T1_MODE="$S_TMP_0"
   646         -            fi
   647         -        fi
   648         -        #----
   649         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
   650         -            S_TMP_0="sha256"    # usually available on BSD
   651         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
   652         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
   653         -                 S_FUNC_MMMV_SHA256_T1_MODE="$S_TMP_0"
   654         -            fi
   655         -        fi
   656         -        # The console application "rhash" is preferred to the "sha256"
   657         -        # because the "rhash" output can be simply processed with 
   658         -        # "gawk", which takes over 5x less memory than the Ruby interpreter,
   659         -        # not to mention the initialization cost of the Ruby interpreter.
   660         -        #--------
   661         -        if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "" ] ; then
   662         -            echo ""
   663         -            echo "All of the SHA-256 implementations that this script " 
   664         -            echo "is capable of using (sha256sum, rhash, sha256) "
   665         -            echo "are missing from the PATH."
   666         -            echo "GUID=='4aef5146-0d53-414e-b258-71b3900170e7'"
   667         -            echo ""
   668         -            #----
   669         -            cd $S_FP_ORIG
   670         -            exit 1 # exit with error
   671         -        fi
   672         -        #--------
   673         -        if [ "$?" != "0" ]; then
   674         -            echo ""
   675         -            echo "This script is flawed."
   676         -            echo "GUID=='852b0558-3ebd-4de9-a158-71b3900170e7'"
   677         -            echo ""
   678         -            #----
   679         -            cd $S_FP_ORIG
   680         -            exit 1 # exit with error
   681         -        fi
   682         -        #--------
   683         -    fi
   684         -    #--------------------
   685         -    S_FUNC_MMMV_SHA256_T1_RESULT=""
   686         -    #--------------------
   687         -    if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "sha256sum" ]; then
   688         -        S_TMP_0="`sha256sum $S_FP_2_AN_EXISTING_FILE 2>/dev/null`"
   689         -        if [ "$?" != "0" ]; then
   690         -            echo ""
   691         -            echo "The console application \"sha256sum\" "
   692         -            echo "exited with an error."
   693         -            echo ""
   694         -            echo "----console--outut--citation--start-----"
   695         -            echo "`sha256sum $S_FP_2_AN_EXISTING_FILE`" # stdout and stderr
   696         -            echo "----console--outut--citation--end-------"
   697         -            echo ""
   698         -            echo "GUID=='611e5732-c1cc-480a-a458-71b3900170e7'"
   699         -            echo ""
   700         -            #----
   701         -            cd $S_FP_ORIG
   702         -            exit 1 # exit with error
   703         -        fi
   704         -        #---- 
   705         -        # The gawk is used for selecting the 1. column because 
   706         -        # according to the
   707         -        #
   708         -        #     echo "aa bb" | time -v gawk '{printf $1}'
   709         -        #
   710         -        # the gawk takes about 3MiB, which is far less than the 
   711         -        #
   712         -        #     time -v ruby -e "puts 'hi'"
   713         -        #
   714         -        # indicated 16MiB
   715         -        #
   716         -        S_FUNC_MMMV_SHA256_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`"
   717         -    fi
   718         -    #--------------------
   719         -    if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "rhash" ]; then
   720         -        S_TMP_0="`rhash --sha256 $S_FP_2_AN_EXISTING_FILE 2>/dev/null`"
   721         -        if [ "$?" != "0" ]; then
   722         -            echo ""
   723         -            echo "The console application \"rhash\" "
   724         -            echo "exited with an error."
   725         -            echo ""
   726         -            echo "----console--outut--citation--start-----"
   727         -            echo "`rhash --sha256 $S_FP_2_AN_EXISTING_FILE `"
   728         -            echo "----console--outut--citation--end-------"
   729         -            echo ""
   730         -            echo "GUID=='f377bf45-4ea1-4fe6-9148-71b3900170e7'"
   731         -            echo ""
   732         -            #----
   733         -            cd $S_FP_ORIG
   734         -            exit 1 # exit with error
   735         -        fi
   736         -        S_FUNC_MMMV_SHA256_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`"
   737         -    fi
   738         -    #--------------------
   739         -    if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "sha256" ]; then
   740         -        #----
   741         -        S_FUNC_MMMV_SHA256_T1_RESULT=\
   742         -        "`S_TMP_0=\"\`sha256 $S_FP_2_AN_EXISTING_FILE\`\" ruby -e \"s0=ENV['S_TMP_0'].to_s;ix_0=s0.index(') = ');print s0[(ix_0+4)..(-1)]\" 2>/dev/null`"
   743         -        #----
   744         -        if [ "$?" != "0" ]; then
   745         -            echo ""
   746         -            echo "The console application \"sha256\" "
   747         -            echo "exited with an error."
   748         -            echo ""
   749         -            echo "----console--outut--citation--start-----"
   750         -            echo \
   751         -            "`S_TMP_0=\"\`sha256 $S_FP_2_AN_EXISTING_FILE\`\" ruby -e \"s0=ENV['S_TMP_0'].to_s;ix_0=s0.index(') = ');print s0[(ix_0+4)..(-1)]\"`"
   752         -            echo "----console--outut--citation--end-------"
   753         -            echo ""
   754         -            echo "GUID=='22691ef3-f14b-4f46-bb48-71b3900170e7'"
   755         -            echo ""
   756         -            #----
   757         -            cd $S_FP_ORIG
   758         -            exit 1 # exit with error
   759         -        fi
   760         -    fi
   761         -    #--------------------
   762         -    S_TMP_0="`printf \"$S_FUNC_MMMV_SHA256_T1_RESULT\" | wc -m `"
   763         -    S_TMP_1="64"
   764         -    if [ "$S_TMP_0" != "$S_TMP_1" ]; then
   765         -        echo ""
   766         -        echo "According to the specification of the SHA-256 hash algorithm"
   767         -        echo "the lenght of the SHA-256 hash is "
   768         -        echo "$S_TMP_1 hexadecimal characters, but the result of the "
   769         -        echo ""
   770         -        echo "    func_mmmv_sha256_t1"
   771         -        echo ""
   772         -        echo "is something else. The flawed hash candidate in parenthesis:"
   773         -        echo "($S_FUNC_MMMV_SHA256_T1_RESULT)"
   774         -        echo ""
   775         -        echo "The lenght candidate of the flawed hash candidate in parenthesis:"
   776         -        echo "($S_TMP_0)."
   777         -        echo ""
   778         -        echo "GUID=='3e6b48bd-8a81-4f15-b148-71b3900170e7'"
   779         -        echo ""
   780         -        #----
   781         -        cd $S_FP_ORIG
   782         -        exit 1 # exit with error
   783         -    fi
   784         -    #--------------------
   785         -} # func_mmmv_sha256_t1
   786         -
   787         -
   788         -#--------------------------------------------------------------------------
   789         -
   790         -S_FUNC_MMMV_TIGERHASH_T1_RESULT="not_yet_set"
   791         -S_FUNC_MMMV_TIGERHASH_T1_MODE="" # optim. to skip repeating console tool selection
   792         -func_mmmv_tigerhash_t1() { # requires also ruby and gawk 
   793         -    local S_FP_2_AN_EXISTING_FILE="$1" # first function argument
   794         -    #--------
   795         -    func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_tigerhash_t1" "$1"
   796         -    #--------------------
   797         -    # Mode selection:
   798         -    if [ "$S_FUNC_MMMV_TIGERHASH_T1_MODE" == "" ] ; then
   799         -        SB_EXISTS_ON_PATH_T1_RESULT="f"  # if-block init
   800         -        #----
   801         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
   802         -            S_TMP_0="tigerdeep" # usually available on Linux
   803         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
   804         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
   805         -                 S_FUNC_MMMV_TIGERHASH_T1_MODE="$S_TMP_0"
   806         -            fi
   807         -        fi
   808         -        #----
   809         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
   810         -            S_TMP_0="rhash"    # part of the BSD package collection in 2016
   811         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
   812         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
   813         -                 S_FUNC_MMMV_TIGERHASH_T1_MODE="$S_TMP_0"
   814         -            fi
   815         -        fi
   816         -        #--------
   817         -        if [ "$S_FUNC_MMMV_TIGERHASH_T1_MODE" == "" ] ; then
   818         -            echo ""
   819         -            echo "All of the Tiger hash implementations that this script " 
   820         -            echo "is capable of using (tigerdeep, rhash) "
   821         -            echo "are missing from the PATH."
   822         -            echo "GUID=='2bed8ba2-1f17-43d0-8b48-71b3900170e7'"
   823         -            echo ""
   824         -            #----
   825         -            cd $S_FP_ORIG
   826         -            exit 1 # exit with error
   827         -        fi
   828         -        #--------
   829         -        if [ "$?" != "0" ]; then
   830         -            echo ""
   831         -            echo "This script is flawed."
   832         -            echo "GUID=='401fae19-71e9-4c52-b148-71b3900170e7'"
   833         -            echo ""
   834         -            #----
   835         -            cd $S_FP_ORIG
   836         -            exit 1 # exit with error
   837         -        fi
   838         -        #--------
   839         -    fi
   840         -    #--------------------
   841         -    S_FUNC_MMMV_TIGERHASH_T1_RESULT=""
   842         -    #--------------------
   843         -    if [ "$S_FUNC_MMMV_TIGERHASH_T1_MODE" == "tigerdeep" ]; then
   844         -        S_TMP_0="`tigerdeep $S_FP_2_AN_EXISTING_FILE 2>/dev/null`"
   845         -        if [ "$?" != "0" ]; then
   846         -            echo ""
   847         -            echo "The console application \"tigerdeep\" "
   848         -            echo "exited with an error."
   849         -            echo ""
   850         -            echo "----console--outut--citation--start-----"
   851         -            echo "`tigerdeep $S_FP_2_AN_EXISTING_FILE`" # stdout and stderr
   852         -            echo "----console--outut--citation--end-------"
   853         -            echo ""
   854         -            echo "GUID=='2bd1ed5f-5735-45d7-8248-71b3900170e7'"
   855         -            echo ""
   856         -            #----
   857         -            cd $S_FP_ORIG
   858         -            exit 1 # exit with error
   859         -        fi
   860         -        S_FUNC_MMMV_TIGERHASH_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`"
   861         -    fi
   862         -    #--------------------
   863         -    if [ "$S_FUNC_MMMV_TIGERHASH_T1_MODE" == "rhash" ]; then
   864         -        S_TMP_0="`rhash --tiger $S_FP_2_AN_EXISTING_FILE 2>/dev/null`"
   865         -        if [ "$?" != "0" ]; then
   866         -            echo ""
   867         -            echo "The console application \"rhash\" "
   868         -            echo "exited with an error."
   869         -            echo ""
   870         -            echo "----console--outut--citation--start-----"
   871         -            echo "`rhash --tiger $S_FP_2_AN_EXISTING_FILE `"
   872         -            echo "----console--outut--citation--end-------"
   873         -            echo ""
   874         -            echo "GUID=='51e5a1c5-292f-4bf1-8948-71b3900170e7'"
   875         -            echo ""
   876         -            #----
   877         -            cd $S_FP_ORIG
   878         -            exit 1 # exit with error
   879         -        fi
   880         -        S_FUNC_MMMV_TIGERHASH_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`"
   881         -    fi
   882         -    #--------------------
   883         -    S_TMP_0="`printf \"$S_FUNC_MMMV_TIGERHASH_T1_RESULT\" | wc -m `"
   884         -    S_TMP_1="48"
   885         -    if [ "$S_TMP_0" != "$S_TMP_1" ]; then
   886         -        echo ""
   887         -        echo "According to the specification of the Tiger hash algorithm"
   888         -        echo "the lenght of the Tiger hash is "
   889         -        echo "$S_TMP_1 hexadecimal characters, but the result of the "
   890         -        echo ""
   891         -        echo "    func_mmmv_tigerhash_t1"
   892         -        echo ""
   893         -        echo "is something else. The flawed hash candidate in parenthesis:"
   894         -        echo "($S_FUNC_MMMV_TIGERHASH_T1_RESULT)"
   895         -        echo ""
   896         -        echo "The lenght candidate of the flawed hash candidate in parenthesis:"
   897         -        echo "($S_TMP_0)."
   898         -        echo ""
   899         -        echo "GUID=='30fcf82d-5cb9-4c96-9148-71b3900170e7'"
   900         -        echo ""
   901         -        #----
   902         -        cd $S_FP_ORIG
   903         -        exit 1 # exit with error
   904         -    fi
   905         -    #--------------------
   906         -} # func_mmmv_tigerhash_t1
   907         -
   908         -
   909         -#--------------------------------------------------------------------------
   910         -
   911         -S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT="not_yet_set"
   912         -S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE="" # optim. to skip repeating console tool selection
   913         -func_mmmv_whirlpoolhash_t1() { # requires also ruby and gawk 
   914         -    local S_FP_2_AN_EXISTING_FILE="$1" # first function argument
   915         -    #--------
   916         -    func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_whirlpoolhash_t1" "$1"
   917         -    #--------------------
   918         -    # Mode selection:
   919         -    if [ "$S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE" == "" ] ; then
   920         -        SB_EXISTS_ON_PATH_T1_RESULT="f"  # if-block init
   921         -        #----
   922         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
   923         -            S_TMP_0="whirlpooldeep" # usually available on Linux
   924         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
   925         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
   926         -                 S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE="$S_TMP_0"
   927         -            fi
   928         -        fi
   929         -        #----
   930         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
   931         -            S_TMP_0="rhash"    # part of the BSD package collection in 2016
   932         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
   933         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
   934         -                 S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE="$S_TMP_0"
   935         -            fi
   936         -        fi
   937         -        #--------
   938         -        if [ "$S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE" == "" ] ; then
   939         -            echo ""
   940         -            echo "All of the Whirlpool hash implementations that this script " 
   941         -            echo "is capable of using (whirlpooldeep, rhash) "
   942         -            echo "are missing from the PATH."
   943         -            echo "GUID=='2a608859-8310-44b4-8338-71b3900170e7'"
   944         -            echo ""
   945         -            #----
   946         -            cd $S_FP_ORIG
   947         -            exit 1 # exit with error
   948         -        fi
   949         -        #--------
   950         -        if [ "$?" != "0" ]; then
   951         -            echo ""
   952         -            echo "This script is flawed."
   953         -            echo "GUID=='48097a1c-5e76-4dcc-b538-71b3900170e7'"
   954         -            echo ""
   955         -            #----
   956         -            cd $S_FP_ORIG
   957         -            exit 1 # exit with error
   958         -        fi
   959         -        #--------
   960         -    fi
   961         -    #--------------------
   962         -    S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT=""
   963         -    #--------------------
   964         -    if [ "$S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE" == "whirlpooldeep" ]; then
   965         -        S_TMP_0="`whirlpooldeep $S_FP_2_AN_EXISTING_FILE 2>/dev/null`"
   966         -        if [ "$?" != "0" ]; then
   967         -            echo ""
   968         -            echo "The console application \"whirlpooldeep\" "
   969         -            echo "exited with an error."
   970         -            echo ""
   971         -            echo "----console--outut--citation--start-----"
   972         -            echo "`whirlpooldeep $S_FP_2_AN_EXISTING_FILE`" # stdout and stderr
   973         -            echo "----console--outut--citation--end-------"
   974         -            echo ""
   975         -            echo "GUID=='46922d93-033d-44be-a438-71b3900170e7'"
   976         -            echo ""
   977         -            #----
   978         -            cd $S_FP_ORIG
   979         -            exit 1 # exit with error
   980         -        fi
   981         -        S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`"
   982         -    fi
   983         -    #--------------------
   984         -    if [ "$S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE" == "rhash" ]; then
   985         -        S_TMP_0="`rhash --whirlpool $S_FP_2_AN_EXISTING_FILE 2>/dev/null`"
   986         -        if [ "$?" != "0" ]; then
   987         -            echo ""
   988         -            echo "The console application \"rhash\" "
   989         -            echo "exited with an error."
   990         -            echo ""
   991         -            echo "----console--outut--citation--start-----"
   992         -            echo "`rhash --whirlpool $S_FP_2_AN_EXISTING_FILE `"
   993         -            echo "----console--outut--citation--end-------"
   994         -            echo ""
   995         -            echo "GUID=='22eb6a73-6762-4aa1-9538-71b3900170e7'"
   996         -            echo ""
   997         -            #----
   998         -            cd $S_FP_ORIG
   999         -            exit 1 # exit with error
  1000         -        fi
  1001         -        S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`"
  1002         -    fi
  1003         -    #--------------------
  1004         -    S_TMP_0="`printf \"$S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT\" | wc -m `"
  1005         -    S_TMP_1="128"
  1006         -    if [ "$S_TMP_0" != "$S_TMP_1" ]; then
  1007         -        echo ""
  1008         -        echo "According to the specification of the Whirlpool hash algorithm"
  1009         -        echo "the lenght of the Tiger hash is "
  1010         -        echo "$S_TMP_1 hexadecimal characters, but the result of the "
  1011         -        echo ""
  1012         -        echo "    func_mmmv_whirlpoolhash_t1"
  1013         -        echo ""
  1014         -        echo "is something else. The flawed hash candidate in parenthesis:"
  1015         -        echo "($S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT)"
  1016         -        echo ""
  1017         -        echo "The lenght candidate of the flawed hash candidate in parenthesis:"
  1018         -        echo "($S_TMP_0)."
  1019         -        echo ""
  1020         -        echo "GUID=='712dc4a3-3fc9-40ca-9338-71b3900170e7'"
  1021         -        echo ""
  1022         -        #----
  1023         -        cd $S_FP_ORIG
  1024         -        exit 1 # exit with error
  1025         -    fi
  1026         -    #--------------------
  1027         -} # func_mmmv_whirlpoolhash_t1
  1028         -
  1029         -
  1030         -#--------------------------------------------------------------------------
  1031         -
  1032         -S_FUNC_MMMV_FILESIZE_T1_RESULT="not_yet_set"
  1033         -S_FUNC_MMMV_FILESIZE_T1_MODE="" # optim. to skip repeating console tool selection
  1034         -func_mmmv_filesize_t1() { 
  1035         -    local S_FP_2_AN_EXISTING_FILE="$1" # first function argument
  1036         -    #--------
  1037         -    func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_filesize_t1" "$1"
  1038         -    #--------------------
  1039         -    # Mode selection:
  1040         -    if [ "$S_FUNC_MMMV_FILESIZE_T1_MODE" == "" ] ; then
  1041         -        SB_EXISTS_ON_PATH_T1_RESULT="f"  # if-block init
  1042         -        #----
  1043         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
  1044         -            S_TMP_0="filesize" # usually available on Linux
  1045         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
  1046         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
  1047         -                 S_FUNC_MMMV_FILESIZE_T1_MODE="$S_TMP_0"
  1048         -            fi
  1049         -        fi
  1050         -        #----
  1051         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
  1052         -            S_TMP_0="ruby"    # helps on BSD
  1053         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
  1054         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
  1055         -                 S_FUNC_MMMV_FILESIZE_T1_MODE="$S_TMP_0"
  1056         -            fi
  1057         -        fi
  1058         -        #--------
  1059         -        if [ "$S_FUNC_MMMV_FILESIZE_T1_MODE" == "" ] ; then
  1060         -            echo ""
  1061         -            echo "All of the applications that this function is " 
  1062         -            echo "capable of using for finding out file size (filesize, ruby)"
  1063         -            echo "are missing from the PATH."
  1064         -            echo "GUID=='3c1c971a-a8b6-4c5f-a238-71b3900170e7'"
  1065         -            echo ""
  1066         -            #----
  1067         -            cd $S_FP_ORIG
  1068         -            exit 1 # exit with error
  1069         -        fi
  1070         -        #--------
  1071         -        if [ "$?" != "0" ]; then
  1072         -            echo ""
  1073         -            echo "This script is flawed."
  1074         -            echo "GUID=='a54cc438-f608-4e38-b138-71b3900170e7'"
  1075         -            echo ""
  1076         -            #----
  1077         -            cd $S_FP_ORIG
  1078         -            exit 1 # exit with error
  1079         -        fi
  1080         -        #--------
  1081         -    fi
  1082         -    #--------------------
  1083         -    S_FUNC_MMMV_FILESIZE_T1_RESULT=""
  1084         -    #--------------------
  1085         -    if [ "$S_FUNC_MMMV_FILESIZE_T1_MODE" == "filesize" ]; then
  1086         -        S_TMP_0="`filesize $S_FP_2_AN_EXISTING_FILE 2>/dev/null`"
  1087         -        if [ "$?" != "0" ]; then
  1088         -            echo ""
  1089         -            echo "The console application \"filesize\" "
  1090         -            echo "exited with an error."
  1091         -            echo ""
  1092         -            echo "----console--outut--citation--start-----"
  1093         -            echo "`filesize $S_FP_2_AN_EXISTING_FILE`" # stdout and stderr
  1094         -            echo "----console--outut--citation--end-------"
  1095         -            echo ""
  1096         -            echo "GUID=='556a2e84-9d18-4e09-a338-71b3900170e7'"
  1097         -            echo ""
  1098         -            #----
  1099         -            cd $S_FP_ORIG
  1100         -            exit 1 # exit with error
  1101         -        fi
  1102         -        S_FUNC_MMMV_FILESIZE_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`"
  1103         -    fi
  1104         -    #--------------------
  1105         -    if [ "$S_FUNC_MMMV_FILESIZE_T1_MODE" == "ruby" ]; then
  1106         -        S_TMP_0="`ruby -e \"printf(File.size('$S_FP_2_AN_EXISTING_FILE').to_s)\" 2>/dev/null`"
  1107         -        if [ "$?" != "0" ]; then
  1108         -            echo ""
  1109         -            echo "The console application \"ruby\" "
  1110         -            echo "exited with an error."
  1111         -            echo ""
  1112         -            echo "----console--outut--citation--start-----"
  1113         -            echo "`ruby -e \"printf(File.size('$S_FP_2_AN_EXISTING_FILE').to_s)\"`"
  1114         -            echo "----console--outut--citation--end-------"
  1115         -            echo ""
  1116         -            echo "GUID=='855f9c25-6bb5-4f85-9428-71b3900170e7'"
  1117         -            echo ""
  1118         -            #----
  1119         -            cd $S_FP_ORIG
  1120         -            exit 1 # exit with error
  1121         -        fi
  1122         -        S_FUNC_MMMV_FILESIZE_T1_RESULT="$S_TMP_0"
  1123         -    fi
  1124         -    #--------------------
  1125         -    S_TMP_0="`printf \"$S_FUNC_MMMV_FILESIZE_T1_RESULT\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`"
  1126         -    local SB_THROW="f"
  1127         -    if [ "$S_TMP_0" != "$S_FUNC_MMMV_FILESIZE_T1_RESULT" ]; then
  1128         -        SB_THROW="t"
  1129         -    else
  1130         -        if [ "$S_FUNC_MMMV_FILESIZE_T1_RESULT" == "" ]; then
  1131         -            SB_THROW="t"
  1132         -        fi
  1133         -    fi
  1134         -    #----
  1135         -    if [ "$SB_THROW" == "t" ]; then
  1136         -        echo ""
  1137         -        echo "The result of the "
  1138         -        echo ""
  1139         -        echo "    func_mmmv_filesize_t1"
  1140         -        echo ""
  1141         -        echo "for "
  1142         -        echo ""
  1143         -        echo "($S_FUNC_MMMV_FILESIZE_T1_RESULT)"
  1144         -        echo ""
  1145         -        echo "either contain spaces, tabs or is an empty string," 
  1146         -        echo "which is wrong, because even a file with the size of 0 "
  1147         -        echo "should have a file size of \"0\", which is not an empty string."
  1148         -        echo "GUID=='1b8bc205-8c7e-40a4-a528-71b3900170e7'"
  1149         -        echo ""
  1150         -        #----
  1151         -        cd $S_FP_ORIG
  1152         -        exit 1 # exit with error
  1153         -    fi
  1154         -    #--------------------
  1155         -} # func_mmmv_filesize_t1
  1156         -
  1157         -
  1158         -#--------------------------------------------------------------------------
  1159         -
  1160         -func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1() { 
  1161         -    echo ""
  1162         -    echo "Command line format: "
  1163         -    echo ""
  1164         -    echo "<the name of this script>  ARGLIST "
  1165         -    echo ""
  1166         -    echo "  ARGLIST :== help | WRAP | UNWRAP | RUN_SELFTEST | VERIFY |"
  1167         -    echo "              VERIFY_PACKET_NAME_FORMAT_V1 | version "
  1168         -    echo ""
  1169         -    echo "                   WRAP :== wrap         <file path> "
  1170         -    echo "                 UNWRAP :== unwrap       <file path> "
  1171         -    echo "           RUN_SELFTEST :== test_hash_t1 <file path> "
  1172         -    echo "                 VERIFY :== verify       <file path> "
  1173         -    echo ""
  1174         -    echo "  VERIFY_PACKET_NAME_FORMAT_V1 :== verify_packet_name_format_v1 X<packet name "
  1175         -    echo "                                                                 candidate string>X"
  1176         -    echo ""
  1177         -    echo ""
  1178         -    echo "If this API is used correctly and there are no other "
  1179         -    echo "reasons for the failure of this script, then "
  1180         -    echo "all of the verification commands exit with error code 0 "
  1181         -    echo "regardless of whether the verification fails or passes."
  1182         -    echo "All verification commands return a string that "
  1183         -    echo "belongs to the set {\"verification_passed\", "
  1184         -    echo "                    \"verification_failed\"}."
  1185         -    echo ""
  1186         -    echo ""
  1187         -    echo ""
  1188         -} # func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1
  1189         -
  1190         -#--------------------------------------------------------------------------
  1191         -
  1192         -func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1() { 
  1193         -    local S_FP_0="$1" # Path to the file. 
  1194         -    #--------
  1195         -    if [ "$S_FP_0" == "" ]; then
  1196         -        echo ""
  1197         -        echo "The 2. console argument is expected to be "
  1198         -        echo "a path to a file, but currently "
  1199         -        echo "the 2. console argument is missing."
  1200         -        echo "GUID=='1eee6d46-d91c-4bfb-a228-71b3900170e7'"
  1201         -        echo ""
  1202         -        #----
  1203         -        cd $S_FP_ORIG
  1204         -        exit 1 # exit with error
  1205         -    fi
  1206         -    #--------
  1207         -    if [ ! -e "$S_FP_0" ]; then
  1208         -        if [ -h "$S_FP_0" ]; then
  1209         -            echo ""
  1210         -            echo "The file path "
  1211         -            echo ""
  1212         -            echo "    $S_FP_0"
  1213         -            echo ""
  1214         -            echo "is a path of a broken symlink, but symlinks "
  1215         -            echo "are not supported at all."
  1216         -            echo "The reason, why symlinks to files are not supported is that "
  1217         -            echo "the file size of symlinks can differ from "
  1218         -            echo "the file size of the target of the symlink."
  1219         -            echo "GUID=='4c68cb15-2c2b-49fd-9218-71b3900170e7'"
  1220         -            echo ""
  1221         -        else
  1222         -            echo ""
  1223         -            echo "The file with the path of "
  1224         -            echo ""
  1225         -            echo "    $S_FP_0"
  1226         -            echo ""
  1227         -            echo "does not exist."
  1228         -            echo "GUID=='428ff042-efd8-4566-a318-71b3900170e7'"
  1229         -            echo ""
  1230         -        fi
  1231         -        #----
  1232         -        cd $S_FP_ORIG
  1233         -        exit 1 # exit with error
  1234         -    fi
  1235         -    #--------
  1236         -    if [ -d "$S_FP_0" ]; then
  1237         -        if [ -h "$S_FP_0" ]; then
  1238         -            echo ""
  1239         -            echo "The path "
  1240         -            echo ""
  1241         -            echo "    $S_FP_0"
  1242         -            echo ""
  1243         -            echo "references a symlink that references folder, but "
  1244         -            echo "a file is expected."
  1245         -            echo "GUID=='b2d2a237-9fcb-46fe-8318-71b3900170e7'"
  1246         -            echo ""
  1247         -        else
  1248         -            echo ""
  1249         -            echo "The path "
  1250         -            echo ""
  1251         -            echo "    $S_FP_0"
  1252         -            echo ""
  1253         -            echo "references a folder, but it is expected to "
  1254         -            echo "to reference a file."
  1255         -            echo "GUID=='1dd79224-6a1e-44fd-b118-71b3900170e7'"
  1256         -            echo ""
  1257         -        fi
  1258         -        #----
  1259         -        cd $S_FP_ORIG
  1260         -        exit 1 # exit with error
  1261         -    fi
  1262         -    #--------
  1263         -    if [ -h "$S_FP_0" ]; then
  1264         -        echo ""
  1265         -        echo "The path "
  1266         -        echo ""
  1267         -        echo "    $S_FP_0"
  1268         -        echo ""
  1269         -        echo "references a symlink, a file is expected."
  1270         -        echo "The reason, why symlinks to files are not supported is that "
  1271         -        echo "the file size of symlinks can differ from "
  1272         -        echo "the file size of the target of the symlink."
  1273         -        echo "GUID=='7afe9e27-cee1-4ad1-b218-71b3900170e7'"
  1274         -        echo ""
  1275         -        #----
  1276         -        cd $S_FP_ORIG
  1277         -        exit 1 # exit with error
  1278         -    fi
  1279         -} # func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1
  1280         -
  1281         -
  1282         -#--------------------------------------------------------------------------
  1283         -
  1284         -func_mmmv_silktorrent_packager_t1_bash_exc_assert_packet_name_candidate_exists_t1() { 
  1285         -    local S_FP_0="$1" # Path to the file. 
  1286         -    #--------
  1287         -    if [ "$S_FP_0" == "" ]; then
  1288         -        echo ""
  1289         -        echo "The 2. console argument is expected to be "
  1290         -        echo "a Silktorrent packet name candidate, but currently "
  1291         -        echo "the 2. console argument is missing."
  1292         -        echo "GUID=='227d93c4-61a6-42b7-b118-71b3900170e7'"
  1293         -        echo ""
  1294         -        #----
  1295         -        cd $S_FP_ORIG
  1296         -        exit 1 # exit with error
  1297         -    fi
  1298         -} # func_mmmv_silktorrent_packager_t1_bash_exc_assert_packet_name_candidate_exists_t1
  1299         -
  1300         -
  1301         -#--------------------------------------------------------------------------
  1302         -
  1303         -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER="for input and output"
  1304         -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE="" # optim.  hack
  1305         -func_mmmv_silktorrent_packager_t1_bash_reverse_string() { 
  1306         -    local S_IN="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER"
  1307         -    #--------------------
  1308         -    local S_TMP_0="not set"
  1309         -    # Mode selection:
  1310         -    if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE" == "" ] ; then
  1311         -        SB_EXISTS_ON_PATH_T1_RESULT="f"  # if-block init
  1312         -        #----
  1313         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
  1314         -            S_TMP_0="gawk" # usually available on Linux
  1315         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
  1316         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
  1317         -                 S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE="$S_TMP_0"
  1318         -            fi
  1319         -        fi
  1320         -        #----
  1321         -        if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then
  1322         -            S_TMP_0="ruby"    # helps on BSD
  1323         -            func_sb_exists_on_path_t1 "$S_TMP_0" 
  1324         -            if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then
  1325         -                 S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE="$S_TMP_0"
  1326         -            fi
  1327         -        fi
  1328         -        #--------
  1329         -        if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE" == "" ] ; then
  1330         -            echo ""
  1331         -            echo "All of the applications that this function is " 
  1332         -            echo "capable of using for finding out file size (gawk, ruby)"
  1333         -            echo "are missing from the PATH."
  1334         -            echo "GUID=='b55b1414-6247-47f6-9118-71b3900170e7'"
  1335         -            echo ""
  1336         -            #----
  1337         -            cd $S_FP_ORIG
  1338         -            exit 1 # exit with error
  1339         -        fi
  1340         -        #--------
  1341         -        if [ "$?" != "0" ]; then
  1342         -            echo ""
  1343         -            echo "This script is flawed."
  1344         -            echo "GUID=='109b82e1-8efb-49a4-b408-71b3900170e7'"
  1345         -            echo ""
  1346         -            #----
  1347         -            cd $S_FP_ORIG
  1348         -            exit 1 # exit with error
  1349         -        fi
  1350         -        #--------
  1351         -    fi
  1352         -    #--------------------
  1353         -    #--------------------
  1354         -    S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER=""
  1355         -    #--------
  1356         -    if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE" == "gawk" ]; then
  1357         -        # The awk code example originates from 
  1358         -        # http://www.linuxandlife.com/2013/06/how-to-reverse-string.html
  1359         -        # archival copy: https://archive.is/Cx0xF
  1360         -        #----
  1361         -        S_TMP_0="`printf "$S_IN" | \
  1362         -            awk '{ for(i=length;i!=0;i--)x=x substr($0,i,1);}END{printf  x}'`"
  1363         -        if [ "$?" != "0" ]; then
  1364         -            echo ""
  1365         -            echo "The console application \"gawk\" "
  1366         -            echo "exited with an error."
  1367         -            echo ""
  1368         -            echo "----console--outut--citation--start-----"
  1369         -            echo "`printf "$S_IN" | awk '{ for(i=length;i!=0;i--)x=x substr($0,i,1);}END{printf  x}'`"
  1370         -            echo "----console--outut--citation--end-------"
  1371         -            echo ""
  1372         -            echo "GUID=='95dcc43d-90b7-4bfd-8408-71b3900170e7'"
  1373         -            echo ""
  1374         -            #----
  1375         -            cd $S_FP_ORIG
  1376         -            exit 1 # exit with error
  1377         -        fi
  1378         -        S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER="$S_TMP_0"
  1379         -    fi
  1380         -    #--------
  1381         -    if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE" == "ruby" ]; then
  1382         -        #----
  1383         -        S_TMP_0="`ruby -e \"puts(ARGV[0].to_s.reverse)\" "$S_IN" 2>/dev/null`"
  1384         -        if [ "$?" != "0" ]; then
  1385         -            echo ""
  1386         -            echo "The console application \"ruby\" "
  1387         -            echo "exited with an error."
  1388         -            echo ""
  1389         -            echo "----console--outut--citation--start-----"
  1390         -            echo "`ruby -e \"puts('$S_IN'.reverse)\"`" # with the stderr
  1391         -            echo "----console--outut--citation--end-------"
  1392         -            echo ""
  1393         -            echo "GUID=='59c56443-ab6c-4899-9408-71b3900170e7'"
  1394         -            echo ""
  1395         -            #----
  1396         -            cd $S_FP_ORIG
  1397         -            exit 1 # exit with error
  1398         -        fi
  1399         -        S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER="$S_TMP_0"
  1400         -    fi
  1401         -    #--------------------
  1402         -} # func_mmmv_silktorrent_packager_t1_bash_reverse_string
  1403         -
  1404         -
  1405         -#--------------------------------------------------------------------------
  1406         -
  1407         -# As of 2016 the maximum file name length on Linux is 255 characters.
  1408         -# At
  1409         -#
  1410         -#    http://unix.stackexchange.com/questions/32795/what-is-the-maximum-allowed-filename-and-folder-size-with-ecryptfs
  1411         -#
  1412         -# the eCryptfs related recommendation is to keep the lengths
  1413         -# of file names to less than 140 characters. 
  1414         -#
  1415         -# A citation from 
  1416         -# http://windows.microsoft.com/en-us/windows/file-names-extensions-faq#1TC=windows-7
  1417         -# archieval copy: https://archive.is/UKBmd
  1418         -#     "Windows limits a single path to 260 characters."
  1419         -#
  1420         -# A citation from CygWin mailing list:
  1421         -# https://cygwin.com/ml/cygwin/2004-10/msg01323.html
  1422         -# archival copy: https://archive.is/GRvFK
  1423         -#     "The Unicode versions of several functions permit a 
  1424         -#     maximum path length of 32,767 characters, 
  1425         -#     composed of components up to 255 characters in length. 
  1426         -#     To specify such a path, use the "\\?\" prefix. For example, 
  1427         -#     "\\?\D:\<path>". To specify such a UNC path, use the "\\?\UNC\" 
  1428         -#     prefix. For example, "\\?\UNC\<server>\<share>". 
  1429         -#     Note that these prefixes are not used as part of the path 
  1430         -#     itself. They indicate that the path should be passed to the 
  1431         -#     system with minimal modification. An implication of this is 
  1432         -#     that you cannot use forward slashes to represent path separators 
  1433         -#     or a period to represent the current directory."
  1434         -# Related pages:
  1435         -# https://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx
  1436         -# archival copy: https://archive.is/p891y
  1437         -#
  1438         -# To allow database indexes that store the 
  1439         -# file names of the blogs 
  1440         -# to work as efficiently as possible, the first
  1441         -# characters of the file name should be as 
  1442         -# uniformly random set of characters as possible.
  1443         -# If file name starts with a secure hash, then 
  1444         -# that requirement is met. 
  1445         -#
  1446         -# The parser that dismantles the file name to relevant components 
  1447         -# should be implementable in different programming languages
  1448         -# without investing considerable amount of development time.
  1449         -# The syntax of the file name should also allow the
  1450         -# file name to be parsed computationally cheaply.
  1451         -#
  1452         -# As of 2016_05 the file extension  .stblob seems to be unused.
  1453         -# Therefore the "silktorrent blob", .stblob, can be used for the 
  1454         -# extension of the blob files.
  1455         -#
  1456         -# Compression of the blobs IS NOT ALLOWED, because the 
  1457         -# blobs must be extractable without becoming a victim 
  1458         -# of an attack, where 100GiB of zeros is packed to a
  1459         -# small file. The container format is the tar format,
  1460         -# without any compression.
  1461         -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT="not set"
  1462         -func_mmmv_silktorrent_packager_t1_bash_blob2filename_t1() { 
  1463         -    local S_FP_0="$1" # Path to the file. 
  1464         -    #----
  1465         -    func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0"
  1466         -    #--------
  1467         -    # The Tiger     hash has  48 characters.
  1468         -    # The Whirlpool hash has 128 characters.
  1469         -    # The SHA-256   hash has  64 characters.
  1470         -    #
  1471         -    # A file size of 1TiB is ~10^12 ~ 13 characters
  1472         -    # A file size of 1PiB is ~10^15 ~ 14 characters
  1473         -    # A file size of 1EiB is ~10^18 ~ 19 characters
  1474         -    # A file size of 1ZiB is ~10^21 ~ 22 characters
  1475         -    # A file size of 1YiB is ~10^24 ~ 25 characters
  1476         -    # 
  1477         -    # The max. file name length on Linux and 
  1478         -    # Windows (Unicode API) is 255 characters.
  1479         -    #----
  1480         -    # The character budget:
  1481         -    #        6 characters --- file name format type ID 
  1482         -    #                         rgx_in_ruby=/v[\d]{4}[_]/
  1483         -    # echo "v0034_s2342_" | gawk '{ gsub(/_/, "_\n"); print }' | \
  1484         -    #                       gawk '/^v[0-9]{4}_/ {printf "%s",$1 }' | \
  1485         -    #                       gawk '{gsub(/[v_]/,"");printf "%s", $1 }'
  1486         -    #
  1487         -    #   max 32 characters --- file size    
  1488         -    #                         rgx_in_ruby=/s[\d]+[_]/
  1489         -    #                         echo "v0034_" | gawk '/^v[0-9]{4}_/ {printf "%s",$1 }'
  1490         -    # echo "v0034_s2342_" | gawk '{ gsub(/_/, "_\n"); print }' | \
  1491         -    #                       gawk '/^s[0-9]+_/ {printf "%s",$1 }' | \
  1492         -    #                       gawk '{gsub(/[s_]/,"");printf "%s", $1 }'
  1493         -    #
  1494         -    #
  1495         -    #       66 characters --- SHA-256  
  1496         -    #                         rgx_in_ruby=/h[\dabcdef]{64}[_]/
  1497         -    # echo "h`sha256sum /dev/null | gawk '/[0-9abcdef]/ {printf "%s",$1}'`_" | \
  1498         -    #                               gawk '/^h[0-9abcdef]+_/ {printf "%s",$1 }' | \
  1499         -    #                               gawk '{gsub(/[h_]/,"");printf "%s", $1 }'
  1500         -    #
  1501         -    #
  1502         -    #       50 characters --- Tiger
  1503         -    #                         rgx_in_ruby=/i[\dabcdef]{48}$/   # lacks the ending "_" 
  1504         -    #                                                          # for db index optimization
  1505         -    #                         The gawk code is as with the sha256, 
  1506         -    #                         except that sha256sum-> tigerdeep, "^h"->"^i",
  1507         -    #                         "[h_]"->"[i_]"
  1508         -    #
  1509         -    #--------
  1510         -    # As the current version of this script depends on Ruby anyway,
  1511         -    # the gawk regex based branches that are really
  1512         -    # complex and require multiple gawk calls can be left unimplemented.
  1513         -    # That way this script becomes more succinct.
  1514         -    #--------------------
  1515         -    func_mmmv_tigerhash_t1 "$S_FP_0"
  1516         -    #echo "       Tiger: $S_FUNC_MMMV_TIGERHASH_T1_RESULT"
  1517         -    #func_mmmv_whirlpoolhash_t1 "$S_FP_0"
  1518         -    #echo "   Whirlpool: $S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT"
  1519         -    func_mmmv_sha256_t1 "$S_FP_0"
  1520         -    #echo "      SHA256: $S_FUNC_MMMV_SHA256_T1_RESULT"
  1521         -    func_mmmv_filesize_t1 "$S_FP_0"
  1522         -    #echo "   file size: $S_FUNC_MMMV_FILESIZE_T1_RESULT"
  1523         -    #--------
  1524         -    local S_NAME_REVERSED="bolbts." # ".stblob".reverse
  1525         -    local S_0="v0001_s$S_FUNC_MMMV_FILESIZE_T1_RESULT"
  1526         -    S_NAME_REVERSED="$S_NAME_REVERSED$S_0"
  1527         -    S_0="_h$S_FUNC_MMMV_SHA256_T1_RESULT"
  1528         -    S_NAME_REVERSED="$S_NAME_REVERSED$S_0"
  1529         -    S_0="_i$S_FUNC_MMMV_TIGERHASH_T1_RESULT"
  1530         -    S_NAME_REVERSED="$S_NAME_REVERSED$S_0"
  1531         -    #----
  1532         -    S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER="$S_NAME_REVERSED"
  1533         -    func_mmmv_silktorrent_packager_t1_bash_reverse_string
  1534         -    S_0="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER"
  1535         -    S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT="$S_0"
  1536         -} # func_mmmv_silktorrent_packager_t1_bash_blob2filename_t1
  1537         -
  1538         -
  1539         -#--------------------------------------------------------------------------
  1540         -
  1541         -func_mmmv_delete_tmp_folder_t1(){
  1542         -    local S_FP_0="$1" # folder path
  1543         -    #--------
  1544         -    if [ ! -e "$S_FP_0" ]; then
  1545         -        echo ""
  1546         -        echo "This script is flawed. The folder "
  1547         -        echo "    $S_FP_0"
  1548         -        echo "is expected to exist during the "
  1549         -        echo "call to this function."
  1550         -        echo "GUID=='aa3a281b-e603-44e0-9208-71b3900170e7'"
  1551         -        echo ""
  1552         -        #----
  1553         -        cd $S_FP_ORIG
  1554         -        exit 1 # exit with error
  1555         -    fi
  1556         -    #--------
  1557         -    # To avoid a situation, where due to some 
  1558         -    # flaw the home folder or something else important 
  1559         -    # gets accidentally recursively deleted, 
  1560         -    # the following test transforms the path from 
  1561         -    # /tmp/../home/blabla
  1562         -    # to a full path without the dots and then studies, whether
  1563         -    # the full path points to somehwere in the /tmp
  1564         -    local S_FP_1="`cd $S_FP_0; pwd`"
  1565         -    if [ ! -e "$S_FP_1" ]; then
  1566         -        echo ""
  1567         -        echo "This script is flawed. The folder "
  1568         -        echo "    $S_FP_1"
  1569         -        echo "is missing."
  1570         -        echo "GUID=='f1c9d550-72d2-407d-9208-71b3900170e7'"
  1571         -        echo ""
  1572         -        #----
  1573         -        cd $S_FP_ORIG
  1574         -        exit 1 # exit with error
  1575         -    fi
  1576         -    local S_TMP_0="`echo \"$S_FP_1\" | grep -E ^/home `"
  1577         -    if [ "$S_TMP_0" != "" ]; then
  1578         -        echo ""
  1579         -        echo "This script is flawed."
  1580         -        echo "The temporary sandbox folder must reside in /tmp."
  1581         -        echo ""
  1582         -        echo "S_FP_0==$S_FP_0"
  1583         -        echo ""
  1584         -        echo "S_FP_1==$S_FP_1"
  1585         -        echo ""
  1586         -        echo "S_TMP_0==$S_TMP_0"
  1587         -        echo ""
  1588         -        echo "GUID=='ef812232-9359-4769-9208-71b3900170e7'"
  1589         -        echo ""
  1590         -        #----
  1591         -        cd $S_FP_ORIG
  1592         -        exit 1 # exit with error
  1593         -    fi
  1594         -    # Just to be sure, the same thing is checked by a slightly 
  1595         -    # different regex and using the "==" in stead of the "!=".
  1596         -    S_TMP_0="`echo \"$S_FP_1\" | grep -E ^/tmp/`" 
  1597         -    if [ "$S_TMP_0" == "" ]; then
  1598         -        echo ""
  1599         -        echo "This script is flawed."
  1600         -        echo "The temporary sandbox folder must reside in /tmp."
  1601         -        echo ""
  1602         -        echo "S_FP_0==$S_FP_0"
  1603         -        echo ""
  1604         -        echo "S_FP_1==$S_FP_1"
  1605         -        echo ""
  1606         -        echo "S_TMP_0==$S_TMP_0"
  1607         -        echo ""
  1608         -        echo "GUID=='4604f696-2a07-4943-b508-71b3900170e7'"
  1609         -        echo ""
  1610         -        #----
  1611         -        cd $S_FP_ORIG
  1612         -        exit 1 # exit with error
  1613         -    fi
  1614         -    #--------
  1615         -    rm -fr $S_FP_1
  1616         -    if [ -e "$S_FP_1" ]; then
  1617         -        echo ""
  1618         -        echo "Something went wrong. The recursive deletion of the temporary folder, "
  1619         -        echo "    $S_FP_1"
  1620         -        echo "failed."
  1621         -        echo "GUID=='5e2970b5-eda5-4371-a208-71b3900170e7'"
  1622         -        echo ""
  1623         -        #----
  1624         -        cd $S_FP_ORIG
  1625         -        exit 1 # exit with error
  1626         -    fi
  1627         -} # func_mmmv_delete_tmp_folder_t1
  1628         -
  1629         -
  1630         -#--------------------------------------------------------------------------
  1631         -
  1632         -# Throws, if there exists a file with the same path.
  1633         -func_mmmv_create_folder_if_it_does_not_already_exist_t1(){
  1634         -    local S_FP_0="$1" # folder path
  1635         -    #--------
  1636         -    if [ "$S_FP_0" == "" ]; then
  1637         -        # Using gawk and alike to cover also cases, where
  1638         -        # $S_FP_0=="  "
  1639         -        # is intentionally left out to avoid the overhead, but
  1640         -        # due to some luck the mkdir exits with an error code greater than 0,
  1641         -        # if it misses a path argument. 
  1642         -        echo ""
  1643         -        echo "S_FP_0==\"\""
  1644         -        echo "GUID=='24c43d27-d0bf-4114-b5f7-71b3900170e7'"
  1645         -        echo ""
  1646         -        #----
  1647         -        cd $S_FP_ORIG
  1648         -        exit 1 # exit with error
  1649         -    fi
  1650         -    #--------------------
  1651         -    if [ -e "$S_FP_0" ]; then
  1652         -        if [ ! -d "$S_FP_0" ]; then
  1653         -            echo ""
  1654         -            echo "The path that is suppose to reference either "
  1655         -            echo "an existing folder or a non-existent folder, "
  1656         -            echo "references a file."
  1657         -            echo "GUID=='658b0135-9bb2-4a53-82f7-71b3900170e7'"
  1658         -            echo ""
  1659         -            #----
  1660         -            cd $S_FP_ORIG
  1661         -            exit 1 # exit with error
  1662         -        fi
  1663         -    fi
  1664         -    #--------
  1665         -    mkdir -p $S_FP_0
  1666         -    if [ "$?" != "0" ]; then 
  1667         -        echo ""
  1668         -        echo "mkdir for path "
  1669         -        echo "    $S_FP_0"
  1670         -        echo "failed."
  1671         -        echo "GUID=='75439f3e-59f7-4751-b2f7-71b3900170e7'"
  1672         -        echo ""
  1673         -        #----
  1674         -        cd $S_FP_ORIG
  1675         -        exit 1 # exit with error
  1676         -    fi
  1677         -    #----
  1678         -    if [ ! -e "$S_FP_0" ]; then
  1679         -        echo ""
  1680         -        echo "mkdir execution succeeded, but for some other reason the folder "
  1681         -        echo "    $S_FP_0"
  1682         -        echo "does not exist."
  1683         -        echo "GUID=='92a90266-13b1-4468-b5f7-71b3900170e7'"
  1684         -        echo ""
  1685         -        #----
  1686         -        cd $S_FP_ORIG
  1687         -        exit 1 # exit with error
  1688         -    fi
  1689         -} # func_mmmv_create_folder_if_it_does_not_already_exist_t1
  1690         -
  1691         -
  1692         -#--------------------------------------------------------------------------
  1693         -
  1694         -S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT="" # == "" on failure
  1695         -                                                # otherwise full file path
  1696         -func_mmmv_create_tmp_folder_t1(){
  1697         -    # Does not take any arguments.
  1698         -    #--------
  1699         -    #func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_GUID_t1" "$1"
  1700         -    #--------------------
  1701         -    S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT="" # value for failure
  1702         -    func_mmmv_GUID_t1
  1703         -    if [ "$S_FUNC_MMMV_GUID_T1_RESULT" == "" ]; then
  1704         -        echo ""
  1705         -        echo "This script is flawed. GUID generation failed and "
  1706         -        echo "the GUID generation function did not throw despite "
  1707         -        echo "the fact that it should have detected its own failure."
  1708         -        echo "GUID=='4c3fc054-3af8-4cb4-94f7-71b3900170e7'"
  1709         -        echo ""
  1710         -        #----
  1711         -        cd $S_FP_ORIG
  1712         -        exit 1 # exit with error
  1713         -    fi
  1714         -    #----
  1715         -    local S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT"
  1716         -    # The following few if-clauses form a short unrolled loop. The unrolling 
  1717         -    # is for simplicity, because it is Bash, where loops are nasty.
  1718         -    if [ -e "$S_TMP_0" ]; then
  1719         -        func_mmmv_GUID_t1
  1720         -        S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT"
  1721         -    fi
  1722         -    if [ -e "$S_TMP_0" ]; then
  1723         -        func_mmmv_GUID_t1
  1724         -        S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT"
  1725         -    fi
  1726         -    if [ -e "$S_TMP_0" ]; then
  1727         -        func_mmmv_GUID_t1
  1728         -        S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT"
  1729         -    fi
  1730         -    if [ -e "$S_TMP_0" ]; then
  1731         -        func_mmmv_GUID_t1
  1732         -        S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT"
  1733         -    fi
  1734         -    #----
  1735         -    if [ -e "$S_TMP_0" ]; then
  1736         -        echo ""
  1737         -        echo "This script failed to generate a locally unique path."
  1738         -        echo "GUID=='864ea729-ebeb-488b-82f7-71b3900170e7'"
  1739         -        echo ""
  1740         -        #----
  1741         -        cd $S_FP_ORIG
  1742         -        exit 1 # exit with error
  1743         -    fi
  1744         -    func_mmmv_create_folder_if_it_does_not_already_exist_t1 "$S_TMP_0"
  1745         -    if [ ! -e "$S_TMP_0" ]; then
  1746         -        echo ""
  1747         -        echo "mkdir for path "
  1748         -        echo "    $S_TMP_0"
  1749         -        echo "failed."
  1750         -        echo "GUID=='54add286-d3ba-4fc9-81f7-71b3900170e7'"
  1751         -        echo ""
  1752         -        #----
  1753         -        cd $S_FP_ORIG
  1754         -        exit 1 # exit with error
  1755         -    fi
  1756         -    S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT="$S_TMP_0"
  1757         -} # func_mmmv_create_tmp_folder_t1 
  1758         -
  1759         -
  1760         -#--------------------------------------------------------------------------
  1761         -
  1762         -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT="not set"
  1763         -func_mmmv_silktorrent_packager_t1_bash_get_packet_format_version_t1() { 
  1764         -    local S_FP_0="$1" # Path to the file. 
  1765         -    #----
  1766         -    # It's not necessary for the file to actually exist,
  1767         -    # because this function only analyzes the file path string.
  1768         -    # func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0"
  1769         -    if [ "$S_FP_0" == "" ]; then
  1770         -        echo ""
  1771         -        echo "The file path candidate must not be an empty string."
  1772         -        echo "GUID=='636ea139-ea1a-44ec-b1e7-71b3900170e7'"
  1773         -        echo ""
  1774         -        #----
  1775         -        cd $S_FP_ORIG
  1776         -        exit 1 # exit with error
  1777         -    fi 
  1778         -    #----
  1779         -    # The 
  1780         -    #
  1781         -    #     basename /tmp/foo/
  1782         -    #
  1783         -    # returns
  1784         -    #
  1785         -    #     foo
  1786         -    #
  1787         -    # That is to say, the "basename" ignores the rightmost slash.
  1788         -    #----
  1789         -    local S_TMP_0="`ruby -e \"\
  1790         -        s='noslash';\
  1791         -        if(('$S_FP_0'.reverse)[0..0]=='/') then \
  1792         -            s='slash_present';\
  1793         -        end;\
  1794         -        puts(s);\
  1795         -        \"`"
  1796         -    if [ "$S_TMP_0" != "noslash" ]; then
  1797         -        echo ""
  1798         -        echo "The path candidate must not end with a slash."
  1799         -        echo ""
  1800         -        echo "    S_FP_0==$S_FP_0"
  1801         -        echo ""
  1802         -        echo "    S_TMP_0==$S_TMP_0"
  1803         -        echo ""
  1804         -        echo "GUID=='27e5ea85-56d2-40d2-93e7-71b3900170e7'"
  1805         -        echo ""
  1806         -        #----
  1807         -        cd $S_FP_ORIG
  1808         -        exit 1 # exit with error
  1809         -    fi
  1810         -    basename $S_FP_0 1>/dev/null # to set a value to the $? in this scope 
  1811         -    if [ "$?" != "0" ]; then
  1812         -        echo ""
  1813         -        echo "The command "
  1814         -        echo ""
  1815         -        echo "    basename $S_FP_0 "
  1816         -        echo ""
  1817         -        echo "exited with an error."
  1818         -        echo "GUID=='72ca4146-50f7-41ee-92e7-71b3900170e7'"
  1819         -        echo ""
  1820         -        #----
  1821         -        cd $S_FP_ORIG
  1822         -        exit 1 # exit with error
  1823         -    fi 
  1824         -    S_TMP_0="`basename $S_FP_0`"
  1825         -    if [ "$S_TMP_0" == "" ]; then
  1826         -        echo ""
  1827         -        echo "The file path candidate must be a string that "
  1828         -        echo "is not an empty string after "
  1829         -        echo "all of the spaces and tabs have been removed from it."
  1830         -        echo "GUID=='36dee451-756e-49de-83e7-71b3900170e7'"
  1831         -        echo ""
  1832         -        #----
  1833         -        cd $S_FP_ORIG
  1834         -        exit 1 # exit with error
  1835         -    fi 
  1836         -    #--------
  1837         -    S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT=""
  1838         -    local S_OUT="unsupported_by_this_script_version"
  1839         -    #--------
  1840         -    # In Ruby
  1841         -    #     "foo.stblob"[0..(-8)]=="foo"
  1842         -    #     "foo.stblob"[(-99)..(-1)]==nil
  1843         -    # 
  1844         -    local S_TMP_1="`ruby -e \"\
  1845         -        x='$S_TMP_0'[0..(-8)];\
  1846         -        if(x!=nil) then\
  1847         -            md=x.reverse.match(/v[\\d]+/);\
  1848         -            if(md!=nil) then\
  1849         -                s_0=(md[0].to_s)[1..(-1)];\
  1850         -                print(s_0.sub(/^[0]+/,''));\
  1851         -            end;\
  1852         -        end;\
  1853         -        \"`"
  1854         -    # echo "$S_TMP_0"
  1855         -    # echo "$S_TMP_1"
  1856         -    #----
  1857         -    if [ "$S_TMP_1" != "" ]; then
  1858         -        S_OUT="silktorrent_packet_format_version_$S_TMP_1"
  1859         -    fi 
  1860         -    S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT="$S_OUT"
  1861         -} # func_mmmv_silktorrent_packager_t1_bash_get_packet_format_version_t1
  1862         -
  1863         -
  1864         -#--------------------------------------------------------------------------
  1865         -
  1866         -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_VERIFY_FILE_NAME_T1_RESULT="not set"
  1867         -func_mmmv_silktorrent_packager_t1_bash_verify_file_name_t1() { 
  1868         -    local S_FP_0="$1" # Path to the file. 
  1869         -    #----
  1870         -    func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0"
  1871         -    #--------
  1872         -    func_mmmv_silktorrent_packager_t1_bash_get_packet_format_version_t1 "$S_FP_0"
  1873         -    local S_PACKET_FORMAT="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT"
  1874         -    if [ "$S_PACKET_FORMAT" == "unsupported_by_this_script_version" ]; then
  1875         -        echo ""
  1876         -        echo "There exists a possibility that the "
  1877         -        echo "Silktorrent packet candidate is actually OK, but "
  1878         -        echo "this is an older version of the Silktorrent implementaiton and "
  1879         -        echo "the older version does not support "
  1880         -        echo "newer Silktorrent packet formats. "
  1881         -        echo "The file path of the Silktorrent packet candidate:"
  1882         -        echo ""
  1883         -        echo "    $S_FP_0"
  1884         -        echo ""
  1885         -        echo "GUID=='1158d282-b615-4c4c-93e7-71b3900170e7'"
  1886         -        echo ""
  1887         -        #----
  1888         -        cd $S_FP_ORIG
  1889         -        exit 1 # exit with error
  1890         -    fi
  1891         -    #--------
  1892         -    local S_TMP_1=""
  1893         -    if [ "$S_PACKET_FORMAT" == "silktorrent_packet_format_version_1" ]; then
  1894         -        func_mmmv_silktorrent_packager_t1_bash_blob2filename_t1 "$S_FP_0"
  1895         -        #echo "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT"
  1896         -        S_TMP_1="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT"
  1897         -    fi
  1898         -    #----
  1899         -    if [ "$S_TMP_1" == "" ]; then
  1900         -        echo ""
  1901         -        echo "This script is flawed."
  1902         -        echo "It should have thrown before the control flow reaches this line."
  1903         -        echo "GUID=='3aa4bc43-bbe8-440f-a2e7-71b3900170e7'"
  1904         -        echo ""
  1905         -        #----
  1906         -        cd $S_FP_ORIG
  1907         -        exit 1 # exit with error
  1908         -    fi
  1909         -    #--------
  1910         -    local S_TMP_0="`basename $S_FP_0`" # The S_TMP_0 must be evaluated 
  1911         -                                       # after the various functions to 
  1912         -                                       # counter a situation, where 
  1913         -                                       # the S_TMP_0 is overwritten 
  1914         -                                       # by the name-calc function 
  1915         -                                       # or by one of the sub-functions
  1916         -                                       # of the name-calc function.
  1917         -                                       # The flaw occurs, when the 
  1918         -                                       # S_TMP_0 is used within the 
  1919         -                                       # name-calc function without  
  1920         -                                       # declaring it to be a local
  1921         -                                       # variable.
  1922         -    #--------
  1923         -    #echo "S_FP_0==$S_FP_0"
  1924         -    #echo "S_TMP_0==$S_TMP_0"
  1925         -    #echo "S_TMP_1==$S_TMP_1"
  1926         -    local S_OUT=""
  1927         -    if [ "$S_TMP_1" == "$S_TMP_0" ]; then
  1928         -        S_OUT="verification_passed"
  1929         -    else
  1930         -        S_OUT="verification_failed"
  1931         -    fi
  1932         -    S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_VERIFY_FILE_NAME_T1_RESULT="$S_OUT"
  1933         -} # func_mmmv_silktorrent_packager_t1_bash_verify_file_name_t1
  1934         -
  1935         -
  1936         -#--------------------------------------------------------------------------
  1937         -
  1938         -func_mmmv_silktorrent_packager_t1_bash_test_1() { 
  1939         -    local S_FP_0="$1" # Path to the file. 
  1940         -    #----
  1941         -    func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0"
  1942         -    #--------
  1943         -    echo ""
  1944         -    #----
  1945         -    func_mmmv_tigerhash_t1 "$S_FP_0"
  1946         -    echo "       Tiger: $S_FUNC_MMMV_TIGERHASH_T1_RESULT"
  1947         -    func_mmmv_whirlpoolhash_t1 "$S_FP_0"
  1948         -    echo "   Whirlpool: $S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT"
  1949         -    func_mmmv_sha256_t1 "$S_FP_0"
  1950         -    echo "      SHA256: $S_FUNC_MMMV_SHA256_T1_RESULT"
  1951         -    func_mmmv_filesize_t1 "$S_FP_0"
  1952         -    echo "   file size: $S_FUNC_MMMV_FILESIZE_T1_RESULT"
  1953         -    #----
  1954         -    echo ""
  1955         -} # func_mmmv_silktorrent_packager_t1_bash_test_1
  1956         -
  1957         -
  1958         -#--------------------------------------------------------------------------
  1959         -
  1960         -func_mmmv_silktorrent_packager_t1_bash_wrap_t1() {
  1961         -    local S_FP_0="$1" # Path to the file. 
  1962         -    #----
  1963         -    func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0"
  1964         -    #--------
  1965         -    func_mmmv_create_tmp_folder_t1
  1966         -    if [ "$S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT" == "" ]; then
  1967         -        echo "This script is flawed, because the folder "
  1968         -        echo "creation function should have thrown "
  1969         -        echo "before the control flow reaches this branch." 
  1970         -        echo "GUID=='726a8332-1505-4018-b2e7-71b3900170e7'"
  1971         -        #----
  1972         -        cd $S_FP_ORIG
  1973         -        exit 1 # exit with error
  1974         -    fi
  1975         -    local S_FP_TMP_0="$S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT"
  1976         -    if [ ! -e "$S_FP_TMP_0" ]; then
  1977         -        echo "This script is flawed."
  1978         -        echo "May be some other thread deleted the folder or"
  1979         -        echo "the folder creation function returned a valid path, but"
  1980         -        echo "did not actually create the folder that it was supposed create."
  1981         -        echo "S_FP_TMP_0==$S_FP_TMP_0"
  1982         -        echo "GUID=='f8fc342c-18e1-40b4-a3d7-71b3900170e7'"
  1983         -        #----
  1984         -        cd $S_FP_ORIG
  1985         -        exit 1 # exit with error
  1986         -    fi
  1987         -    #--------
  1988         -    local S_FP_TMP_SILKTORRENT_PACKET="$S_FP_TMP_0/silktorrent_packet"
  1989         -    local S_FP_TMP_SILKTORRENT_PACKET_TAR="$S_FP_TMP_0/silktorrent_packet.tar"
  1990         -    local S_FP_TMP_PAYLOAD="$S_FP_TMP_SILKTORRENT_PACKET/payload"
  1991         -    local S_FP_TMP_HEADER="$S_FP_TMP_SILKTORRENT_PACKET/header"
  1992         -    local S_FP_TMP_HEADER_SALT_TXT="$S_FP_TMP_HEADER/silktorrent_salt.txt"
  1993         -    func_mmmv_create_folder_if_it_does_not_already_exist_t1 "$S_FP_TMP_PAYLOAD" # uses mkdir -p
  1994         -    func_mmmv_create_folder_if_it_does_not_already_exist_t1 "$S_FP_TMP_HEADER"
  1995         -    #--------
  1996         -    # Salting makes sure that it is not possible to 
  1997         -    # conclude the payload bitstream from the 
  1998         -    # Silktorrent packet (file) name, forcing censoring
  1999         -    # parties to download packages 
  2000         -    # that they are not looking for and allowing
  2001         -    # censorship dodgers to publish the same payload bitstream
  2002         -    # in multiple, differet, Silktorrent packages.
  2003         -    func_mmmv_GUID_t1
  2004         -    echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT
  2005         -    func_mmmv_GUID_t1
  2006         -    echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT
  2007         -    func_mmmv_GUID_t1
  2008         -    echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT
  2009         -    func_mmmv_GUID_t1
  2010         -    echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT
  2011         -    func_mmmv_GUID_t1
  2012         -    echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT
  2013         -    func_mmmv_GUID_t1
  2014         -    echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT
  2015         -    #--------
  2016         -    # The file size/Silktorrent pakcket size must also be salted.
  2017         -    ruby -e \
  2018         -        "Random.new_seed;i=0;\
  2019         -         puts '';\
  2020         -         rand(10**6).times{\
  2021         -             i=i+1;\
  2022         -             print(rand(10**6).to_s(16));\
  2023         -             if((i%10)==0) then \
  2024         -                 puts '';\
  2025         -                 i=0;\
  2026         -             end;\
  2027         -         }" \
  2028         -         >> $S_FP_TMP_HEADER_SALT_TXT
  2029         -    #--------
  2030         -    cp -f $S_FP_0 $S_FP_TMP_PAYLOAD/
  2031         -    if [ "$?" != "0" ]; then
  2032         -        echo ""
  2033         -        echo "The command "
  2034         -        echo ""
  2035         -        echo "    cp -f \$S_FP_0 \$S_FP_TMP_PAYLOAD/ "
  2036         -        echo ""
  2037         -        echo "failed. Either this script is flawed or something else went wrong. "
  2038         -        echo ""
  2039         -        echo "    S_FP_0==$S_FP_0"
  2040         -        echo ""
  2041         -        echo "    S_FP_TMP_PAYLOAD=$S_FP_TMP_PAYLOAD"
  2042         -        echo ""
  2043         -        echo "GUID=='214ba8b2-3cff-420c-a4d7-71b3900170e7'"
  2044         -        echo ""
  2045         -        #----
  2046         -        cd $S_FP_ORIG
  2047         -        exit 1 # exit with error
  2048         -    fi
  2049         -    #--------
  2050         -    local S_FP_TMP_ORIG_0="`pwd`"
  2051         -    cd $S_FP_TMP_SILKTORRENT_PACKET/.. 
  2052         -    tar -cf $S_FP_TMP_SILKTORRENT_PACKET_TAR ./`basename $S_FP_TMP_SILKTORRENT_PACKET` 2>/dev/null
  2053         -    cd $S_FP_TMP_ORIG_0
  2054         -    if [ "$?" != "0" ]; then
  2055         -        echo ""
  2056         -        echo "The command "
  2057         -        echo ""
  2058         -        echo "    tar -cf \$S_FP_TMP_SILKTORRENT_PACKET_TAR \$S_FP_TMP_SILKTORRENT_PACKET "
  2059         -        echo ""
  2060         -        echo "failed. Either this script is flawed or something else went wrong. "
  2061         -        echo ""
  2062         -        echo "    S_FP_TMP_SILKTORRENT_PACKET=$S_FP_TMP_SILKTORRENT_PACKET"
  2063         -        echo ""
  2064         -        echo "    S_FP_TMP_SILKTORRENT_PACKET_TAR==$S_FP_TMP_SILKTORRENT_PACKET_TAR"
  2065         -        echo ""
  2066         -        echo "GUID=='68428819-d399-43c8-a2d7-71b3900170e7'"
  2067         -        echo ""
  2068         -        #----
  2069         -        cd $S_FP_ORIG
  2070         -        exit 1 # exit with error
  2071         -    fi
  2072         -    #----
  2073         -    func_mmmv_silktorrent_packager_t1_bash_blob2filename_t1 "$S_FP_TMP_SILKTORRENT_PACKET_TAR"
  2074         -    local S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME="$S_FP_ORIG/$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT"
  2075         -    mv $S_FP_TMP_SILKTORRENT_PACKET_TAR $S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME
  2076         -    if [ "$?" != "0" ]; then
  2077         -        echo ""
  2078         -        echo "Something went wrong."
  2079         -        echo "The renaming and copying of "
  2080         -        echo "    $S_FP_TMP_SILKTORRENT_PACKET_TAR "
  2081         -        echo "to "
  2082         -        echo "    $S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME "
  2083         -        echo "failed."
  2084         -        echo "GUID=='c158ce46-9e8d-4bb9-a2d7-71b3900170e7'"
  2085         -        echo ""
  2086         -        #----
  2087         -        cd $S_FP_ORIG
  2088         -        exit 1 # exit with error
  2089         -    fi
  2090         -    if [ ! -e "$S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME" ]; then
  2091         -        echo ""
  2092         -        echo "Something went wrong."
  2093         -        echo "The renaming and copying of "
  2094         -        echo ""
  2095         -        echo "    $S_FP_TMP_SILKTORRENT_PACKET_TAR "
  2096         -        echo ""
  2097         -        echo "to "
  2098         -        echo ""
  2099         -        echo "    $S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME "
  2100         -        echo ""
  2101         -        echo "failed. The mv command succeed, but for some reason "
  2102         -        echo "the destination file does not exist."
  2103         -        echo "GUID=='7f7e1258-7c19-451f-91d7-71b3900170e7'"
  2104         -        echo ""
  2105         -        #----
  2106         -        cd $S_FP_ORIG
  2107         -        exit 1 # exit with error
  2108         -    fi
  2109         -    #--------
  2110         -    func_mmmv_delete_tmp_folder_t1 "$S_FP_TMP_0"
  2111         -    if [ -e "$S_FP_TMP_0" ]; then
  2112         -        echo ""
  2113         -        echo "Something went wrong."
  2114         -        echo "The deletion of the temporary folder, "
  2115         -        echo ""
  2116         -        echo "    $S_FP_TMP_0"
  2117         -        echo ""
  2118         -        echo "failed."
  2119         -        echo "GUID=='23b56e4e-b7c4-4668-85d7-71b3900170e7'"
  2120         -        echo ""
  2121         -        #----
  2122         -        cd $S_FP_ORIG
  2123         -        exit 1 # exit with error
  2124         -    fi
  2125         -} # func_mmmv_silktorrent_packager_t1_bash_wrap_t1
  2126         -
  2127         -
  2128         -#--------------------------------------------------------------------------
  2129         -
  2130         -func_mmmv_silktorrent_packager_t1_bash_unwrap_t1() {
  2131         -    local S_FP_0="$1" # Path to the file. 
  2132         -    #----
  2133         -    func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0"
  2134         -    #--------
  2135         -    func_mmmv_silktorrent_packager_t1_bash_verify_file_name_t1 "$S_FP_0"
  2136         -    local S_PACKET_FORMAT="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT"
  2137         -    if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_VERIFY_FILE_NAME_T1_RESULT" != "verification_passed" ]; then
  2138         -        echo ""
  2139         -        echo "The Silktorrent packet candidate, "
  2140         -        echo ""
  2141         -        echo "    $S_FP_0"
  2142         -        echo ""
  2143         -        echo "failed Silktorrent packet name verification."
  2144         -        echo "There exists a possibility that the "
  2145         -        echo "Silktorrent packet candidate is actually OK, but "
  2146         -        echo "this is an older version of the Silktorrent implementaiton and "
  2147         -        echo "this, the older, version does not support "
  2148         -        echo "newer Silktorrent packet formats. "
  2149         -        echo "GUID=='1ea93ef2-0fb7-4cbb-8fd7-71b3900170e7'"
  2150         -        echo ""
  2151         -        #----
  2152         -        cd $S_FP_ORIG
  2153         -        exit 1 # exit with error
  2154         -    fi
  2155         -    #--------
  2156         -    local SB_FORMAT_BRANCH_EXISTS_IN_THIS_FUNCTION="f"
  2157         -    if [ "$S_PACKET_FORMAT" == "silktorrent_packet_format_version_1" ]; then
  2158         -        SB_FORMAT_BRANCH_EXISTS_IN_THIS_FUNCTION="t"
  2159         -        #----
  2160         -        local S_FP_TMP_SILKTORRENT_PACKET="`pwd`/silktorrent_packet"
  2161         -        if [ -e $S_FP_TMP_SILKTORRENT_PACKET ]; then
  2162         -            echo ""
  2163         -            echo "To avoid accidental deletion of files, "
  2164         -            echo "and some other types of flaws, "
  2165         -            echo "there is a requirement that the folder "
  2166         -            echo ""
  2167         -            echo "    ./silktorrent_packet"
  2168         -            echo ""
  2169         -            echo "must be explicitly deleted before calling this script."
  2170         -            echo "GUID=='df3e4c6e-045b-4163-bfc7-71b3900170e7'"
  2171         -            echo ""
  2172         -            #----
  2173         -            cd $S_FP_ORIG
  2174         -            exit 1 # exit with error
  2175         -        fi
  2176         -        #----
  2177         -        tar -xf $S_FP_0 2>/dev/null
  2178         -        if [ "$?" != "0" ]; then
  2179         -            echo ""
  2180         -            echo "Something went wrong. The command "
  2181         -            echo ""
  2182         -            echo "    tar -xf $S_FP_0"
  2183         -            echo ""
  2184         -            echo "exited with an error code, which is $? ."
  2185         -            echo "GUID=='07dfbc27-b793-4b68-93c7-71b3900170e7'"
  2186         -            echo ""
  2187         -            #----
  2188         -            cd $S_FP_ORIG
  2189         -            exit 1 # exit with error
  2190         -        fi
  2191         -        rm -f $S_FP_TMP_SILKTORRENT_PACKET/header/silktorrent_salt.txt
  2192         -        #----
  2193         -        if [ ! -e $S_FP_TMP_SILKTORRENT_PACKET ]; then
  2194         -            echo ""
  2195         -            echo "Something went wrong. "
  2196         -            echo "The unpacking of the Silktorrent packet with the path of "
  2197         -            echo ""
  2198         -            echo "    $S_FP_0"
  2199         -            echo ""
  2200         -            echo "failed. The folder \"silktorrent_packet\" "
  2201         -            echo "is missing after the \"tar\" exited without any errors."
  2202         -            echo "GUID=='39c08e15-9cab-4585-8fc7-71b3900170e7'"
  2203         -            echo ""
  2204         -            #----
  2205         -            cd $S_FP_ORIG
  2206         -            exit 1 # exit with error
  2207         -        fi
  2208         -    fi # silktorrent_packet_format_version_1
  2209         -    #--------
  2210         -    if [ "$SB_FORMAT_BRANCH_EXISTS_IN_THIS_FUNCTION" != "t" ]; then
  2211         -        echo ""
  2212         -        echo "This script is flawed."
  2213         -        echo "There is at least one branch missing from this function."
  2214         -        echo "GUID=='b9f42610-010a-4a35-a1c7-71b3900170e7'"
  2215         -        echo ""
  2216         -        #----
  2217         -        cd $S_FP_ORIG
  2218         -        exit 1 # exit with error
  2219         -    fi
  2220         -    #--------
  2221         -} # func_mmmv_silktorrent_packager_t1_bash_unwrap_t1
  2222         -
  2223         -
  2224         -#--------------------------------------------------------------------------
  2225         -
  2226         -func_mmmv_silktorrent_packager_t1_bash_verify_packet_name_format_v1(){
  2227         -    local S_PACKET_NAME_CANDIDATE="$1" 
  2228         -    if [ "$S_PACKET_NAME_CANDIDATE" == "" ]; then
  2229         -        echo ""
  2230         -        echo "This script is flawed."
  2231         -        echo "Input verification should have cauht the "
  2232         -        echo "\"\" case before the control flow reaches this line."
  2233         -        echo "GUID=='eb6d4411-292c-40b6-a4c7-71b3900170e7'"
  2234         -        echo ""
  2235         -        #----
  2236         -        cd $S_FP_ORIG
  2237         -        exit 1 # exit with error
  2238         -    fi
  2239         -    #--------
  2240         -    local S_OUT="verification_failed" # opposite: "verification_passed"
  2241         -
  2242         -    #                         rgx_in_ruby=/v[\d]{4}[_]/
  2243         -    #                         rgx_in_ruby=/s[\d]+[_]/
  2244         -    #                         rgx_in_ruby=/h[\dabcdef]{64}[_]/
  2245         -    #                         rgx_in_ruby=/i[\dabcdef]{48}$/   # lacks the ending "_" 
  2246         -    #                                                          # for db index optimization
  2247         -    local S_RUBY_REGEX="/^X[\\dabcdef]{48}i[_][\\dabcdef]{64}h[_][\\d]+s[_][\\d]{4}v.stblobX\$/"
  2248         -    #                            Tiger             SHA-256       size     version
  2249         -    # test cases: 
  2250         -    #     ruby -e "puts(ARGV[0])" aa\ bb
  2251         -    #     printf "%q" "AA BB CC $^ \ / '\`\" <>()[];.{}" | xargs ruby -e "puts(ARGV[0])"
  2252         -    # 
  2253         -    # The S_PACKET_NAME_CANDIDATE might contain various quotation marks.
  2254         -    # If it does, then hopefully it crashes at least something so that
  2255         -    # the crash can be detected from the "$?". 
  2256         -    # The surrounding X-es, X<packet name candidate string>X, 
  2257         -    # are to counter a situation, where the file name candidate ends
  2258         -    # with a pspace, like "foo " and the Bash reads the console
  2259         -    # argument in as "foo" in stead of the "foo ". 
  2260         -    #----
  2261         -    #local S_TMP_0="`printf \"%q\" \"'$S_PACKET_NAME_CANDIDATE'\" | xargs ruby -e \" \
  2262         -    local S_TMP_0="`ruby -e \" \
  2263         -        s_in=ARGV[0];\
  2264         -        rgx=$S_RUBY_REGEX;\
  2265         -        md=s_in.match(rgx);\
  2266         -        s_out='no_match';\
  2267         -        if(md!=nil) then \
  2268         -            s_out='match';\
  2269         -        end;\
  2270         -        printf(s_out);\
  2271         -        \" \"$S_PACKET_NAME_CANDIDATE\" `"
  2272         -    #----
  2273         -    if [ "$?" != "0" ]; then
  2274         -        echo ""
  2275         -        echo "Something went wrong. \$?==$? "
  2276         -        echo "    S_PACKET_NAME_CANDIDATE==$S_PACKET_NAME_CANDIDATE"
  2277         -        echo "GUID=='41352353-e739-4fd1-b1c7-71b3900170e7'"
  2278         -        echo ""
  2279         -        #----
  2280         -        cd $S_FP_ORIG
  2281         -        exit 1 # exit with error
  2282         -    fi
  2283         -    #--------
  2284         -    # If the file name starts like "./foo" in stead of "foo", 
  2285         -    # then the verification also fails, 
  2286         -    # exactly as expected and demanded by the spec.
  2287         -    if [ "$S_TMP_0" == "match" ]; then
  2288         -        S_OUT="verification_passed" # opposite: "verification_failed"
  2289         -    fi
  2290         -    #--------
  2291         -    echo "$S_OUT"
  2292         -} # func_mmmv_silktorrent_packager_t1_bash_verify_packet_name_format_v1
  2293         -
  2294         -
  2295         -#--------------------------------------------------------------------------
  2296         -
  2297         -# The 
  2298         -S_SILKTORRENT_PACKAGER_T1_ACTION="" # is global to allow it to be used
  2299         -# in the error messages of different functions.
  2300         -
  2301         -func_mmmv_silktorrent_packager_t1_bash_determine_action() { 
  2302         -    local S_ARGV_0="$1" # Ruby style ARGV, 0 is the first command line argument.
  2303         -    local S_ARGV_1="$2" 
  2304         -    local S_ARGV_2="$3" 
  2305         -    local S_ARGV_3="$4" 
  2306         -    #--------
  2307         -    if [ "$S_ARGV_0" == "" ]; then
  2308         -        func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1
  2309         -        #----
  2310         -        cd $S_FP_ORIG
  2311         -        exit 1 # exit with an error
  2312         -    fi
  2313         -    #----
  2314         -    local SB_0="f"
  2315         -    if [ "$S_ARGV_0" == "help" ]; then
  2316         -        SB_0="t"
  2317         -    fi
  2318         -    if [ "$S_ARGV_0" == "--help" ]; then
  2319         -        SB_0="t"
  2320         -    fi
  2321         -    if [ "$S_ARGV_0" == "-?" ]; then
  2322         -        SB_0="t"
  2323         -    fi
  2324         -    if [ "$S_ARGV_0" == "-h" ]; then
  2325         -        SB_0="t"
  2326         -    fi
  2327         -    #----
  2328         -    if [ "$SB_0" == "t" ]; then
  2329         -        func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1
  2330         -        #----
  2331         -        cd $S_FP_ORIG
  2332         -        exit 0 # exit without an error
  2333         -    fi
  2334         -    #--------------------------
  2335         -    if [ "$S_ARGV_0" == "version" ]; then
  2336         -        SB_0="t"
  2337         -    fi
  2338         -    if [ "$S_ARGV_0" == "--version" ]; then
  2339         -        SB_0="t"
  2340         -    fi
  2341         -    if [ "$S_ARGV_0" == "-version" ]; then
  2342         -        SB_0="t"
  2343         -    fi
  2344         -    if [ "$S_ARGV_0" == "-v" ]; then
  2345         -        SB_0="t"
  2346         -    fi
  2347         -    #----
  2348         -    if [ "$SB_0" == "t" ]; then
  2349         -        echo "$S_SCRIPT_VERSION"
  2350         -        #----
  2351         -        cd $S_FP_ORIG
  2352         -        exit 0 # exit without an error
  2353         -    fi
  2354         -    #--------------------------
  2355         -    # Start of actions that require the existance of at least one file.
  2356         -    local SB_FILE_REQUIRED="t"
  2357         -    local SB_REQUESTED_ACTION_EXISTS="f"
  2358         -    local S_TMP_0=""
  2359         -    local S_TMP_1=""
  2360         -    #----
  2361         -    S_TMP_0="wrap" 
  2362         -    if [ "$S_ARGV_0" == "$S_TMP_0" ]; then
  2363         -        S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0"
  2364         -        SB_REQUESTED_ACTION_EXISTS="t"
  2365         -    fi
  2366         -    if [ "$S_ARGV_0" == "pack" ]; then   # alias
  2367         -        S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0"
  2368         -        SB_REQUESTED_ACTION_EXISTS="t"
  2369         -    fi
  2370         -    #----
  2371         -    S_TMP_0="unwrap" 
  2372         -    if [ "$S_ARGV_0" == "$S_TMP_0" ]; then
  2373         -        S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0"
  2374         -        SB_REQUESTED_ACTION_EXISTS="t"
  2375         -    fi
  2376         -    if [ "$S_ARGV_0" == "unpack" ]; then # alias
  2377         -        S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0"
  2378         -        SB_REQUESTED_ACTION_EXISTS="t"
  2379         -    fi
  2380         -    #----
  2381         -    S_TMP_0="verify" # checks the matche between the blob and the file name
  2382         -    if [ "$S_ARGV_0" == "$S_TMP_0" ]; then
  2383         -        S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0"
  2384         -        SB_REQUESTED_ACTION_EXISTS="t"
  2385         -    fi
  2386         -    #----
  2387         -    S_TMP_0="test_hash_t1" 
  2388         -    if [ "$S_ARGV_0" == "$S_TMP_0" ]; then
  2389         -        S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0"
  2390         -        SB_REQUESTED_ACTION_EXISTS="t"
  2391         -    fi
  2392         -    #--------
  2393         -    # Start of actions that do not require a file:
  2394         -    S_TMP_0="verify_packet_name_format_v1" 
  2395         -    if [ "$S_ARGV_0" == "$S_TMP_0" ]; then
  2396         -        S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0"
  2397         -        SB_REQUESTED_ACTION_EXISTS="t"
  2398         -        SB_FILE_REQUIRED="f"
  2399         -    fi
  2400         -    if [ "$S_ARGV_0" == "verify_package_name_format_v1" ]; then
  2401         -        S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0"
  2402         -        SB_REQUESTED_ACTION_EXISTS="t"
  2403         -        SB_FILE_REQUIRED="f"
  2404         -    fi
  2405         -    #--------
  2406         -    if [ "$SB_REQUESTED_ACTION_EXISTS" != "t" ]; then # lack of action included
  2407         -        func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1
  2408         -        #----
  2409         -        cd $S_FP_ORIG
  2410         -        exit 1 # exit with an error
  2411         -    fi
  2412         -    SB_REQUESTED_ACTION_EXISTS="f" # a reset to anticipate flaws elsewhere
  2413         -    # The action name test above has to be before the 
  2414         -    if [ "$SB_FILE_REQUIRED" == "t" ]; then
  2415         -        func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_ARGV_1"
  2416         -    else 
  2417         -        func_mmmv_silktorrent_packager_t1_bash_exc_assert_packet_name_candidate_exists_t1 "$S_ARGV_1"
  2418         -    fi
  2419         -    # because otherwise the error messages would be incorrect.
  2420         -    #--------
  2421         -    # The following duplicating series of if-clauses is to allow 
  2422         -    # actions to have aliases.
  2423         -    if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "wrap" ]; then
  2424         -        func_mmmv_silktorrent_packager_t1_bash_wrap_t1 "$S_ARGV_1"
  2425         -        #----
  2426         -        cd $S_FP_ORIG
  2427         -        exit 0 # exit without an error
  2428         -    fi
  2429         -    #----
  2430         -    if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "unwrap" ]; then
  2431         -        func_mmmv_silktorrent_packager_t1_bash_unwrap_t1 "$S_ARGV_1"
  2432         -        #----
  2433         -        cd $S_FP_ORIG
  2434         -        exit 0 # exit without an error
  2435         -    fi
  2436         -    #----
  2437         -    if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "verify" ]; then
  2438         -        func_mmmv_silktorrent_packager_t1_bash_verify_file_name_t1 "$S_ARGV_1"
  2439         -        echo "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_VERIFY_FILE_NAME_T1_RESULT"
  2440         -        #----
  2441         -        cd $S_FP_ORIG
  2442         -        exit 0 # exit without an error
  2443         -    fi
  2444         -    #----
  2445         -    if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "test_hash_t1" ]; then
  2446         -        func_mmmv_silktorrent_packager_t1_bash_test_1 "$S_ARGV_1"
  2447         -        #----
  2448         -        cd $S_FP_ORIG
  2449         -        exit 0 # exit without an error
  2450         -    fi
  2451         -    #--------
  2452         -    # Start of actions that do not require a file:
  2453         -    if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "verify_packet_name_format_v1" ]; then
  2454         -        func_mmmv_silktorrent_packager_t1_bash_verify_packet_name_format_v1 "$S_ARGV_1"
  2455         -        #----
  2456         -        cd $S_FP_ORIG
  2457         -        exit 0 # exit without an error
  2458         -    fi
  2459         -    #--------------------------
  2460         -        echo "" 
  2461         -        echo "This bash script is flawed. The control flow " 
  2462         -        echo "should have never reached this line."
  2463         -        echo "GUID=='e3af811a-93a7-4512-91b7-71b3900170e7'"
  2464         -        echo ""
  2465         -        #----
  2466         -        cd $S_FP_ORIG
  2467         -        exit 1 # exit with an error
  2468         -} # func_mmmv_silktorrent_packager_t1_bash_determine_action
  2469         -
  2470         -func_mmmv_silktorrent_packager_t1_bash_determine_action $1 $2 $3 $4 $5 $6 $7
  2471         -
  2472         -
  2473         -#--------------------------------------------------------------------------
  2474         -
  2475         -
  2476         -#--------------------------------------------------------------------------
  2477         -cd $S_FP_ORIG
  2478         -exit 0 # 
  2479         -
  2480         -#==========================================================================
  2481         -# Fragments of comments and code that might find use some times later:
  2482         -#--------------------------------------------------------------------------
  2483         -#
  2484         -#   max 55 characters --- package suggested deprecation date in nanoseconds
  2485         -#                         relative to the Unix Epoch, 
  2486         -#                         written in base 10. It can be negative.
  2487         -#                         rgx_in_ruby=/t((y[-]?[\d]+)|n)[_]/
  2488         -# echo "v0034_s2342_tn_" | gawk '{ gsub(/_/, "_\n"); print }' | \
  2489         -#                          gawk '/^t(y[-]?[0-9]+|n)_/ {printf "%s",$1 }' |
  2490         -#                          gawk '{gsub(/[tyn_]/,"");printf "%s", $1 }'
  2491         -#                         
  2492         -#
  2493         -
  2494         -
  2495         -#==========================================================================
  2496         -

Deleted work_in_progress/COMMENTS.txt version [625ecc2027].

     1         -
     2         -This folder might one day 
     3         -contain the Silktorrent "development trunk".
     4         -

Deleted work_in_progress/doc/logo/How_to_draw_the_Silktorrent_logo_type_01.xcf version [9e025ce94f].

cannot compute difference between binary files

Deleted work_in_progress/doc/logo/Silktorrent_logo_type_01_Inkscape_development_file.svg version [2142436c4a].

     1         -<?xml version="1.0" encoding="UTF-8" standalone="no"?>
     2         -<!-- Created with Inkscape (http://www.inkscape.org/) -->
     3         -
     4         -<svg
     5         -   xmlns:dc="http://purl.org/dc/elements/1.1/"
     6         -   xmlns:cc="http://creativecommons.org/ns#"
     7         -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     8         -   xmlns:svg="http://www.w3.org/2000/svg"
     9         -   xmlns="http://www.w3.org/2000/svg"
    10         -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    11         -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    12         -   width="744.09448819"
    13         -   height="1052.3622047"
    14         -   id="svg2"
    15         -   version="1.1"
    16         -   inkscape:version="0.48.5 r10040"
    17         -   sodipodi:docname="Silktorrent_logo_inkscape_devel_file.svg">
    18         -  <defs
    19         -     id="defs4">
    20         -    <inkscape:path-effect
    21         -       effect="skeletal"
    22         -       id="path-effect3903"
    23         -       is_visible="true"
    24         -       pattern="M 0,0 0,10 10,5 z"
    25         -       copytype="single_stretched"
    26         -       prop_scale="1"
    27         -       scale_y_rel="false"
    28         -       spacing="0"
    29         -       normal_offset="0"
    30         -       tang_offset="0"
    31         -       prop_units="false"
    32         -       vertical_pattern="false"
    33         -       fuse_tolerance="0" />
    34         -    <inkscape:perspective
    35         -       sodipodi:type="inkscape:persp3d"
    36         -       inkscape:vp_x="0 : 526.18109 : 1"
    37         -       inkscape:vp_y="0 : 1000 : 0"
    38         -       inkscape:vp_z="744.09448 : 526.18109 : 1"
    39         -       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
    40         -       id="perspective3885" />
    41         -  </defs>
    42         -  <sodipodi:namedview
    43         -     id="base"
    44         -     pagecolor="#ffffff"
    45         -     bordercolor="#666666"
    46         -     borderopacity="1.0"
    47         -     inkscape:pageopacity="0.0"
    48         -     inkscape:pageshadow="2"
    49         -     inkscape:zoom="0.98994949"
    50         -     inkscape:cx="348.69994"
    51         -     inkscape:cy="436.1729"
    52         -     inkscape:document-units="px"
    53         -     inkscape:current-layer="layer1"
    54         -     showgrid="true"
    55         -     inkscape:snap-bbox="true"
    56         -     inkscape:window-width="1024"
    57         -     inkscape:window-height="702"
    58         -     inkscape:window-x="0"
    59         -     inkscape:window-y="27"
    60         -     inkscape:window-maximized="1">
    61         -    <inkscape:grid
    62         -       type="xygrid"
    63         -       id="grid2987" />
    64         -  </sodipodi:namedview>
    65         -  <metadata
    66         -     id="metadata7">
    67         -    <rdf:RDF>
    68         -      <cc:Work
    69         -         rdf:about="">
    70         -        <dc:format>image/svg+xml</dc:format>
    71         -        <dc:type
    72         -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
    73         -        <dc:title></dc:title>
    74         -      </cc:Work>
    75         -    </rdf:RDF>
    76         -  </metadata>
    77         -  <g
    78         -     inkscape:label="Layer 1"
    79         -     inkscape:groupmode="layer"
    80         -     id="layer1">
    81         -    <rect
    82         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
    83         -       id="rect2989-5"
    84         -       width="20"
    85         -       height="20"
    86         -       x="760"
    87         -       y="432.36218" />
    88         -    <rect
    89         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
    90         -       id="rect2989-7-09"
    91         -       width="20"
    92         -       height="20"
    93         -       x="780"
    94         -       y="432.36218" />
    95         -    <rect
    96         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
    97         -       id="rect2989-8-3"
    98         -       width="20"
    99         -       height="20"
   100         -       x="800"
   101         -       y="432.36218" />
   102         -    <rect
   103         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   104         -       id="rect2989-7-1-9"
   105         -       width="20"
   106         -       height="20"
   107         -       x="820"
   108         -       y="432.36218" />
   109         -    <rect
   110         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   111         -       id="rect2989-9-5"
   112         -       width="20"
   113         -       height="20"
   114         -       x="760"
   115         -       y="492.36218" />
   116         -    <rect
   117         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   118         -       id="rect2989-7-3-9"
   119         -       width="20"
   120         -       height="20"
   121         -       x="780"
   122         -       y="492.36218" />
   123         -    <rect
   124         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   125         -       id="rect2989-8-2-0"
   126         -       width="20"
   127         -       height="20"
   128         -       x="800"
   129         -       y="492.36218" />
   130         -    <rect
   131         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   132         -       id="rect2989-7-1-0-7"
   133         -       width="20"
   134         -       height="20"
   135         -       x="820"
   136         -       y="492.36218" />
   137         -    <rect
   138         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   139         -       id="rect2989-99-7"
   140         -       width="20"
   141         -       height="20"
   142         -       x="760"
   143         -       y="472.36218" />
   144         -    <rect
   145         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   146         -       id="rect2989-7-34-4"
   147         -       width="20"
   148         -       height="20"
   149         -       x="780"
   150         -       y="472.36218" />
   151         -    <rect
   152         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   153         -       id="rect2989-8-5-1"
   154         -       width="20"
   155         -       height="20"
   156         -       x="800"
   157         -       y="472.36218" />
   158         -    <rect
   159         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   160         -       id="rect2989-7-1-7-00"
   161         -       width="20"
   162         -       height="20"
   163         -       x="820"
   164         -       y="472.36218" />
   165         -    <rect
   166         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   167         -       id="rect2989-4-7"
   168         -       width="20"
   169         -       height="20"
   170         -       x="760"
   171         -       y="452.36218" />
   172         -    <rect
   173         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   174         -       id="rect2989-7-6-40"
   175         -       width="20"
   176         -       height="20"
   177         -       x="780"
   178         -       y="452.36218" />
   179         -    <rect
   180         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   181         -       id="rect2989-8-1-61"
   182         -       width="20"
   183         -       height="20"
   184         -       x="800"
   185         -       y="452.36218" />
   186         -    <rect
   187         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   188         -       id="rect2989-7-1-2-9"
   189         -       width="20"
   190         -       height="20"
   191         -       x="820"
   192         -       y="452.36218" />
   193         -    <rect
   194         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   195         -       id="rect2989-0-6"
   196         -       width="20"
   197         -       height="20"
   198         -       x="840"
   199         -       y="432.36218" />
   200         -    <rect
   201         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   202         -       id="rect2989-7-0-0"
   203         -       width="20"
   204         -       height="20"
   205         -       x="860"
   206         -       y="432.36218" />
   207         -    <rect
   208         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   209         -       id="rect2989-8-14-5"
   210         -       width="20"
   211         -       height="20"
   212         -       x="880"
   213         -       y="432.36218" />
   214         -    <rect
   215         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   216         -       id="rect2989-7-1-3-0"
   217         -       width="20"
   218         -       height="20"
   219         -       x="900"
   220         -       y="432.36218" />
   221         -    <rect
   222         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   223         -       id="rect2989-9-2-0"
   224         -       width="20"
   225         -       height="20"
   226         -       x="840"
   227         -       y="492.36218" />
   228         -    <rect
   229         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   230         -       id="rect2989-7-3-1-6"
   231         -       width="20"
   232         -       height="20"
   233         -       x="860"
   234         -       y="492.36218" />
   235         -    <rect
   236         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   237         -       id="rect2989-8-2-1-3"
   238         -       width="20"
   239         -       height="20"
   240         -       x="880"
   241         -       y="492.36218" />
   242         -    <rect
   243         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   244         -       id="rect2989-7-1-0-9-8"
   245         -       width="20"
   246         -       height="20"
   247         -       x="900"
   248         -       y="492.36218" />
   249         -    <rect
   250         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   251         -       id="rect2989-99-1-8"
   252         -       width="20"
   253         -       height="20"
   254         -       x="840"
   255         -       y="472.36218" />
   256         -    <rect
   257         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   258         -       id="rect2989-7-34-9-3"
   259         -       width="20"
   260         -       height="20"
   261         -       x="860"
   262         -       y="472.36218" />
   263         -    <rect
   264         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   265         -       id="rect2989-8-5-0-6"
   266         -       width="20"
   267         -       height="20"
   268         -       x="880"
   269         -       y="472.36218" />
   270         -    <rect
   271         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   272         -       id="rect2989-7-1-7-0-5"
   273         -       width="20"
   274         -       height="20"
   275         -       x="900"
   276         -       y="472.36218" />
   277         -    <rect
   278         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   279         -       id="rect2989-4-5-5"
   280         -       width="20"
   281         -       height="20"
   282         -       x="840"
   283         -       y="452.36218" />
   284         -    <rect
   285         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   286         -       id="rect2989-7-6-4-5"
   287         -       width="20"
   288         -       height="20"
   289         -       x="860"
   290         -       y="452.36218" />
   291         -    <rect
   292         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   293         -       id="rect2989-8-1-0-05"
   294         -       width="20"
   295         -       height="20"
   296         -       x="880"
   297         -       y="452.36218" />
   298         -    <rect
   299         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   300         -       id="rect2989-7-1-2-5-2"
   301         -       width="20"
   302         -       height="20"
   303         -       x="900"
   304         -       y="452.36218" />
   305         -    <rect
   306         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   307         -       id="rect2989-76-1"
   308         -       width="20"
   309         -       height="20"
   310         -       x="760"
   311         -       y="512.36218" />
   312         -    <rect
   313         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   314         -       id="rect2989-7-16-7"
   315         -       width="20"
   316         -       height="20"
   317         -       x="780"
   318         -       y="512.36218" />
   319         -    <rect
   320         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   321         -       id="rect2989-8-50-9"
   322         -       width="20"
   323         -       height="20"
   324         -       x="800"
   325         -       y="512.36218" />
   326         -    <rect
   327         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   328         -       id="rect2989-7-1-01-1"
   329         -       width="20"
   330         -       height="20"
   331         -       x="820"
   332         -       y="512.36218" />
   333         -    <rect
   334         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   335         -       id="rect2989-9-8-1"
   336         -       width="20"
   337         -       height="20"
   338         -       x="760"
   339         -       y="572.36218" />
   340         -    <rect
   341         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   342         -       id="rect2989-7-3-7-1"
   343         -       width="20"
   344         -       height="20"
   345         -       x="780"
   346         -       y="572.36218" />
   347         -    <rect
   348         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   349         -       id="rect2989-8-2-6-1"
   350         -       width="20"
   351         -       height="20"
   352         -       x="800"
   353         -       y="572.36218" />
   354         -    <rect
   355         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   356         -       id="rect2989-7-1-0-4-4"
   357         -       width="20"
   358         -       height="20"
   359         -       x="820"
   360         -       y="572.36218" />
   361         -    <rect
   362         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   363         -       id="rect2989-99-9-0"
   364         -       width="20"
   365         -       height="20"
   366         -       x="760"
   367         -       y="552.36218" />
   368         -    <rect
   369         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   370         -       id="rect2989-7-34-0-7"
   371         -       width="20"
   372         -       height="20"
   373         -       x="780"
   374         -       y="552.36218" />
   375         -    <rect
   376         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   377         -       id="rect2989-8-5-6-4"
   378         -       width="20"
   379         -       height="20"
   380         -       x="800"
   381         -       y="552.36218" />
   382         -    <rect
   383         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   384         -       id="rect2989-7-1-7-1-7"
   385         -       width="20"
   386         -       height="20"
   387         -       x="820"
   388         -       y="552.36218" />
   389         -    <rect
   390         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   391         -       id="rect2989-4-2-8"
   392         -       width="20"
   393         -       height="20"
   394         -       x="760"
   395         -       y="532.36218" />
   396         -    <rect
   397         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   398         -       id="rect2989-7-6-0-3"
   399         -       width="20"
   400         -       height="20"
   401         -       x="780"
   402         -       y="532.36218" />
   403         -    <rect
   404         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   405         -       id="rect2989-8-1-6-5"
   406         -       width="20"
   407         -       height="20"
   408         -       x="800"
   409         -       y="532.36218" />
   410         -    <rect
   411         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   412         -       id="rect2989-7-1-2-6-8"
   413         -       width="20"
   414         -       height="20"
   415         -       x="820"
   416         -       y="532.36218" />
   417         -    <rect
   418         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   419         -       id="rect2989-0-4-8"
   420         -       width="20"
   421         -       height="20"
   422         -       x="840"
   423         -       y="512.36218" />
   424         -    <rect
   425         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   426         -       id="rect2989-7-0-7-5"
   427         -       width="20"
   428         -       height="20"
   429         -       x="860"
   430         -       y="512.36218" />
   431         -    <rect
   432         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   433         -       id="rect2989-8-14-7-1"
   434         -       width="20"
   435         -       height="20"
   436         -       x="880"
   437         -       y="512.36218" />
   438         -    <rect
   439         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   440         -       id="rect2989-7-1-3-5-6"
   441         -       width="20"
   442         -       height="20"
   443         -       x="900"
   444         -       y="512.36218" />
   445         -    <rect
   446         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   447         -       id="rect2989-9-2-9-0"
   448         -       width="20"
   449         -       height="20"
   450         -       x="840"
   451         -       y="572.36218" />
   452         -    <rect
   453         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   454         -       id="rect2989-7-3-1-9-1"
   455         -       width="20"
   456         -       height="20"
   457         -       x="860"
   458         -       y="572.36218" />
   459         -    <rect
   460         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   461         -       id="rect2989-8-2-1-7-6"
   462         -       width="20"
   463         -       height="20"
   464         -       x="880"
   465         -       y="572.36218" />
   466         -    <rect
   467         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   468         -       id="rect2989-7-1-0-9-4-4"
   469         -       width="20"
   470         -       height="20"
   471         -       x="900"
   472         -       y="572.36218" />
   473         -    <rect
   474         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   475         -       id="rect2989-99-1-4-7"
   476         -       width="20"
   477         -       height="20"
   478         -       x="840"
   479         -       y="552.36218" />
   480         -    <rect
   481         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   482         -       id="rect2989-7-34-9-0-2"
   483         -       width="20"
   484         -       height="20"
   485         -       x="860"
   486         -       y="552.36218" />
   487         -    <rect
   488         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   489         -       id="rect2989-8-5-0-1-1"
   490         -       width="20"
   491         -       height="20"
   492         -       x="880"
   493         -       y="552.36218" />
   494         -    <rect
   495         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   496         -       id="rect2989-7-1-7-0-1-2"
   497         -       width="20"
   498         -       height="20"
   499         -       x="900"
   500         -       y="552.36218" />
   501         -    <rect
   502         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   503         -       id="rect2989-4-5-8-4"
   504         -       width="20"
   505         -       height="20"
   506         -       x="840"
   507         -       y="532.36218" />
   508         -    <rect
   509         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   510         -       id="rect2989-7-6-4-2-6"
   511         -       width="20"
   512         -       height="20"
   513         -       x="860"
   514         -       y="532.36218" />
   515         -    <rect
   516         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   517         -       id="rect2989-8-1-0-0-4"
   518         -       width="20"
   519         -       height="20"
   520         -       x="880"
   521         -       y="532.36218" />
   522         -    <rect
   523         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   524         -       id="rect2989-7-1-2-5-5-6"
   525         -       width="20"
   526         -       height="20"
   527         -       x="900"
   528         -       y="532.36218" />
   529         -    <rect
   530         -       style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   531         -       id="rect2989-7-1-7-0-1-6"
   532         -       width="20"
   533         -       height="20"
   534         -       x="760"
   535         -       y="372.36218" />
   536         -    <rect
   537         -       style="fill:#ffd5d5;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   538         -       id="rect2989-7-1-7-0-1-67"
   539         -       width="20"
   540         -       height="20"
   541         -       x="790"
   542         -       y="372.36218" />
   543         -    <g
   544         -       id="g3660"
   545         -       transform="translate(600,280)">
   546         -      <g
   547         -         id="g3532">
   548         -        <rect
   549         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   550         -           id="rect2989"
   551         -           width="20"
   552         -           height="20"
   553         -           x="160"
   554         -           y="392.36218" />
   555         -        <rect
   556         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   557         -           id="rect2989-7"
   558         -           width="20"
   559         -           height="20"
   560         -           x="180"
   561         -           y="392.36218" />
   562         -        <rect
   563         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   564         -           id="rect2989-8"
   565         -           width="20"
   566         -           height="20"
   567         -           x="200"
   568         -           y="392.36218" />
   569         -        <rect
   570         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   571         -           id="rect2989-7-1"
   572         -           width="20"
   573         -           height="20"
   574         -           x="220"
   575         -           y="392.36218" />
   576         -        <rect
   577         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   578         -           id="rect2989-4"
   579         -           width="20"
   580         -           height="20"
   581         -           x="160"
   582         -           y="412.36218" />
   583         -        <rect
   584         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   585         -           id="rect2989-7-6"
   586         -           width="20"
   587         -           height="20"
   588         -           x="180"
   589         -           y="412.36218" />
   590         -        <rect
   591         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   592         -           id="rect2989-8-1"
   593         -           width="20"
   594         -           height="20"
   595         -           x="200"
   596         -           y="412.36218" />
   597         -        <rect
   598         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   599         -           id="rect2989-7-1-2"
   600         -           width="20"
   601         -           height="20"
   602         -           x="220"
   603         -           y="412.36218" />
   604         -        <rect
   605         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   606         -           id="rect2989-0"
   607         -           width="20"
   608         -           height="20"
   609         -           x="240"
   610         -           y="392.36218" />
   611         -        <rect
   612         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   613         -           id="rect2989-7-0"
   614         -           width="20"
   615         -           height="20"
   616         -           x="260"
   617         -           y="392.36218" />
   618         -        <rect
   619         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   620         -           id="rect2989-8-14"
   621         -           width="20"
   622         -           height="20"
   623         -           x="280"
   624         -           y="392.36218" />
   625         -        <rect
   626         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   627         -           id="rect2989-7-1-3"
   628         -           width="20"
   629         -           height="20"
   630         -           x="300"
   631         -           y="392.36218" />
   632         -        <rect
   633         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   634         -           id="rect2989-4-5"
   635         -           width="20"
   636         -           height="20"
   637         -           x="240"
   638         -           y="412.36218" />
   639         -        <rect
   640         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   641         -           id="rect2989-7-6-4"
   642         -           width="20"
   643         -           height="20"
   644         -           x="260"
   645         -           y="412.36218" />
   646         -        <rect
   647         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   648         -           id="rect2989-8-1-0"
   649         -           width="20"
   650         -           height="20"
   651         -           x="280"
   652         -           y="412.36218" />
   653         -        <rect
   654         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   655         -           id="rect2989-7-1-2-5"
   656         -           width="20"
   657         -           height="20"
   658         -           x="300"
   659         -           y="412.36218" />
   660         -        <rect
   661         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   662         -           id="rect2989-9-8"
   663         -           width="20"
   664         -           height="20"
   665         -           x="160"
   666         -           y="532.36218" />
   667         -        <rect
   668         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   669         -           id="rect2989-7-3-7"
   670         -           width="20"
   671         -           height="20"
   672         -           x="180"
   673         -           y="532.36218" />
   674         -        <rect
   675         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   676         -           id="rect2989-8-2-6"
   677         -           width="20"
   678         -           height="20"
   679         -           x="200"
   680         -           y="532.36218" />
   681         -        <rect
   682         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   683         -           id="rect2989-7-1-0-4"
   684         -           width="20"
   685         -           height="20"
   686         -           x="220"
   687         -           y="532.36218" />
   688         -        <rect
   689         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   690         -           id="rect2989-99-9"
   691         -           width="20"
   692         -           height="20"
   693         -           x="160"
   694         -           y="512.36218" />
   695         -        <rect
   696         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   697         -           id="rect2989-7-34-0"
   698         -           width="20"
   699         -           height="20"
   700         -           x="180"
   701         -           y="512.36218" />
   702         -        <rect
   703         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   704         -           id="rect2989-8-5-6"
   705         -           width="20"
   706         -           height="20"
   707         -           x="200"
   708         -           y="512.36218" />
   709         -        <rect
   710         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   711         -           id="rect2989-7-1-7-1"
   712         -           width="20"
   713         -           height="20"
   714         -           x="220"
   715         -           y="512.36218" />
   716         -        <rect
   717         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   718         -           id="rect2989-9-2-9"
   719         -           width="20"
   720         -           height="20"
   721         -           x="240"
   722         -           y="532.36218" />
   723         -        <rect
   724         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   725         -           id="rect2989-7-3-1-9"
   726         -           width="20"
   727         -           height="20"
   728         -           x="260"
   729         -           y="532.36218" />
   730         -        <rect
   731         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   732         -           id="rect2989-8-2-1-7"
   733         -           width="20"
   734         -           height="20"
   735         -           x="280"
   736         -           y="532.36218" />
   737         -        <rect
   738         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   739         -           id="rect2989-7-1-0-9-4"
   740         -           width="20"
   741         -           height="20"
   742         -           x="300"
   743         -           y="532.36218" />
   744         -        <rect
   745         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   746         -           id="rect2989-99-1-4"
   747         -           width="20"
   748         -           height="20"
   749         -           x="240"
   750         -           y="512.36218" />
   751         -        <rect
   752         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   753         -           id="rect2989-7-34-9-0"
   754         -           width="20"
   755         -           height="20"
   756         -           x="260"
   757         -           y="512.36218" />
   758         -        <rect
   759         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   760         -           id="rect2989-8-5-0-1"
   761         -           width="20"
   762         -           height="20"
   763         -           x="280"
   764         -           y="512.36218" />
   765         -        <rect
   766         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   767         -           id="rect2989-7-1-7-0-1"
   768         -           width="20"
   769         -           height="20"
   770         -           x="300"
   771         -           y="512.36218" />
   772         -      </g>
   773         -      <rect
   774         -         y="492.36218"
   775         -         x="300"
   776         -         height="20"
   777         -         width="20"
   778         -         id="rect2989-7-1-7-0-1-67-7"
   779         -         style="fill:#ffd5d5;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
   780         -      <rect
   781         -         y="492.36218"
   782         -         x="280"
   783         -         height="20"
   784         -         width="20"
   785         -         id="rect2989-7-1-7-0-1-67-70"
   786         -         style="fill:#ffd5d5;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
   787         -      <rect
   788         -         y="532.36218"
   789         -         x="180"
   790         -         height="20"
   791         -         width="20"
   792         -         id="rect2989-7-1-7-0-1-67-1"
   793         -         style="fill:#ffd5d5;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
   794         -      <rect
   795         -         y="432.36218"
   796         -         x="180"
   797         -         height="20"
   798         -         width="20"
   799         -         id="rect2989-7-1-7-0-1-67-7-9"
   800         -         style="fill:#ffd5d5;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
   801         -      <rect
   802         -         y="432.36218"
   803         -         x="160"
   804         -         height="20"
   805         -         width="20"
   806         -         id="rect2989-7-1-7-0-1-67-70-7"
   807         -         style="fill:#ffd5d5;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
   808         -      <rect
   809         -         y="392.36218"
   810         -         x="280"
   811         -         height="20"
   812         -         width="20"
   813         -         id="rect2989-7-1-7-0-1-67-1-7"
   814         -         style="fill:#ffd5d5;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
   815         -      <rect
   816         -         y="492.36218"
   817         -         x="260"
   818         -         height="20"
   819         -         width="20"
   820         -         id="rect2989-7-1-7-0-1-67-1-0"
   821         -         style="fill:#ffd5d5;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
   822         -      <rect
   823         -         y="432.36218"
   824         -         x="200"
   825         -         height="20"
   826         -         width="20"
   827         -         id="rect2989-7-1-7-0-1-67-1-1"
   828         -         style="fill:#ffd5d5;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
   829         -    </g>
   830         -    <g
   831         -       id="g4911">
   832         -      <g
   833         -         transform="translate(0,20)"
   834         -         id="g3532-0">
   835         -        <rect
   836         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   837         -           id="rect2989-80"
   838         -           width="20"
   839         -           height="20"
   840         -           x="160"
   841         -           y="392.36218" />
   842         -        <rect
   843         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   844         -           id="rect2989-7-69"
   845         -           width="20"
   846         -           height="20"
   847         -           x="180"
   848         -           y="392.36218" />
   849         -        <rect
   850         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   851         -           id="rect2989-8-2"
   852         -           width="20"
   853         -           height="20"
   854         -           x="200"
   855         -           y="392.36218" />
   856         -        <rect
   857         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   858         -           id="rect2989-7-1-35"
   859         -           width="20"
   860         -           height="20"
   861         -           x="220"
   862         -           y="392.36218" />
   863         -        <rect
   864         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   865         -           id="rect2989-4-1"
   866         -           width="20"
   867         -           height="20"
   868         -           x="160"
   869         -           y="412.36218" />
   870         -        <rect
   871         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   872         -           id="rect2989-7-6-7"
   873         -           width="20"
   874         -           height="20"
   875         -           x="180"
   876         -           y="412.36218" />
   877         -        <rect
   878         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   879         -           id="rect2989-8-1-6"
   880         -           width="20"
   881         -           height="20"
   882         -           x="200"
   883         -           y="412.36218" />
   884         -        <rect
   885         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   886         -           id="rect2989-7-1-2-6"
   887         -           width="20"
   888         -           height="20"
   889         -           x="220"
   890         -           y="412.36218" />
   891         -        <rect
   892         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   893         -           id="rect2989-0-1"
   894         -           width="20"
   895         -           height="20"
   896         -           x="240"
   897         -           y="392.36218" />
   898         -        <rect
   899         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   900         -           id="rect2989-7-0-5"
   901         -           width="20"
   902         -           height="20"
   903         -           x="260"
   904         -           y="392.36218" />
   905         -        <rect
   906         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   907         -           id="rect2989-8-14-0"
   908         -           width="20"
   909         -           height="20"
   910         -           x="280"
   911         -           y="392.36218" />
   912         -        <rect
   913         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   914         -           id="rect2989-7-1-3-9"
   915         -           width="20"
   916         -           height="20"
   917         -           x="300"
   918         -           y="392.36218" />
   919         -        <rect
   920         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   921         -           id="rect2989-4-5-1"
   922         -           width="20"
   923         -           height="20"
   924         -           x="240"
   925         -           y="412.36218" />
   926         -        <rect
   927         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   928         -           id="rect2989-7-6-4-8"
   929         -           width="20"
   930         -           height="20"
   931         -           x="260"
   932         -           y="412.36218" />
   933         -        <rect
   934         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   935         -           id="rect2989-8-1-0-8"
   936         -           width="20"
   937         -           height="20"
   938         -           x="280"
   939         -           y="412.36218" />
   940         -        <rect
   941         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   942         -           id="rect2989-7-1-2-5-0"
   943         -           width="20"
   944         -           height="20"
   945         -           x="300"
   946         -           y="412.36218" />
   947         -        <rect
   948         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   949         -           id="rect2989-9-8-5"
   950         -           width="20"
   951         -           height="20"
   952         -           x="160"
   953         -           y="532.36218" />
   954         -        <rect
   955         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   956         -           id="rect2989-7-3-7-0"
   957         -           width="20"
   958         -           height="20"
   959         -           x="180"
   960         -           y="532.36218" />
   961         -        <rect
   962         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   963         -           id="rect2989-8-2-6-4"
   964         -           width="20"
   965         -           height="20"
   966         -           x="200"
   967         -           y="532.36218" />
   968         -        <rect
   969         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   970         -           id="rect2989-7-1-0-4-5"
   971         -           width="20"
   972         -           height="20"
   973         -           x="220"
   974         -           y="532.36218" />
   975         -        <rect
   976         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   977         -           id="rect2989-99-9-7"
   978         -           width="20"
   979         -           height="20"
   980         -           x="160"
   981         -           y="512.36218" />
   982         -        <rect
   983         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   984         -           id="rect2989-7-34-0-1"
   985         -           width="20"
   986         -           height="20"
   987         -           x="180"
   988         -           y="512.36218" />
   989         -        <rect
   990         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   991         -           id="rect2989-8-5-6-3"
   992         -           width="20"
   993         -           height="20"
   994         -           x="200"
   995         -           y="512.36218" />
   996         -        <rect
   997         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   998         -           id="rect2989-7-1-7-1-6"
   999         -           width="20"
  1000         -           height="20"
  1001         -           x="220"
  1002         -           y="512.36218" />
  1003         -        <rect
  1004         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1005         -           id="rect2989-9-2-9-4"
  1006         -           width="20"
  1007         -           height="20"
  1008         -           x="240"
  1009         -           y="532.36218" />
  1010         -        <rect
  1011         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1012         -           id="rect2989-7-3-1-9-7"
  1013         -           width="20"
  1014         -           height="20"
  1015         -           x="260"
  1016         -           y="532.36218" />
  1017         -        <rect
  1018         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1019         -           id="rect2989-8-2-1-7-66"
  1020         -           width="20"
  1021         -           height="20"
  1022         -           x="280"
  1023         -           y="532.36218" />
  1024         -        <rect
  1025         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1026         -           id="rect2989-7-1-0-9-4-7"
  1027         -           width="20"
  1028         -           height="20"
  1029         -           x="300"
  1030         -           y="532.36218" />
  1031         -        <rect
  1032         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1033         -           id="rect2989-99-1-4-6"
  1034         -           width="20"
  1035         -           height="20"
  1036         -           x="240"
  1037         -           y="512.36218" />
  1038         -        <rect
  1039         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1040         -           id="rect2989-7-34-9-0-3"
  1041         -           width="20"
  1042         -           height="20"
  1043         -           x="260"
  1044         -           y="512.36218" />
  1045         -        <rect
  1046         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1047         -           id="rect2989-8-5-0-1-8"
  1048         -           width="20"
  1049         -           height="20"
  1050         -           x="280"
  1051         -           y="512.36218" />
  1052         -        <rect
  1053         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1054         -           id="rect2989-7-1-7-0-1-8"
  1055         -           width="20"
  1056         -           height="20"
  1057         -           x="300"
  1058         -           y="512.36218" />
  1059         -      </g>
  1060         -      <path
  1061         -         inkscape:connector-curvature="0"
  1062         -         id="path4679"
  1063         -         d="m 300,432.36218 -20,0 -80,40 60,40 -80,40 20,0 80,-40 -60,-40 z"
  1064         -         style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
  1065         -    </g>
  1066         -    <g
  1067         -       transform="translate(610,460)"
  1068         -       id="g4681-2">
  1069         -      <g
  1070         -         transform="translate(0,20)"
  1071         -         id="g3532-0-2">
  1072         -        <rect
  1073         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1074         -           id="rect2989-80-7"
  1075         -           width="20"
  1076         -           height="20"
  1077         -           x="160"
  1078         -           y="392.36218" />
  1079         -        <rect
  1080         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1081         -           id="rect2989-7-69-0"
  1082         -           width="20"
  1083         -           height="20"
  1084         -           x="180"
  1085         -           y="392.36218" />
  1086         -        <rect
  1087         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1088         -           id="rect2989-8-2-4"
  1089         -           width="20"
  1090         -           height="20"
  1091         -           x="200"
  1092         -           y="392.36218" />
  1093         -        <rect
  1094         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1095         -           id="rect2989-7-1-35-4"
  1096         -           width="20"
  1097         -           height="20"
  1098         -           x="220"
  1099         -           y="392.36218" />
  1100         -        <rect
  1101         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1102         -           id="rect2989-4-1-1"
  1103         -           width="20"
  1104         -           height="20"
  1105         -           x="160"
  1106         -           y="412.36218" />
  1107         -        <rect
  1108         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1109         -           id="rect2989-7-6-7-8"
  1110         -           width="20"
  1111         -           height="20"
  1112         -           x="180"
  1113         -           y="412.36218" />
  1114         -        <rect
  1115         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1116         -           id="rect2989-8-1-6-1"
  1117         -           width="20"
  1118         -           height="20"
  1119         -           x="200"
  1120         -           y="412.36218" />
  1121         -        <rect
  1122         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1123         -           id="rect2989-7-1-2-6-0"
  1124         -           width="20"
  1125         -           height="20"
  1126         -           x="220"
  1127         -           y="412.36218" />
  1128         -        <rect
  1129         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1130         -           id="rect2989-0-1-2"
  1131         -           width="20"
  1132         -           height="20"
  1133         -           x="240"
  1134         -           y="392.36218" />
  1135         -        <rect
  1136         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1137         -           id="rect2989-7-0-5-7"
  1138         -           width="20"
  1139         -           height="20"
  1140         -           x="260"
  1141         -           y="392.36218" />
  1142         -        <rect
  1143         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1144         -           id="rect2989-8-14-0-9"
  1145         -           width="20"
  1146         -           height="20"
  1147         -           x="280"
  1148         -           y="392.36218" />
  1149         -        <rect
  1150         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1151         -           id="rect2989-7-1-3-9-8"
  1152         -           width="20"
  1153         -           height="20"
  1154         -           x="300"
  1155         -           y="392.36218" />
  1156         -        <rect
  1157         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1158         -           id="rect2989-4-5-1-4"
  1159         -           width="20"
  1160         -           height="20"
  1161         -           x="240"
  1162         -           y="412.36218" />
  1163         -        <rect
  1164         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1165         -           id="rect2989-7-6-4-8-5"
  1166         -           width="20"
  1167         -           height="20"
  1168         -           x="260"
  1169         -           y="412.36218" />
  1170         -        <rect
  1171         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1172         -           id="rect2989-8-1-0-8-4"
  1173         -           width="20"
  1174         -           height="20"
  1175         -           x="280"
  1176         -           y="412.36218" />
  1177         -        <rect
  1178         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1179         -           id="rect2989-7-1-2-5-0-1"
  1180         -           width="20"
  1181         -           height="20"
  1182         -           x="300"
  1183         -           y="412.36218" />
  1184         -        <rect
  1185         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1186         -           id="rect2989-9-8-5-1"
  1187         -           width="20"
  1188         -           height="20"
  1189         -           x="160"
  1190         -           y="532.36218" />
  1191         -        <rect
  1192         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1193         -           id="rect2989-7-3-7-0-9"
  1194         -           width="20"
  1195         -           height="20"
  1196         -           x="180"
  1197         -           y="532.36218" />
  1198         -        <rect
  1199         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1200         -           id="rect2989-8-2-6-4-2"
  1201         -           width="20"
  1202         -           height="20"
  1203         -           x="200"
  1204         -           y="532.36218" />
  1205         -        <rect
  1206         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1207         -           id="rect2989-7-1-0-4-5-0"
  1208         -           width="20"
  1209         -           height="20"
  1210         -           x="220"
  1211         -           y="532.36218" />
  1212         -        <rect
  1213         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1214         -           id="rect2989-99-9-7-9"
  1215         -           width="20"
  1216         -           height="20"
  1217         -           x="160"
  1218         -           y="512.36218" />
  1219         -        <rect
  1220         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1221         -           id="rect2989-7-34-0-1-5"
  1222         -           width="20"
  1223         -           height="20"
  1224         -           x="180"
  1225         -           y="512.36218" />
  1226         -        <rect
  1227         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1228         -           id="rect2989-8-5-6-3-2"
  1229         -           width="20"
  1230         -           height="20"
  1231         -           x="200"
  1232         -           y="512.36218" />
  1233         -        <rect
  1234         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1235         -           id="rect2989-7-1-7-1-6-6"
  1236         -           width="20"
  1237         -           height="20"
  1238         -           x="220"
  1239         -           y="512.36218" />
  1240         -        <rect
  1241         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1242         -           id="rect2989-9-2-9-4-9"
  1243         -           width="20"
  1244         -           height="20"
  1245         -           x="240"
  1246         -           y="532.36218" />
  1247         -        <rect
  1248         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1249         -           id="rect2989-7-3-1-9-7-8"
  1250         -           width="20"
  1251         -           height="20"
  1252         -           x="260"
  1253         -           y="532.36218" />
  1254         -        <rect
  1255         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1256         -           id="rect2989-8-2-1-7-66-7"
  1257         -           width="20"
  1258         -           height="20"
  1259         -           x="280"
  1260         -           y="532.36218" />
  1261         -        <rect
  1262         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1263         -           id="rect2989-7-1-0-9-4-7-8"
  1264         -           width="20"
  1265         -           height="20"
  1266         -           x="300"
  1267         -           y="532.36218" />
  1268         -        <rect
  1269         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1270         -           id="rect2989-99-1-4-6-8"
  1271         -           width="20"
  1272         -           height="20"
  1273         -           x="240"
  1274         -           y="512.36218" />
  1275         -        <rect
  1276         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1277         -           id="rect2989-7-34-9-0-3-9"
  1278         -           width="20"
  1279         -           height="20"
  1280         -           x="260"
  1281         -           y="512.36218" />
  1282         -        <rect
  1283         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1284         -           id="rect2989-8-5-0-1-8-2"
  1285         -           width="20"
  1286         -           height="20"
  1287         -           x="280"
  1288         -           y="512.36218" />
  1289         -        <rect
  1290         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1291         -           id="rect2989-7-1-7-0-1-8-7"
  1292         -           width="20"
  1293         -           height="20"
  1294         -           x="300"
  1295         -           y="512.36218" />
  1296         -      </g>
  1297         -      <rect
  1298         -         y="512.36218"
  1299         -         x="300"
  1300         -         height="20"
  1301         -         width="20"
  1302         -         id="rect2989-7-1-7-0-1-67-7-8-1"
  1303         -         style="fill:#ffd5d5;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1304         -      <rect
  1305         -         y="512.36218"
  1306         -         x="280"
  1307         -         height="20"
  1308         -         width="20"
  1309         -         id="rect2989-7-1-7-0-1-67-70-3-7"
  1310         -         style="fill:#ffd5d5;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1311         -      <rect
  1312         -         y="552.36218"
  1313         -         x="180"
  1314         -         height="20"
  1315         -         width="20"
  1316         -         id="rect2989-7-1-7-0-1-67-1-07-4"
  1317         -         style="fill:#ffd5d5;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1318         -      <rect
  1319         -         y="452.36218"
  1320         -         x="180"
  1321         -         height="20"
  1322         -         width="20"
  1323         -         id="rect2989-7-1-7-0-1-67-7-9-2-4"
  1324         -         style="fill:#ffd5d5;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1325         -      <rect
  1326         -         y="452.36218"
  1327         -         x="160"
  1328         -         height="20"
  1329         -         width="20"
  1330         -         id="rect2989-7-1-7-0-1-67-70-7-6-7"
  1331         -         style="fill:#ffd5d5;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1332         -      <rect
  1333         -         y="412.36218"
  1334         -         x="280"
  1335         -         height="20"
  1336         -         width="20"
  1337         -         id="rect2989-7-1-7-0-1-67-1-7-0-5"
  1338         -         style="fill:#ffd5d5;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1339         -      <rect
  1340         -         y="512.36218"
  1341         -         x="260"
  1342         -         height="20"
  1343         -         width="20"
  1344         -         id="rect2989-7-1-7-0-1-67-1-0-9-5"
  1345         -         style="fill:#ffd5d5;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1346         -      <rect
  1347         -         y="452.36218"
  1348         -         x="200"
  1349         -         height="20"
  1350         -         width="20"
  1351         -         id="rect2989-7-1-7-0-1-67-1-1-8-9"
  1352         -         style="fill:#ffd5d5;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1353         -      <path
  1354         -         inkscape:connector-curvature="0"
  1355         -         id="path4679-4"
  1356         -         d="m 300,432.36218 -20,0 -80,40 60,40 -80,40 20,0 80,-40 -60,-40 z"
  1357         -         style="fill:#e184fe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
  1358         -    </g>
  1359         -    <g
  1360         -       transform="translate(810,20)"
  1361         -       id="g4911-6">
  1362         -      <g
  1363         -         transform="translate(0,20)"
  1364         -         id="g3532-0-9">
  1365         -        <rect
  1366         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1367         -           id="rect2989-80-8"
  1368         -           width="20"
  1369         -           height="20"
  1370         -           x="160"
  1371         -           y="392.36218" />
  1372         -        <rect
  1373         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1374         -           id="rect2989-7-69-1"
  1375         -           width="20"
  1376         -           height="20"
  1377         -           x="180"
  1378         -           y="392.36218" />
  1379         -        <rect
  1380         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1381         -           id="rect2989-8-2-42"
  1382         -           width="20"
  1383         -           height="20"
  1384         -           x="200"
  1385         -           y="392.36218" />
  1386         -        <rect
  1387         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1388         -           id="rect2989-7-1-35-2"
  1389         -           width="20"
  1390         -           height="20"
  1391         -           x="220"
  1392         -           y="392.36218" />
  1393         -        <rect
  1394         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1395         -           id="rect2989-4-1-3"
  1396         -           width="20"
  1397         -           height="20"
  1398         -           x="160"
  1399         -           y="412.36218" />
  1400         -        <rect
  1401         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1402         -           id="rect2989-7-6-7-4"
  1403         -           width="20"
  1404         -           height="20"
  1405         -           x="180"
  1406         -           y="412.36218" />
  1407         -        <rect
  1408         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1409         -           id="rect2989-8-1-6-4"
  1410         -           width="20"
  1411         -           height="20"
  1412         -           x="200"
  1413         -           y="412.36218" />
  1414         -        <rect
  1415         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1416         -           id="rect2989-7-1-2-6-5"
  1417         -           width="20"
  1418         -           height="20"
  1419         -           x="220"
  1420         -           y="412.36218" />
  1421         -        <rect
  1422         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1423         -           id="rect2989-0-1-1"
  1424         -           width="20"
  1425         -           height="20"
  1426         -           x="240"
  1427         -           y="392.36218" />
  1428         -        <rect
  1429         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1430         -           id="rect2989-7-0-5-6"
  1431         -           width="20"
  1432         -           height="20"
  1433         -           x="260"
  1434         -           y="392.36218" />
  1435         -        <rect
  1436         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1437         -           id="rect2989-8-14-0-1"
  1438         -           width="20"
  1439         -           height="20"
  1440         -           x="280"
  1441         -           y="392.36218" />
  1442         -        <rect
  1443         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1444         -           id="rect2989-7-1-3-9-3"
  1445         -           width="20"
  1446         -           height="20"
  1447         -           x="300"
  1448         -           y="392.36218" />
  1449         -        <rect
  1450         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1451         -           id="rect2989-4-5-1-6"
  1452         -           width="20"
  1453         -           height="20"
  1454         -           x="240"
  1455         -           y="412.36218" />
  1456         -        <rect
  1457         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1458         -           id="rect2989-7-6-4-8-8"
  1459         -           width="20"
  1460         -           height="20"
  1461         -           x="260"
  1462         -           y="412.36218" />
  1463         -        <rect
  1464         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1465         -           id="rect2989-8-1-0-8-3"
  1466         -           width="20"
  1467         -           height="20"
  1468         -           x="280"
  1469         -           y="412.36218" />
  1470         -        <rect
  1471         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1472         -           id="rect2989-7-1-2-5-0-7"
  1473         -           width="20"
  1474         -           height="20"
  1475         -           x="300"
  1476         -           y="412.36218" />
  1477         -        <rect
  1478         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1479         -           id="rect2989-9-8-5-9"
  1480         -           width="20"
  1481         -           height="20"
  1482         -           x="160"
  1483         -           y="532.36218" />
  1484         -        <rect
  1485         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1486         -           id="rect2989-7-3-7-0-6"
  1487         -           width="20"
  1488         -           height="20"
  1489         -           x="180"
  1490         -           y="532.36218" />
  1491         -        <rect
  1492         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1493         -           id="rect2989-8-2-6-4-4"
  1494         -           width="20"
  1495         -           height="20"
  1496         -           x="200"
  1497         -           y="532.36218" />
  1498         -        <rect
  1499         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1500         -           id="rect2989-7-1-0-4-5-1"
  1501         -           width="20"
  1502         -           height="20"
  1503         -           x="220"
  1504         -           y="532.36218" />
  1505         -        <rect
  1506         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1507         -           id="rect2989-99-9-7-5"
  1508         -           width="20"
  1509         -           height="20"
  1510         -           x="160"
  1511         -           y="512.36218" />
  1512         -        <rect
  1513         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1514         -           id="rect2989-7-34-0-1-8"
  1515         -           width="20"
  1516         -           height="20"
  1517         -           x="180"
  1518         -           y="512.36218" />
  1519         -        <rect
  1520         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1521         -           id="rect2989-8-5-6-3-7"
  1522         -           width="20"
  1523         -           height="20"
  1524         -           x="200"
  1525         -           y="512.36218" />
  1526         -        <rect
  1527         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1528         -           id="rect2989-7-1-7-1-6-2"
  1529         -           width="20"
  1530         -           height="20"
  1531         -           x="220"
  1532         -           y="512.36218" />
  1533         -        <rect
  1534         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1535         -           id="rect2989-9-2-9-4-6"
  1536         -           width="20"
  1537         -           height="20"
  1538         -           x="240"
  1539         -           y="532.36218" />
  1540         -        <rect
  1541         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1542         -           id="rect2989-7-3-1-9-7-4"
  1543         -           width="20"
  1544         -           height="20"
  1545         -           x="260"
  1546         -           y="532.36218" />
  1547         -        <rect
  1548         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1549         -           id="rect2989-8-2-1-7-66-4"
  1550         -           width="20"
  1551         -           height="20"
  1552         -           x="280"
  1553         -           y="532.36218" />
  1554         -        <rect
  1555         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1556         -           id="rect2989-7-1-0-9-4-7-0"
  1557         -           width="20"
  1558         -           height="20"
  1559         -           x="300"
  1560         -           y="532.36218" />
  1561         -        <rect
  1562         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1563         -           id="rect2989-99-1-4-6-0"
  1564         -           width="20"
  1565         -           height="20"
  1566         -           x="240"
  1567         -           y="512.36218" />
  1568         -        <rect
  1569         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1570         -           id="rect2989-7-34-9-0-3-3"
  1571         -           width="20"
  1572         -           height="20"
  1573         -           x="260"
  1574         -           y="512.36218" />
  1575         -        <rect
  1576         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1577         -           id="rect2989-8-5-0-1-8-1"
  1578         -           width="20"
  1579         -           height="20"
  1580         -           x="280"
  1581         -           y="512.36218" />
  1582         -        <rect
  1583         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  1584         -           id="rect2989-7-1-7-0-1-8-1"
  1585         -           width="20"
  1586         -           height="20"
  1587         -           x="300"
  1588         -           y="512.36218" />
  1589         -      </g>
  1590         -      <path
  1591         -         inkscape:connector-curvature="0"
  1592         -         id="path4679-9"
  1593         -         d="m 300,432.36218 -20,0 -80,40 60,40 -80,40 20,0 80,-40 -60,-40 z"
  1594         -         style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
  1595         -    </g>
  1596         -    <g
  1597         -       id="g5537"
  1598         -       inkscape:export-xdpi="56.200001"
  1599         -       inkscape:export-ydpi="56.200001"
  1600         -       inkscape:export-filename="/home/ts2/Projektid/progremise_infrastruktuur/andmevahetustarkvara/rakendusvõrgud/silktorrent/juur_liivakast/silktorrent_development_deliverables/doc/logo/ready_for_use/Silktorrent_logo_FossilColor_100x100.png">
  1601         -      <rect
  1602         -         y="412.36218"
  1603         -         x="490"
  1604         -         height="20"
  1605         -         width="20"
  1606         -         id="rect2989-80-5"
  1607         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1608         -      <rect
  1609         -         y="412.36218"
  1610         -         x="510"
  1611         -         height="20"
  1612         -         width="20"
  1613         -         id="rect2989-7-69-10"
  1614         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1615         -      <rect
  1616         -         y="412.36218"
  1617         -         x="530"
  1618         -         height="20"
  1619         -         width="20"
  1620         -         id="rect2989-8-2-04"
  1621         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1622         -      <rect
  1623         -         y="412.36218"
  1624         -         x="550"
  1625         -         height="20"
  1626         -         width="20"
  1627         -         id="rect2989-7-1-35-7"
  1628         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1629         -      <rect
  1630         -         y="432.36218"
  1631         -         x="490"
  1632         -         height="20"
  1633         -         width="20"
  1634         -         id="rect2989-4-1-17"
  1635         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1636         -      <rect
  1637         -         y="432.36218"
  1638         -         x="510"
  1639         -         height="20"
  1640         -         width="20"
  1641         -         id="rect2989-7-6-7-5"
  1642         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1643         -      <rect
  1644         -         y="432.36218"
  1645         -         x="530"
  1646         -         height="20"
  1647         -         width="20"
  1648         -         id="rect2989-8-1-6-2"
  1649         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1650         -      <rect
  1651         -         y="432.36218"
  1652         -         x="550"
  1653         -         height="20"
  1654         -         width="20"
  1655         -         id="rect2989-7-1-2-6-3"
  1656         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1657         -      <rect
  1658         -         y="412.36218"
  1659         -         x="570"
  1660         -         height="20"
  1661         -         width="20"
  1662         -         id="rect2989-0-1-23"
  1663         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1664         -      <rect
  1665         -         y="412.36218"
  1666         -         x="590"
  1667         -         height="20"
  1668         -         width="20"
  1669         -         id="rect2989-7-0-5-9"
  1670         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1671         -      <rect
  1672         -         y="412.36218"
  1673         -         x="610"
  1674         -         height="20"
  1675         -         width="20"
  1676         -         id="rect2989-8-14-0-96"
  1677         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1678         -      <rect
  1679         -         y="412.36218"
  1680         -         x="630"
  1681         -         height="20"
  1682         -         width="20"
  1683         -         id="rect2989-7-1-3-9-6"
  1684         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1685         -      <rect
  1686         -         y="432.36218"
  1687         -         x="570"
  1688         -         height="20"
  1689         -         width="20"
  1690         -         id="rect2989-4-5-1-7"
  1691         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1692         -      <rect
  1693         -         y="432.36218"
  1694         -         x="590"
  1695         -         height="20"
  1696         -         width="20"
  1697         -         id="rect2989-7-6-4-8-4"
  1698         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1699         -      <rect
  1700         -         y="432.36218"
  1701         -         x="610"
  1702         -         height="20"
  1703         -         width="20"
  1704         -         id="rect2989-8-1-0-8-8"
  1705         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1706         -      <rect
  1707         -         y="432.36218"
  1708         -         x="630"
  1709         -         height="20"
  1710         -         width="20"
  1711         -         id="rect2989-7-1-2-5-0-5"
  1712         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1713         -      <rect
  1714         -         y="552.36218"
  1715         -         x="490"
  1716         -         height="20"
  1717         -         width="20"
  1718         -         id="rect2989-9-8-5-8"
  1719         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1720         -      <rect
  1721         -         y="552.36218"
  1722         -         x="510"
  1723         -         height="20"
  1724         -         width="20"
  1725         -         id="rect2989-7-3-7-0-4"
  1726         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1727         -      <rect
  1728         -         y="552.36218"
  1729         -         x="530"
  1730         -         height="20"
  1731         -         width="20"
  1732         -         id="rect2989-8-2-6-4-6"
  1733         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1734         -      <rect
  1735         -         y="552.36218"
  1736         -         x="550"
  1737         -         height="20"
  1738         -         width="20"
  1739         -         id="rect2989-7-1-0-4-5-9"
  1740         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1741         -      <rect
  1742         -         y="532.36218"
  1743         -         x="490"
  1744         -         height="20"
  1745         -         width="20"
  1746         -         id="rect2989-99-9-7-8"
  1747         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1748         -      <rect
  1749         -         y="532.36218"
  1750         -         x="510"
  1751         -         height="20"
  1752         -         width="20"
  1753         -         id="rect2989-7-34-0-1-7"
  1754         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1755         -      <rect
  1756         -         y="532.36218"
  1757         -         x="530"
  1758         -         height="20"
  1759         -         width="20"
  1760         -         id="rect2989-8-5-6-3-27"
  1761         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1762         -      <rect
  1763         -         y="532.36218"
  1764         -         x="550"
  1765         -         height="20"
  1766         -         width="20"
  1767         -         id="rect2989-7-1-7-1-6-4"
  1768         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1769         -      <rect
  1770         -         y="552.36218"
  1771         -         x="570"
  1772         -         height="20"
  1773         -         width="20"
  1774         -         id="rect2989-9-2-9-4-8"
  1775         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1776         -      <rect
  1777         -         y="552.36218"
  1778         -         x="590"
  1779         -         height="20"
  1780         -         width="20"
  1781         -         id="rect2989-7-3-1-9-7-2"
  1782         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1783         -      <rect
  1784         -         y="552.36218"
  1785         -         x="610"
  1786         -         height="20"
  1787         -         width="20"
  1788         -         id="rect2989-8-2-1-7-66-5"
  1789         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1790         -      <rect
  1791         -         y="552.36218"
  1792         -         x="630"
  1793         -         height="20"
  1794         -         width="20"
  1795         -         id="rect2989-7-1-0-9-4-7-9"
  1796         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1797         -      <rect
  1798         -         y="532.36218"
  1799         -         x="570"
  1800         -         height="20"
  1801         -         width="20"
  1802         -         id="rect2989-99-1-4-6-4"
  1803         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1804         -      <rect
  1805         -         y="532.36218"
  1806         -         x="590"
  1807         -         height="20"
  1808         -         width="20"
  1809         -         id="rect2989-7-34-9-0-3-98"
  1810         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1811         -      <rect
  1812         -         y="532.36218"
  1813         -         x="610"
  1814         -         height="20"
  1815         -         width="20"
  1816         -         id="rect2989-8-5-0-1-8-6"
  1817         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1818         -      <rect
  1819         -         y="532.36218"
  1820         -         x="630"
  1821         -         height="20"
  1822         -         width="20"
  1823         -         id="rect2989-7-1-7-0-1-8-73"
  1824         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  1825         -      <path
  1826         -         inkscape:connector-curvature="0"
  1827         -         id="path4679-0"
  1828         -         d="m 630,432.36218 -20,0 -80,40 60,40 -80,40 20,0 80,-40 -60,-40 z"
  1829         -         style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
  1830         -    </g>
  1831         -    <g
  1832         -       id="g5572"
  1833         -       inkscape:export-filename="/home/ts2/Projektid/progremise_infrastruktuur/andmevahetustarkvara/rakendusvõrgud/silktorrent/juur_liivakast/silktorrent_development_deliverables/doc/logo/ready_for_use/Silktorrent_logo_black_60x60.png"
  1834         -       inkscape:export-xdpi="33.720001"
  1835         -       inkscape:export-ydpi="33.720001">
  1836         -      <rect
  1837         -         y="672.36218"
  1838         -         x="20"
  1839         -         height="20"
  1840         -         width="20"
  1841         -         id="rect2989-80-3"
  1842         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1843         -      <rect
  1844         -         y="672.36218"
  1845         -         x="40"
  1846         -         height="20"
  1847         -         width="20"
  1848         -         id="rect2989-7-69-17"
  1849         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1850         -      <rect
  1851         -         y="672.36218"
  1852         -         x="60"
  1853         -         height="20"
  1854         -         width="20"
  1855         -         id="rect2989-8-2-07"
  1856         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1857         -      <rect
  1858         -         y="672.36218"
  1859         -         x="80"
  1860         -         height="20"
  1861         -         width="20"
  1862         -         id="rect2989-7-1-35-6"
  1863         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1864         -      <rect
  1865         -         y="692.36218"
  1866         -         x="20"
  1867         -         height="20"
  1868         -         width="20"
  1869         -         id="rect2989-4-1-4"
  1870         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1871         -      <rect
  1872         -         y="692.36218"
  1873         -         x="40"
  1874         -         height="20"
  1875         -         width="20"
  1876         -         id="rect2989-7-6-7-7"
  1877         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1878         -      <rect
  1879         -         y="692.36218"
  1880         -         x="60"
  1881         -         height="20"
  1882         -         width="20"
  1883         -         id="rect2989-8-1-6-24"
  1884         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1885         -      <rect
  1886         -         y="692.36218"
  1887         -         x="80"
  1888         -         height="20"
  1889         -         width="20"
  1890         -         id="rect2989-7-1-2-6-2"
  1891         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1892         -      <rect
  1893         -         y="672.36218"
  1894         -         x="100"
  1895         -         height="20"
  1896         -         width="20"
  1897         -         id="rect2989-0-1-0"
  1898         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1899         -      <rect
  1900         -         y="672.36218"
  1901         -         x="120"
  1902         -         height="20"
  1903         -         width="20"
  1904         -         id="rect2989-7-0-5-3"
  1905         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1906         -      <rect
  1907         -         y="672.36218"
  1908         -         x="140"
  1909         -         height="20"
  1910         -         width="20"
  1911         -         id="rect2989-8-14-0-2"
  1912         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1913         -      <rect
  1914         -         y="672.36218"
  1915         -         x="160"
  1916         -         height="20"
  1917         -         width="20"
  1918         -         id="rect2989-7-1-3-9-7"
  1919         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1920         -      <rect
  1921         -         y="692.36218"
  1922         -         x="100"
  1923         -         height="20"
  1924         -         width="20"
  1925         -         id="rect2989-4-5-1-8"
  1926         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1927         -      <rect
  1928         -         y="692.36218"
  1929         -         x="120"
  1930         -         height="20"
  1931         -         width="20"
  1932         -         id="rect2989-7-6-4-8-1"
  1933         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1934         -      <rect
  1935         -         y="692.36218"
  1936         -         x="140"
  1937         -         height="20"
  1938         -         width="20"
  1939         -         id="rect2989-8-1-0-8-1"
  1940         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1941         -      <rect
  1942         -         y="692.36218"
  1943         -         x="160"
  1944         -         height="20"
  1945         -         width="20"
  1946         -         id="rect2989-7-1-2-5-0-6"
  1947         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1948         -      <rect
  1949         -         y="812.36218"
  1950         -         x="20"
  1951         -         height="20"
  1952         -         width="20"
  1953         -         id="rect2989-9-8-5-6"
  1954         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1955         -      <rect
  1956         -         y="812.36218"
  1957         -         x="40"
  1958         -         height="20"
  1959         -         width="20"
  1960         -         id="rect2989-7-3-7-0-8"
  1961         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1962         -      <rect
  1963         -         y="812.36218"
  1964         -         x="60"
  1965         -         height="20"
  1966         -         width="20"
  1967         -         id="rect2989-8-2-6-4-5"
  1968         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1969         -      <rect
  1970         -         y="812.36218"
  1971         -         x="80"
  1972         -         height="20"
  1973         -         width="20"
  1974         -         id="rect2989-7-1-0-4-5-07"
  1975         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1976         -      <rect
  1977         -         y="792.36218"
  1978         -         x="20"
  1979         -         height="20"
  1980         -         width="20"
  1981         -         id="rect2989-99-9-7-58"
  1982         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1983         -      <rect
  1984         -         y="792.36218"
  1985         -         x="40"
  1986         -         height="20"
  1987         -         width="20"
  1988         -         id="rect2989-7-34-0-1-6"
  1989         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1990         -      <rect
  1991         -         y="792.36218"
  1992         -         x="60"
  1993         -         height="20"
  1994         -         width="20"
  1995         -         id="rect2989-8-5-6-3-9"
  1996         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  1997         -      <rect
  1998         -         y="792.36218"
  1999         -         x="80"
  2000         -         height="20"
  2001         -         width="20"
  2002         -         id="rect2989-7-1-7-1-6-8"
  2003         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  2004         -      <rect
  2005         -         y="812.36218"
  2006         -         x="100"
  2007         -         height="20"
  2008         -         width="20"
  2009         -         id="rect2989-9-2-9-4-89"
  2010         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  2011         -      <rect
  2012         -         y="812.36218"
  2013         -         x="120"
  2014         -         height="20"
  2015         -         width="20"
  2016         -         id="rect2989-7-3-1-9-7-21"
  2017         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  2018         -      <rect
  2019         -         y="812.36218"
  2020         -         x="140"
  2021         -         height="20"
  2022         -         width="20"
  2023         -         id="rect2989-8-2-1-7-66-6"
  2024         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  2025         -      <rect
  2026         -         y="812.36218"
  2027         -         x="160"
  2028         -         height="20"
  2029         -         width="20"
  2030         -         id="rect2989-7-1-0-9-4-7-4"
  2031         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  2032         -      <rect
  2033         -         y="792.36218"
  2034         -         x="100"
  2035         -         height="20"
  2036         -         width="20"
  2037         -         id="rect2989-99-1-4-6-04"
  2038         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  2039         -      <rect
  2040         -         y="792.36218"
  2041         -         x="120"
  2042         -         height="20"
  2043         -         width="20"
  2044         -         id="rect2989-7-34-9-0-3-0"
  2045         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  2046         -      <rect
  2047         -         y="792.36218"
  2048         -         x="140"
  2049         -         height="20"
  2050         -         width="20"
  2051         -         id="rect2989-8-5-0-1-8-8"
  2052         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  2053         -      <rect
  2054         -         y="792.36218"
  2055         -         x="160"
  2056         -         height="20"
  2057         -         width="20"
  2058         -         id="rect2989-7-1-7-0-1-8-6"
  2059         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dasharray:none;stroke-dashoffset:0" />
  2060         -      <path
  2061         -         inkscape:connector-curvature="0"
  2062         -         id="path4679-42"
  2063         -         d="m 160,692.36218 -20,0 -80,40 60,40 -80,40 20,0 80,-40 -60,-40 z"
  2064         -         style="fill:#000000;fill-opacity:0.94117647000000004;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.94117647" />
  2065         -    </g>
  2066         -    <g
  2067         -       transform="translate(110,260)"
  2068         -       id="g4911-60">
  2069         -      <g
  2070         -         transform="translate(0,20)"
  2071         -         id="g3532-0-65">
  2072         -        <rect
  2073         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2074         -           id="rect2989-80-87"
  2075         -           width="20"
  2076         -           height="20"
  2077         -           x="160"
  2078         -           y="392.36218" />
  2079         -        <rect
  2080         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2081         -           id="rect2989-7-69-8"
  2082         -           width="20"
  2083         -           height="20"
  2084         -           x="180"
  2085         -           y="392.36218" />
  2086         -        <rect
  2087         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2088         -           id="rect2989-8-2-43"
  2089         -           width="20"
  2090         -           height="20"
  2091         -           x="200"
  2092         -           y="392.36218" />
  2093         -        <rect
  2094         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2095         -           id="rect2989-7-1-35-62"
  2096         -           width="20"
  2097         -           height="20"
  2098         -           x="220"
  2099         -           y="392.36218" />
  2100         -        <rect
  2101         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2102         -           id="rect2989-4-1-6"
  2103         -           width="20"
  2104         -           height="20"
  2105         -           x="160"
  2106         -           y="412.36218" />
  2107         -        <rect
  2108         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2109         -           id="rect2989-7-6-7-6"
  2110         -           width="20"
  2111         -           height="20"
  2112         -           x="180"
  2113         -           y="412.36218" />
  2114         -        <rect
  2115         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2116         -           id="rect2989-8-1-6-7"
  2117         -           width="20"
  2118         -           height="20"
  2119         -           x="200"
  2120         -           y="412.36218" />
  2121         -        <rect
  2122         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2123         -           id="rect2989-7-1-2-6-4"
  2124         -           width="20"
  2125         -           height="20"
  2126         -           x="220"
  2127         -           y="412.36218" />
  2128         -        <rect
  2129         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2130         -           id="rect2989-0-1-28"
  2131         -           width="20"
  2132         -           height="20"
  2133         -           x="240"
  2134         -           y="392.36218" />
  2135         -        <rect
  2136         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2137         -           id="rect2989-7-0-5-33"
  2138         -           width="20"
  2139         -           height="20"
  2140         -           x="260"
  2141         -           y="392.36218" />
  2142         -        <rect
  2143         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2144         -           id="rect2989-8-14-0-97"
  2145         -           width="20"
  2146         -           height="20"
  2147         -           x="280"
  2148         -           y="392.36218" />
  2149         -        <rect
  2150         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2151         -           id="rect2989-7-1-3-9-4"
  2152         -           width="20"
  2153         -           height="20"
  2154         -           x="300"
  2155         -           y="392.36218" />
  2156         -        <rect
  2157         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2158         -           id="rect2989-4-5-1-73"
  2159         -           width="20"
  2160         -           height="20"
  2161         -           x="240"
  2162         -           y="412.36218" />
  2163         -        <rect
  2164         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2165         -           id="rect2989-7-6-4-8-52"
  2166         -           width="20"
  2167         -           height="20"
  2168         -           x="260"
  2169         -           y="412.36218" />
  2170         -        <rect
  2171         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2172         -           id="rect2989-8-1-0-8-35"
  2173         -           width="20"
  2174         -           height="20"
  2175         -           x="280"
  2176         -           y="412.36218" />
  2177         -        <rect
  2178         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2179         -           id="rect2989-7-1-2-5-0-0"
  2180         -           width="20"
  2181         -           height="20"
  2182         -           x="300"
  2183         -           y="412.36218" />
  2184         -        <rect
  2185         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2186         -           id="rect2989-9-8-5-7"
  2187         -           width="20"
  2188         -           height="20"
  2189         -           x="160"
  2190         -           y="532.36218" />
  2191         -        <rect
  2192         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2193         -           id="rect2989-7-3-7-0-97"
  2194         -           width="20"
  2195         -           height="20"
  2196         -           x="180"
  2197         -           y="532.36218" />
  2198         -        <rect
  2199         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2200         -           id="rect2989-8-2-6-4-7"
  2201         -           width="20"
  2202         -           height="20"
  2203         -           x="200"
  2204         -           y="532.36218" />
  2205         -        <rect
  2206         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2207         -           id="rect2989-7-1-0-4-5-5"
  2208         -           width="20"
  2209         -           height="20"
  2210         -           x="220"
  2211         -           y="532.36218" />
  2212         -        <rect
  2213         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2214         -           id="rect2989-99-9-7-4"
  2215         -           width="20"
  2216         -           height="20"
  2217         -           x="160"
  2218         -           y="512.36218" />
  2219         -        <rect
  2220         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2221         -           id="rect2989-7-34-0-1-54"
  2222         -           width="20"
  2223         -           height="20"
  2224         -           x="180"
  2225         -           y="512.36218" />
  2226         -        <rect
  2227         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2228         -           id="rect2989-8-5-6-3-5"
  2229         -           width="20"
  2230         -           height="20"
  2231         -           x="200"
  2232         -           y="512.36218" />
  2233         -        <rect
  2234         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2235         -           id="rect2989-7-1-7-1-6-20"
  2236         -           width="20"
  2237         -           height="20"
  2238         -           x="220"
  2239         -           y="512.36218" />
  2240         -        <rect
  2241         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2242         -           id="rect2989-9-2-9-4-3"
  2243         -           width="20"
  2244         -           height="20"
  2245         -           x="240"
  2246         -           y="532.36218" />
  2247         -        <rect
  2248         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2249         -           id="rect2989-7-3-1-9-7-46"
  2250         -           width="20"
  2251         -           height="20"
  2252         -           x="260"
  2253         -           y="532.36218" />
  2254         -        <rect
  2255         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2256         -           id="rect2989-8-2-1-7-66-9"
  2257         -           width="20"
  2258         -           height="20"
  2259         -           x="280"
  2260         -           y="532.36218" />
  2261         -        <rect
  2262         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2263         -           id="rect2989-7-1-0-9-4-7-3"
  2264         -           width="20"
  2265         -           height="20"
  2266         -           x="300"
  2267         -           y="532.36218" />
  2268         -        <rect
  2269         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2270         -           id="rect2989-99-1-4-6-2"
  2271         -           width="20"
  2272         -           height="20"
  2273         -           x="240"
  2274         -           y="512.36218" />
  2275         -        <rect
  2276         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2277         -           id="rect2989-7-34-9-0-3-4"
  2278         -           width="20"
  2279         -           height="20"
  2280         -           x="260"
  2281         -           y="512.36218" />
  2282         -        <rect
  2283         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2284         -           id="rect2989-8-5-0-1-8-4"
  2285         -           width="20"
  2286         -           height="20"
  2287         -           x="280"
  2288         -           y="512.36218" />
  2289         -        <rect
  2290         -           style="fill:#0000ff;fill-opacity:1;stroke:#dc0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  2291         -           id="rect2989-7-1-7-0-1-8-77"
  2292         -           width="20"
  2293         -           height="20"
  2294         -           x="300"
  2295         -           y="512.36218" />
  2296         -      </g>
  2297         -      <path
  2298         -         inkscape:connector-curvature="0"
  2299         -         id="path4679-3"
  2300         -         d="m 300,432.36218 -20,0 -80,40 60,40 -80,40 20,0 80,-40 -60,-40 z"
  2301         -         style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
  2302         -    </g>
  2303         -  </g>
  2304         -</svg>

Deleted work_in_progress/doc/logo/ready_for_use/How_to_draw_the_Silktorrent_logo_type_01.jpeg version [fa4d225f50].

cannot compute difference between binary files

Deleted work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black.svg version [5e530c77c2].

     1         -<?xml version="1.0" encoding="UTF-8" standalone="no"?>
     2         -<!-- Created with Inkscape (http://www.inkscape.org/) -->
     3         -
     4         -<svg
     5         -   xmlns:dc="http://purl.org/dc/elements/1.1/"
     6         -   xmlns:cc="http://creativecommons.org/ns#"
     7         -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     8         -   xmlns:svg="http://www.w3.org/2000/svg"
     9         -   xmlns="http://www.w3.org/2000/svg"
    10         -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    11         -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    12         -   width="160"
    13         -   height="160"
    14         -   id="svg3405"
    15         -   version="1.1"
    16         -   inkscape:version="0.48.5 r10040"
    17         -   sodipodi:docname="Silktorrent_logo_black.svg">
    18         -  <defs
    19         -     id="defs3407" />
    20         -  <sodipodi:namedview
    21         -     id="base"
    22         -     pagecolor="#ffffff"
    23         -     bordercolor="#666666"
    24         -     borderopacity="1.0"
    25         -     inkscape:pageopacity="0.0"
    26         -     inkscape:pageshadow="2"
    27         -     inkscape:zoom="1.4"
    28         -     inkscape:cx="60.71875"
    29         -     inkscape:cy="81.807662"
    30         -     inkscape:document-units="px"
    31         -     inkscape:current-layer="layer1"
    32         -     showgrid="false"
    33         -     fit-margin-top="0"
    34         -     fit-margin-left="0"
    35         -     fit-margin-right="0"
    36         -     fit-margin-bottom="0"
    37         -     inkscape:window-width="1024"
    38         -     inkscape:window-height="702"
    39         -     inkscape:window-x="0"
    40         -     inkscape:window-y="27"
    41         -     inkscape:window-maximized="1" />
    42         -  <metadata
    43         -     id="metadata3410">
    44         -    <rdf:RDF>
    45         -      <cc:Work
    46         -         rdf:about="">
    47         -        <dc:format>image/svg+xml</dc:format>
    48         -        <dc:type
    49         -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
    50         -        <dc:title></dc:title>
    51         -      </cc:Work>
    52         -    </rdf:RDF>
    53         -  </metadata>
    54         -  <g
    55         -     inkscape:label="Layer 1"
    56         -     inkscape:groupmode="layer"
    57         -     id="layer1"
    58         -     transform="translate(-314.28125,-386.65625)">
    59         -    <path
    60         -       style="fill:#000000;fill-opacity:0.94117647;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.94117647;stroke-dashoffset:0"
    61         -       d="m 314.28125,386.65625 c 0,13.33333 0,26.66667 0,40 26.65625,0 53.3125,0 79.96875,0 -13.32292,6.66667 -26.64583,13.33333 -39.96875,20 20,13.33333 40,26.66667 60,40 -13.33333,6.66667 -26.66667,13.33333 -40,20 -20,0 -40,0 -60,0 0,13.33333 0,26.66667 0,40 53.33333,0 106.66667,0 160,0 0,-13.33333 0,-26.66667 0,-40 -26.66667,0 -53.33333,0 -80,0 13.33333,-6.66667 26.66667,-13.33333 40,-20 -20,-13.33333 -40,-26.66667 -60,-40 13.33333,-6.66667 26.66667,-13.33333 40,-20 20,0 40,0 60,0 0,-13.33333 0,-26.66667 0,-40 -53.33333,0 -106.66667,0 -160,0 z"
    62         -       id="rect2989-80-3"
    63         -       inkscape:connector-curvature="0"
    64         -       inkscape:export-filename="/home/ts2/Projektid/progremise_infrastruktuur/andmevahetustarkvara/rakendusvõrgud/silktorrent/juur_liivakast/silktorrent_development_deliverables/doc/logo/ready_for_use/Silktorrent_logo_black_600x600.png"
    65         -       inkscape:export-xdpi="337.23654"
    66         -       inkscape:export-ydpi="337.23654" />
    67         -  </g>
    68         -</svg>

Deleted work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_100x100.png version [90c3f62ef0].

cannot compute difference between binary files

Deleted work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_200x200.png version [4edde7d9f1].

cannot compute difference between binary files

Deleted work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_600x600.png version [22c8f72879].

cannot compute difference between binary files

Deleted work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_60x60.png version [bf16a91476].

cannot compute difference between binary files

Deleted work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor.svg version [0c650c5568].

     1         -<?xml version="1.0" encoding="UTF-8" standalone="no"?>
     2         -<!-- Created with Inkscape (http://www.inkscape.org/) -->
     3         -
     4         -<svg
     5         -   xmlns:dc="http://purl.org/dc/elements/1.1/"
     6         -   xmlns:cc="http://creativecommons.org/ns#"
     7         -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     8         -   xmlns:svg="http://www.w3.org/2000/svg"
     9         -   xmlns="http://www.w3.org/2000/svg"
    10         -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    11         -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    12         -   width="160.125"
    13         -   height="160.125"
    14         -   id="svg3361"
    15         -   version="1.1"
    16         -   inkscape:version="0.48.5 r10040"
    17         -   sodipodi:docname="silktorrent_logo_type_01_fossilcolors.svg">
    18         -  <defs
    19         -     id="defs3363" />
    20         -  <sodipodi:namedview
    21         -     id="base"
    22         -     pagecolor="#ffffff"
    23         -     bordercolor="#666666"
    24         -     borderopacity="1.0"
    25         -     inkscape:pageopacity="0.0"
    26         -     inkscape:pageshadow="2"
    27         -     inkscape:zoom="0.7"
    28         -     inkscape:cx="92.21875"
    29         -     inkscape:cy="-39.924683"
    30         -     inkscape:document-units="px"
    31         -     inkscape:current-layer="layer1"
    32         -     showgrid="false"
    33         -     fit-margin-top="0"
    34         -     fit-margin-left="0"
    35         -     fit-margin-right="0"
    36         -     fit-margin-bottom="0"
    37         -     inkscape:window-width="1024"
    38         -     inkscape:window-height="702"
    39         -     inkscape:window-x="0"
    40         -     inkscape:window-y="27"
    41         -     inkscape:window-maximized="1" />
    42         -  <metadata
    43         -     id="metadata3366">
    44         -    <rdf:RDF>
    45         -      <cc:Work
    46         -         rdf:about="">
    47         -        <dc:format>image/svg+xml</dc:format>
    48         -        <dc:type
    49         -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
    50         -        <dc:title></dc:title>
    51         -      </cc:Work>
    52         -    </rdf:RDF>
    53         -  </metadata>
    54         -  <g
    55         -     inkscape:label="Layer 1"
    56         -     inkscape:groupmode="layer"
    57         -     id="layer1"
    58         -     transform="translate(-282.78125,-332.3125)">
    59         -    <path
    60         -       style="fill:#558195;fill-opacity:1;stroke:#558195;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
    61         -       d="m 282.84375,332.375 c 0,13.33333 0,26.66667 0,40 26.65625,0 53.3125,0 79.96875,0 -13.32292,6.66667 -26.64583,13.33333 -39.96875,20 20,13.33333 40,26.66667 60,40 -13.33333,6.66667 -26.66667,13.33333 -40,20 -20,0 -40,0 -60,0 0,13.33333 0,26.66667 0,40 53.33333,0 106.66667,0 160,0 0,-13.33333 0,-26.66667 0,-40 -26.66667,0 -53.33333,0 -80,0 13.33333,-6.66667 26.66667,-13.33333 40,-20 -20,-13.33333 -40,-26.66667 -60,-40 13.33333,-6.66667 26.66667,-13.33333 40,-20 20,0 40,0 60,0 0,-13.33333 0,-26.66667 0,-40 -53.33333,0 -106.66667,0 -160,0 z"
    62         -       id="rect2989-80-5"
    63         -       inkscape:connector-curvature="0"
    64         -       inkscape:export-filename="/home/ts2/Projektid/progremise_infrastruktuur/andmevahetustarkvara/rakendusvõrgud/silktorrent/juur_liivakast/silktorrent_development_deliverables/doc/logo/ready_for_use/Silktorrent_logo_FossilColor_600x600.png"
    65         -       inkscape:export-xdpi="337.23999"
    66         -       inkscape:export-ydpi="337.23999" />
    67         -  </g>
    68         -</svg>

Deleted work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_100x100.png version [4bed0c015e].

cannot compute difference between binary files

Deleted work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_200x200.png version [b71c24fe92].

cannot compute difference between binary files

Deleted work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_50x50.png version [a7d2f1fece].

cannot compute difference between binary files

Deleted work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_600x600.png version [18eb02760d].

cannot compute difference between binary files