From ff22dfd613d40bb635b4f071b71bea1d226c71fc Mon Sep 17 00:00:00 2001 From: Josef Spitzlberger <38983450+spitzlbergerj@users.noreply.github.com> Date: Sun, 7 Jul 2019 13:11:00 +0200 Subject: [PATCH 01/17] Output as rows or columns, state driven colored icons and text Extended to display the output as device rows or as device columns as well as introduction of a color display controlled by the online/offline status of the device --- MMM-NetworkScanner.js | 74 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 2 deletions(-) diff --git a/MMM-NetworkScanner.js b/MMM-NetworkScanner.js index 4b26e0f..660736d 100644 --- a/MMM-NetworkScanner.js +++ b/MMM-NetworkScanner.js @@ -30,6 +30,10 @@ Module.register("MMM-NetworkScanner", { showLastSeenWhenOffline: false, // show last seen only when offline // debug: false, + + // sjj: show table as device rows or as device columns + showDeviceColums: false, + coloredState: false, }, // Subclass start method. @@ -183,11 +187,20 @@ Module.register("MMM-NetworkScanner", { // Display device status var deviceTable = document.createElement("table"); deviceTable.classList.add("small"); + + // sjj: Show devices in columns + // generate header row and device state row + + var headerRow = document.createElement("tr"); + headerRow.classList.add("dimmed"); + var devStateRow = document.createElement("tr"); + devStateRow.classList.add("dimmed"); + this.networkDevices.forEach(function(device) { + if (device && (device.online || device.showOffline)) { // device row - var deviceRow = document.createElement("tr"); var deviceOnline = (device.online ? "bright" : "dimmed"); deviceRow.classList.add(deviceOnline); @@ -199,6 +212,15 @@ Module.register("MMM-NetworkScanner", { var icon = document.createElement("i"); icon.classList.add("fa", "fa-fw", "fa-" + device.icon); + + // sjj: coloredState - overwrites colored icon! + if (self.config.coloredState) { + if (device.online) { + icon.style.cssText = "color: " + device.colorStateOnline; + } else { + icon.style.cssText = "color: " + device.colorStateOffline; + }; + } else if (self.config.colored) { icon.style.cssText = "color: " + device.color; } @@ -207,6 +229,11 @@ Module.register("MMM-NetworkScanner", { deviceCell.style.cssText = "color: " + device.color; } + // sjj: coloredState - overwrites colored text if not coloredSymbolOnly! + if (self.config.coloredState && !self.config.coloredSymbolOnly && device.lastSeen) { + deviceCell.style.cssText = "color: " + (device.online ? device.colorStateOnline : device.colorStateOffline); + } + deviceCell.appendChild(icon); deviceCell.innerHTML += device.name; @@ -223,12 +250,48 @@ Module.register("MMM-NetworkScanner", { deviceRow.appendChild(dateCell); } - deviceTable.appendChild(deviceRow); + + // sjj: fill also header and devState row + // header row + var headerDevCell = document.createElement("td"); + headerDevCell.classList.add("headerDev"); + headerDevCell.innerHTML += device.name; + + headerRow.appendChild(headerDevCell); + + // device state row + var devStateCell = document.createElement("td"); + devStateCell.classList.add("devState"); + + // color online / offline + if (self.config.coloredState) { + if (device.online) { + icon.style.cssText = "color: " + device.colorStateOnline; + } else { + icon.style.cssText = "color: " + device.colorStateOffline; + }; + } + + devStateCell.appendChild(icon); + + devStateRow.appendChild(devStateCell); + + // sjj: show as Device rows or as Device columns + if (!self.config.showDeviceColums) { + deviceTable.appendChild(deviceRow); + } } else { if (this.config.debug) Log.info(self.name + " Online, but ignoring: '" + device + "'"); } }); + + // sjj: show as Device rows or as Device columns + if (self.config.showDeviceColums) { + deviceTable.appendChild(headerRow); + deviceTable.appendChild(devStateRow); + } + if (deviceTable.hasChildNodes()) { wrapper.appendChild(deviceTable); } else { @@ -260,6 +323,13 @@ Module.register("MMM-NetworkScanner", { device.name = "Unknown"; } } + // sjj: coloredState + if (!device.hasOwnProperty("colorStateOnline")) { + device.colorStateOnline = "#ffffff"; + } + if (!device.hasOwnProperty("colorStateOffline")) { + device.colorStateOffline = "#ffffff"; + } }); }, From e1085a2c9dc3ad691c8ab08c9557d7344c349169 Mon Sep 17 00:00:00 2001 From: Josef Spitzlberger <38983450+spitzlbergerj@users.noreply.github.com> Date: Sun, 7 Jul 2019 13:12:23 +0200 Subject: [PATCH 02/17] example with columns --- .github/example-columns.jpg | Bin 0 -> 14035 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/example-columns.jpg diff --git a/.github/example-columns.jpg b/.github/example-columns.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f8a8480304960c6fbebd346819063b32e7af4ad1 GIT binary patch literal 14035 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 i{=uH}o3gK%SG@V8xWdj Date: Sun, 7 Jul 2019 13:33:14 +0200 Subject: [PATCH 03/17] Output as rows or columns, state driven colored icons and text Extended to display the output as device rows or as device columns as well as introduction of a color display controlled by the online/offline status of the device --- README.md | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a5d2ab7..9730761 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,12 @@ A module for MagicMirror which determines the status of devices on the network b ## Example +devices as rows
![](.github/example.png) +devices as columns
+![](.github/example-columns.jpg) + ## Installation In your terminal, install `arp-scan`: @@ -61,6 +65,8 @@ Add the module to the modules array in the `config/config.js` file: | `colored` | `false` | `optional` determines whether devices are shown in the color defined in the devices section. | | `coloredSymbolOnly` | `false` | `optional` shows only the devices symbol. | | `showLastSeenWhenOffline:` | `false` | `optional` show last seen only when offline. | +| `showDeviceColums:` | `false` | `optional` show devices as columns. | +| `coloredState:` | `false` | `optional` determines whether devices are shown in a color defined in the devices section and controlled by the online / offline state. | @@ -74,9 +80,13 @@ The device object contains information about the devices to be found on the netw | `name` | `optional` the friendly name for the device. If omitted, the `macAddress` or `ipAddress` will be used. | `Phone` or `Router` | | `icon` | `optional` the symbol to show next to the device. See [Font Awesome](http://fontawesome.io/cheatsheet/) cheatsheet. If omitted, `question` will be used. | There are a huge number of icons to choose from. Here are some examples: `globe`, `server`, `desktop`, `laptop`, `mobile`, `wifi`. | | `color` | `optional` the color the device should be display with. | `#ff0000` for red | +| `colorStateOnline` | `optional` the color the device should be display with when it is online. | `#ff0000` for red | +| `colorStateOffline` | `optional` the color the device should be display with when it is offline. | `#ff0000` for red | **Note** A device object should only contain either a `macAddress` *or* an `ipAddress` **NOT** both. +**Note** The `coloredState` parameter overwrites the `colored` parameter if both parameters are set to true. With the parameter `coloredSymbolOnly` the status driven coloring can be limited to the icon. + ##### Generating the device array The `devices` array can be generated by using `arps2mm.sh` from within the `scripts` folder. The output of the script will include all the devices found on the network, using the name of the vendor identified from the arp-scan result. Run the following script, edit the device names and icons then copy the array into the config file: @@ -104,9 +114,63 @@ Scans the network (using the default `updateInterval`) and display the status of { macAddress: "3a:3b:3c:3a:3b:3c", name: "Son", icon: "male"}, { macAddress: "4a:4b:4c:4a:4b:4c", name: "Daughter", icon: "female"} ], - showUnknown: false + showUnknown: false, + } } ```` +#### example with columns +Displays the specified devices as columns: +````javascript + { + module: "MMM-NetworkScanner", + position: "top_left", + header: "Geräte im Netzwerk", + config: { + devices: [ + { + ipAddress: "192.168.178.101", + name: "UniFi", + icon: "server", + colorStateOnline: "green", + colorStateOffline: "red", + }, + { + ipAddress: "192.168.178.31", + name: "QNAP1", + icon: "database", + colorStateOnline: "green", + colorStateOffline: "red", + }, + { + ipAddress: "192.168.178.32", + name: "QNAP2", + icon: "database", + colorStateOnline: "green", + colorStateOffline: "red", + }, + { + ipAddress: "192.168.178.33", + name: "QNAP3", + icon: "database", + colorStateOnline: "green", + colorStateOffline: "red", + }, + { + ipAddress: "192.168.178.134", + name: "APS", + icon: "wifi", + colorStateOnline: "green", + colorStateOffline: "red", + }, + + ], + sort: false, + showUnknown: false, + showDeviceColums: true, + coloredState: true, + } + } +```` #### Keep alive example Scan every 5 seconds and only display the specified devices whether they are online or offline. Devices will continue to be shown as online (i.e. kept alive) for 5 mins after they are last found: ````javascript From 0e727f863f19630dc79e79ca73b0b9698395e548 Mon Sep 17 00:00:00 2001 From: Josef Spitzlberger <38983450+spitzlbergerj@users.noreply.github.com> Date: Sun, 7 Jul 2019 13:33:39 +0200 Subject: [PATCH 04/17] Add files via upload --- .github/example-columns.jpg | Bin 14035 -> 16366 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.github/example-columns.jpg b/.github/example-columns.jpg index f8a8480304960c6fbebd346819063b32e7af4ad1..6424af573245599081016507ac0b012c7e25faf7 100644 GIT binary patch literal 16366 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 Zy+Oy&a*zF(g8n=2>hkD-I*0lC{{eJY;>rL3 literal 14035 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 i{=uH}o3gK%SG@V8xWdj Date: Sun, 7 Jul 2019 13:34:30 +0200 Subject: [PATCH 05/17] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9730761..23342c0 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ devices as rows
![](.github/example.png) devices as columns
-![](.github/example-columns.jpg) +![](.github/example-columns.jpg) ## Installation From f003098cd44c57b3501eeed385a3edb2e4150356 Mon Sep 17 00:00:00 2001 From: Josef Spitzlberger <38983450+spitzlbergerj@users.noreply.github.com> Date: Sun, 7 Jul 2019 13:35:00 +0200 Subject: [PATCH 06/17] Delete example-columns.jpg --- .github/example-columns.jpg | Bin 16366 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .github/example-columns.jpg diff --git a/.github/example-columns.jpg b/.github/example-columns.jpg deleted file mode 100644 index 6424af573245599081016507ac0b012c7e25faf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16366 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 Zy+Oy&a*zF(g8n=2>hkD-I*0lC{{eJY;>rL3 From f77db0bd636f75a8471bf5b666682f2845030909 Mon Sep 17 00:00:00 2001 From: Josef Spitzlberger <38983450+spitzlbergerj@users.noreply.github.com> Date: Sun, 7 Jul 2019 13:35:12 +0200 Subject: [PATCH 07/17] Add files via upload --- .github/example-columns.jpg | Bin 0 -> 16366 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/example-columns.jpg diff --git a/.github/example-columns.jpg b/.github/example-columns.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6424af573245599081016507ac0b012c7e25faf7 GIT binary patch literal 16366 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 Zy+Oy&a*zF(g8n=2>hkD-I*0lC{{eJY;>rL3 literal 0 HcmV?d00001 From 4cc7501a9b937bdb04cdcfaf03e786d5f11b81d7 Mon Sep 17 00:00:00 2001 From: Josef Spitzlberger <38983450+spitzlbergerj@users.noreply.github.com> Date: Sun, 7 Jul 2019 13:35:32 +0200 Subject: [PATCH 08/17] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 23342c0..9730761 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ devices as rows
![](.github/example.png) devices as columns
-![](.github/example-columns.jpg) +![](.github/example-columns.jpg) ## Installation From 07953c2754a05fc13ec03cbad8e2dea352439924 Mon Sep 17 00:00:00 2001 From: Josef Spitzlberger <38983450+spitzlbergerj@users.noreply.github.com> Date: Sun, 7 Jul 2019 13:36:05 +0200 Subject: [PATCH 09/17] Delete example-columns.jpg --- .github/example-columns.jpg | Bin 16366 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .github/example-columns.jpg diff --git a/.github/example-columns.jpg b/.github/example-columns.jpg deleted file mode 100644 index 6424af573245599081016507ac0b012c7e25faf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16366 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 Zy+Oy&a*zF(g8n=2>hkD-I*0lC{{eJY;>rL3 From 2775bb92abe04e02c4cc324b6482a9c54e21accc Mon Sep 17 00:00:00 2001 From: Josef Spitzlberger <38983450+spitzlbergerj@users.noreply.github.com> Date: Sun, 7 Jul 2019 13:36:16 +0200 Subject: [PATCH 10/17] Add files via upload --- .github/example-columns2.jpg | Bin 0 -> 16366 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/example-columns2.jpg diff --git a/.github/example-columns2.jpg b/.github/example-columns2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6424af573245599081016507ac0b012c7e25faf7 GIT binary patch literal 16366 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 Zy+Oy&a*zF(g8n=2>hkD-I*0lC{{eJY;>rL3 literal 0 HcmV?d00001 From ddfba0a3e3551bed3934b811e41e9106a7880e85 Mon Sep 17 00:00:00 2001 From: Josef Spitzlberger <38983450+spitzlbergerj@users.noreply.github.com> Date: Sun, 7 Jul 2019 13:36:29 +0200 Subject: [PATCH 11/17] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9730761..0dca0ac 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ devices as rows
![](.github/example.png) devices as columns
-![](.github/example-columns.jpg) +![](.github/example-columns2.jpg) ## Installation From ab9d24c32414d9b68cec2d1b45e284bb60402ee3 Mon Sep 17 00:00:00 2001 From: Josef Spitzlberger <38983450+spitzlbergerj@users.noreply.github.com> Date: Sun, 12 Apr 2020 12:13:50 +0200 Subject: [PATCH 12/17] Added possibility for line break If the Devices are displayed as columns, a new row can now be created by an additional parameter in the Device Configuration --- MMM-NetworkScanner.js | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/MMM-NetworkScanner.js b/MMM-NetworkScanner.js index 660736d..707c3f7 100644 --- a/MMM-NetworkScanner.js +++ b/MMM-NetworkScanner.js @@ -212,15 +212,6 @@ Module.register("MMM-NetworkScanner", { var icon = document.createElement("i"); icon.classList.add("fa", "fa-fw", "fa-" + device.icon); - - // sjj: coloredState - overwrites colored icon! - if (self.config.coloredState) { - if (device.online) { - icon.style.cssText = "color: " + device.colorStateOnline; - } else { - icon.style.cssText = "color: " + device.colorStateOffline; - }; - } else if (self.config.colored) { icon.style.cssText = "color: " + device.color; } @@ -229,11 +220,6 @@ Module.register("MMM-NetworkScanner", { deviceCell.style.cssText = "color: " + device.color; } - // sjj: coloredState - overwrites colored text if not coloredSymbolOnly! - if (self.config.coloredState && !self.config.coloredSymbolOnly && device.lastSeen) { - deviceCell.style.cssText = "color: " + (device.online ? device.colorStateOnline : device.colorStateOffline); - } - deviceCell.appendChild(icon); deviceCell.innerHTML += device.name; @@ -250,6 +236,19 @@ Module.register("MMM-NetworkScanner", { deviceRow.appendChild(dateCell); } + // sjj: Append a new row if showDeviceColums and showInNewRow are both true + + if (self.config.showDeviceColums && device.showInNewRow) { + // append the previously processed devices to the table + deviceTable.appendChild(headerRow); + deviceTable.appendChild(devStateRow); + + //generate new line contents + headerRow = document.createElement("tr"); + headerRow.classList.add("dimmed"); + devStateRow = document.createElement("tr"); + devStateRow.classList.add("dimmed"); + } // sjj: fill also header and devState row // header row @@ -330,6 +329,10 @@ Module.register("MMM-NetworkScanner", { if (!device.hasOwnProperty("colorStateOffline")) { device.colorStateOffline = "#ffffff"; } + // sjj show device in a new rox id mode is show in rows + if (!device.hasOwnProperty("showInNewRow")) { + device.showInNewRow = false; + } }); }, From 018608f96b54d43e533669b9bdcf03f43b788ff2 Mon Sep 17 00:00:00 2001 From: Josef Spitzlberger <38983450+spitzlbergerj@users.noreply.github.com> Date: Sun, 12 Apr 2020 12:31:26 +0200 Subject: [PATCH 13/17] add line break If the devices are displayed as columns, a new row can now be created by an additional parameter in the Device Configuration --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 0dca0ac..377e1a3 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,7 @@ The device object contains information about the devices to be found on the netw | `color` | `optional` the color the device should be display with. | `#ff0000` for red | | `colorStateOnline` | `optional` the color the device should be display with when it is online. | `#ff0000` for red | | `colorStateOffline` | `optional` the color the device should be display with when it is offline. | `#ff0000` for red | +| `showInNewRow` | `optional` add a line break if showDeviceColumns = true. | false for no line break | **Note** A device object should only contain either a `macAddress` *or* an `ipAddress` **NOT** both. @@ -147,6 +148,7 @@ Displays the specified devices as columns: icon: "database", colorStateOnline: "green", colorStateOffline: "red", + showInNewRow: true, }, { ipAddress: "192.168.178.33", From cc46659590b6be7ad2b217321676f843e708117d Mon Sep 17 00:00:00 2001 From: Josef Spitzlberger <38983450+spitzlbergerj@users.noreply.github.com> Date: Mon, 13 Apr 2020 09:00:18 +0200 Subject: [PATCH 14/17] Update MMM-NetworkScanner.js --- MMM-NetworkScanner.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/MMM-NetworkScanner.js b/MMM-NetworkScanner.js index 707c3f7..1825ce9 100644 --- a/MMM-NetworkScanner.js +++ b/MMM-NetworkScanner.js @@ -186,15 +186,15 @@ Module.register("MMM-NetworkScanner", { // Display device status var deviceTable = document.createElement("table"); - deviceTable.classList.add("small"); + deviceTable.classList.add("deviceTable", "small"); // sjj: Show devices in columns // generate header row and device state row var headerRow = document.createElement("tr"); - headerRow.classList.add("dimmed"); + headerRow.classList.add("headerRow", "dimmed"); var devStateRow = document.createElement("tr"); - devStateRow.classList.add("dimmed"); + devStateRow.classList.add("devStateRow", "dimmed"); this.networkDevices.forEach(function(device) { @@ -203,12 +203,12 @@ Module.register("MMM-NetworkScanner", { // device row var deviceRow = document.createElement("tr"); var deviceOnline = (device.online ? "bright" : "dimmed"); - deviceRow.classList.add(deviceOnline); + deviceRow.classList.add("deviceRow", deviceOnline); // Icon var deviceCell = document.createElement("td"); - deviceCell.classList.add("device"); + deviceCell.classList.add("deviceCell"); var icon = document.createElement("i"); icon.classList.add("fa", "fa-fw", "fa-" + device.icon); @@ -229,7 +229,7 @@ Module.register("MMM-NetworkScanner", { if ((self.config.showLastSeen && device.lastSeen && !self.config.showLastSeenWhenOffline) || (self.config.showLastSeen && !device.lastSeen && self.config.showLastSeenWhenOffline)) { var dateCell = document.createElement("td"); - dateCell.classList.add("date", "dimmed", "light"); + dateCell.classList.add("dateCell", "dimmed", "light"); if (typeof device.lastSeen !== 'undefined') { dateCell.innerHTML = device.lastSeen.fromNow(); } @@ -245,22 +245,22 @@ Module.register("MMM-NetworkScanner", { //generate new line contents headerRow = document.createElement("tr"); - headerRow.classList.add("dimmed"); + headerRow.classList.add("headerRow", "dimmed"); devStateRow = document.createElement("tr"); - devStateRow.classList.add("dimmed"); + devStateRow.classList.add("devStateRow", "dimmed"); } // sjj: fill also header and devState row // header row var headerDevCell = document.createElement("td"); - headerDevCell.classList.add("headerDev"); + headerDevCell.classList.add("headerDevCell"); headerDevCell.innerHTML += device.name; headerRow.appendChild(headerDevCell); // device state row var devStateCell = document.createElement("td"); - devStateCell.classList.add("devState"); + devStateCell.classList.add("devStateCell"); // color online / offline if (self.config.coloredState) { From 550ad247b6f110da83be046df64e16ca3ae38b39 Mon Sep 17 00:00:00 2001 From: Josef Spitzlberger <38983450+spitzlbergerj@users.noreply.github.com> Date: Mon, 13 Apr 2020 09:04:18 +0200 Subject: [PATCH 15/17] Add files via upload --- exampleColumnsNewLines.jpg | Bin 0 -> 13484 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 exampleColumnsNewLines.jpg diff --git a/exampleColumnsNewLines.jpg b/exampleColumnsNewLines.jpg new file mode 100644 index 0000000000000000000000000000000000000000..967d8801d4b52d007f068ec796cdf9a5684c09a2 GIT binary patch literal 13484 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 literal 0 HcmV?d00001 From ce7dd2ea965aab95c6d18f108cea46b66e43831b Mon Sep 17 00:00:00 2001 From: Josef Spitzlberger <38983450+spitzlbergerj@users.noreply.github.com> Date: Mon, 13 Apr 2020 09:05:05 +0200 Subject: [PATCH 16/17] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 377e1a3..145ec33 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,9 @@ devices as rows
devices as columns
![](.github/example-columns2.jpg) +devices as columns with newLines
+![](.github/exampleColumnsNewLines.jpg) + ## Installation In your terminal, install `arp-scan`: From 3717eebe87bb6e2d4f2c33c132551711f07dd63e Mon Sep 17 00:00:00 2001 From: Josef Spitzlberger <38983450+spitzlbergerj@users.noreply.github.com> Date: Mon, 13 Apr 2020 09:05:47 +0200 Subject: [PATCH 17/17] Screendump exampleColumnsNewLines.jpg --- .github/exampleColumnsNewLines.jpg | Bin 0 -> 13484 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/exampleColumnsNewLines.jpg diff --git a/.github/exampleColumnsNewLines.jpg b/.github/exampleColumnsNewLines.jpg new file mode 100644 index 0000000000000000000000000000000000000000..967d8801d4b52d007f068ec796cdf9a5684c09a2 GIT binary patch literal 13484 zcmcJ#2{c>n+b$l}R#jEiRFt$e)ex#?MT(**YM!a88d6kA1(8(EQ@u47Mb#KY3_(p% z61=UV<~GK}JXL~{67l!`zq8I+>-RhBeCIo7ot^dUwX(DKvvb||wV(UGuX`W=IGzJs zGSWBH2QV=)0Un)v0LPO6-G9FQUv2+P@_#kKKNlZ=25_DOL;!v=Gu;53;$&jxWI84Q zfB*o~ng5s@@ZUD3Q_QE&oMk!3dYB1AbdwT!=@^yG*bZmU$$4?@OJioBGw7jyqM%~`o{k^wO`*ZLQ zE+zo;e>d5G0Q(nQoF}+Woj%Qcn&lr{Os9fR1~cdBGuP$MUe-2eaSPzOaXaE1x6a$b z+D=vx1q%w#;}=8cc|{dTV$^@2{r|}R_kg|rKSK83f&C9$M8E}RrW5Bea{|DCV*vO- zdN*y4jhdVivpdLd??|_(qghwD(2Zz@;p9zIj)Ykb1UszAnx^LFIe+LcKwOy-rR5gV zBJskq!@FpIbIO}`vTM|~7x8G2pb0iJxgmFP?dp`>k()bpR+nNHgA<^=#?P~)m_=wv z9xB1I3`c^F0jCgCNHz_zV3wp~0O{O#Rn;^28H$22Wd=Q;@*2qXWXBIwM(sh7`X3Kk zRqs>?niz7_EA=H^O+C)w}?=NhEt;xcEiD4`X)sNNlX zTGxCIwqDaY$m10500)}8!&sGHSqnuw(R4_6m2W%=0Os_#$XeYI|yV+_-mbb^+1uB+*s2> zm=T#EhV?W>8c_}6{TjS?)qd+<5Ew`R2~Q1jExbY~47oN>6kNs$mvyFGwxge=6{*B5 zPcXRP%3~XC@^c-;2~xqv7qTlGyJHWyfg_%7I0w8m3)?JB>pcKR$Z5D0c?Jdt;RxO?1ZD`n;>vTu(8EI{4|fXvAR4Ova(Zx`;W=^YE4{EX$5Em~ae$Xx<^= z3g*G_RJai}FDsVLMQ(TPE#T4sedrGf6oe@_P+!KQ*Njm5coG=E zq2HDMn_+B@Z0pmi%oOE>Bj`~j-JdeyK)X(sV}mQv5-AI`5hLowrZDPhSRg@5$V7o` zhF1f7r6k+Va8s7?hhZj0t5}+bJbGO~?#*xTsZL~-3oI7jatw%u+xu(exV|RTA@m+H z>2d!r$63bPKoab6I)tdzfiit^mQ^w3viE_gc{lb{Dn5kddP!rLuaDIN#x2RZkjj?l z-$YkG1{B)%bkJPATv>-|zdj@jI;8_3#3XB}7UpWA=#(3?J= zHTX}VEEN<%1lmI16Kyh3J^@}i&vFLpWeeP)VZv{Vx}o0gvX!WItOYtIS7`Gn`F+-e zzO+?KJGRODUem3juYJ- z+%$~cv{<}R+df)-y|yvm5oI9`=>0dUru++;eSQ^C(#VbIN+JwtMDw7sSx#W+<|vqO z@4XQ^ANkI-%T7;=Qd@9nZxl#z(pTAdGKJgQCQTQLf+4QB+SE2>s#T+JB#$MxJI-Nx zOwMu$I713p5#lT39qhlb>vD0y>P@fc)@9mr($kOhi6&*q;%&o)DP0o|A9A?L9M_ZG zK`WUG&r;+0u3b3>{0psy{+)RNRv#|k1*Dn+m_^gRGfm|HHviSg|L&YgDqkl@vKEH| z2QU3Pt&rsITlfQ(KL<s}c0+^L5&l zK6^Q1eN*wGa#GIrE1{>&KM!3o_azP(UcQ&A`(j>i-HM3d`y`5Kh|5zgl~8j~r3Tw%r=>SGLDaL8sZz zUHao;Xr3*DYwIHIp0_}fI`XGd(2ieqQe$7>Ub!`atslDXG$6B>n9~EBwU|97LXs#ulc_9PLpF(Acy8W#O zXZfc8=#5)U76=aBLwMV!x_nhaZ+gvDm}mVe;h*6VZD?FA+My42Yn}eG^UOx?-7E-nIjqR%-Egxq01ee(uy7cdeXMH;c@Msv2fZVjw2`h?z2Q8PLGj?Fk?YMX7-cypF0kp6Iu zPvutGd+WqLWS#T0!=KvzJxKf}eZ_R8blby={v(%Gl;*dqIT~rbzELE06J=ocMN;Bv zbxup@dQ;%myqIc_d2mu{x^qs8&+5;gYX#0axVfXe4llDvmN7>PrgC-SPJgEZQG;_rX1$2hk-ZW+V|3{-Xay|Hk}4Oq8Kv-J z<_F}(Oy{C5<%qinQBFjRchu?SXOVJM5v)@`va!a~Y`sKeG=dwhMS;FS6}!-NXqM!5 z1N`us4MS_}_m+?sv7sXpZXMz+k-Q~nLCJwQc)ku=&$Bdmy-rZlC1W0q~q8}{c|*x zC&}tHW3Qe26^{YlpVB_#fQ&B^y$JU2a3_Q`OjnOFRj*R;)Ar$?2^*1t%;aUWwk0IvPbko^0X-*BfehN%{2-dgHIv7moHm+D}GCHeRZ~9sPCL zc;Y1LHNUz$^CYv$JX4p`o%)>05xJagb~DBw-gBiXA`^HBRvh8EdhdC4Rs#&^RuUqG z7_#0A-3is`jut>>hg+aDz4hxg|U_w>o;^Bu~mJAL|_oO#|VytOZrf09egm?$-n z*~S=2o6*AKXc>n$>3TGi!+UE)i6}Y~DcshC5@=Aoj<`v)KU6wdN>m6yo@toQq%MV? z&rS;@Z3)iODoN3dG%|BA64cSD$wrvr8z0uKhTk2BgTwv3MCr*N6ApEEMX)q~^51k8 zD%WQhwH(6QUo?fDd|s+k%cHk$>PZNp2^nZ?E!Szs{S=l6wcc6)bXAz z1j5D{;Jvs0N0%>QV$)_0&%K>}HxUxBbcHT%8_~UFcQ9+)`RMuY0J{o$hE$jo_oHPC z#6Xgib%Bf}97|GbFXG)*Rd_JSoVxgFV^#t4+o=Q8HQwVMa52xJB1Vvd#iGI0LnqH+ zOzk?KtdZ5Sg$?%c^xFfgV?YyfhLbJW$5d)LjraD{h7hTts8JTDmZRe6ZqNX90l2x68rF^v@;>O#|w=X#KE{E5t)0&m(xxI3C0p@mA*R zZz$;7@m(OQ5LSNhcf&?4qblmP#mnW!KL~W&XxfPjP2l?1rq%R7) z&gk>m7CPo%88?W988a1aCG|!1z#`juM#7EcqCad?H6&g&;3AfUkJFs8TRdbQSI#m2PAr_+p#) zyc`R0de!xE+ao_;P#cKU9%eSwc5g3JD0&{XAU!#nR*nIlv|uU% z76c?pJUsdc`mL#d*x57qa2z@aq46mrl9Bl_z$Eg!c(H#{e#WTl3L2 zxzg3|uwcCy4%+=C`Xo(>(#?>At>HTj$!r|#f_;$I`tn&FzwFE*9wM=e;N%eA!g$zC zZaB35bgNsV^x+NS?DLspK&R&JZmnkntul~j%3Pss0>>S>A#2Vi)F+HfB@*uU8F@5s zr->Fv*%AWy;--LI+0il>&Hj8gL5F0GdtOy%-Q$g-?FaJI>rl~Mwx#K1rjV?>{uk4o zdZotzHS!=YjODe05x)wTXKG*lRej-nDQ=O>r#}caV`UZ@>LZmApUGZ53MixEkdSG; zz7TD_Qd+JY@eogJ!kZ;%0jaVX)ij4gds?^z-Zd7;h68%@hL&}KnD2&PoHeXz$5LGh z;484$d5#F^wECtjrp>H;6>*)K2Dcr0GICPtmy9T~3w-bR%!9P9Rd*>XUyWHB-(8*9 z&lKPOYNq~mYa{Ej<5B7GGr3#{IBRM03)Vk=s74{7&=tbkQ!HY^k;9eb$@dh)FG}9n z7#lIODhS+Fhl<#|ml}b8N1Ypusv09Hmhe4Ivo*P+n6s94{z&pDzXOsI0c6$UhHKD5 z$gTkRgK=oedARWiPQj<;S6&6o$BccNM#OjX9t3(fGB}VM;eHTr1W&i@UvTr2$DQp# zHq^0scY%`hJPvNmx6}~MUWgb#i00m_p@LI1%;&bE1$a?cJ`GRys#n@Wa@wnzRMc%_ zeMvbC5^=>g=j&7Cia} z9}QValfLIZpTbQyKqeu03QRtY`)_HOi5HSx69s^TR<1%0NsLlL(6Oc@cUPf5LK+mRZu_TSieB0Y*% zl`$25SQ*>n=6r7&Ts2o~wL+#ah9uPy#3b%N9(@RVhueN4Ujl!}F~0PU5XQQUID6bY zO>tbnNT_9oSW;hYdJSzuq9N(YYPdUxiIsVQgoPEho?4{P+rNa13~CZ2YH9 zY~HY{4Lm30%8-&)otY;bM2!o)w;K_0yWnCQ3&q^VFU?-`i1o!gBR1<>a8*>X(uTbw zUKL8&>%tumkL{p4n>vU0o6jB^>*Qb0K=92P_<99zyx3R1yNanadNRqB!+|%Fruto@ z#2yC6QR&(;2l+zo6@f?Ai?EjAl4l@|+b%O|zt3CNmzKfiR#*O5Sh##=gpyO3jsfE? zvfpT>PG-jE>IEu3es0SZipvmugmU9{xuIbaQ)n?zfNguu?c3kS!(U=GG}h_tXl0SP zVr$-Rky$`pdDooo+wjNsNGMcy8}qA+UR2^~u7?;rx2(S$-k%ynA!=TyFb0QSPhsw}Ur?(*iEqb6fPoHfh&=;yO=O1qzK$^Ya(902fq54|> z-nCph-+=I_-dwBS-*tr`_3PXSuAJXE=ITfWJQM1S|OgS%+%7*I!cn7X%f@B$j> zy_Cp)l$B_an5lJT%YAdPV6>FDu;((YY6l7#6B8Up4$zQHnkjr_RWwykvgPN(PD!M_ zteVlqkYWWfZL%lfx3_Y-5D;>K=jM#lTGFFDR_+rsj3e)z30F9juvadlIv%P8`JbaD zZsG*S-F%sQ>fR~(I@=iYCzt0Q$~ke)=s)Ir&h>HaE*e|@C?%MPW;`vidE((AW`F;m zo!!+Ki(A^KpK$)Ik+2;&RcAk7mhEAV`EBn`$#_0QI8+jaKyg|2{@~ryYLs`$S5TLEbj7^CR4O)<)h=vGkEtd9OE=aCt>r!N6*bRJB#T=FXwJc$OC59=f*l=`Cc=cQN&pal~3^!2W-3-!WG=-kH&R}V4+EpL~_6dG}t zFH!A6Vcuf}3YEE@&4k<>)RjYZZpu(XX`aKo*o~vNdfc|Fu^SR2;5ulU50a;&K1-jH z5{H{4p`Y@8*MLYy>W_^*seMO`@2LCTDYWqPdN7l^Z1MR?qnLC1;T5yHzyB+SB3aan zNJ~n6)%|DpdExfk*XKm8z0qEhRi?^L|q zmv)=CR`=GhTHUrRQTg9;YFYNjgd>+|IX9hTww*8mtJOfqtlXcSI`pQO?HEX_?@PpN zOwsRW%0Q0(!Ht_1MT32P{TryBt5c{3VL!+1(#W#JG=QWP`yN3ID5VwbgB1%TjOTR?b z27N`$Cg|30>Bqcm?CQAT291ltAMtL>4wYrXJ{b~PeuAV8Ap7Dw_*s4(Yd8I*0J}JS zv^sRX>%Fx%sb(zTO8Mdsqm1_I8<~#L6*Vx2jCJ)}%at}IIte#1PYwW>My)G@6luaN zs}?6LjGWbNc8>NK$V~U7MO4vxKOfA*Qxle5$J?&Yx66_I-g;KSkmeMYSI~YY((qHt zFHE`5UhvGV?@E~3)r}VC%(7spw`U+#lbh+Fdyd_m!P+}#@Er=W=_Q?TS_q;|UGAdE z6;p+?4j{AQge zWayeyzTQw^EM0;u4dhwT;%lWWM^$U+qS$=Tn_YEW=T(@YMI&#wv7gYa2Y4C!cbn#1 z|HUnb(Y$;0=T7xP+x( zsrL4;M4dO&Pe*^7T`-1*^ClbyO0B(|;LXgcnbgGv; z=r6U+1J2R?0Tr}oXP#N#d@MCHm6&R=FJ$w_OTSE-U}&UhZK!VuU%Hc|>L@et+)4AD z=N}u6JKwA+Ax}jF^)qD~Hc%x-7N(c0XJrMH)Wi}}({HU+6^Y{VYp6{d@|w6rxg?D{ zEN|pC>DNh++YA}1$|f*8pm31Xae*#cm)NCj8!FpC`tjsDaoa3`_ew);1GYBSXrwnb zCc0EeczA1Pq$dF8$8iN#4Lmz#5<)r$H?Hm`IkrYO8~$oj5k>{&2ob)7us4wVwK72- zZ~Zpsnr)wQ;kgUnhEzyTX(dUo9|L~Ok_}=Jg0zVqzMR=^O@le~UIR%}?!l0ji1%e! zk?H8}Y%N`zVjHJn@bL#Ntuy}=t&nWS<_xRs5>W2=pj}C%gQ=$Pw_U1pF{^wT#^Amo;o*lCYwE%U;_>3>F!B~~EoZ?27`xHNPClGe_~0m37LO5}E6q|A78yY| zv>P$z@#-;!e~c+*bFlyS10)N*cx+|?!6 zI-M$tK6Tf@qk-xV}@w1aHuI*OSN(1nD zGK2RG;**0t!{SqdReQyk8Rdjtr6;4BDN0AJk=E`p9pfH4zvm5yOd%adCDq4(r|}zz zi@JyEUbno>Ae8k7DdeZcGaywIlu3Lul_oLD3MI(A)#5i9Hwz)N43m$aAhh> zGMqo8Oh{{O(xRr7kJop*pWF6RIR8np%R<+7Cz&P8Ueqv0t=Xt+#>T>ZNoc=yn^C$N zIB~aMSyRpy+pa=Pi2*4I-Pm!iX}lGWQS1{k{d%xAE&ApwNj6Em!(y3Mba)Aplah$I z1~;cA22joB+Z&rGZ+5z7xn+Mb)HX+C;i3$|(cfR%l(-8nXn@11BKHb54hCbF#}Vq2 zKj1nen^i%^VU8(R?g_d?QX3m~g_s?v`e=_rSeSA9I5b(`RlLu1WG*ZbHS7IyQh+(? zjgt4%jIZ6NZ|*!;y?iGQWs@fWm9{~hw?gSyOO2s!cIBx*PfTC4dY_YY{al%(k%_*% zNn@%4+96Xo!|3=aXsH=4k??2NgoDV4YyeY&2rOPt%k8% ze7a=z+kbM+vk1J(^7iyQ`DgRTbCJh@(?8l>6S8ueVyhH?{=x~tBK2tgCHCtDSm(UV zb?%mM4L{!TwvyN*oh=cy@F$CK z45)4DDY!thnI-f-7=bp!)3i{e>9f?|?8y5`vKwEXfre)-gMczruO^42aylWcOZdqj z^Nfsyx{QC)*GpeN&%Nfj7TL-27ffmK30?Osm0fDA?!g3ejs<=!2-3&m!qc8{kJxa( zdq>YK<7+x`0nIUEkv=zC5dT+z?Zp6-3;H6l3RSIYMbQ`;E%6Y9c)rLFo5b`GpB|2! z^YFS1{!bOqRSZPmTCzbrV`H`+lL!aT$)$i<+92e<@{KkHl3Cmg=fv;BX5R+EztOwN z(hk_Rj!a|c8){I;xZxQ|Hhh`>ex0n%kC2lR+6(h&e{jUtpS-ovPUZmqfSo8mR;`JQ z%U%ud_Pr;-S9XQM=3-x4&Y2dHHrYrl(H$hdw(nTB=~IJb?s~76`_GAxSt8?dYn?ym zOjk}yLQ|-0EtQSIdPr*Z7w{@z$6{hzu77$xX)#2HegF~&IQY9k`>zm6UJA6ZPMr9- z+@=!b9AYGx(lXKOU>2{q&cRAc*dpMRFA0U+9f7L=V~zph|3&7el)%jn1>xS5!DwIl zgP?vD$E+_3YxzRo{ecfBcH_E!eaq~c2K`pi-X7#lgqD9z`DUnbeaVbVf$ReO5}>NV z>-*m0=S%5ZS+W;n=xdOumGvj-kF7SvwS$t{KTA)!qjn*(eMJrmW>` zhINK}py8p$Sw5lUqF8jC->RWbaay#bsqA}*^+J)=sjD>TS5>GfAp7CB-)QlVUk%NV<`^I{N?ihliq3Ph0_DA0IYz(xupXIYH zuZ7QxDeaQ=mxe`avl;1CRaMsMmH(vLF*YoxFNK^IKBp1cS&Z>p9-3OCvy-QhpYv}~ zmJ{i6WRQQC!>@=+huKwz2xSIUzS1(2x^gJqJn~yp91^ZS>|bxF_+T$h6vLf*Per<} zprg%_I!^+2&nCNKPc)1ZUMUUz(vpR_lM7z^;*{YQRB$5W8co(&c%Ez!qhU??I%`7F zkEYZulVc+^)XHFvc+iJrE#m^9vC#C)`$xlV@}-@DzAQ@(jzo-M?d&$*jQS=b zoV31aY|=Egv8i+>Syr^B+558OlW5W4#&kpOxBcEh*V`K33fy^jBcQQas*fWcPhJ@z zkfevY-PWpotSP_U9Fpy(t9_u}Umu?Itf(h)onO-PPi?YyIE?us2qfw|BkGHy_^$D? zIQ)2mpR84-dHU*TLb{V0MZYspiP3!b}usAKM>Sdbj_8+ zaaCI4ui1o5zI~$eVq;OMi?cT|I{iz4XSjO+2tAD^cm@SdPJO2KUns{*iuzTT{iPS= zB0^nGqC0cjFvO^`n5s$b;1DDadUGMgC+i?;+iBL7&05;e->)=NKYyjiPxQ2i;bKKO z-8G&r-Mc(xZwW3Wu(8H;+xAIYmuM)UlKbW(iq5Mhs5v8`8->~W$#PXM205Oth1rom z9OW`X=jF~Qm`cniw3)|{OI~%l%k%4nj(SEy>n~LE`w8a*d1Ai=XsmuO%f)jTtUG1g zN|3b<$I90rzB*-ao4aCx-wRJ(HDXyS+lVZp1zXaT0#U2#WqT@butK)3VeJMwtxb`3 z#umKmrVZ4y1vkvR(cTI-vo@YXGWi-Qe9c)#VRsfGab-s(iknv$gFs3qE!Rq5Fqv)% zAxXEZ?>II$?rgd+<{yk=c00~_%NO&8n!M*N)ebz$@M?)(e9zfeJ-c?hcQ1kdnX(_> zrc2V)gZi^W)ZfIGS6STk+nq%DdZf;{#iL8Ne}KBNpP7`f>!O!moqk($DmnP1a;Iu` zH%!DqlMU?i2fj|4)Q9V=IYxMv{p_iA_~{^0`(}Ln^ux>NcvT~L!&|3+cJQG{Pu;Xs z;HIA1CQkaW){(+n?m5|*!WYlkd?C=5?>fk;e z{e^~u%HfY2M>HH-Aoe~EXVKnerA49z_-a>P}`2}aE(>oW0;4<=9F6i_6 z%Cm(otfsl?sIS9|){;#S$xfUHDL~6uR)n;%d?Q93XRk3KM|gx=PWfQJB zPs1AJIB7pii!~kjh~?DtMZ21L2R|GBLgpT?)^RqVh0Pn(ruAsaq!}ysml~3Np}R|U zoQcY{;TEfC_7Aa~Z0>&Uw?gh3EI#|WO~yiz@h;#A>`%pT&z_T>_3qE%o;#Js{iaJ^ zTka#ABc>+W+4R2Owf0vX5+~m4n6B*AoDSfj;Djh=??g&1*(JU7H4v16UN|e9&&3i8 zgNyOId10#N1@^hAcJv1o)@V6*e$kI*4)sm-^pUOSV&En zd_eVCMSGyU1R6^7bCUX=^;c!fJRLa()XUQU_QZ}~!pr3N_9sz%I87s}N(}dG*A#_? zO^ltX2C;4SCC}W5Y?u{-`5jK7P@1a@Li9mu_0Wu zWV+s1BF@sGnH370`}{xQL-nLBEo1&D%p}cV9PUOIGBe4Oac{x4jsAN2W=~UINO575 zzu;SkBhTCJ^7asd=&uwAz+nD;FzJn3ck_aRlW_P2+*N8zp)WYA*L{2O zMH1tgP#FcK3@>K#dbhkd=u0j#qW~|{1^ZQ(<4AdPs`>oRQrS=WWb>}-U$m>pwuURK zXLvvTsW>`Pl8lLfy}$ZLEV4Ye42=G&94)gYpqZ2}PkoYO-{^bWj0=J(Q~E2(z9Dff z%f!p~v}&BAU?6|w*Hd8Wr-NBM--h%M?K)XCh5E14OUsAL3{73RkKS{ul^m@)Z1oqk zlFE-9*< z53k|j1Q&_1%MgHR^a@6lSU*NdS=!~mj7HrP9vT{@Lr`6pTg`m}liHHDVsG)&Yf^xY z3T0OXx_h`O{Ecpz!&SBE*5?!XjhW*LFFbL(f-;X0vo14*_iOh+MZooRJyHQX%@cnR zOh5|2uF{q}EltAbW-mGs>0Y0xY~O0^eIOr?@~W`-ql_}$J@){f4>-p>$+*|cMuy{# z=G0=eps|P^e}ed1;>~RO_?z2=kBYgL-)?@gIOGZuY^;7R^0D^sZJ+E1(uZ*9GpNJJ zVp84%`19SG(PbOEP%Fy2wm$h1(>7~+8GZ4{!r!GImW?>eOgWcHI3W71C85gH!}T`C zrA$V2ZRxMB@14Ua2bhCmjq1jvQjsy&85am&5?({0*U%Dr(=u7WYR+7bXAAh?M0^Jz z3gE&=g$xc_>*v{13_ipd;tn;1aMDNQ*aaunn^5|?3pg1nwBXOYE)ra@7lWj$4l|e& zISB7^X99a9ai6kE^=OKj?404DGJXHGfE~tc2KBR;kLI+T$oTaqdQ>6J5ig*!7mZ71 zc>|XxftcroGV@Macq5jh4eYYLWXxv_52R68dbB|kusW_jj4z}chk=Yqn(3i#l;r%k zA`V~X9pi#f9U!_I2_4pb(4Q6CrcmMnaTxfpbjL)iNA9+_5h~>BLREn71)t%;0EOPu zoYKaM@dEW1_j_EKwWMjxhU)tXbfJ*al~s+GBR;ogRs|Xwup>e>==l|5OyQnb_TO(L zWeM_q(lYlqMWhO}aQ+!?0q@`)JlTu1X9&5hwNC=HDW$7VCGt%#9pD5??vJDURljoX zJAL7C$+x_&4(G|L@#-b_Ex^oPDQkdljq>F5z z26F<^trv1sklyyV^HcPvRNujk-({1lVAg8)@3I;y#rA9YN)s|cx!G{F;-)z4Bs+vG zo>mAOu^HK*8$n^updh5dh`&F`Mmo|1BG~H>j2hAlWvTebng5j$jz5%WitUYJh!0k4 zlT>%tS+V!1FDo&fNOzPyU26jL8+3^j0zH{;K+LNgL#eq`JO3*^j_7<=*pwFS)&;mZ`;J#SYwNK zoZ25>ze+4Q>06enuv-!zwMQFa=ljfupgw&XukDvIbjnlhMVZ{+@Gwo)uyJcYj=!tQ zNvIUy$N)S%qo>DnkYi&AN;QOI!QRFhH_@qvp<+)?j4L0_ZGQL6|HA=1{`vm_8qEMC literal 0 HcmV?d00001