From 4a6bc4706ca4fe2ce819999bfcbd61a19745fd37 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 21 Apr 2024 15:34:20 +0000 Subject: [PATCH 01/50] chore(deps): update ghostfolio/ghostfolio docker tag to v2.75.1 (#3239) --- apps/ghostfolio/config.json | 4 ++-- apps/ghostfolio/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/ghostfolio/config.json b/apps/ghostfolio/config.json index 34ac63b8..2eed9503 100644 --- a/apps/ghostfolio/config.json +++ b/apps/ghostfolio/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "ghostfolio", - "tipi_version": 75, - "version": "2.75.0", + "tipi_version": 76, + "version": "2.75.1", "categories": [ "finance" ], diff --git a/apps/ghostfolio/docker-compose.yml b/apps/ghostfolio/docker-compose.yml index 37c0f8fa..7b9a8e10 100644 --- a/apps/ghostfolio/docker-compose.yml +++ b/apps/ghostfolio/docker-compose.yml @@ -3,7 +3,7 @@ version: "3.9" services: ghostfolio: container_name: ghostfolio - image: ghostfolio/ghostfolio:2.75.0 + image: ghostfolio/ghostfolio:2.75.1 restart: unless-stopped ports: - ${APP_PORT}:3333 From 46a964c2156cf325974c89acce59a02552ef158c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 21 Apr 2024 15:34:23 +0000 Subject: [PATCH 02/50] chore(deps): update lobehub/lobe-chat docker tag to v0.148.3 (#3240) --- apps/lobe-chat/config.json | 4 ++-- apps/lobe-chat/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/lobe-chat/config.json b/apps/lobe-chat/config.json index 8178cec8..2bacf1c9 100644 --- a/apps/lobe-chat/config.json +++ b/apps/lobe-chat/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "lobe-chat", "description": "LobeChat is an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible (Function Call) plugin system.", - "tipi_version": 103, - "version": "0.148.1", + "tipi_version": 104, + "version": "0.148.3", "categories": [ "ai" ], diff --git a/apps/lobe-chat/docker-compose.yml b/apps/lobe-chat/docker-compose.yml index 18ba3acb..b88a2081 100644 --- a/apps/lobe-chat/docker-compose.yml +++ b/apps/lobe-chat/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.9' services: lobe-chat: container_name: lobe-chat - image: lobehub/lobe-chat:v0.148.1 + image: lobehub/lobe-chat:v0.148.3 environment: - OPENAI_API_KEY=${OPENAI_API_KEY} - OPENAI_PROXY_URL=${OPEANAI_PROXY_URL} From f89d644465230b593b80d594299ed2159ee6c6f5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 21 Apr 2024 18:37:37 +0000 Subject: [PATCH 03/50] chore(deps): update lscr.io/linuxserver/readarr docker tag to v0.3.25 (#3241) --- apps/readarr/config.json | 4 ++-- apps/readarr/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/readarr/config.json b/apps/readarr/config.json index 60c1d2a3..4bc11ff6 100644 --- a/apps/readarr/config.json +++ b/apps/readarr/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8112, "id": "readarr", - "tipi_version": 15, - "version": "0.3.24-nightly", + "tipi_version": 16, + "version": "0.3.25-nightly", "categories": [ "books", "media" diff --git a/apps/readarr/docker-compose.yml b/apps/readarr/docker-compose.yml index 2e6c0e1e..da77d79a 100644 --- a/apps/readarr/docker-compose.yml +++ b/apps/readarr/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: readarr: - image: lscr.io/linuxserver/readarr:0.3.24-nightly + image: lscr.io/linuxserver/readarr:0.3.25-nightly container_name: readarr environment: - PUID=1000 From 221ec8ea272af8d799f4ac54ed29a6378cecf73b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 21 Apr 2024 21:41:57 +0300 Subject: [PATCH 04/50] docs: regenerate readme app list (#3166) Co-authored-by: GitHub Co-authored-by: Nicolas Meienberger <47644445+meienberger@users.noreply.github.com> --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 590290d4..84d65aec 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,7 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Fireshare](https://github.com/ShaneIsrael/fireshare) - Self host your media and share with unique links - [Flaresolverr](https://github.com/FlareSolverr/FlareSolverr) - Bypass Cloudflare and DDoS-GuARD. - [flatnotes](https://github.com/Dullage/flatnotes) - A self-hosted, database-less note taking web app +- [Flightlog](https://github.com/perdian/flightlog/) - Flightlog, a web application that keeps track of your personal flight history - [Flowise AI](https://github.com/FlowiseAI/Flowise) - Build LLM Apps Easily - [Forgejo](https://codeberg.org/forgejo/forgejo/) - Beyond coding. We forge. · Lightweight and performant · Guaranteed 100% Free Software - [FreshRSS](https://github.com/FreshRSS/FreshRSS) - A free, self-hostable aggregator… @@ -188,8 +189,10 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Shlink](https://github.com/shlinkio/shlink) - Shlink is a self-hosted URL shortener - [Silverbullet](https://github.com/silverbulletmd/silverbullet) - SilverBullet is a creative space where you collect, create and expand your personal knowledge, while also letting you constantly evolve the tools you use to do so. - [SimpleX SMP](https://github.com/simplex-chat/simplexmq) - A reference implementation of the SimpleX Messaging Protocol for simplex queues over public networks. +- [SLSKD](https://github.com/slskd/slskd) - P2P downloads - [Sonarr](https://github.com/Sonarr/Sonarr) - TV show manager for Usenet and BitTorrent - [Speedtest Tracker](https://github.com/alexjustesen/speedtest-tracker) - Internet performance tracking application. +- [Spoolman](https://github.com/Donkie/Spoolman) - Keep track of your inventory of 3D-printer filament spools - [Sshwifty](https://github.com/nirui/sshwifty) - Web SSH & Telnet (WebSSH & WebTelnet client) - [Stirling-PDF](https://github.com/Frooodle/Stirling-PDF/) - Powerful locally hosted web based PDF manipulation tool. - [Syncthing](https://github.com/syncthing) - Peer-to-peer file synchronization between your devices From 6b2c660e5b373a9740ccd74ceb24c46a1d532a6a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 21 Apr 2024 21:07:11 +0000 Subject: [PATCH 05/50] chore(deps): update lobehub/lobe-chat docker tag to v0.148.4 (#3242) --- apps/lobe-chat/config.json | 4 ++-- apps/lobe-chat/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/lobe-chat/config.json b/apps/lobe-chat/config.json index 2bacf1c9..c9f424d9 100644 --- a/apps/lobe-chat/config.json +++ b/apps/lobe-chat/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "lobe-chat", "description": "LobeChat is an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible (Function Call) plugin system.", - "tipi_version": 104, - "version": "0.148.3", + "tipi_version": 105, + "version": "0.148.4", "categories": [ "ai" ], diff --git a/apps/lobe-chat/docker-compose.yml b/apps/lobe-chat/docker-compose.yml index b88a2081..578fb490 100644 --- a/apps/lobe-chat/docker-compose.yml +++ b/apps/lobe-chat/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.9' services: lobe-chat: container_name: lobe-chat - image: lobehub/lobe-chat:v0.148.3 + image: lobehub/lobe-chat:v0.148.4 environment: - OPENAI_API_KEY=${OPENAI_API_KEY} - OPENAI_PROXY_URL=${OPEANAI_PROXY_URL} From 4be5a58982f2480c29057017b2bac46b3218f5da Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 21 Apr 2024 21:07:21 +0000 Subject: [PATCH 06/50] chore(deps): update dockurr/windows docker tag to v2.15 (#3243) --- apps/windows/config.json | 4 ++-- apps/windows/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/windows/config.json b/apps/windows/config.json index 6b2fe852..b988ef8f 100644 --- a/apps/windows/config.json +++ b/apps/windows/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "windows", "description": "Run windows in docker...because why not?", - "tipi_version": 13, - "version": "2.14", + "tipi_version": 14, + "version": "2.15", "categories": [ "utilities" ], diff --git a/apps/windows/docker-compose.yml b/apps/windows/docker-compose.yml index cec85a45..146b4495 100644 --- a/apps/windows/docker-compose.yml +++ b/apps/windows/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.9" services: windows: container_name: windows - image: dockurr/windows:2.14 + image: dockurr/windows:2.15 restart: unless-stopped devices: - /dev/kvm From 4eb90fbfda19d1eeb04cde18e2c83d2a4082255d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 00:46:47 +0000 Subject: [PATCH 07/50] chore(deps): update frooodle/s-pdf docker tag to v0.23.0 (#3244) --- apps/stirling-pdf/config.json | 4 ++-- apps/stirling-pdf/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/stirling-pdf/config.json b/apps/stirling-pdf/config.json index 0b1a133b..5612139c 100644 --- a/apps/stirling-pdf/config.json +++ b/apps/stirling-pdf/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "stirling-pdf", - "tipi_version": 30, - "version": "0.22.8", + "tipi_version": 31, + "version": "0.23.0", "categories": [ "data", "utilities" diff --git a/apps/stirling-pdf/docker-compose.yml b/apps/stirling-pdf/docker-compose.yml index f2b8c400..4a52d6fe 100644 --- a/apps/stirling-pdf/docker-compose.yml +++ b/apps/stirling-pdf/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.9" services: stirling-pdf: - image: frooodle/s-pdf:0.22.8 + image: frooodle/s-pdf:0.23.0 restart: unless-stopped container_name: stirling-pdf privileged: true From ed4a0cdeeeb52731479d1a2dce36971f66204bda Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 00:46:53 +0000 Subject: [PATCH 08/50] chore(deps): update ghcr.io/advplyr/audiobookshelf docker tag to v2.9.0 (#3245) --- apps/audiobookshelf/config.json | 4 ++-- apps/audiobookshelf/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/audiobookshelf/config.json b/apps/audiobookshelf/config.json index 44cd9c5b..bb9d5a55 100644 --- a/apps/audiobookshelf/config.json +++ b/apps/audiobookshelf/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 13378, "id": "audiobookshelf", - "tipi_version": 13, - "version": "2.8.1", + "tipi_version": 14, + "version": "2.9.0", "categories": [ "books", "media" diff --git a/apps/audiobookshelf/docker-compose.yml b/apps/audiobookshelf/docker-compose.yml index 13480935..ed963a1b 100644 --- a/apps/audiobookshelf/docker-compose.yml +++ b/apps/audiobookshelf/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.7' services: audiobookshelf: container_name: audiobookshelf - image: ghcr.io/advplyr/audiobookshelf:2.8.1 + image: ghcr.io/advplyr/audiobookshelf:2.9.0 restart: unless-stopped ports: - ${APP_PORT}:80 From 6f7b34e55ce11324105182dcb124b33a6e31900a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 07:45:12 +0000 Subject: [PATCH 09/50] chore(deps): update lobehub/lobe-chat docker tag to v0.148.5 (#3246) --- apps/lobe-chat/config.json | 4 ++-- apps/lobe-chat/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/lobe-chat/config.json b/apps/lobe-chat/config.json index c9f424d9..a7eac5ed 100644 --- a/apps/lobe-chat/config.json +++ b/apps/lobe-chat/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "lobe-chat", "description": "LobeChat is an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible (Function Call) plugin system.", - "tipi_version": 105, - "version": "0.148.4", + "tipi_version": 106, + "version": "0.148.5", "categories": [ "ai" ], diff --git a/apps/lobe-chat/docker-compose.yml b/apps/lobe-chat/docker-compose.yml index 578fb490..e07ed624 100644 --- a/apps/lobe-chat/docker-compose.yml +++ b/apps/lobe-chat/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.9' services: lobe-chat: container_name: lobe-chat - image: lobehub/lobe-chat:v0.148.4 + image: lobehub/lobe-chat:v0.148.5 environment: - OPENAI_API_KEY=${OPENAI_API_KEY} - OPENAI_PROXY_URL=${OPEANAI_PROXY_URL} From 658902bda7537f6b02d9a1bfeb0c6fbdea5a50a6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 07:45:18 +0000 Subject: [PATCH 10/50] chore(deps): update 1dev/server docker tag to v10.5.0 (#3247) --- apps/onedev/config.json | 4 ++-- apps/onedev/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/onedev/config.json b/apps/onedev/config.json index 4f662500..5b48f053 100644 --- a/apps/onedev/config.json +++ b/apps/onedev/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "onedev", - "tipi_version": 87, - "version": "10.4.0", + "tipi_version": 88, + "version": "10.5.0", "categories": [ "development" ], diff --git a/apps/onedev/docker-compose.yml b/apps/onedev/docker-compose.yml index 7f623b4f..3df86232 100644 --- a/apps/onedev/docker-compose.yml +++ b/apps/onedev/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: onedev: - image: 1dev/server:10.4.0 + image: 1dev/server:10.5.0 container_name: onedev environment: - hibernate_dialect=io.onedev.server.persistence.PostgreSQLDialect From 4565dcaf75236a586d781faa1c40be4d151bba5c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 14:50:47 +0000 Subject: [PATCH 11/50] chore(deps): update dockurr/windows docker tag to v2.16 (#3249) --- apps/windows/config.json | 4 ++-- apps/windows/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/windows/config.json b/apps/windows/config.json index b988ef8f..62a01345 100644 --- a/apps/windows/config.json +++ b/apps/windows/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "windows", "description": "Run windows in docker...because why not?", - "tipi_version": 14, - "version": "2.15", + "tipi_version": 15, + "version": "2.16", "categories": [ "utilities" ], diff --git a/apps/windows/docker-compose.yml b/apps/windows/docker-compose.yml index 146b4495..a2d81836 100644 --- a/apps/windows/docker-compose.yml +++ b/apps/windows/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.9" services: windows: container_name: windows - image: dockurr/windows:2.15 + image: dockurr/windows:2.16 restart: unless-stopped devices: - /dev/kvm From f0fa4d19557e325266805ea23186a16a059d03dd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 14:50:51 +0000 Subject: [PATCH 12/50] chore(deps): update lobehub/lobe-chat docker tag to v0.148.6 (#3248) --- apps/lobe-chat/config.json | 4 ++-- apps/lobe-chat/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/lobe-chat/config.json b/apps/lobe-chat/config.json index a7eac5ed..79a028fc 100644 --- a/apps/lobe-chat/config.json +++ b/apps/lobe-chat/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "lobe-chat", "description": "LobeChat is an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible (Function Call) plugin system.", - "tipi_version": 106, - "version": "0.148.5", + "tipi_version": 107, + "version": "0.148.6", "categories": [ "ai" ], diff --git a/apps/lobe-chat/docker-compose.yml b/apps/lobe-chat/docker-compose.yml index e07ed624..f03c6396 100644 --- a/apps/lobe-chat/docker-compose.yml +++ b/apps/lobe-chat/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.9' services: lobe-chat: container_name: lobe-chat - image: lobehub/lobe-chat:v0.148.5 + image: lobehub/lobe-chat:v0.148.6 environment: - OPENAI_API_KEY=${OPENAI_API_KEY} - OPENAI_PROXY_URL=${OPEANAI_PROXY_URL} From e678f118ea02059bb6a3ae759fbdf889bc5fe7d8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 16:21:16 +0000 Subject: [PATCH 13/50] chore(deps): update budibase/budibase docker tag to v2.23.11 (#3250) --- apps/budibase/config.json | 4 ++-- apps/budibase/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/budibase/config.json b/apps/budibase/config.json index 197aa71d..d25c28c4 100644 --- a/apps/budibase/config.json +++ b/apps/budibase/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "budibase", - "tipi_version": 126, - "version": "2.23.10", + "tipi_version": 127, + "version": "2.23.11", "categories": [ "development" ], diff --git a/apps/budibase/docker-compose.yml b/apps/budibase/docker-compose.yml index 0ef8b47b..7d7dd1c6 100644 --- a/apps/budibase/docker-compose.yml +++ b/apps/budibase/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.7' services: budibase: - image: budibase/budibase:2.23.10 + image: budibase/budibase:2.23.11 restart: unless-stopped container_name: budibase ports: From 6b6222b96fe89560f9c65d98edbf4fd8c47c361e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 16:21:20 +0000 Subject: [PATCH 14/50] chore(deps): update gladysassistant/gladys docker tag to v4.39.0 (#3251) --- apps/gladys/config.json | 4 ++-- apps/gladys/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/gladys/config.json b/apps/gladys/config.json index 61ccc879..388f90a5 100644 --- a/apps/gladys/config.json +++ b/apps/gladys/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": false, "id": "gladys", - "tipi_version": 32, - "version": "4.38.4", + "tipi_version": 33, + "version": "4.39.0", "categories": [ "automation" ], diff --git a/apps/gladys/docker-compose.yml b/apps/gladys/docker-compose.yml index 85790763..e1d967f5 100644 --- a/apps/gladys/docker-compose.yml +++ b/apps/gladys/docker-compose.yml @@ -3,7 +3,7 @@ version: '3' services: gladys: container_name: gladys - image: gladysassistant/gladys:v4.38.4 + image: gladysassistant/gladys:v4.39.0 privileged: true restart: on-failure stop_grace_period: 1m From 5029c1d86f076eedd3070a3971def7c459b2bc69 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 18:00:34 +0000 Subject: [PATCH 15/50] chore(deps): update libretranslate/libretranslate docker tag to v1.5.7 (#3252) --- apps/libretranslate/config.json | 4 ++-- apps/libretranslate/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/libretranslate/config.json b/apps/libretranslate/config.json index ecfab7ed..3d1b12e1 100644 --- a/apps/libretranslate/config.json +++ b/apps/libretranslate/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8121, "id": "libretranslate", - "tipi_version": 17, - "version": "1.5.6", + "tipi_version": 18, + "version": "1.5.7", "categories": [ "utilities" ], diff --git a/apps/libretranslate/docker-compose.yml b/apps/libretranslate/docker-compose.yml index f59a68e3..6b8d3406 100644 --- a/apps/libretranslate/docker-compose.yml +++ b/apps/libretranslate/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: libretranslate: container_name: libretranslate - image: libretranslate/libretranslate:v1.5.6 + image: libretranslate/libretranslate:v1.5.7 dns: - ${DNS_IP} ports: From 21d62782ff0dfe612920c1f1d0e0e08e2127a819 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 21:54:07 +0000 Subject: [PATCH 16/50] chore(deps): update jvmilazz0/kavita docker tag to v0.8.1 (#3253) --- apps/kavita/config.json | 4 ++-- apps/kavita/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/kavita/config.json b/apps/kavita/config.json index e6bc4125..03b10bc9 100644 --- a/apps/kavita/config.json +++ b/apps/kavita/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "kavita", - "tipi_version": 13, - "version": "0.8.0", + "tipi_version": 14, + "version": "0.8.1", "categories": [ "media" ], diff --git a/apps/kavita/docker-compose.yml b/apps/kavita/docker-compose.yml index 032c8ce7..42b46090 100644 --- a/apps/kavita/docker-compose.yml +++ b/apps/kavita/docker-compose.yml @@ -3,7 +3,7 @@ version: "3.9" services: kavita: container_name: kavita - image: jvmilazz0/kavita:0.8.0 + image: jvmilazz0/kavita:0.8.1 ports: - ${APP_PORT}:5000 volumes: From cf37a5eb230a6f6dafb093c98b9be759e784e4b3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 21:54:14 +0000 Subject: [PATCH 17/50] chore(deps): update ghcr.io/plankanban/planka docker tag to v1.17.0 (#3254) --- apps/planka/config.json | 4 ++-- apps/planka/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/planka/config.json b/apps/planka/config.json index 326b7f35..f7e2a16e 100644 --- a/apps/planka/config.json +++ b/apps/planka/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "planka", - "tipi_version": 18, - "version": "1.16.4", + "tipi_version": 19, + "version": "1.17.0", "categories": [ "development" ], diff --git a/apps/planka/docker-compose.yml b/apps/planka/docker-compose.yml index f9306254..e4b470c2 100644 --- a/apps/planka/docker-compose.yml +++ b/apps/planka/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: planka: - image: ghcr.io/plankanban/planka:1.16.4 + image: ghcr.io/plankanban/planka:1.17.0 container_name: planka command: > bash -c From 284c085e76fe5ad86eae155c40f0fb5cd8ccd372 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Apr 2024 01:50:23 +0000 Subject: [PATCH 18/50] chore(deps): update activepieces/activepieces docker tag to v0.25.0 (#3255) --- apps/activepieces/config.json | 4 ++-- apps/activepieces/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/activepieces/config.json b/apps/activepieces/config.json index 20d1a003..32590c8b 100644 --- a/apps/activepieces/config.json +++ b/apps/activepieces/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "activepieces", "description": "Your friendliest open source all-in-one automation tool.", - "tipi_version": 22, - "version": "0.24.1", + "tipi_version": 23, + "version": "0.25.0", "categories": [ "automation" ], diff --git a/apps/activepieces/docker-compose.yml b/apps/activepieces/docker-compose.yml index bdb79ab0..408ea591 100644 --- a/apps/activepieces/docker-compose.yml +++ b/apps/activepieces/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.7' services: activepieces: - image: activepieces/activepieces:0.24.1 + image: activepieces/activepieces:0.25.0 container_name: activepieces restart: unless-stopped ports: From 2022448eb774f47aeb860b1eefe249c4e64735b9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Apr 2024 08:07:10 +0000 Subject: [PATCH 19/50] chore(deps): update halohub/halo docker tag to v2.14.1 (#3256) --- apps/halo/config.json | 4 ++-- apps/halo/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/halo/config.json b/apps/halo/config.json index 2da83739..372fa1f4 100644 --- a/apps/halo/config.json +++ b/apps/halo/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8092, "id": "halo", - "tipi_version": 24, - "version": "2.14.0", + "tipi_version": 25, + "version": "2.14.1", "description": "Halo is a powerful and easy-to-use open source website building tool.", "short_desc": "Halo - Open source website building tool.", "categories": [ diff --git a/apps/halo/docker-compose.yml b/apps/halo/docker-compose.yml index 8c6e9562..ac53b7af 100644 --- a/apps/halo/docker-compose.yml +++ b/apps/halo/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: halo: - image: halohub/halo:2.14.0 + image: halohub/halo:2.14.1 container_name: halo restart: unless-stopped depends_on: From 7bad161d17dd3a166a698b8ca814bb2962a903c6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Apr 2024 08:07:14 +0000 Subject: [PATCH 20/50] chore(deps): update lobehub/lobe-chat docker tag to v0.148.8 (#3257) --- apps/lobe-chat/config.json | 4 ++-- apps/lobe-chat/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/lobe-chat/config.json b/apps/lobe-chat/config.json index 79a028fc..68a7dc8d 100644 --- a/apps/lobe-chat/config.json +++ b/apps/lobe-chat/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "lobe-chat", "description": "LobeChat is an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible (Function Call) plugin system.", - "tipi_version": 107, - "version": "0.148.6", + "tipi_version": 108, + "version": "0.148.8", "categories": [ "ai" ], diff --git a/apps/lobe-chat/docker-compose.yml b/apps/lobe-chat/docker-compose.yml index f03c6396..7f1365ff 100644 --- a/apps/lobe-chat/docker-compose.yml +++ b/apps/lobe-chat/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.9' services: lobe-chat: container_name: lobe-chat - image: lobehub/lobe-chat:v0.148.6 + image: lobehub/lobe-chat:v0.148.8 environment: - OPENAI_API_KEY=${OPENAI_API_KEY} - OPENAI_PROXY_URL=${OPEANAI_PROXY_URL} From bb85594efd876e3a34a883e3ad328ab62033fec4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Apr 2024 11:51:20 +0000 Subject: [PATCH 21/50] chore(deps): update activepieces/activepieces docker tag to v0.25.1 (#3259) --- apps/activepieces/config.json | 4 ++-- apps/activepieces/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/activepieces/config.json b/apps/activepieces/config.json index 32590c8b..58a27eff 100644 --- a/apps/activepieces/config.json +++ b/apps/activepieces/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "activepieces", "description": "Your friendliest open source all-in-one automation tool.", - "tipi_version": 23, - "version": "0.25.0", + "tipi_version": 24, + "version": "0.25.1", "categories": [ "automation" ], diff --git a/apps/activepieces/docker-compose.yml b/apps/activepieces/docker-compose.yml index 408ea591..bfc355a2 100644 --- a/apps/activepieces/docker-compose.yml +++ b/apps/activepieces/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.7' services: activepieces: - image: activepieces/activepieces:0.25.0 + image: activepieces/activepieces:0.25.1 container_name: activepieces restart: unless-stopped ports: From 0485a26b3d1f52e86749713f15b4525a89cce06f Mon Sep 17 00:00:00 2001 From: Adelina Date: Tue, 23 Apr 2024 16:53:08 +0200 Subject: [PATCH 22/50] add: Cheshire Cat AI app (#3073) * add: Cheshire Cat AI app meow * fix(cheshire-cat-ai): fix some small config options --------- Co-authored-by: Stavros --- apps/cheshire-cat-ai/config.json | 23 ++++++ apps/cheshire-cat-ai/docker-compose.yml | 45 +++++++++++ apps/cheshire-cat-ai/metadata/description.md | 78 +++++++++++++++++++ apps/cheshire-cat-ai/metadata/logo.jpg | Bin 0 -> 18860 bytes 4 files changed, 146 insertions(+) create mode 100644 apps/cheshire-cat-ai/config.json create mode 100644 apps/cheshire-cat-ai/docker-compose.yml create mode 100644 apps/cheshire-cat-ai/metadata/description.md create mode 100644 apps/cheshire-cat-ai/metadata/logo.jpg diff --git a/apps/cheshire-cat-ai/config.json b/apps/cheshire-cat-ai/config.json new file mode 100644 index 00000000..e829f767 --- /dev/null +++ b/apps/cheshire-cat-ai/config.json @@ -0,0 +1,23 @@ +{ + "name": "Cheshire Cat AI", + "available": true, + "port": 1865, + "exposable": true, + "id": "cheshire-cat-ai", + "description": "The Cheshire Cat is an open-source, hackable and production-ready framework that allows developing intelligent personal AI assistant agents on top of Large Language Models (LLM).", + "tipi_version": 1, + "version": "1.5.3", + "categories": [ + "ai" + ], + "short_desc": "A production-ready AI framework to develop AI agents.", + "author": "pieroit", + "source": "https://github.com/cheshire-cat-ai/core", + "website": "https://cheshirecat.ai", + "form_fields": [], + "url_suffix": "/admin", + "supported_architectures": [ + "amd64", + "arm64" + ] + } \ No newline at end of file diff --git a/apps/cheshire-cat-ai/docker-compose.yml b/apps/cheshire-cat-ai/docker-compose.yml new file mode 100644 index 00000000..488b0d82 --- /dev/null +++ b/apps/cheshire-cat-ai/docker-compose.yml @@ -0,0 +1,45 @@ +version: '3.7' + +services: + cheshire-cat-ai: + networks: + - tipi_main_network + image: ghcr.io/cheshire-cat-ai/core:1.5.3 + container_name: cheshire-cat-ai + ports: + - ${APP_PORT}:80 + environment: + - PYTHONUNBUFFERED=1 + - WATCHFILES_FORCE_POLLING=true + volumes: + - ${APP_DATA_DIR}/data/static:/app/cat/static + - ${APP_DATA_DIR}/data/plugins:/app/cat/plugins + - ${APP_DATA_DIR}/data/data:/app/cat/data + labels: + # Main + traefik.enable: true + traefik.http.middlewares.cheshire-web-redirect.redirectscheme.scheme: https + traefik.http.services.cheshire.loadbalancer.server.port: 1865 + # Web + traefik.http.routers.cheshire-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.cheshire-insecure.entrypoints: web + traefik.http.routers.cheshire-insecure.service: cheshire-cat-ai + traefik.http.routers.cheshire-insecure.middlewares: cheshire-cat-ai-web-redirect + # Websecure + traefik.http.routers.cheshire.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.cheshire.entrypoints: websecure + traefik.http.routers.cheshire.service: cheshire-cat-ai + traefik.http.routers.cheshire.tls.certresolver: myresolver + # Local domain + traefik.http.routers.cheshire-local-insecure.rule: Host(`cheshire-cat-ai.${LOCAL_DOMAIN}`) + traefik.http.routers.cheshire-local-insecure.entrypoints: web + traefik.http.routers.cheshire-local-insecure.service: cheshire-cat-ai + traefik.http.routers.cheshire-local-insecure.middlewares: cheshire-cat-ai-web-redirect + # Local domain secure + traefik.http.routers.cheshire-local.rule: Host(`cheshire-cat-ai.${LOCAL_DOMAIN}`) + traefik.http.routers.cheshire-local.entrypoints: websecure + traefik.http.routers.cheshire-local.service: cheshire-cat-ai + traefik.http.routers.cheshire-local.tls: true +networks: + tipi-main-network: + driver: bridge \ No newline at end of file diff --git a/apps/cheshire-cat-ai/metadata/description.md b/apps/cheshire-cat-ai/metadata/description.md new file mode 100644 index 00000000..319f1c24 --- /dev/null +++ b/apps/cheshire-cat-ai/metadata/description.md @@ -0,0 +1,78 @@ + + +
+
+

Cheshire-Cat (Stregatto)

+
+ + GitHub Repo stars + + + chat on Discord + + GitHub issues + + + GitHub tag (with filter) + + GitHub top language + +

+ Wikipedia picture of the Cheshire Cat +

+ +
+ +## Production-ready AI assistant framework + +The Cheshire Cat is a framework to build custom AIs on top of any language model. +If you have ever used systems like WordPress or Django to build web apps, imagine the Cat as a similar tool, but specific for AI. + +## Docs and Resources + +- [Official Documentation](https://cheshire-cat-ai.github.io/docs/) +- [Discord Server](https://discord.gg/bHX5sNFCYU) +- [Website](https://cheshirecat.ai/) +- [YouTube tutorial - How to install](https://youtu.be/Rvx19TZBCrw) +- [Tutorial - Write your first plugin](https://cheshirecat.ai/write-your-first-plugin/) + +## Why using the Cat + +- ⚡️ API first, so you get a microservice to easily add a conversational layer to your app +- 🐘 Remembers conversations and documents and uses them in conversation +- 🚀 Extensible via plugins (public plugin registry + private plugins allowed) +- 🎚 Event callbacks, function calling (tools), conversational forms +- 🏛 Easy to use admin panel (chat, visualize memory and plugins, adjust settings) +- 🌍 Supports any language model (works with OpenAI, Google, Ollama, HuggingFace, custom services) +- 🐋 Production-ready - 100% [dockerized](https://docs.docker.com/get-docker/) +- 👩‍👧‍👦 Active [Discord community](https://discord.gg/bHX5sNFCYU) and easy to understand [docs](https://cheshire-cat-ai.github.io/docs/) + +We are committed to openness, privacy and creativity, we want to bring AI to the long tail. To learn more about our vision and values, read the [Code of Ethics](https://cheshirecat.ai/code-of-ethics/). + + +## Roadmap & Contributing + +The Detailed roadmap is [here](https://github.com/cheshire-cat-ai/core/blob/main/readme/ROADMAP.md). +Send your pull request to the `develop` branch. Here is a [full guide to contributing](https://github.com/cheshire-cat-ai/core/blob/main/readme/CONTRIBUTING.md). + +Join our [community on Discord](https://discord.gg/bHX5sNFCYU) and give the project a star ⭐! +Thanks again!🙏 + +## Which way to go? + +

(back to top)

+ +

+ Wikipedia picture of the Cheshire Cat +

+ +``` +"Would you tell me, please, which way I ought to go from here?" +"That depends a good deal on where you want to get to," said the Cat. +"I don't much care where--" said Alice. +"Then it doesn't matter which way you go," said the Cat. + +(Alice's Adventures in Wonderland - Lewis Carroll) + +``` diff --git a/apps/cheshire-cat-ai/metadata/logo.jpg b/apps/cheshire-cat-ai/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..de860cb83edaaadffdd282c11f0e99e05e9ade51 GIT binary patch literal 18860 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 Date: Tue, 23 Apr 2024 15:41:22 +0000 Subject: [PATCH 23/50] chore(deps): update ghcr.io/plankanban/planka docker tag to v1.17.1 (#3262) --- apps/planka/config.json | 4 ++-- apps/planka/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/planka/config.json b/apps/planka/config.json index f7e2a16e..ecc4ee00 100644 --- a/apps/planka/config.json +++ b/apps/planka/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "planka", - "tipi_version": 19, - "version": "1.17.0", + "tipi_version": 20, + "version": "1.17.1", "categories": [ "development" ], diff --git a/apps/planka/docker-compose.yml b/apps/planka/docker-compose.yml index e4b470c2..46eee00b 100644 --- a/apps/planka/docker-compose.yml +++ b/apps/planka/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: planka: - image: ghcr.io/plankanban/planka:1.17.0 + image: ghcr.io/plankanban/planka:1.17.1 container_name: planka command: > bash -c From 079149d1410b19051120c1b0bd1c4a98e6c466c3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Apr 2024 19:34:18 +0000 Subject: [PATCH 24/50] chore(deps): update lobehub/lobe-chat docker tag to v0.148.9 (#3264) --- apps/lobe-chat/config.json | 4 ++-- apps/lobe-chat/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/lobe-chat/config.json b/apps/lobe-chat/config.json index 68a7dc8d..2e99b201 100644 --- a/apps/lobe-chat/config.json +++ b/apps/lobe-chat/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "lobe-chat", "description": "LobeChat is an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible (Function Call) plugin system.", - "tipi_version": 108, - "version": "0.148.8", + "tipi_version": 109, + "version": "0.148.9", "categories": [ "ai" ], diff --git a/apps/lobe-chat/docker-compose.yml b/apps/lobe-chat/docker-compose.yml index 7f1365ff..3647f101 100644 --- a/apps/lobe-chat/docker-compose.yml +++ b/apps/lobe-chat/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.9' services: lobe-chat: container_name: lobe-chat - image: lobehub/lobe-chat:v0.148.8 + image: lobehub/lobe-chat:v0.148.9 environment: - OPENAI_API_KEY=${OPENAI_API_KEY} - OPENAI_PROXY_URL=${OPEANAI_PROXY_URL} From 732827a54c6b66cc53be879f5d9649d97bebcd80 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Apr 2024 19:36:34 +0000 Subject: [PATCH 25/50] chore(deps): update ghostfolio/ghostfolio docker tag to v2.76.0 (#3265) --- apps/ghostfolio/config.json | 4 ++-- apps/ghostfolio/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/ghostfolio/config.json b/apps/ghostfolio/config.json index 2eed9503..fdbd5471 100644 --- a/apps/ghostfolio/config.json +++ b/apps/ghostfolio/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "ghostfolio", - "tipi_version": 76, - "version": "2.75.1", + "tipi_version": 77, + "version": "2.76.0", "categories": [ "finance" ], diff --git a/apps/ghostfolio/docker-compose.yml b/apps/ghostfolio/docker-compose.yml index 7b9a8e10..e1c108e4 100644 --- a/apps/ghostfolio/docker-compose.yml +++ b/apps/ghostfolio/docker-compose.yml @@ -3,7 +3,7 @@ version: "3.9" services: ghostfolio: container_name: ghostfolio - image: ghostfolio/ghostfolio:2.75.1 + image: ghostfolio/ghostfolio:2.76.0 restart: unless-stopped ports: - ${APP_PORT}:3333 From 59be968a6e19fe89196849f64a1c071f0477eb25 Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Tue, 23 Apr 2024 22:12:50 +0200 Subject: [PATCH 26/50] fix(archivebox): downgrade from bugged version 0.7.4 --- apps/archivebox/config.json | 13 ++++--------- apps/archivebox/docker-compose.yml | 2 +- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/apps/archivebox/config.json b/apps/archivebox/config.json index 4b12a8ba..29112310 100755 --- a/apps/archivebox/config.json +++ b/apps/archivebox/config.json @@ -5,11 +5,9 @@ "exposable": true, "port": 8015, "id": "archivebox", - "tipi_version": 2, - "version": "0.7.4", - "categories": [ - "media" - ], + "tipi_version": 3, + "version": "0.7.2", + "categories": ["media"], "description": "ArchiveBox is a powerful, self-hosted internet archiving solution to collect, save, and view websites offline.", "short_desc": "Open source self-hosted web archiving.", "author": "archivebox", @@ -33,8 +31,5 @@ "env_variable": "ARCHIVEBOX_PASSWORD" } ], - "supported_architectures": [ - "arm64", - "amd64" - ] + "supported_architectures": ["arm64", "amd64"] } diff --git a/apps/archivebox/docker-compose.yml b/apps/archivebox/docker-compose.yml index 0b626778..e2774ae7 100755 --- a/apps/archivebox/docker-compose.yml +++ b/apps/archivebox/docker-compose.yml @@ -1,6 +1,6 @@ services: archivebox: - image: archivebox/archivebox:0.7.4 + image: archivebox/archivebox:0.7.2 restart: unless-stopped container_name: archivebox command: server --quick-init 0.0.0.0:8015 From b8ffee6b4f35096c75b42ee0d31fcbda8ea3ef7e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Apr 2024 22:17:14 +0200 Subject: [PATCH 27/50] chore(deps): bump actions/checkout from 4.1.2 to 4.1.3 (#3220) Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.2 to 4.1.3. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4.1.2...v4.1.3) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/readme-generator.yml | 2 +- .github/workflows/renovate-ci.yml | 6 +++--- .github/workflows/renovate.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 605cffa6..8764cf67 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.1.3 - name: Install Node.js uses: actions/setup-node@v4 diff --git a/.github/workflows/readme-generator.yml b/.github/workflows/readme-generator.yml index bcb8cac3..a29bade1 100644 --- a/.github/workflows/readme-generator.yml +++ b/.github/workflows/readme-generator.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.1.3 - name: Install Bun uses: oven-sh/setup-bun@v1 diff --git a/.github/workflows/renovate-ci.yml b/.github/workflows/renovate-ci.yml index c6085914..15c69f88 100644 --- a/.github/workflows/renovate-ci.yml +++ b/.github/workflows/renovate-ci.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.1.3 - name: Get last commit message id: get-last-commit-message @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.1.3 with: fetch-depth: 0 token: ${{ secrets.PERSONAL_TOKEN }} @@ -58,7 +58,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.1.3 - name: Install Node.js uses: actions/setup-node@v4 diff --git a/.github/workflows/renovate.yml b/.github/workflows/renovate.yml index 6bd5b2cb..f16db7d9 100644 --- a/.github/workflows/renovate.yml +++ b/.github/workflows/renovate.yml @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.1.3 - name: Self-hosted Renovate uses: renovatebot/github-action@v40.1.9 with: From 35c997dd17042de17285ad6904ce04a0db13f7fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Apr 2024 22:17:30 +0200 Subject: [PATCH 28/50] chore(deps-dev): bump eslint-plugin-json-schema-validator (#3022) Bumps [eslint-plugin-json-schema-validator](https://github.com/ota-meshi/eslint-plugin-json-schema-validator) from 4.8.3 to 5.1.0. - [Release notes](https://github.com/ota-meshi/eslint-plugin-json-schema-validator/releases) - [Changelog](https://github.com/ota-meshi/eslint-plugin-json-schema-validator/blob/main/CHANGELOG.md) - [Commits](https://github.com/ota-meshi/eslint-plugin-json-schema-validator/compare/v4.8.3...v5.1.0) --- updated-dependencies: - dependency-name: eslint-plugin-json-schema-validator dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 45 ++++++++------------------------------------- 2 files changed, 9 insertions(+), 38 deletions(-) diff --git a/package.json b/package.json index bc01723b..ff81ac24 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "@types/semver": "^7.5.8", "commitizen": "^4.3.0", "eslint": "^8.57.0", - "eslint-plugin-json-schema-validator": "^4.8.3", + "eslint-plugin-json-schema-validator": "^5.1.0", "eslint-plugin-jsonc": "^2.15.1", "husky": "^9.0.11", "jest": "^28.1.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 49a1b14b..5146a7e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,8 +33,8 @@ devDependencies: specifier: ^8.57.0 version: 8.57.0 eslint-plugin-json-schema-validator: - specifier: ^4.8.3 - version: 4.8.3(eslint@8.57.0) + specifier: ^5.1.0 + version: 5.1.0(eslint@8.57.0) eslint-plugin-jsonc: specifier: ^2.15.1 version: 2.15.1(eslint@8.57.0) @@ -1080,15 +1080,6 @@ packages: uri-js: 4.4.1 dev: true - /ajv@8.11.0: - resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - dev: true - /ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} dependencies: @@ -1700,16 +1691,6 @@ packages: engines: {node: '>=10'} dev: true - /eslint-compat-utils@0.4.1(eslint@8.57.0): - resolution: {integrity: sha512-5N7ZaJG5pZxUeNNJfUchurLVrunD1xJvyg5kYOIVF8kg1f3ajTikmAu/5fZ9w100omNPOoMjngRszh/Q/uFGMg==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' - dependencies: - eslint: 8.57.0 - semver: 7.6.0 - dev: true - /eslint-compat-utils@0.5.0(eslint@8.57.0): resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} engines: {node: '>=12'} @@ -1720,19 +1701,19 @@ packages: semver: 7.6.0 dev: true - /eslint-plugin-json-schema-validator@4.8.3(eslint@8.57.0): - resolution: {integrity: sha512-F4S6Aw7l/9NzB8E0CAbjiSlXWqDiK3rIiw0I+Jdp+qr/wN1yTg7HkJgeWX4mNnlDMDzydymYy2uuKmNaWUV/hA==} + /eslint-plugin-json-schema-validator@5.1.0(eslint@8.57.0): + resolution: {integrity: sha512-ZmVyxRIjm58oqe2kTuy90PpmZPrrKvOjRPXKzq8WCgRgAkidCgm5X8domL2KSfadZ3QFAmifMgGTcVNhZ5ez2g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - ajv: 8.11.0 + ajv: 8.12.0 debug: 4.3.4 eslint: 8.57.0 - eslint-compat-utils: 0.4.1(eslint@8.57.0) + eslint-compat-utils: 0.5.0(eslint@8.57.0) json-schema-migrate: 2.0.0 - jsonc-eslint-parser: 2.1.0 + jsonc-eslint-parser: 2.4.0 minimatch: 8.0.4 synckit: 0.9.0 toml-eslint-parser: 0.9.3 @@ -2916,7 +2897,7 @@ packages: /json-schema-migrate@2.0.0: resolution: {integrity: sha512-r38SVTtojDRp4eD6WsCqiE0eNDt4v1WalBXb9cyZYw9ai5cGtBwzRNWjHzJl38w6TxFkXAIA7h+fyX3tnrAFhQ==} dependencies: - ajv: 8.11.0 + ajv: 8.12.0 dev: true /json-schema-traverse@0.4.1: @@ -2937,16 +2918,6 @@ packages: hasBin: true dev: true - /jsonc-eslint-parser@2.1.0: - resolution: {integrity: sha512-qCRJWlbP2v6HbmKW7R3lFbeiVWHo+oMJ0j+MizwvauqnCV/EvtAeEeuCgoc/ErtsuoKgYB8U4Ih8AxJbXoE6/g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.11.3 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - semver: 7.6.0 - dev: true - /jsonc-eslint-parser@2.4.0: resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} From 30b18e262e6a3d500624914809939be621ea08c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Apr 2024 22:17:49 +0200 Subject: [PATCH 29/50] chore(deps-dev): bump the minor-patch-dev group with 2 updates (#3263) Bumps the minor-patch-dev group with 2 updates: [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) and [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional). Updates `@commitlint/cli` from 19.2.1 to 19.3.0 - [Release notes](https://github.com/conventional-changelog/commitlint/releases) - [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md) - [Commits](https://github.com/conventional-changelog/commitlint/commits/v19.3.0/@commitlint/cli) Updates `@commitlint/config-conventional` from 19.1.0 to 19.2.2 - [Release notes](https://github.com/conventional-changelog/commitlint/releases) - [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md) - [Commits](https://github.com/conventional-changelog/commitlint/commits/v19.2.2/@commitlint/config-conventional) --- updated-dependencies: - dependency-name: "@commitlint/cli" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch-dev - dependency-name: "@commitlint/config-conventional" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch-dev ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 4 +-- pnpm-lock.yaml | 71 +++++++++++++++++++++++++++----------------------- 2 files changed, 40 insertions(+), 35 deletions(-) diff --git a/package.json b/package.json index ff81ac24..a03e8ee7 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,8 @@ }, "homepage": "https://github.com/meienberger/runtipi-appstore#readme", "devDependencies": { - "@commitlint/cli": "^19.2.1", - "@commitlint/config-conventional": "^19.1.0", + "@commitlint/cli": "^19.3.0", + "@commitlint/config-conventional": "^19.2.2", "@commitlint/cz-commitlint": "^19.2.0", "@types/jest": "^28.1.6", "@types/js-yaml": "^4.0.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5146a7e3..258ec0bc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,14 +6,14 @@ settings: devDependencies: '@commitlint/cli': - specifier: ^19.2.1 - version: 19.2.1(@types/node@20.12.7)(typescript@5.4.5) + specifier: ^19.3.0 + version: 19.3.0(@types/node@20.12.7)(typescript@5.4.5) '@commitlint/config-conventional': - specifier: ^19.1.0 - version: 19.1.0 + specifier: ^19.2.2 + version: 19.2.2 '@commitlint/cz-commitlint': specifier: ^19.2.0 - version: 19.2.0(@types/node@20.12.7)(commitizen@4.3.0)(inquirer@9.2.17)(typescript@5.4.5) + version: 19.2.0(@types/node@20.12.7)(commitizen@4.3.0)(inquirer@9.2.19)(typescript@5.4.5) '@types/jest': specifier: ^28.1.6 version: 28.1.6 @@ -75,11 +75,11 @@ packages: '@jridgewell/trace-mapping': 0.3.14 dev: true - /@babel/code-frame@7.24.1: - resolution: {integrity: sha512-bC49z4spJQR3j8vFtJBLqzyzFV0ciuL5HYX7qfSl3KEqeMVV+eTquRvmXxpvB0AMubRrvv7y5DILiLLPi57Ewg==} + /@babel/code-frame@7.24.2: + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.24.1 + '@babel/highlight': 7.24.2 picocolors: 1.0.0 dev: true @@ -93,7 +93,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.24.1 + '@babel/code-frame': 7.24.2 '@babel/generator': 7.18.9 '@babel/helper-compilation-targets': 7.18.9(@babel/core@7.18.9) '@babel/helper-module-transforms': 7.18.9 @@ -216,8 +216,8 @@ packages: - supports-color dev: true - /@babel/highlight@7.24.1: - resolution: {integrity: sha512-EPmDPxidWe/Ex+HTFINpvXdPHRmgSF3T8hGvzondYjmgzTQ/0EbLpSxyt+w3zzlYSk9cNBQNF9k0dT5Z2NiBjw==} + /@babel/highlight@7.24.2: + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.22.20 @@ -357,7 +357,7 @@ packages: resolution: {integrity: sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.24.1 + '@babel/code-frame': 7.24.2 '@babel/parser': 7.18.9 '@babel/types': 7.18.9 dev: true @@ -366,7 +366,7 @@ packages: resolution: {integrity: sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.24.1 + '@babel/code-frame': 7.24.2 '@babel/generator': 7.18.9 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.18.9 @@ -392,13 +392,13 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@commitlint/cli@19.2.1(@types/node@20.12.7)(typescript@5.4.5): - resolution: {integrity: sha512-cbkYUJsLqRomccNxvoJTyv5yn0bSy05BBizVyIcLACkRbVUqYorC351Diw/XFSWC/GtpwiwT2eOvQgFZa374bg==} + /@commitlint/cli@19.3.0(@types/node@20.12.7)(typescript@5.4.5): + resolution: {integrity: sha512-LgYWOwuDR7BSTQ9OLZ12m7F/qhNY+NpAyPBgo4YNMkACE7lGuUnuQq1yi9hz1KA4+3VqpOYl8H1rY/LYK43v7g==} engines: {node: '>=v18'} hasBin: true dependencies: - '@commitlint/format': 19.0.3 - '@commitlint/lint': 19.1.0 + '@commitlint/format': 19.3.0 + '@commitlint/lint': 19.2.2 '@commitlint/load': 19.2.0(@types/node@20.12.7)(typescript@5.4.5) '@commitlint/read': 19.2.1 '@commitlint/types': 19.0.3 @@ -409,8 +409,8 @@ packages: - typescript dev: true - /@commitlint/config-conventional@19.1.0: - resolution: {integrity: sha512-KIKD2xrp6Uuk+dcZVj3++MlzIr/Su6zLE8crEDQCZNvWHNQSeeGbzOlNtsR32TUy6H3JbP7nWgduAHCaiGQ6EA==} + /@commitlint/config-conventional@19.2.2: + resolution: {integrity: sha512-mLXjsxUVLYEGgzbxbxicGPggDuyWNkf25Ht23owXIH+zV2pv1eJuzLK3t1gDY5Gp6pxdE60jZnWUY5cvgL3ufw==} engines: {node: '>=v18'} dependencies: '@commitlint/types': 19.0.3 @@ -425,7 +425,7 @@ packages: ajv: 8.12.0 dev: true - /@commitlint/cz-commitlint@19.2.0(@types/node@20.12.7)(commitizen@4.3.0)(inquirer@9.2.17)(typescript@5.4.5): + /@commitlint/cz-commitlint@19.2.0(@types/node@20.12.7)(commitizen@4.3.0)(inquirer@9.2.19)(typescript@5.4.5): resolution: {integrity: sha512-kudzHMY9/GxflGyAWMiisiBq2UkyQL1D1eWjGKoC66qQ+5jxRYeDaiVwTdPxYMnmehftNcpksZATDYKqdPP0Wg==} engines: {node: '>=v18'} peerDependencies: @@ -437,7 +437,7 @@ packages: '@commitlint/types': 19.0.3 chalk: 5.3.0 commitizen: 4.3.0(@types/node@20.12.7)(typescript@5.4.5) - inquirer: 9.2.17 + inquirer: 9.2.19 lodash.isplainobject: 4.0.6 word-wrap: 1.2.5 transitivePeerDependencies: @@ -462,27 +462,27 @@ packages: engines: {node: '>=v18'} dev: true - /@commitlint/format@19.0.3: - resolution: {integrity: sha512-QjjyGyoiVWzx1f5xOteKHNLFyhyweVifMgopozSgx1fGNrGV8+wp7k6n1t6StHdJ6maQJ+UUtO2TcEiBFRyR6Q==} + /@commitlint/format@19.3.0: + resolution: {integrity: sha512-luguk5/aF68HiF4H23ACAfk8qS8AHxl4LLN5oxPc24H+2+JRPsNr1OS3Gaea0CrH7PKhArBMKBz5RX9sA5NtTg==} engines: {node: '>=v18'} dependencies: '@commitlint/types': 19.0.3 chalk: 5.3.0 dev: true - /@commitlint/is-ignored@19.0.3: - resolution: {integrity: sha512-MqDrxJaRSVSzCbPsV6iOKG/Lt52Y+PVwFVexqImmYYFhe51iVJjK2hRhOG2jUAGiUHk4jpdFr0cZPzcBkSzXDQ==} + /@commitlint/is-ignored@19.2.2: + resolution: {integrity: sha512-eNX54oXMVxncORywF4ZPFtJoBm3Tvp111tg1xf4zWXGfhBPKpfKG6R+G3G4v5CPlRROXpAOpQ3HMhA9n1Tck1g==} engines: {node: '>=v18'} dependencies: '@commitlint/types': 19.0.3 semver: 7.6.0 dev: true - /@commitlint/lint@19.1.0: - resolution: {integrity: sha512-ESjaBmL/9cxm+eePyEr6SFlBUIYlYpI80n+Ltm7IA3MAcrmiP05UMhJdAD66sO8jvo8O4xdGn/1Mt2G5VzfZKw==} + /@commitlint/lint@19.2.2: + resolution: {integrity: sha512-xrzMmz4JqwGyKQKTpFzlN0dx0TAiT7Ran1fqEBgEmEj+PU98crOFtysJgY+QdeSagx6EDRigQIXJVnfrI0ratA==} engines: {node: '>=v18'} dependencies: - '@commitlint/is-ignored': 19.0.3 + '@commitlint/is-ignored': 19.2.2 '@commitlint/parse': 19.0.3 '@commitlint/rules': 19.0.3 '@commitlint/types': 19.0.3 @@ -632,6 +632,11 @@ packages: resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} dev: true + /@inquirer/figures@1.0.1: + resolution: {integrity: sha512-mtup3wVKia3ZwULPHcbs4Mor8Voi+iIXEWD7wCNbIO6lYR62oPCTQyrddi5OMYVXHzeCSoneZwJuS8sBvlEwDw==} + engines: {node: '>=18'} + dev: true + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -2300,17 +2305,17 @@ packages: wrap-ansi: 7.0.0 dev: true - /inquirer@9.2.17: - resolution: {integrity: sha512-Vr3Ia2ud5sGnioURkE69endl4SkeJcMzTF6SosKcX5GALJfId7C+JvO5ZZb6y1LOXnEofCPbwzoQ1q0e8Gaduw==} + /inquirer@9.2.19: + resolution: {integrity: sha512-WpxOT71HGsFya6/mj5PUue0sWwbpbiPfAR+332zLj/siB0QA1PZM8v3GepegFV1Op189UxHUCF6y8AySdtOMVA==} engines: {node: '>=18'} dependencies: + '@inquirer/figures': 1.0.1 '@ljharb/through': 2.3.13 ansi-escapes: 4.3.2 chalk: 5.3.0 cli-cursor: 3.1.0 cli-width: 4.1.0 external-editor: 3.1.0 - figures: 3.2.0 lodash: 4.17.21 mute-stream: 1.0.0 ora: 5.4.1 @@ -2642,7 +2647,7 @@ packages: resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@babel/code-frame': 7.24.1 + '@babel/code-frame': 7.24.2 '@jest/types': 28.1.3 '@types/stack-utils': 2.0.1 chalk: 4.1.2 @@ -3275,7 +3280,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.24.1 + '@babel/code-frame': 7.24.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 From 5eea48bf9d291a41ef8fee29e742d87aef301548 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Apr 2024 20:20:31 +0000 Subject: [PATCH 30/50] chore(deps): update ghcr.io/home-assistant/home-assistant docker tag to v2024.4.4 (#3268) --- apps/homeassistant-1/config.json | 4 ++-- apps/homeassistant-1/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/homeassistant-1/config.json b/apps/homeassistant-1/config.json index 06ddd3a7..e9baf9b7 100644 --- a/apps/homeassistant-1/config.json +++ b/apps/homeassistant-1/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "homeassistant-1", - "tipi_version": 12, - "version": "2024.4.3", + "tipi_version": 13, + "version": "2024.4.4", "categories": [ "automation" ], diff --git a/apps/homeassistant-1/docker-compose.yml b/apps/homeassistant-1/docker-compose.yml index a740e228..79176e9e 100644 --- a/apps/homeassistant-1/docker-compose.yml +++ b/apps/homeassistant-1/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: homeassistant-1: - image: ghcr.io/home-assistant/home-assistant:2024.4.3 + image: ghcr.io/home-assistant/home-assistant:2024.4.4 container_name: homeassistant-1 environment: - TZ=${TZ} From ce7c716d468f2a499ef9166a34d6244894f31a1b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 04:12:18 +0000 Subject: [PATCH 31/50] chore(deps): update lobehub/lobe-chat docker tag to v0.148.10 (#3269) --- apps/lobe-chat/config.json | 4 ++-- apps/lobe-chat/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/lobe-chat/config.json b/apps/lobe-chat/config.json index 2e99b201..1b9bef80 100644 --- a/apps/lobe-chat/config.json +++ b/apps/lobe-chat/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "lobe-chat", "description": "LobeChat is an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible (Function Call) plugin system.", - "tipi_version": 109, - "version": "0.148.9", + "tipi_version": 110, + "version": "0.148.10", "categories": [ "ai" ], diff --git a/apps/lobe-chat/docker-compose.yml b/apps/lobe-chat/docker-compose.yml index 3647f101..fc729922 100644 --- a/apps/lobe-chat/docker-compose.yml +++ b/apps/lobe-chat/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.9' services: lobe-chat: container_name: lobe-chat - image: lobehub/lobe-chat:v0.148.9 + image: lobehub/lobe-chat:v0.148.10 environment: - OPENAI_API_KEY=${OPENAI_API_KEY} - OPENAI_PROXY_URL=${OPEANAI_PROXY_URL} From 6f32029a5471d1c1dc3b9a3a118fe8335c16e1f9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 08:37:03 +0000 Subject: [PATCH 32/50] chore(deps): update dullage/flatnotes docker tag to v4.0.4 (#3270) --- apps/flatnotes/config.json | 4 ++-- apps/flatnotes/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/flatnotes/config.json b/apps/flatnotes/config.json index f8a86993..38995cdd 100644 --- a/apps/flatnotes/config.json +++ b/apps/flatnotes/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "flatnotes", "port": 8137, - "tipi_version": 20, - "version": "4.0.3", + "tipi_version": 21, + "version": "4.0.4", "categories": [ "utilities" ], diff --git a/apps/flatnotes/docker-compose.yml b/apps/flatnotes/docker-compose.yml index 1dd17399..9a6a1546 100644 --- a/apps/flatnotes/docker-compose.yml +++ b/apps/flatnotes/docker-compose.yml @@ -3,7 +3,7 @@ version: "3" services: flatnotes: container_name: flatnotes - image: dullage/flatnotes:v4.0.3 + image: dullage/flatnotes:v4.0.4 environment: FLATNOTES_AUTH_TYPE: ${FLATNOTES_AUTH_TYPE} FLATNOTES_USERNAME: ${FLATNOTES_USERNAME} From 9bd42f28011348d24a5f582ed7a7f2f967c8dd77 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 08:40:37 +0000 Subject: [PATCH 33/50] chore(deps): update lobehub/lobe-chat docker tag to v0.149.0 (#3271) --- apps/lobe-chat/config.json | 4 ++-- apps/lobe-chat/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/lobe-chat/config.json b/apps/lobe-chat/config.json index 1b9bef80..8bb6b4a9 100644 --- a/apps/lobe-chat/config.json +++ b/apps/lobe-chat/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "lobe-chat", "description": "LobeChat is an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible (Function Call) plugin system.", - "tipi_version": 110, - "version": "0.148.10", + "tipi_version": 111, + "version": "0.149.0", "categories": [ "ai" ], diff --git a/apps/lobe-chat/docker-compose.yml b/apps/lobe-chat/docker-compose.yml index fc729922..d34d395d 100644 --- a/apps/lobe-chat/docker-compose.yml +++ b/apps/lobe-chat/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.9' services: lobe-chat: container_name: lobe-chat - image: lobehub/lobe-chat:v0.148.10 + image: lobehub/lobe-chat:v0.149.0 environment: - OPENAI_API_KEY=${OPENAI_API_KEY} - OPENAI_PROXY_URL=${OPEANAI_PROXY_URL} From 511c28150b61f83447e418524ec526d587d7105b Mon Sep 17 00:00:00 2001 From: "Hunam (Elie TD)" Date: Wed, 24 Apr 2024 12:35:04 +0300 Subject: [PATCH 34/50] feat(app): add AFFiNE (#3069) * feat: add AFFiNE * fix: add min and max values to password field * dezoom logo * fix password error message * change password requirements and error message * change version to "stable" * fix password min max in accordance to the regex validator Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * add supported architectures * refactor(affine): small changes in compose file * fix(affine): change container names --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Stavros --- apps/affine/config.json | 53 ++++++++++++++++ apps/affine/docker-compose.yml | 91 ++++++++++++++++++++++++++++ apps/affine/metadata/description.md | 23 +++++++ apps/affine/metadata/logo.jpg | Bin 0 -> 49152 bytes 4 files changed, 167 insertions(+) create mode 100644 apps/affine/config.json create mode 100644 apps/affine/docker-compose.yml create mode 100755 apps/affine/metadata/description.md create mode 100644 apps/affine/metadata/logo.jpg diff --git a/apps/affine/config.json b/apps/affine/config.json new file mode 100644 index 00000000..e3847cce --- /dev/null +++ b/apps/affine/config.json @@ -0,0 +1,53 @@ +{ + "name": "AFFiNE", + "id": "affine", + "available": true, + "short_desc": "AFFiNE is a workspace with fully merged docs, whiteboards and databases.", + "author": "https://github.com/toeverything", + "port": 3010, + "categories": [ + "utilities" + ], + "description": "AFFiNE is a workspace with fully merged docs, whiteboards and databases. A privacy-focused, local-first, open-source, and ready-to-use alternative for Notion & Miro. Docs, canvas and tables are hyper-merged with AFFiNE - just like the word affine", + "tipi_version": 1, + "version": "stable", + "source": "https://github.com/toeverything/affine", + "website": "https://affine.pro", + "exposable": true, + "form_fields": [ + { + "env_variable": "AFFINE_ADMIN_EMAIL", + "label": "Admin Email", + "pattern_error": "Invalid email", + "regex": "^[\\w\\-\\.]+@([\\w-]+\\.)+[\\w-]{2,}$", + "required": true, + "type": "text" + }, + { + "env_variable": "AFFINE_ADMIN_PASSWORD", + "label": "Admin Password", + "pattern_error": "Invalid password: Must have 1 lowercase, 1 uppercase, 1 special character, 1 digit and no $.", + "regex": "^(?=.*\\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[^\\w\\d\\s:])([^\\s$]){8,128}$", + "required": true, + "type": "password", + "min": 8, + "max": 128 + }, + { + "env_variable": "AFFINE_TELEMETRY_ENABLE", + "label": "Enable affine telemetry?", + "required": false, + "type": "boolean" + }, + { + "env_variable": "AFFINE_POSTGRES_PASSWORD", + "label": "Affine postgres password", + "type": "random", + "min": 32 + } + ], + "supported_architectures": [ + "arm64", + "amd64" + ] +} \ No newline at end of file diff --git a/apps/affine/docker-compose.yml b/apps/affine/docker-compose.yml new file mode 100644 index 00000000..8965da26 --- /dev/null +++ b/apps/affine/docker-compose.yml @@ -0,0 +1,91 @@ +version: "3.9" +services: + affine: + image: ghcr.io/toeverything/affine-graphql:stable + container_name: affine + command: ["sh", "-c", "node ./scripts/self-host-predeploy && node ./dist/index.js"] + ports: + - ${APP_PORT}:3010 + depends_on: + affine-redis: + condition: service_healthy + affine-postgres: + condition: service_healthy + volumes: + # Custom configurations + - ${APP_DATA_DIR}/data/config:/root/.affine/config + # Blob storage + - ${APP_DATA_DIR}/data/storage:/root/.affine/storage + logging: + driver: "json-file" + options: + max-size: "1000m" + restart: unless-stopped + environment: + - NODE_OPTIONS="--import=./scripts/register.js" + - AFFINE_CONFIG_PATH=/root/.affine/config + - REDIS_SERVER_HOST=affine-redis + - DATABASE_URL=postgres://tipi:${AFFINE_POSTGRES_PASSWORD}@affine-postgres:5432/affine + - NODE_ENV=production + - AFFINE_ADMIN_EMAIL=${AFFINE_ADMIN_EMAIL} + - AFFINE_ADMIN_PASSWORD=${AFFINE_ADMIN_PASSWORD} + - TELEMETRY_ENABLE=${AFFINE_TELEMETRY_ENABLE} + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.affine-web-redirect.redirectscheme.scheme: https + traefik.http.services.affine.loadbalancer.server.port: 3010 + # Web + traefik.http.routers.affine-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.affine-insecure.entrypoints: web + traefik.http.routers.affine-insecure.service: affine + traefik.http.routers.affine-insecure.middlewares: affine-web-redirect + # Websecure + traefik.http.routers.affine.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.affine.entrypoints: websecure + traefik.http.routers.affine.service: affine + traefik.http.routers.affine.tls.certresolver: myresolver + # Local domain + traefik.http.routers.affine-local-insecure.rule: Host(`affine.${LOCAL_DOMAIN}`) + traefik.http.routers.affine-local-insecure.entrypoints: web + traefik.http.routers.affine-local-insecure.service: affine + traefik.http.routers.affine-local-insecure.middlewares: affine-web-redirect + # Local domain secure + traefik.http.routers.affine-local.rule: Host(`affine.${LOCAL_DOMAIN}`) + traefik.http.routers.affine-local.entrypoints: websecure + traefik.http.routers.affine-local.service: affine + traefik.http.routers.affine-local.tls: true + + affine-redis: + image: redis + container_name: affine-redis + restart: unless-stopped + volumes: + - ${APP_DATA_DIR}/data/redis:/data + healthcheck: + test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ] + interval: 10s + timeout: 5s + retries: 5 + networks: + - tipi_main_network + + affine-postgres: + image: postgres + container_name: affinepostgres + restart: unless-stopped + volumes: + - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data + healthcheck: + test: [ "CMD-SHELL", "pg_isready -U affine" ] + interval: 10s + timeout: 5s + retries: 5 + environment: + POSTGRES_USER: tipi + POSTGRES_PASSWORD: ${AFFINE_POSTGRES_PASSWORD} + POSTGRES_DB: affine + networks: + - tipi_main_network diff --git a/apps/affine/metadata/description.md b/apps/affine/metadata/description.md new file mode 100755 index 00000000..4af96cb7 --- /dev/null +++ b/apps/affine/metadata/description.md @@ -0,0 +1,23 @@ +## AFFiNE + +[AFFiNE](https://affine.pro) is an open-source, all-in-one workspace and an operating system for all the building blocks that assemble your knowledge base and much more -- wiki, knowledge management, presentation and digital assets. It's a better alternative to Notion and Miro. + +![](https://cdn.affine.pro/Github_hero_image1.png) + +### Features + +**A true canvas for blocks in any form. Docs and whiteboard are now fully merged.** + +- Many editor apps claim to be a canvas for productivity, but AFFiNE is one of the very few which allows you to put any building block on an edgeless canvas -- rich text, sticky notes, any embedded web pages, multi-view databases, linked pages, shapes and even slides. We have it all. + +**Multimodal AI partner ready to kick in any work** + +- Write up professional work report? Turn an outline into expressive and presentable slides? Summary an article into a well-structured mindmap? Sorting your job plan and backlog for tasks? Or... draw and code prototype apps and web pages directly all with one prompt? With you, AFFiNE AI pushes your creativity to the edge of your imagination. + +**Local-first & Real-time collaborative** + +- We love the idea of local-first that you always own your data on your disk, in spite of the cloud. Furthermore, AFFiNE supports real-time sync and collaborations on web and cross-platform clients. + +**Self-host & Shape your own AFFiNE** + +- You have the freedom to manage, self-host, fork and build your own AFFiNE. Plugin community and third-party blocks are coming soon. More tractions on [Blocksuite](https://blocksuite.io). Check there to learn how to [self-host AFFiNE](https://docs.affine.pro/docs/self-host-affine). diff --git a/apps/affine/metadata/logo.jpg b/apps/affine/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..01176fd1ac73908e35fb6cd2374855a7e360a441 GIT binary patch literal 49152 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
    dgU;QVww6*^CAgw{34 zFD~x9gMs?AogL+0S$MuW4~Um&F!jFK%vIYDt+naOjdQU}V)Q)xKC8gnK2G0Pw-1*{ z!n_3?k2|Uym>EVFpqo1zkwpi%eK`)Zf-eF}qXP8U-i0lTLzmx}dc2F@=92tcm}(UM z>;-dd#`(`uM<;rYLc;|&^%rlqnHVb5mmJD@sItx}6^1q!jn!4h0$@Xp1{V5*&(Kut0EWDN@`$K#K%-f=h9S z;u0vOSdl=XNYS1=&zU*%zBAvMZ)dWz`)5|J``YVgkIt1^gQ&L^lKNxG`=DZ3H5x2= zv=eV+^uFRWlq30a|&3K}(Rv#o@hz?uH*k(;Kto&cvW}FP|3i)!MJ-0D$ z1jpQhZ0=`YPY}o8&kpArZ=S0W@H1nM-4{qb*(OYN@w%!s5tp&I{FL0nx3Sf{sdk<$v==bxLfhAv$IbW;M;3X;wKs&JQn+&cn^F zIb8SfN+;s8%Ua^=hH4VKd73i(%{+6S=ApVYq<_?n_xN)<>xK zZ^;2E1JqrCJjfw9saHotmQYY-YB&Vc10Id+dHD&VKBw$_GgT!fTYR_fvw>-mD9H#B zShqajVW(R;{s;JYaom8uvv3=_0mxUH`I|e&#VY}`#O8qHL>d$d{7Acos7u2q4|7*%4wQI6*D$- zA+7e{SU;6BY9w^nptA1NLr^Fbu`M|4P!dlJwQdf4Uo|8w%`VO7$A4~gC;iZWqw8x> z8lsrFcxOVSnkvbFrU#rhcUd^0fQnP68H$zZ$XX<-wHdZ5wP3HU1wYJUOf*LZ23%KR z0Y_A`NNHu~c24p~uJ~p&yH#XTswZpZ1!0UYJYzH%Bqxwj=k|OuVJDeT14+j7#b~Xk zP)wWgNDz4RcdngNoR;$aHUBXD-;r={_!n3%<9ywu=x2lj`jN83lP8AKIc&Bf)>=9 zU;SyUoM(XYYxdaEwsxk3gr(PJuBfGPd!nhJ0_+miS8%sK_iI>u+b$iCRtHF`qX5y^ z<4GFNF5}Ys55Qcnhx|emOC8Bvmz;?lB-FzSYlRSiqvJ;sF|bYK(W+aE?-vx?-t&0k z5xQ`pe}GnCN8_rC7!*XRN><<<<3D{YqZRNf|BR;R5x#^{749AgXzw zzoVh_+1+Ax243Jdc-D{QuwOBC z%fcTG&6N@5!NY4S0ea8}-}*SCC29tYmdh;Uxx;8*MAvQ57VhV5nXJW*58s-7Ri*A zU=W^8-A0V(Bni7%3TAuapDE3F@Z5dMGD22RFxwVE>-*_^J5v#y<^TZsZ|B# zHH%#K*?{f^X@X^?7vN{tgw_{ghoN*rk%d0^SbY2>0+ zj+qNEbw;>`Pt_T`XjJJXf386r_kSs>VKUujZ;iYt{HjlWq$4X=CE*vV_&7 z?O_@5dLlQx{3J&|Zs_&wV$ixXfEo1^X&bLxihIF3`6C-4T z@BW0Fbq1cVl$gy9#b-#ww0dpB$&LELQza^RJWIcfd)k9Y$RCBBHT|IYQx+-ebxdC7 z7s5c|kUkL!HO*oUud6;=vxH2EJ|2*1V zs=w?J+18xxR8_w$bq+Gqs{U3w@7rq=`>uT65Lx>zsnpMAl=mc4Iiq9wNE1Iy>bdAyJ*}WLEIaI|RC0|y5O8NM{ zxoo6B!v<5#U5%~|@nbD`4<^SQ>&iFh3;wjmDh_{>7(X7=byK6>Etm;rvb;_=`-O3d zpDrqwVIS26x5ciRBQ{tw2nvi>RI1i&=0xRr?yD}kJKKuSDeKa-{hpXEZOw}ET=`iV zwwU#~evFn8x$jdN0!}`S|0^I8x(OPTe7`lBnr+ndH+vTY9QR`<58v|{m(HRd-nta7 ziq!9)6J@aHqB{KtNJ}3uixJ`574I>(B*ZG~L=s6g9@t1Q!A+9(n8vN$K>h=fSn?r; zAi&r)&dI3b^y`BKQYrljZvdIB&eX{{aYYw|E?~ z#*`j%y%O*bYsTim`0L#JtZ)ksn(SP^12u~t6t-UyR_QtFwOsm#@{E$9uUs}O)2}EG z*Gu9D-ClhABn|ySX4D>*rV+^n(aWOCnO*Mgs(7~Py{&g9W8F%1?1F+1vUm7wQqNc= zw%P}mFh3gps$AWui*HZl-D{$k*vSN;_QVP6O%LY)m#7@Y?6h~En)IN0C|-?+b2gtV zQCWU?bdT6#06`mTrKoUxXGR_?$ac5y@ne7gFrG|Q9Ntv zJf+`4W1&p!$NBV`nL@wi?HL-9f9&>n<}HEReTG9Ilcx2swN0_7jo#B<2$a_{_!(?@ zlz>8?Ud)V@RNp`mtJg}?7|;O{=p`(=J`)>>-K# zQajBHb(RUZ!*&Oe1RE|>`tM9Rd`K8uwC$CFSJk@doeW&%qi@E{eA~DjwX~d;U2E4~ z6z$V_>aDJ*TKGM!c=fYXU7-fy*VTB$@A8;F%dB5RsnVWU3{q(>9fk>3NT#%stMd&< zf&hiDpHlmW`2RA!)^~+EOV?k+&^?%LODC6nUAIW#gmYlpceRSO2)#Vd&spANx7{t<52n)nCLk%W z%b8C+eQwO}uQc_}?~Zwv1Gd7$zf#N{uR-141B3b;JtVkSJUVb=Z@$>y0-l(b!PaiH zu24|h%lJ0UVmEI`Ue?TuNSUX}LxZ%+dnd!>QANuiArs$J*>p99pYXarjXiEnnuzB= z3Cb1#yR|jD;AU8YOY-QIX3Qp0@DK!t?jiE2MPXyD7I*5Oj~iT@TSx(q*dJmq6B4YS z_r&U3E1jIw#iEsmYVD%v8f^x$*`U*f`p5@@%d%UMsge5Ot z?s8mF`CSGbcU*R@p>Ec0JJ(y99!FTLVJo%C>Q$cEKR|Q0J0w_@ zw`CKf=&`I+lPRuK*tBnbLmU&9s__?VGh_Px_y2x;R1&nlmq`uoeQfloYiX}HRqRuj zbU^maQN~K-&E9CnnEoiXha+zXqq49f9JI3W4>LK_jb}!^FE1!Hb35M*dp9HC_w?|G z33Z+Z@6+s79>U9KOt5e6-&+VFxqom|1CbHI-_`p+{b{Ct6-KNSeOMk*w0 zD7dL4mEUyR#ZC^Fy!2p76OrhEIxF4q#Drt{TFNr1MsmnZfa%SpXM+|;Uw)OO&Jw~T}IVt0Os<3Loi^*AY zI&c|gIX3AJh@zoNOTQ6PNOxwXVJzzt_zIxJJ=^qZkk$R}_gZ2JzNvZ=5Igh{ExC1s zwlxee2`i!yZJj+Lw8~;{s5>NeP0zIpBqIji*&Qh$ni5}m>k|dyVJU_jSp?aRsYT3q zrsQGF9-*mW+}K^QfKX@#^`KC!HTBRtrq2{{=XR%m&Y*kpZu8$@`MBp}XpFVu0CL&Q zRgsn#Oy2Fn&BBS;Bv5Rx2BW_f|5>`?33y!hQp47iFVW`o!FpaCF<&s>Ir;K!W=8xK z@QBk9#MdV?YVK><*ql7Y1@9UXg2@G3|CDu4kpcC7-yuD@Pgui2q80|jWpZ4aT2KDY zJB^>m4dn%pErmtHIco9(HtT|#kf&3D-a{edxVWzL0+`;T)lyqTn~?!ArA$CBcmb3O zmfyY6D2Nb>%g0Q@9&9j18~y|Mlr^*13Y-76?veb%XWzV~H{y0L&L6vZ7cs(0J}7b* z3=);C0O6R)AhV}_JC}A#0{va?d3g*3{GL7~&Pa$5F;{mo23J+4=6=_ogbYJU%CW?nO%Jci zc`YB*VkW|(%jq0RRs*&wrfNHISq{v#U>DYTwFW6-SP=GGA&UD`e4krO|K-8ga#i)p z8E*D`BtY6troCcd2FAZMFR*HebXHQbW@YErUS!DpCm*b6Q>N@XDVSz<832 zc%m|q0wV8k#oZf<=V2T2d~Lg99Twf^l?I0)?8hL`_ zr>$XM%GMT#5kyXj9TiU&WO^;s4Xn*VLt+anwk^sb(`}F|zAKH?>;=owV#k`2d|u2q zwneRq7d1;Y1r!BgGX9DFMs&z#DSKPse1K4(+17PRyS3tWiklN{Axq(zc75YbU}}*n zq4U9`LW8sm)eJV58Vq^Uj{Dw?qX-AZ5!MF!Nl`|5$R2n=?3NM@kJDUKF_g<75@x{{HYssoQErHi%uMe={%EHT z-%w>jE&nLb02?fJ#j(GQoRGlSh=Q|B=k}4__E6MCbGQHt>JIni+Nb!pRS**)r#rM4 z9i^-9A4)MUN;%t&Nd``wBj>c`gP;h45=dlH?J|Z;2)?rQNK$c&eU}rN_l1s>gtDiO z9Co3k^=8al!&pq?pcU4pQY6m>%V2J>SE$Z@Db4?vuF6XfnKb5F;fUYp$7E-lYPw_Z zX0*8+q(xL2ZT9=Ly@mxn^!6Z{HFZVC`B7&Ak;$;3&1tE6CV;T>&PJ;9)?uIX&CfIP zlF_o?H+nDag(rYP{cq7Zb>bBml-#z|4add#A2X%??WyDmi^kM9^3T3IKI370sGp#G zNh$mA+Ni37eX|Q#k|7zrSv%uZFEh4!P!-q(*W>_M(NXL1tAmWXmJ2Clw>Hum<4I3l z>p8`>r(|71EPu;qU*`KP--tv>CH$v1394!K+8(u7J-zJ+lwryUImE2uQhgOj`jr}g z>9;uM=f-rM@q8x!6mw^xw<>Wyl@M}xdaWG1j^6wS0FbKhdn|-RNJCq*Ly7J_wf9Gq zEGOBW{JxS6a5M{Gm)dNGT1#X8*0ZKqbNm?vff_z$4sgA0BU*%ca;#Apye(~Uw_?ef z2fcL&jnCyzPQjgg4qc`|2p~OvB;#|HXK~|Mzmxq$M0>|*hE)qcM+N00MX?4r%|YV5 z238(PXBE{)P>HnF2s88ZLO6oy3G5%h)R3)fw?>#J-ke{vUcJ#_t%$N~kbvqxlMozb zH$!_YpxP&GWVDx10u7$u^?Vt<6qpr6e$bG8RDg9@a=2dZ#Z0B35|>4(r&{?4$N!@` z=GBS)-h@>hhd78N;uJn9>?@Ak*lB8nORs{boVJ^?G@OH93Z*$Oj}uop+>STlPC;Wr zZ6@-eG`|k#oZUVt)x0fTgbJAO9TD6n#ZzVCJj*q08}o=MiqE^rvFlX3>pT)l(4V=5 z*QhnQxOYlv^Psf+ziy)avXxK?!Sd`tc#2IIxiE1duTVPo*?sau_U}RPCtJt5E|+4% z0@~jx>kSzKPRdtBliL8JD(G~Iq2*H?haY{cqD&3Vy}M>R^sP;_C^ z_B`oFXKjs1wY4psH|ptQ#fnmLC7(rs1&Z2N(&^K96&SaNc1d8bBXC(!R=4WlXgQeP zOs;6bX+AW|rdAJAI|CjA>$)1F>}oU`jb+Sndmi2On~uM#c=CufLRSaIZ(0{P4I{Oi zOaxP?U_Y$C`oCrv+q;@D%bH!x$TmpNt^yn6%r~VnXfM=blsqo?3Cl>xf<9}|7r)K4 zgjTdC#cIw}t!3&p!V(T zLT<`GyZSbX8n4;_IHx}7PJ5&2>HwAlu2^<43;jcb0O%Ov!j06ZT)rbOFV#Z&WSNpw zgQ49(`eZ4J?hj7*6n`s`-F80bn|%yv@?Mid8Y%9<9fm

    1h<#d0o-M2z}P*W&n3@3nG2pOfRuZO4iK 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 I Date: Wed, 24 Apr 2024 12:36:58 +0300 Subject: [PATCH 35/50] Refactor/filebrowser (#3228) * refactor(filebrowser): do not run with puid and pgid 911 * chore: bump filebrowser version --- apps/filebrowser/config.json | 11 ++++++++--- apps/filebrowser/data/config/settings.json | 8 -------- apps/filebrowser/docker-compose.yml | 4 +++- 3 files changed, 11 insertions(+), 12 deletions(-) delete mode 100644 apps/filebrowser/data/config/settings.json diff --git a/apps/filebrowser/config.json b/apps/filebrowser/config.json index 7d02d5dd..48609bd6 100644 --- a/apps/filebrowser/config.json +++ b/apps/filebrowser/config.json @@ -5,14 +5,19 @@ "exposable": true, "port": 8096, "id": "filebrowser", - "tipi_version": 3, + "tipi_version": 4, "version": "s6", - "categories": ["utilities"], + "categories": [ + "utilities" + ], "description": "Reliable and Performant File Management Desktop Sync and File Sharing\n Default credentials: admin / admin", "short_desc": "Access your homeserver files from your browser", "author": "filebrowser.org", "website": "https://filebrowser.org/", "source": "https://github.com/filebrowser/filebrowser", "form_fields": [], - "supported_architectures": ["arm64", "amd64"] + "supported_architectures": [ + "arm64", + "amd64" + ] } diff --git a/apps/filebrowser/data/config/settings.json b/apps/filebrowser/data/config/settings.json deleted file mode 100644 index cf7fb4ee..00000000 --- a/apps/filebrowser/data/config/settings.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "port": 80, - "baseURL": "", - "address": "", - "log": "stdout", - "database": "/database/filebrowser.db", - "root": "/srv" -} diff --git a/apps/filebrowser/docker-compose.yml b/apps/filebrowser/docker-compose.yml index d3421d18..e098f506 100644 --- a/apps/filebrowser/docker-compose.yml +++ b/apps/filebrowser/docker-compose.yml @@ -10,7 +10,9 @@ services: - ${ROOT_FOLDER_HOST}/media:/srv/media - ${APP_DATA_DIR}/data/general:/srv/general - ${APP_DATA_DIR}/data/db:/database - - ${APP_DATA_DIR}/data/config:/config + environment: + - PUID=0 + - PGID=0 networks: - tipi_main_network labels: From 854aa78042feafc5f566992336ff39778eac447a Mon Sep 17 00:00:00 2001 From: Julian Xhokaxhiu Date: Wed, 24 Apr 2024 11:50:43 +0200 Subject: [PATCH 36/50] add: Stalwart Mail app (#3122) * Add stalwart-mail * Update apps/stalwart-mail/metadata/description.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * refactor(stalwart-mail): small changes --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Stavros --- apps/stalwart-mail/config.json | 42 +++++++++++++ apps/stalwart-mail/docker-compose.yml | 43 +++++++++++++ apps/stalwart-mail/metadata/description.md | 68 +++++++++++++++++++++ apps/stalwart-mail/metadata/logo.jpg | Bin 0 -> 60611 bytes 4 files changed, 153 insertions(+) create mode 100644 apps/stalwart-mail/config.json create mode 100644 apps/stalwart-mail/docker-compose.yml create mode 100644 apps/stalwart-mail/metadata/description.md create mode 100644 apps/stalwart-mail/metadata/logo.jpg diff --git a/apps/stalwart-mail/config.json b/apps/stalwart-mail/config.json new file mode 100644 index 00000000..ff4a60bf --- /dev/null +++ b/apps/stalwart-mail/config.json @@ -0,0 +1,42 @@ +{ + "$schema": "../schema.json", + "name": "Stalwart Mail", + "available": true, + "exposable": true, + "tipi_version": 1, + "version": "0.7.0", + "port": 8677, + "id": "stalwart-mail", + "categories": [ + "media", + "network", + "utilities" + ], + "description": "Stalwart is a scalable, secure and robust open-source mail server software designed for the 21st century.", + "short_desc": "Open-source mail server solution with JMAP, IMAP4, and SMTP support", + "author": "Stalwart Labs", + "source": "https://github.com/stalwartlabs", + "website": "https://stalw.art", + "requirements": { + "ports": [ + 25, + 143, + 465, + 587, + 993, + 4190 + ] + }, + "form_fields": [ + { + "type": "ip", + "label": "Network Interface (default: 0.0.0.0)", + "required": false, + "env_variable": "NETWORK_INTERFACE" + } + ], + "supported_architectures": [ + "arm64", + "amd64" + ] +} diff --git a/apps/stalwart-mail/docker-compose.yml b/apps/stalwart-mail/docker-compose.yml new file mode 100644 index 00000000..5e4efb04 --- /dev/null +++ b/apps/stalwart-mail/docker-compose.yml @@ -0,0 +1,43 @@ +version: "3.7" +services: + stalwart-mail: + image: stalwartlabs/mail-server:v0.7.0 + container_name: stalwart-mail + volumes: + - ${APP_DATA_DIR}/data:/opt/stalwart-mail + restart: unless-stopped + networks: + - tipi_main_network + ports: + - ${NETWORK_INTERFACE:-0.0.0.0}:25:25/tcp + - ${NETWORK_INTERFACE:-0.0.0.0}:143:143/tcp + - ${NETWORK_INTERFACE:-0.0.0.0}:465:465/tcp + - ${NETWORK_INTERFACE:-0.0.0.0}:587:587/tcp + - ${NETWORK_INTERFACE:-0.0.0.0}:993:993/tcp + - ${NETWORK_INTERFACE:-0.0.0.0}:4190:4190/tcp + - ${APP_PORT}:8080 + labels: + # Main + traefik.enable: true + traefik.http.middlewares.stalwart-mail-web-redirect.redirectscheme.scheme: https + traefik.http.services.stalwart-mail.loadbalancer.server.port: 8080 + # Web + traefik.http.routers.stalwart-mail-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.stalwart-mail-insecure.entrypoints: web + traefik.http.routers.stalwart-mail-insecure.service: stalwart-mail + traefik.http.routers.stalwart-mail-insecure.middlewares: stalwart-mail-web-redirect + # Websecure + traefik.http.routers.stalwart-mail.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.stalwart-mail.entrypoints: websecure + traefik.http.routers.stalwart-mail.service: stalwart-mail + traefik.http.routers.stalwart-mail.tls.certresolver: myresolver + # Local domain + traefik.http.routers.stalwart-mail-local-insecure.rule: Host(`stalwart-mail.${LOCAL_DOMAIN}`) + traefik.http.routers.stalwart-mail-local-insecure.entrypoints: web + traefik.http.routers.stalwart-mail-local-insecure.service: stalwart-mail + traefik.http.routers.stalwart-mail-local-insecure.middlewares: stalwart-mail-web-redirect + # Local domain secure + traefik.http.routers.stalwart-mail-local.rule: Host(`stalwart-mail.${LOCAL_DOMAIN}`) + traefik.http.routers.stalwart-mail-local.entrypoints: websecure + traefik.http.routers.stalwart-mail-local.service: stalwart-mail + traefik.http.routers.stalwart-mail-local.tls: true diff --git a/apps/stalwart-mail/metadata/description.md b/apps/stalwart-mail/metadata/description.md new file mode 100644 index 00000000..bdd44e86 --- /dev/null +++ b/apps/stalwart-mail/metadata/description.md @@ -0,0 +1,68 @@ +## Stalwart Mail server + +Stalwart is a scalable, secure and robust open-source mail server software designed for the 21st century. + +### Admin Password + +See [Log in to the web interface](https://stalw.art/docs/install/docker#log-in-to-the-web-interface) to know how to get the admin password. + +### Screenshots + +Stalwart Mail Server setup screencast
    + +### Features + +**Stalwart Mail Server** is an open-source mail server solution with JMAP, IMAP4, and SMTP support and a wide range of modern features. It is written in Rust and designed to be secure, fast, robust and scalable. + +Key features: + +- **JMAP** server: + - JMAP Core ([RFC 8620](https://datatracker.ietf.org/doc/html/rfc8620)) + - JMAP Mail ([RFC 8621](https://datatracker.ietf.org/doc/html/rfc8621)) + - JMAP for Sieve Scripts ([DRAFT-SIEVE-19](https://www.ietf.org/archive/id/draft-ietf-jmap-sieve-19.html)) + - JMAP over WebSocket ([RFC 8887](https://datatracker.ietf.org/doc/html/rfc8887)), JMAP Blob Management ([RFC 9404](https://www.rfc-editor.org/rfc/rfc9404.html)) and JMAP for Quotas ([RFC 9425](https://www.rfc-editor.org/rfc/rfc9425.html)) extensions. +- **IMAP4** server: + - IMAP4rev2 ([RFC 9051](https://datatracker.ietf.org/doc/html/rfc9051)) full compliance. + - IMAP4rev1 ([RFC 3501](https://datatracker.ietf.org/doc/html/rfc3501)) backwards compatible. + - ManageSieve ([RFC 5804](https://datatracker.ietf.org/doc/html/rfc5804)) server. + - Numerous [extensions](https://stalw.art/docs/development/rfcs#imap4-and-extensions) supported. +- **SMTP** server: + - Built-in [DMARC](https://datatracker.ietf.org/doc/html/rfc7489), [DKIM](https://datatracker.ietf.org/doc/html/rfc6376), [SPF](https://datatracker.ietf.org/doc/html/rfc7208) and [ARC](https://datatracker.ietf.org/doc/html/rfc8617) support for message authentication. + - Strong transport security through [DANE](https://datatracker.ietf.org/doc/html/rfc6698), [MTA-STS](https://datatracker.ietf.org/doc/html/rfc8461) and [SMTP TLS](https://datatracker.ietf.org/doc/html/rfc8460) reporting. + - Inbound throttling and filtering with granular configuration rules, sieve scripting and milter integration. + - Distributed virtual queues with delayed delivery, priority delivery, quotas, routing rules and throttling support. + - Envelope rewriting and message modification. +- **Spam and Phishing** filter: + - Comprehensive set of filtering **rules** on par with popular solutions. + - Statistical **spam classifier** with automatic training capabilities. + - DNS Blocklists (**DNSBLs**) checking of IP addresses, domains, and hashes. + - Collaborative digest-based spam filtering with **Pyzor**. + - **Phishing** protection against homographic URL attacks, sender spoofing and other techniques. + - Trusted **reply** tracking to recognize and prioritize genuine e-mail replies. + - Sender **reputation** monitoring by IP address, ASN, domain and email address. + - **Greylisting** to temporarily defer unknown senders. + - **Spam traps** to set up decoy email addresses that catch and analyze spam. +- **Flexible and scalable**: + - Pluggable storage backends with **RocksDB**, **FoundationDB**, **PostgreSQL**, **mySQL**, **SQLite**, **S3-Compatible**, **Redis** and **ElasticSearch** support. + - Built-in, **LDAP** or **SQL** authentication backend support. + - Full-text search available in 17 languages. + - Disk quotas. + - Sieve scripting language with support for all [registered extensions](https://www.iana.org/assignments/sieve-extensions/sieve-extensions.xhtml). + - Email aliases, mailing lists, subaddressing and catch-all addresses support. + - Integration with **OpenTelemetry** to enable monitoring, tracing, and performance analysis. +- **Web-based administration**: + - Account, domain, group and mailing list management. + - SMTP queue management for messages and outbound DMARC and TLS reports. + - Report visualization interface for received DMARC, TLS-RPT and Failure (ARF) reports. + - Configuration of every aspect of the mail server. + - Log viewer with search and filtering capabilities. + - Self-service portal for password reset and encryption-at-rest key management. +- **Secure and robust**: + - Encryption at rest with **S/MIME** or **OpenPGP**. + - Automatic TLS certificate provisioning with [ACME](https://datatracker.ietf.org/doc/html/rfc8555). + - OAuth 2.0 [authorization code](https://www.rfc-editor.org/rfc/rfc8628) and [device authorization](https://www.rfc-editor.org/rfc/rfc8628) flows. + - Automated blocking of hosts that cause multiple authentication errors (aka **fail2ban**). + - Access Control Lists (ACLs). + - Rate limiting. + - Security audited (read the [report](https://stalw.art/blog/security-audit)). + - Memory safe (thanks to Rust). diff --git a/apps/stalwart-mail/metadata/logo.jpg b/apps/stalwart-mail/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f4952d7629e10d27b5f3e9205cf14a536cd08ced GIT binary patch literal 60611 zcmeFZbyQYe*EhNe0g;wQx|Htj?rtP6u8Zyl2@xsjMoLPgq+3e5rCU%yLPC(vZ=<*O z{hs%Gp7)G1zH$CI<2=i;+4I_K&fi*VuDRx(bM3vooxNQFuoPtEWdJxhI6w~k2i$%E z-b;H~!vH{Do&i7s000@lfkOb`KSf6+D|{rE2)c#vj?g9p&TvkQ1| zfHW?64g?SDP{d!di6DJfz~+Aa{&SXATCUR208h+-!xZ^uTUQI=Vn9xLCMY*qA}}d2mpH7%mnt z0SzgczYxG*!c>2C)zj0H#gmi8(Z!OLou8kdm5qaygM%65V0QI(a5M8_c5tQsgCGTU zg}7Kdxmi0pP~0J!nLE0>2~&aX|L&N*ld|&P!2ePQ_V#zZ{l)F-ChY+V|4$lo)$(?N zvT8tG9o=0ZP-zdSgB$f9aSO=bvQF+UcE1K-0bzyOLG3{{S5V{Ze>ZhEn}2iP4cOA! z-szVFsM)`{K>BZ{f7$uFroj;kNI62>?;4Sp5~jLC60mTDSX&7EB6-ZAY-a2b2s1A` z4<|DhCqFl{IiDGXnG41N+aGyV7i-Xr%1es&%{KAu04 zI#3r^&|>bueyyip-4~E_fttBFx@b8%+6hzrz1)7+DT7vRVdiEgW#$G2#r|G>T7Om_ zBO9jx+iyJxC_7qM!@U3RSnt-+ugR0Mb_JXD{%cKWLY@Dj?5rt%S)_m&LFR^+yZ*RIFg% zS??C&?_se1_YwZ8`!9?34?E}y?#RC#iwMPk%6~NQ9}WCR1OL&$e>CtP4gCL41OKEZ zPzNx|@dOi(+pq8y@{*D!Y8t9C@=DTRUIqa0Z|orUu83j)VDI4Oq9H3mp{H*^fxHPI z0))VQfE7SDgSa{=YszTdB}D(aoJ{}9w15fbJFI`r^KY-BTYxDDn5t2L9AXeB7dMbL z1!*2nH>W!~6{K;&V9f%gOF^2+1?(V5&)!`(|4r}Q(U!mHyA%&+2W?I8OamT|09imD zPzKZh3cwt22dn`*zztvq&ko=fS3m=-m-sjG#J}X#Kq+%j${K)x5>kL8U=Nu6k_YbQ z0OSG7Ke}~=adP~+1cxR80QWxM-u|Qo6X*m0xQ@NOz0A42z0L&yghc>oclbx%@eKg* z9fQ|n|G7q!4FH(I08rQU&o%QD0H_ZI0Kz#ZGZ(X8?I3`E;bCC1epmL|8Kqhk34_r?{)!@yxTtbKPq=1 z|3?6K!nYp*Y!r9^9zcM@2H>&b5U}BHy8trK@ZsU%5#a7r@w=ehM?yxt2Zw+P57v`{ zOAPKFDE_AwoHztTBxDpg`1`l>02(L=kA;8*nsZzGKP>;D{$~v!KloO!{L^=>uUO{h z^S@-p9GulP`%pa2SXSFDlp)WUX=EF}_@ec_`;ULc&P7}IvG{RxYt+f57$7|0`u;Mz z^u{o;IwF?he`iM{%Q!ZXI(EaW+$7fo9S;%xq)~GJ;na)1pP^>Q4*#0~2IjEOQS=t^ z#H(#3*M2du9%->8#GtgEYS4Cxf9=2XqeMX)w%^mgKc;2s1Aw8{Hz(_MJbVi~D*(K% zk@cl^%9_!j$^HK(MeGn_uZ>OWj$7vW8~^1s;+jcD?E7BtsTy4aTOV&R0K@!cVBgQA z)c(T}ZH+qz_D?}#JYd$ZG*UJ>xF+e;1>kCnzg#pW8*ckWHR?XNK<`&o%D#9?_b2yTeF+@&O1`CoBUN=N_FF zjrHF~iLS-Jl>7tRPW&}lQRhI|8r818{L2x5;5|KaQq9`u;jfkOaN= z;i1K6>jx^yYneHQc>iG9T<~k_NgaRStzP;}76`=65PzJZJ%14J^m_&JFd6GbLZ>c? z%X@+&qPQF9K!B`V<_E}>#K{U$gTP9 z=&k7T!FGTI|1GDr#)l;C{UejD72w&}*IS@Sh}*fI;Y)yc8uZy5c?glj)s z{gzI6EeF7@uZ?~ft4m|<_vNT#0-e!M*;hCDKc;#XOI}_hSp;O5f)a2<%siQzQto@N z@+!dnTi;B5AI>Yp-%!X1gE6n|AjcE{Pwi8YWjel(ibmTjV4aB7LBM1dal>3KyJCIj zmtWjup^Mnjn+#Vmn|s6!@QRDugJan%6u+tfKC-9JCLrWR09>C&Ho?`tCC7)7l*tgV z^3OE?<^up6;|(3-$lKq62iUu=!}{Sp&I|W(Zwdf`@glTZUPUK+T{`5%J)+j+soiu>l$_}&_W5wncPMi3}S9OeE0YKQ_ zPvQak0g=7O8*s+gcQmRO&d5ik0Kk8l)8SNdUaFqXj-g@Y4-|6w=sSM1*6nS^QYX>K zFaTND-mFS!2Fj7q5_jDbc*iz&a=xx1<-TKHH@^ZP29=lXx|qaTXiwMv!2qL`fUgpD z5P^{9RUgeVqd;J!_29ci;`;qj$~S(kS0Dr zf?#gH?+=hDtDmu-@AVk~S8TODWrRJ0burhE`Fc0T>MihQx{ zwVM)BHMUmZp9L@%zS(@GQJZLG6Qz?0( z?SHl6B-C*JwntRs*IFzhv#2~*f$WKtwgcu|-xwKKiz%1_q@D2s0Xu=zktYZ2zkDXk z#mj1M742*ep@RX?EYYoHAD0kj)rIKz_8uPn+Z9Et1e<_*)7dOF8S9S|k+Mcwht zH0XAJ+fbMY00{&F?~mxu(0)V05tN?PYIGf+#OGy!!Kw(o(W$5bTK(eUO}}o1K*_vvANwWwI>% zH})^1q7uw0!DlUDCr^6=5D`p5llxt!Udp?Aif#u2XsF4OdX;|K1y&p8rbb(aSn=Ol zd$$(>ByK;aF5zF-JnTjVd9$m{dwFK7S(_bjd^EF<#4ggnI z{H3mpxi9|nsfzb69`|Klyj{|9?m~je)ctr2hQJy>*3c$@=E$T)(%1_r=szW}@2LeMPUzjdb6D<>CL|la5 z0^RS1x}poCVOom;kkn4iX9VKIJj%as=d`l0pfl8Ungz0kl`M zgHICH2hrlc?e%WY0!Wl9uqvvHw+OOFQqhgmy8mKbEgn}G>L;)9t9uuT0q6+!l?)No z<#|c1BLLimHybP0`_jDREmZy=0H#aEx7JTQFBk`imh`~0K41p*N|UIj$XMa^ z%slJqejvb&ht^X<<+Dv=;Gl{r_TOMdF>P5Gi@qoGzP*TH6$4<)PCU<_^#81q6!UEX zJ#p!~b#BPR=}#l0US2-HZp&Rb00YAT^S##6KmbCHlLVTr`vK{=5MDcg9;ZoAyX7yI zs@nwW=U3sbee}A_ylI+3e=iU~@ST~ds|0NygF5bu7(Sj|w-Q5N9sVP9v!lX=`Z9r_kR7B|VAT;>b*(E0p!*t@Z1GxKQ4M zi$6OMz6CO%Y?x?c;*Hq;H;`ekmR2GeM6=UxL@d}3)N)q7gv6}lWnmz1aipLO_=<_X zhDKFYW-#?!O9iQZj5w!P%b{E8AF~m#^tB0)y|N6gOGXUQES{>#k$CCb_~2!1%DYkW zE6YuU^TOPdBbIQbmDk3fYs*aNIFO%rKTk+7OtM}ok}3aUzfdAmO*CBAl+{Njmvm@r z<~vukltoN4D<>?rP#WVfuXo&BxjY5mmiR9BZ_c@yI*qNiu^0L1v8TsOomX za*%8$wo#Z_#f#1sw#drJw@2!S!axAmni(NF!R$vK8jQh|`4=$DgKZ*qa%SakIH@t= zbR20WeKw~p`+Xv8w5$!04qW6h_sFR~A^%kI{t_~zl!I^inu6dNfo?y}dei_y;jEHH?UfyBjaGzpU{KW#YqnZ6>L* zMqSGBln$ubge}PwB$CK?|m)S5SYuRsSRO7BD-rY2_s~^w^vy{7CzvMQ@1*p$P_{A@B-kQJ}7*0-smkKPzJ9F=ael|9&k#|*4VloT#gJ2myR@HQw@*NgFNlu_9RbhWmGR0>VVT2Nlg_Wx`UAzGT4ly&NpX-58xp0tw-yd z#afJ?bxXdqleXp~Qh=Ci8B$`W?tUY|z>53SZu%p_-;l?4;(6lA4WDkkMdYP{(n`+;s<*i(nSOsuhpR?K|NKlo3yKj=Jbnc#9cS9IoFKd@ zVu&C@u5+bIN90=`TJv+X$U%WWrcjLc-4Hia<+PTxB zJq!5Dlm-?z&Hl8Pi!b%u@E4a2+_qFp;wW8#*P8s9M?vMj>j82BC*&a|tIm%Y{cyEN zxYw=P|_4kg3K7JAcl^lkI3)Y#(ScBIbQ!%US|N^s^ig&=k&JrU@W{w7ENhAg6w}|f zCki$EjLr10=0d6o6JvENNSNbZspZUWg=BrnXcyv?rt6~J_O?=O(OKzZ_t}O)tjVRX z5D4Ae;=@0N1@j($%JVVmNXVVkvGTF;mz`x4dW1P{$sC7!f?%$}QH%@!2y<*QlIf<%$$iIS8fWCyAQ=~bj6g^`hgHZ+a6fXY67IX?w6d}%O zFUxWf2@Y%ukM=n&yQ-;rhce=!Lb{%Lp8zi^{r<9o{w-4r+)QB_xg>ahRn?)@ezZbf z0@S5um#B(cU`G^Px91pFm>P4Qgee-&l{RD1hM2ud$d&K;L?Sn{5X!4rEu^9a!2!o2DHG4;%W5_CIL57IGGtk!)E8Hpq! z9TTM5&fRH`b>8} zO%3}Tk`yw+%u-tpBXL?&pb*hZ9U$~4FPT4SLwtYXP2 z;^j1B^!={W%X?Eh1Zr+2_UoMQc&ShbBIfz(6Did zsaKC<5pZf~Y3rCdyCo(~64LVUN=m6|y1FOS;+x0DO>je8p2z^%r{k8neGq;*UW2`v6lR~54a_Ei6ZZc`3Uez**{jm&RS92Ej z`;CCv>Cc+hewI@;KdzF}EaqGi)wTLoH`8mIrS1HZT_-AZq2G7Hkg5+ywXD)e5ApoU z2~mFxsq53``h-R>4XGQKeh8C%v>n)Hm8H$ld&8dhtZIsQsw)GeYjJb5 z?3=<32R`E~+q~lVT-`7}5iZ@tc@r6@YA|bBpA0$Ixw0~*BW*n_Kaf@P^L;^cc`+iU zZQ>!f`kFVyYFw{CCR#6F?Vz6|=zVk~Y7<91ksg-#Y}5za7)oa%XAwz-zSO7T#sTzf z^msO^rF0AZ;)@SIvorgP>*ip=5^c~qGsb7K$uoLKW!(2(_CBVU+@iI;KR|+=8Mgkg zZivVbrh{1057|MPLN%qRU)HJfdo7B>#|lH??j09B~DjAm0vO$ckkjY;F4Wq z;bzyft8JXqX#m;X1kRF^qJ;(hPNC5bksti;d9NX4HYLBCd!0G|Q>)f!$aSWYq?1bn zQ#+m)F7Xy%Crc*>7dUpA&hXr7iOPqQ(xDEja%1|})`TahaXmz{*+Xy#x&9m9J(@g^ zGlpd_pHEQGBAK&D7DfbR_A?*6gQJOtkSZs%1%_i9 zhkd4ehLB_(Z<4UJUdNByOZVQ^7I?(4OAEiFCq5Tgk&Z2^yYf;&9+9~(%FY-6u<;DR zuJfrkdl6S^)-{%EgWM>qZ3)>7qfEfdF|_Js za$Cl`mEhCO_Dab%f0ENHq=G>aWVn=}UewuVP@=L@mTnzQ)Wa1$2i<@XWJhA^VSCOp zMDE=5wZ(~|^{|F^xt-?Z6aEuyL!(d%g5WDpX4Dj=)-z>3U3xZ-W722~`96k0aX$-BFKbTC6+r=YKwm|r z66PE=O!P+?_4>`*>FUJJ@%d7_+#ZFoP4z(bg;O1pp%sT7;_pn&=mXD}d%_NFm9|7O z2dx?xKmKsEZN$0cwkBxgDkifEP01fmgUzx&B4xW^=@KuwtB?Gi(Prb9m?wEFw}$|fQ+lP zYGVFlYW<5g(igqn+oFW!lOh>*Q#AeL0rJR?EsmpQjbhqhWwsTHI%`<-WgI_Vw}g#b zK~0QVNkVi;0)1oDFy9@NT?OX3sm6{~y%!l1mJF%du~MA2km_!=gO`TF?630OH z;i(s_Lf=o&=c$8D@Y!W-CHkWQz6R39P7eH#F4>)7#CWOIrp8;~#g_{GC`o54Gv^Z* zp0G7Y8Ik{Mmj_d6H^JEO?Oat=GR>!s#PoXsd9noodZT0tBV&CHuS>s1GS5ZKXRpLB zV7?jascc8hj&?VzwVB%Lz%z)I)Tu$C4r%dHf%fa9FT-#(~w0+tOgjRA}pU@-i)TUZL$>K z0#!@b*w-2UGBY>hCMNHUo~o0l0}xH zHnCwuqq3o)oc_FUykE3gC(0jF?%%kVsYPmY=;K~I!jt?VZz4k}zv%H*T$)P5AtrOg zcMGnBR#>2e37yC?j1Muj2YAmeI`Qb{7ZC^JRk^X1CK%R)BaMLb{^RYM3MX6$2XRW0z< z>6^7-Dx!jXeSFT}>1A@wbelQ5mKn#N$Xs-om> z0S}o4dsxXnS~F(ux=&ozK~pv{^{5g?Ku*jgB^!|?oWS13TDnHeXFZ3b$jpIWyQ7fB zdxb6$+XLJ0Bi~0NFg`&mEo^|AHBdyaME5RF8yjpz**>h3NG*w9_*Qk4WZqOt5OEy# zh`9%NFi}-r6-aH>hiL2g_*f+ByW!?lS+G3H(@fgMp5UvwW=)URMS=&G=K~!#*!)b- z+g6BK2beWW(L9upF+<(;MKtos9BG+VCJCG) zkl(MG@ly5>-yS4!*847_dMU7(5vWcrr$z3!CKtDsG|jiF<4qG6L`4-fx3mD&R=W?Q z0R*#&7e-5Y$ctnZY4jHZzeTyfLR0o2eJ(3OcCg$wR3#>csIsuTsfyEE?s-Hc-VYmJ3Z zSWpEwg%Gvo>OjOw!;TS9a`UN#QdDA>C z>Buqh?j}on@;|w3F-N%z=h>E9!XFG>pUEtc6I1u23%9q|=Y4axLkCxZPyzS=B5#DRZNIgqj73bXWk5Mr<0G~2W3NS}%q&=* z<-SF*D=FV4RS~sZ!%QyO{b7 zw7t^31#$>BXHNd>-Cza#Gmmam8mS!AjaFaJ2M>%X{iHk(a)nMuOfPV`8CpH@Bd84p zpQn_*xuSo+z&xcU2d)0ug}7>ZZ{@;K$CMk&-5k`{>C9L38vVj!yYdphxOGCJquy9r zNdwD(h(7uE_XUK4e_C7DxG^zqxwHqtN1tv&2&kl;xhf%WUnT`Xi;U zJWNkl_7!|g$*X0K^5eQLq@BZ7Z;l&K=N`c%u^kME1Uw!uK93kQ9#Y1Qkp0PamUvN8 z^tcnIL-FEVg%dA+Xdya;Au8i#zvma@QdO>C)^T$zvd4MN&2|xjm1JD9ix=TzeYW~t zp%G1A9uIis?V%XXJlr}U2@T2lDt`q{Qm7@ytxPh@iz&Is;Qon*`@2k~G;z$(J7Dpm znmjz+!(5(zd2+r})fzSEvnM5<+Eq(d#ra@z8q&J0j%r4NLr1n54!$}~c%Nh0hojML z47Un+W#P!R)e_vobwl;+VE0nWRegoM9)@Ks=I&AjTyn%@+SGV?ns_i~*HE2SZP7ij zxdo1>u8IFIcaAH3R_6GRi!qepEtcdS%pdhi7&|F+NCa^5U7~s|qv~ZyQ$h3E3yLs~ z7By(6^h+Y(SD+q;Et}31(S2i)Y#vs_MH9u3y8lGxSSVAD6|yVtl9`Aj4*T$mi6iG? zYBFwN44eywb~b8obh4`3+y32|y}j1Du86DOcBfoWHjD?Jty#9YFLrG>`)pt9mGG?FYh+O%DNl{X=Lf5@PjED>#<~q(N5;aPVL+h@%vAhqhI*AgZO5ph1R9tOJ9X<%P7A!yxjp{*0< zxm;*nrHpS&u4mrK93*(JvRF`Qqx)J%^cJ9}hmu2eq3UyDW`V^U6s0gkH4A%y;vPWhEso`xTVYZ4I7Q%YJlQ{1J;}>L!~-?5W{q z^{v7Bs`;@=cEZ(+jfv#W$>R0i(^EbBq=i%NEX##hia>Eh>;~!v&`0@K_+4ACt0YgG z6~1okPjelNHV9%+*pa|en8S%e%GGA&`(_iPw9Bm)_>vmF=N)q|Y6Y4~%tgfARy1tWH zL!3A0mj8_Ll$6Ud%>ZI3QxsjlGbfVGUrB)4>&yf6nO)+4l?ZSTtQ)MBi+kAR``PUl zD6yBmCLFzPA@67K=Qh0P63sX9HLz832VOAPhg*3L+wLdvcJfvHqWJN zUqSOxyhJHd?N3`RTb2UdRP&1Ub2^q+co;}m!d26Q!f$7<6clt=56avr?9T-L8H)R` zBJYuZUZKi;rupjddOV*WMc%NaRZ0zR(z(D=rZvB7e$5&BSp^qWb z$)t?$%#$!_;stor$3pWM-=P(rcP#gWPy5?^_0e)Sj+)f};FH^vlGob=wS75@6q}@X zh!FjyX_z#`KC`s)oF1XB{VLqd5oAQ$~|3|S$ETA zB>QW+F#nk@A1kwJ+*rMcCo5^h{5h|=lb=AGyI13R(V`>sLv-%xk%lew)Ey!d#cvyr z-W_Fpwa(H!J2tTu4?l9%4A-#fRbZYhCdf$Wfv z6ZJJq_-0Y%`_<(QM)}vNTVPZAg8Qm)B>UL*9r%EX=oYBYIj8l|szj)q)38d5`KIko za|>K!5-z?KWY-X!Evc=-qrJdq7^vz|HP=d_e-YJ78ya_v)s>0Lb z85D3hz$YPM9O8NXp(SMeKj&0%d=iV&Qvt#@G58;{;A0_)b7Cl2FBjR8vq8ccKE&pvg)N? zXn9q+!;O5e&=%l&JU!y`@Q)P*yGklg-U`0dK|^?gmhVtn=p=qb5#2>TB7AMO{w;O7 zl02yh@k3?m%AnQ*3<>hj2&_0vQlXojP-v95s1l_Iy}>zuF;|SnB6h|%QoMZIBT83V ztBE*>PwEB}YS@R*P>yLe|0mB8F$1K}%Zl9~(#9n8w4sr>=Tw&;Vr7DpFGrLwYSQ%6 zg1VNFV03yH{us$67)5wQSsbT4X8#LIS2!~Iz zbV*+p@W?W{pyHMkS=;G3g^8Za&U=%LQHzbsEif>$BlI*}zJaEcM~|r;9ZcP&Yi9SW()!6nf-!rbF#UCcwzu% z|B>!%pFC*}af99g!f2aub4N~j6!iwG{KCYVaP+pJs|h}xcp{#Kp2(kyinda6#dCyL zMYB9qm-!z0b<6v*yLeN_y;1j(JuBzG1tJR1%E{LW@&h7%W}g)YL>&CTSc9+^KCUG3 zo>4$v5TJY~PyY#S*D&5cXH|KlU{Z^K%ITa*+S|isFj3E}(wy^VQWuP)_+reX9!pZ3 zeZr-TY2Ay{9L#f^nLYc`>pTeH-$ANyWu62 zWN+P<-q!@!Jm%|B{b(10k*8rZbW_&gu;GHU5FnRxJyPIK_R6^QnOT^>OUdxaE;T1k z0E4X6k`Ynd*bC|$hV21Q9UaoC=X)r7n9i$G=LeY|35#s}>)!PI1QwVI*$qTxRynI^ zcVl{c7Q*Gvgo_@A8Sxia2vnuin^s{hhS||YlHuF(ll-XGKS{>F>P~qPeNfFB;J>6$ z|6NsO*UNsgnnc>XHf&lC7S%HpFSAne-ALBeVM7-lk)227LL&drFO8Zh>X`jXB>Hew z^Si#<>Ju)$y&UNR?2ri`D;wv`EujbA*m2w8gJ%RI4;PZvW(zw~@7UE|?+5fOz8 z2YV{z#v_~)WCQP_V)u0Ud#~t8!~7D>9}D*CPsy3>I<{%7y1>;X9wh~`cV(xTAI=HU z_Eiz4PqUv=2<2tfgz%DQ8t(Ly_y}n*%2LI@FU^kugWu;N4q)*6ks`4|dPFnEW{npM zecS4O*o(do$DT3K%f9sZ9tA$h3N^ayCnZZoZ0mRtRr#O#gfWSznet!EgLxT zE%sv3DGriX$C_iMFp8-4E9LD%cMKM65^@;pi+U8M&?J!LZnj-o1}0XfF&$snh@xbD zggo$rPj~xdJ5aB%W6l!>7R`ewPYTk;kT(u;u7Y|YK18G@3{aMm`viEHx4_$vvbl4v z2gVeq7Vr$0(KJfw`-oWDAp*xa5iMR?vbbz_X$q@pT+efDTuf;-aI=c6wB1@E%9TGZ z=yfnG0^WO}N;Y@8IDMEMHphQ&D@U+z^G(I{=Vz9jel`Nu7VWE~#Jp8RhK!~Umx8~~ zhf&z!SANHQ!vKu6gjqnON;TX( z`92v@o);{9p5Hu)n4j8RkVAkCEjr(BpdHH>dwWy*uNWPxjSrn9YAiqSP5 zUzdCe8eA;S1jgKU9wP)7YkPdU@vt6N{gju)7&t8VkrFSIoPIv8nWDrwY-MzlvWCjR zSN2f?C(BLCH5eL4r%n&j%#;v&LkQ)naT^M9+Mj)@$ai}$(~?*^IJtF&t&I6`uuSOP zlmOeHxj`>|s2It*56Yo94i3ToY~A)aWkiv+Y;`q9*oKQ7*%ip6w-WS(?zOJo*ANqBh-jy@zh^CQ}$|n;6OuWkH?uds{Xv8 zUiTnq;>?d*+POgi3$o4V`UK^yATbbaVql@4s}w+zCrUTPwR;1%Z`7hns$*NfE3S}_ zYHW)Sl{1TyogU{$6-{qlJ0Xb|vJGfLB5Z27#zVS%s34r&Cr`tx$*u-;)}&;G*Zh6k457quWag%!vf@5xl@u2ObmKP{ofQN>`x4i zX@zXCP|DVLY%PgbUGZqoN$ldrIe3DPf^7T&U+_gZs>U+#)fX6UmZkAE{4!jRG=XVsyM@EHJjYv_qA+Hh6Qmipmvv!xfM^ z4>6F)rZduWA$fK}H;1(x7S+EJ^RgRXf(UN49>w1MBHCj-rOp+Lj^iReg|1~V3jFL}k}=Nr zy@ExV>nK_P?QCC6vIZu~{c0SO=ONNk7y@sqS1Y(T~pkAs5ACaSa-|cRf7Q$pTNC}Z- z(BKZC*nsBPx5(~O)Ob5K;HzxEpp0&dsOLsY66A6aTZEO_ z5CmC>shqD&^i{iOS$7GCM368Z@G zQT>Z1)jwLIW>%~crJu%}(8Q~@<$frbBJS&kn(}3EMh7q~M@`X*b@{C$TifGE!cjdp zQpj>esH%H)IHR-~Hm&3iv7|F+A5CfOQFK9?ZR!HBwZl_AsfzY4AoCGIq7WPkI}^;sbvl{I7zc;m_rfXCD1%u(Ff-9EIDrxomJjPE0}nuGGyr z@w-|P%Dlj_xg3Nva5)05zYigyZtrtx*X8-Jg3K6BS+&nczogv5p);HC;WCS*{rZRjj{>l(clK!|bbEP@)s z{lekUEN{IJ)k?ceRs6?y&nF4Kuh|D&rnd2Or*Ey5(_58%u6vN>8M$M&E=xOC1 zG+~?zvMPB_T6nY}bK_ZTo_*;<9w3#m+&x+gSt*ITjx}>-YZzd)K&Z10htJ4KCF#(kku)L?7u;VFoXZY%dl4m z8481(sW`GZ%Iu5tFyW5Vqkz<=Y-y!z+9i(F^W+q4r+yv*;{c^F@1k->pW~7m7nh4? zGx0oOKVKqsg_*t;G%GKE4>lLXNWExDh0u%*p$zRM3_oJD{&ac&5^=UEJH$@BIAi z1+NNbu>W4E*SBLNTlGcWpWY<=B=jlxm6T6Vt6kVi4K#;;W> zc~t`>TGhz9#Zpf>{+HG}OgV z95old10XcgoB%#&V`MTL$Cwf~UaiPDtM726ke@(BMpdfqcLr{94F!40!%dw!K3Hdx z7S_BJ*F=tvsPC+qo^^LL5DvG+UvxKd;oS>`L5>oYY_q7k2iMTFxzB#oQ~S!! zXe8=b+PYHLtJ6ogw+o^o&D2xYlxAD=+@I`C%|g~-Z0(kC@^ zheByM;wq6LciUYL(NngfN4H1DcJa5l_X1 z6Q(_$9uY`i7u4uWMe(BIbVWu^CfudEAl!mqJ=wKj-NAHDv&7KR?u@^aei?PAkZR?l zcqz)nScS|OcUo2RUr(B6-!rb(<|9oqhd+|40Zn} z_c+a2Slrt=xzi)dWP?0|{zr*6uf3|eh0c zqVOqeAJNml7Ly-*3Vg6zwZvT^=ho)gDXU55VM1GDH+gol=L@%(aEv*+YIwd>=r(E` zO&t=zPQ;!VWb)JAa(2(|X-sTdo&#mc%;J7OnU#@hly=!MSyjz6r{`z6;1GqgGey~$ z!iKN+d=_Wn3BGLijVmpk_jP6W=e#yJ%>SfF^H8c|HJRROEh;pRItQ&(BsZU&n0|Ee zJ!he;t~4DiR&P})k&3&2Mhi84s4&q~ZU>~0M| zpau@A1WM4!H*Sz=ai*u#uR^`4mfm+I==JEkAAhYZO)hSZis<>y4(!?TP{z`L->mw%FxI}e5-Nz zn^=jDXKtYB=rwFIqJGrqBLg{^Nh%?SB$y#5&!XRX{q&|i?~n{Ur)$QpCsIGPdqH{D zC`a`o#Uc2)Wa`&w!f`@~TyD5Fbp*FoG?#i+E>&Q0u^_`c0HbqxS_HC{iTB`Hfn#~> ztXn15fTH&~3z#~Z)_yr+X6p9GL1hYlDX=`et6Zuyg`*kzQE;ze-sPDK)it)q*HTx5 z>z^_L?yu~81aq?oD&`h@G8^iDq&?vKZo_xX*oL*$dd;6F*exV=(aj-b`P~FGoGTB> zLRr0!sU@;ObUMY&khh{z>FW62MU{fQ+~0Kt>uyGhb4q5*9SC={vlzL5$1;j&?>e0h z`iU&usmBsy{jLq)98K4}D14n;2IG6pFvqYa8C#s64A0*#G^Uq~rBc<=pVs7C{jlr` ze0@r@#3iE67cJtDyV#kxb}9-EW?R$CBdvWe@>9(i+|rPLcC1#R&2_5vcsX~o&Li1- zJ_jEr6sdh^oZm1F1+bBEiN@lWxp4@LXsWb+r}(Jj*t)KA3x3tc_+tvq<1-&xg7cDM z2mM%=S)~^-JEY>sc6Cd7$@F~&ZY97K&+D12i~8YPQkL$l3#7g+6I>3Q(uYJJf^ltG zp&UGiO1FTPlSK0%7Z}-;*l#a9rm>9?>VPp%M5WmDa$p*i3hq)tXHizX0Mc4@zhJM z+9u~2{D~r@CS9b681hFY{4edN5WFn*L|`AgS)C+e#YJBn?+B|Ff-i2i=1&*ArG-Kr-zJDsD?F2pQh)qO6RUqhEZmLx^!^O%YB;+zpR!NLv)5ZXyv zi}TnuCd+uR7htyYuc2`X8Jng9%rJ<9k5N5{nEQZpbM4=*MVLrdSBBSGI-;atimX@ zz&OEZbnTeE>IRI)=Bqz+%IBb*D0JU_@mE#G&B)r>LeTz39Uq6)VgG881=hK2vk`sJ zE}vS>28ZgvB2`As15V=Ey^a%T+Ktc10aL_d%NZ@2=Iy@o_AmblHpFybEoj+C6X%If z66Ws&@^mqg&KT_*rtNS>ubWQ5y(SMxoeVvyQ=867zyZIsej99Z+yBKgAwA0h&6O`a zrbu1R@pAKFwhCGM6@&ZF9>$ymjKP<$oXQ`%5y_5^ut_BqwMAaf6eo@dj-=FuA9uR+ z(q#o-t&0XhdGE`!vRwZ3y)Hbv7(9iwaQZL|iQFew@{Iw?AgS?0_}LepjW*?*wDH?U z(`!aY5r`+k>tuL<)vK`=crWUFvHLPRm_+$y{7DLc@6&=X0r&4!BlEHu_G)F0;&5%R z_ZAxzdc1dyvWrR##RS-uPc#T2>jf!H1~Rxa7>JqA-xU0INe} z$Q&6vrZ)SFJ}M@1*gXQ zya*fKqo~<9nc{fc#Lj}>6;XyJsqTOS|BiQLY-GxSm{*$fg;Psu6(Ghx$Uf6K8!^6- zw|a7oj}Lmubm!wEsVvl^87QWr9;X<4Sw0mdGEEy*>H9fO)8Hdr6yxK8n?hMk=SUfP zXF2~$Iy`yd&FF;*nnWS#!o6BT?Q=J?j@ccQ9s=mk znFgHnVF5FEuAL2Lnou`ba4gm%OY8yEE1=H*T72+Q;wjT?vehf&qD*zFJbE6;l4cM2W^(}JZOPx%qj>s*#nI=2rd}sRIxT21Zw4Wd5{MXy{1Uy1x*fi-Rj;4Y(bfAKda&Jt(Ow=8yc zT0PDQZtiXVrX=G6MKWg$bt|lp!LuyVezrK?suOA_ zW_1@1m_EH&r)Zz-#J|L0=~yuUhSc;`GY|l@HNbAyQbu*N{q_TDN~ENV{Lbi&g25k4 zW;fwoh2EfIT!DUQ|MN)ttzp0CJWCz6PTo6~=Y};5DtuKzO^Jh6e*mjr4@3iQ#KqI6 zK0m`|5*bq%JQ_xJNo2bB;!yRDZI?>GhKVq3zPP6S>j)ce%j|bQl+I>_%CU8^_aRj~ zErdftAg{^a$y6fu;R{}Da(L4Eq~$YFh)P->LP`g=jAEI3S4wG*OwV#qmJ1L?+W5be zrbkY=uMnkB^t(zrV)%WEeyS1=em0$yUvr`@EfLa-clxY0z)@q+qv7yut` zZ6Fvc4uwh8m+mlM;^S&cCUd5$1vj-H$# ztn-C5_L(RX!lCaBQKSnXs`&hTT8{oZbcE^RDAG-IRsaJ{1@scRy_Rv5O|NK;U>gu< z@*U`O9(~O-GISBM_+-I7$@k%vL<1JQtmdZF3Q;w>yqt$DLtVG(fImW zW4KribSK?1hk45B^UP-^$Zjvo{*Y=|0rDEoO+@yqMC!OBe7M|g5b$_%6stI@NVCSL z0ZY%(zo?uCfAzJad~7{XW%`=ccqL+82#rSfO1twKK>bL1P^{z^@WoS?*3tpJ-D-Dk z*m&VxB;@|M2 z>agc-RLy(6X{9~6Ffd3VO25#crip!}SZIZvxCmtFIws62%5x_oFa~aI#>RNS`7%Qu zpfn{=mqzM%6!%k~M%W#$b-}KuwgvMz@xn0FirE_o?*zN$ImO7z@bGA+|Ne-)u~uSf*$pQhl<~X}{WdAyXd_Xf_DCrDK5G z)lDZkk8vZ3DHdDI;YuI-O+Hn6(Og(bUR_86^;w4Yylu>ff_YJzB_AK`b6TGVK_pG2 zuk`uHG^2MVX@xggnTB#pm$wRYk=w8WxUKs)OKi$ygUQ@G_B`_2_1Tqc`@V-rlxdIv zAWDlO)MI5`@xhu7aU`Y12f_!QFW0n<8ED!0eJpCA9Wg^{D2a{Rf@UUw^=Mb}#ep|t zG^GJ5Vl4|uX<&l#vkuQoN`+yi8l&3!X8^`E3+8 z(8xeMqENUQJp1+j07kvvxrFZz<*<0Mxxq+!974RHZcNJ&xpfH0gj1o2GK5_kIc zaq*U%v<$j3_@-JR6U)qmq)5q96G;*@u-u3q`(ioXMmxY4F_%vOsgjhJ9!U0G74&B~ zX}m|zQ;Yu)-BV{m;qze7xI+gWusH+;FuRZ5!+fByW6d1NNI>3E`&5cEB$h0)?fmf*1zF=iChc$)XLbC>Kd{KA2y&B}Z~vYd{X-V(Rl zeaM+H#jHQl4nl3!4lAxSZYY_JDiWeA*KcFC;`pilQg_y?E$3hp|@d&vk2+rFKYil$i-)a^9C>mvTr< zvu;r$*?<{$_2!}|se1-QpH#l^N99eBjJA`=C>Pypn1-ZhCDZ6$7H$zHuEu3x>Ud0g zEgk2JU359(BvVPzPu^;mbQn=Sz#L6~WP_uZOOG_@i2K&co3BbqeQp(L9wa_rl}Ntr z9}@ZlSfBa>Xpp{plF;h^1HdVMEW@2WJ%dQzcu5{=26e_Kxgo%;6p=rMUp@pD#6MAK z-0RX*Z){NppX>!M+*t$L3bDiy4Ae$dP+kCCs?YFo7 z1Uo|z6KpR&wf|6Vi8EkYhxQFYPoyu@hRP24Woszv(5r{Nj22y#(yNID+$3q)RHvrbNP`@BXueoerNS*DJMzd{L93&G;mL#KlS7=4NLxpS;xS>z zPTYL;EPU3MPT{OjasB^zjoskCZ{g%B=6UpYPW5C;SQDsikq~DC0?ez1m`D8EKS+RRqXYcvEiD6~SzF7~CiV2I3hi+{#7U zp2e3FBK+H*1OFq9sHJ{P2Z2SR4Pd-hf@8A6W zaw0kZU%uR%aSQJ0q81-cNTuz`2(>#U8a+7F1%&?9@g`tjWyr<_tk_Viu zXafL9-hBy1a9ri_5u{cmjA!WR*a*?ce`pBEDEI(WI&Nt#w@?Cl9&HO+E}6u`#=iJGd)?@%OCOx@k4TP+(D_M?!;lhYO|itR?=f zAfwQ$;mMS=id}Xu{++fgG2q44YzebGMObx@zY)AUW#raA?9Hs&BX^F9NYF)wSCgD( zuCFmSaeTuYuf~WsnrgF|fWpDuvsu|7HNlH9ZyOD22R3aSCOE}HQsv@GyD7T;?GC9U$8EFYq zR%ht@#$)Nfn4tWSev_pWdLo4Jn0;~CSfY_+fFjj%gK-*><<}plU$Q_5C&eYdImb{> zpNQ!ONpn}>bFDLf8LI=4E3K*-EoA;~&bCNftkh}*PaEx}_Ypw|Y~L>~G8<1(`th34M#)5M(Z6>7Q?k?~4udzsCspDc_Abdu5a2=OII(-1GT)gSh!%Mq7=;kW@OMbSSqZdcyy_oo-SEQOPqDi<`X-=56BA zoV&r|lag!p1t?ToSr>!;tJ79qZ=+{IKCHX%2RDrOqFir1-=}Y|Z|W+Jk#vGJe$G0C zUKLOeXD;4V)gG%^5fy&B9GBA2?3t2Z(BGwtjx?;STT76jt0o2d7!A6+MtbP)(&`xi z0;Oq@-j^wESv`yf*U+T8o7yx*kYr-y$)cP9F9!R575d2qUvQH=QCC@%c2^vbbApP* z^{E+z2Gcgw;a@wZP4>!Gy1Nfv?l{-s@z1t$T!OQTBeF9^PG|UBun4DJn8dnyiK{-- zFSzVxwhB-FP^({*!BBnO{>w>{^%kKO#{2d_ahtMfyRw6@wqyN1vg5(}Vt&S|kUr~F zKcHoc+9GWq{Ii-R<71(DAdVcUc+poLEkoNoilIl&?R@sFb7EE5JEbDU*MxG}*+K_0 zUij}9gmRD~5qGsSD||t8%ocj%Q=5MV9GU*&fC4hvt7dPzInx;W_quPh=MLV+5)<>I zviszISSnd(rZ7>48!L%NqiAh~X)Kvgu<=st0T529q%NDVZ z6ynH;_ggv1@#p+cJwX~N(R%;Udn!THn`Ae%c2ZizD4+c!(ZRO9j;OrX;OzyfeuKqqB)QYP{Tka zNQ6wb=nfmW&Fn%MTvV1IWlh?oh)}P!oQ=}>gsUu9X zp5&~hjreiy&~u~Loi52vv+eX4^U$3gWWP8CmOsXdui!iovp!g!@s6snH!Nbl>FO@a zelxz$X<0q_Hk}-To;0cKXUxh$4GwQ=G(w-+rkE`G5Bj{u`l^@*kB%oz8+{nGjO<=M*Q-7N#_ z9owq1j#97dia)|!=-`Es&u|XptuiD$c<+V{%P(fPqY5IDl7Zi)3O`{)b3WH`oREoC zYU?}gf-~8z?RAv-bWM+FD|!>4;^Rr9!8LfCBs_SOdkxtMM$oi{skzWgt5^p4Q6jARh4JKQGA7MenumG7(BEAQ&Dc$5C2DJt*FR5}q) z6F&ZMgcEF%=(SO$yy;H~)*%SNo%sFYReam)g4K>r`}^AeKbOXQI1s2_FKXf}5@o?i z4Ub8}EBX51tM??9{&5*LjS+aMX8wwVCt`=YvBWCIv2Fi$Wkva(q-=i57mBY8fuvyw zUw)I8lZe{R7j?5RVv;OT10_iY16f$iBv^Ju}#nXmb0~Blf`EFA{fgWM*`RH zx5+Yut_H$#RllB^ZT5tFI~YfRfeut;-C zGwUerI^YIk(KxdUmjQ`~6KcYEiRiIBOienFj_nk2MbY?T6**@pe5D<}^kNb5o^VqF zFGl-HskL5)D)max)8BYtkC|G735kx#bslXp)3O>b@qe1_RbHwoc1Ck4Av1-r3xam< zbYvNnj!A#VJ?jW3<8*qz%PFsLzW#oVWh(>}f(p|_W-e1z#SF`yrU+{vP16a5;-&P( z5)iziA^PR#hK$cY-M^-Tun;;~iC-8a8YxPA( zaKq7;al`r5AL?V2zWd}HN_mniZtEkwyl!*Ej`ZjCib%iAIlriJEi!28ID*-PZ!mC- zXfa?&eq|aO6RAa&Hm+2e)kl3gJ|vrm4V=abY>)i9Y-E0UC2K+Yc2$Bh5BWi-Go%#n zh4KHnH9OH%Ud(BEJO_d*hWx^O0*8KHk_+7^OQ+de9c>IAkrLVHsSky@owU1A)|Y}r zKtOygG=!(^sdWDV&{m%UeITWbAVVw=7Q%n~$wbcI#Z>%QH-@0BJy*@iZayjtOc!#- z?^!qB7wc9PI-OD@DfyY0)r^tG&Ffr3Sk73!I>>3q3l1U@mtnr-RDe8v5A|r-PYOkBZ^wE zisr$v$>;HMYk}mg@HVx7{c%A1;962r`6=z5`q&Jui-C$KLB`oi9KE)wm@oxrw z_ObH|@2;H&nZOogV+e&75+oyId_6O^ z>5s!pU2#u=s3p)LJ4Z%^4!Yo)CZcdIvdqQQsNp%VnA zw7TT7Sdrt1LvIT=;MDc^6aW5eYcb)w7V)&PCb9`o3X?)!H{k3yv6pv@{4p8QsG*V4 z9QBayx|?}0T%GC=O)ZiS-l&^(K~Cf4b1qYFy-s4GE~z8epb;^#e{Ww&CmSDHVZ;38 zxvK6=tB=3cchl(5&ynb%l#SVLFe0{>g%hxtQ#>*2k;^7?;>}sNc_H?$EgCL1OnfZ> z)?hAZ_h#N&@i>D^t>u!8RoQ4li%l@w7_SK@mO$6#zYKkuf`RJjz#1X)FNGCyK5Kg@ zUQb(jD${z{g}_NF+pKz5roTq2h)6#dE4rKuJm>c^L=`c4g`5vz&y2%mI%|47sx?ep zBAlwD2E;T%4q(+nr?Jx%A$bf)8*ix%zl2~imGW|FH)Ktz|6UMUUX4gtpde>aQd)Om zs=InV$+T2NtrjSt{vS38b`YY$x^e$b+oLH@8~Yu`d&z|9^Tzc>#esoEpOPES3n07F z+co*1Y-MC}c zX|PQWmJKN=cB*IE6;Uwj zlmBL6DH_%@prM?wy_<6ukfreCl$dg}=aDVUY+7`~N_^#rUMdWUC|rrYO8H+%M(NyT zl9ZiOYFzmOsofhw(NR3jQw0OHpDp~g>r6du1?IKEG??>5Crgzm1L{q7-iWxcb5;Sd z3zpua9aFJ-hw!_1`D|0v`Hf(^ukX)gwYnZ+jDP;Ed3<&MFym>Hbjp=`=-1VD+DO*fz==Uh8hg5rflb;O6~+|% z@x@(xbLz{P|{TTlW_Ab_2zR8kU|)z0uZD>Jfr8c_)fleoLQA0xb?WdDzbXLZI+x-shN@ZAAI&*|0h7Beexbq;hUW^`81!gf{&st|BAz z{iP`K6x$WmL!U;{((6Ys$W>PL{9LxwHqUW2C>-fT_M3INC6F_L`$uA4)AApQfHuD@ z{dgrS8e%)ug6tiIs1eCnI5Hc37;xlKCORr%g~BK{9%1Chl;ld9n(G_h=qZJaR`OCT z6xcbbR9_q@A|`LtS|)o2!eIa8Rbs==oRg?bf=k@|xG|u#So~+gRpqTHuTnhUZ&PIo z49xJ&g(^eLn2WveX8nteNHHv_Dl z!}6(XhP1fHQfdn|8IJ&yDVLSU)`H3|PGYV4l;UsIC8NowjV$%medZShxr(OJO^Ln+ z5_9pMuJ!<&V#j_BQQlw@fIf0F)jA3NSHW0*M4G0y?O+{QvMa<^!}|5d-HQ&hcl(@( zd-sEtNolZ}L5M1#SLrNfy&fIk#Z*R9kh)ZA$-fB2Z7=CXf7yRr!d|zJjg6MlCO+EW zAi4&HqVg>IfAhhP=xDABc(J8LZpY?gtfP2zTvkTwU>FSF5=MY~;!9b;LJ_Z<>%wDe zz42AMJzWTF6>=(G>yR>!Cu8BqSMn>6Z5yGO*~|HY(G|Zmxwwst(?zI~5n2#w_?+i| zdxU>qqOvL=0b%B7sw14fPpH|KzBnz6tWsf8O3lHCyoipOI^JJZIAj!L%xBNB0ceQx zQvRyK;Xgx&!f^xW(TIp?|BAwC0l9dklJFS$1hg&OJnG;R{D0NpEUmm?wGC6c*6yKU z35nk)|0M{A1VEESXy+aTe6;m->d$mzPNY}O4);hVlf=Gy(whugMhw;MFWwrc-FvzI z0aTk0$+81vQ4*xLF&Gk2Jtb%Tm;oNZGk`ZVC5q5=>PHTUFrINHFu7+2ze#=1FSQ)p zygAvo-0o!D!3b_yn|-UO-7GP{UhNhvnl&NFIW|Y*%{KTt=_1nQD$Oe`jP){7lya-= zL!QD7iuDPm?GPh{1bZpo;zdRgL(3AGZ3G&tqj>JO8?qR6_d;u8nprf_#y}@67Gus= z*^ISwn?j=(UU)hF-ugl=8%Q*gilo5HrZ;D zJMvefHkoJjMD0R5>3h9kZI-X6wq?*Pxtfz+ma|c|W5tGJ}PkREfOpuw-qm z0FDFCq1R2G*Z|@72}3ih4%1BNpWPDbJ);Cc`gnnln#NA-W5g5ql12qkx}S~ z1`lXZl9%d{=`faLW0wQRfMEgpx|GBDSf0LCu)VmRNbFUF?$>_v>AmWKj5FgUvQ?8g zawXpymt&$x-bQxMov3M}pP&~pKqHG}Tm=wbvc(;)+1nW&qb4zar=GT=?4FO<+$DSC zz(_5{9p?I^K)gs7wN-`bN(N5*funH!I>429A?P*EYXeN4Y>fc@Hp|E2ea`45sX^zM zZ-rW6>T?@eYHf7xR|Ebpk<_ zQ1nvNjJ19@xi@KA^=+|D0xlUUwSy#iXsd6zj>HW6uYQs-^y{OuNtQJ^Ht{-ilk(kl zgT0*#Bo%PzH0(&a<*EJ9m_IwP%~<8{GW(t?Lz}37P)oh37vKwbH7vmIh5DdxDvsRn zKDnt}71Zb>C5P(klc7?};rZbyY6htJ$j;~ORjDM&-7nfa<}2^Vlh}#dR1bR_Rgu$@BjH^RXz_#V0V@7H=s$kZgqbP}6zE~DI} z0J!Q$`uict($Pc9M}Okb1z^^XQ<`VZ?~AMX3X$d9*oCifCbUkJUrv^9!5dWQ)OHP~ zN9_X!b!m*OJ%DozZO>5_R0N9CM?Yo`@|_QytFbp3Ktaz%Yp&`D0?%>4O6^MP9A=rR zB{SoaY7#TURykOVDeuf?>(hqvia(On=&zRi z6vS>{dH(?rG8X2KNV0!?3nSz+k~^e4QK9@f@(HLTw-40r+i(|iDJ(BweP#qg^`Mz@ z<(L3!DLfa0^5oM)D#m))LQk3N>)T1dUQT7>6st)h4quapV7TRs6ExE{^G2V)!ITPZ zs`dqUI)s7M_%%c(HOXP9i`bY0K9=&7QSN~kMMYXQK~oV(#Jy|xRk_AeQQ8|VRZgy)7}Fm^iI)lm@cGJ zJ%0O?juT1;`1nY6-d2%%T8KbNi_YWc4LOdeWcny|Xj1|>E8O$DP7GC+rR?Bx2;B$t z1^9mXSS$^qa3zL&Sbmp|bP_P(Raa0Kf_QHpqDXoN&#F9~Uk4)8IfRPtwRQ$A4aKs` zo4Cs+(r;)Mzqj1R_rGyhtSA|Miz*CCIShXy_B=kk8CtY_>({5~;IK<^!O02{ zN6iU*$E=~@;Pyj*&$6=V%-Bd#8#E|3C=Pmf@*k(9R-0%m-1A9<3KRVStgUY`)G{x@5>jZ)O}G}lY)vau1D zW!;p%3SV$q!Kt-xg$d%#d>7FRhggN>HV6m}I6g%X%vbri=oeRNrW72}v(|j8Oc1}D z(cxAu^yqS-wbQDpg^0$ zHG8C-$UH|++G@r7cS(z_SQ7Qb&l3qk@*@_nj70E3`*%k@im4^PibjPs$%1mcVb0+z z+a^cv*PNdS_-fl|K5;W&;KT~E0IbIOJ(UTJS)1Y|;nNkQYy6*H{N5PnDTgscI>#(( zShrNAULLAAQWMoY9#m|!`)Ud;TOdyFsadAAmL_9H91ns{i%tu;LPC%icY{}g{vFR8 zmC1|PuJ=^JPK>}dYQv*%&@N3i_`SMWw+p>fu0touV2op67wKNTJ^kdSuFnpambG#j z!G%g|=;_IKle$d^6;*>83VDuq;&E|E4{H||QQFezrssJ@b>E~6B_P)++P`=i~W81DB=g)HubtLZOUTnG<{?oV4R6V`u@Tm&% zPiD22EM1gM<^zw`KJRMI3yO=Uvkyzv39#T|6HPk{A(`0cR?BZ4{syeLIZ}O7^30B7 z$g4MTXIlfkx;v5+!sh)d>ZNAMh6)T}^-e@i2(`*k=!XjT5kIKL$p5-{9-$R*P?kj4 zl3CQD#}jcxxARRe(~U{W??J%Fs$Gi9Wmdx+nVi6K#e>t>@{8~Od<{Oq_CJ5LEJ%|w zB%+rv%mrRXVLs#)ZMsYxbNeQtJQBEE)Gv~e#-*zJh!OBqO-E%uv6j7CW=i(Jw1RFu z7=43mIz%z%iB6;4T7D9`D~g{|xfeJ;5zdA$%`~TzqzqBI=^Q7A_`fgf{K-mrlj1f^ zL7zYgLHktPYZ{B1zKFxPD716-iF23I<@kNyT+&@)N!Kl6F2eNn{rK{U-NUcXhl=AM zyU5K-)49PdHkR;sy8VrxRyMi*pGUj}k#-x86z!(iPA`s_1{#dhpcy-&Lf;;ZC}Me2vqx>xs;)$>(?(S^yl<_t!ft5E3Qqrt8 zmS&b$aTMDX;zm@76?IedO5;@Uw z9Q7w?ie#^XjhPqo9v?f&>ouBW@9%^7?Q>kBudf~);S$TZi0Cw(|Dly;b@8-Z?%q?f zvuQ*BHjQq~L6#tc?0TUC71j z$OP80!F=IZ-zV-7NHjA;y=OZo*mF@X|5dRmRf($lO96V*2_5I9VF=^<7F&BgzrxEc zh_8()eDrxm;y^Ki1jg3&Abp#G)m4tUg^C}Bkywjyg?~t6G;ztoY6y+Qr4l&882|LW zXY$}j>_jHh71Xc`3<|nBY?Ef#%Vw|q89S%vhB`OzSPG-aZiu`{6!ZcC4n7pbK!m-a zM@X!nZte1PJ+991I3j`~%tx3Ewl*A5(E*p!zn( zqCCMZYLfM?#D1pq7Kp+R*H`$8_IqO+^3z!<{6*e+>vP^+TI#Fr!k@V3YJ_6D1`LD$Ll`Gpf)fWRur{6-8U6(ylH7W|QL+V;l%o1@R2m}L{#mnSQ^wW+^! zJ$`;v#0~ZqF51+Xw#@sYn|(OA`0l-d%u%p#KTv+}OjuWX#T#H(FZjTf5wjLe&aZg! zCZ5iF;v6P%!GBf#b!3B~Ubp`4t4=BMVQdG24Vw^TErkZ!?k}fA5Mj&f&%gg7ubLp# zEi8l9QQ~j7xkJ`S`-?8}K)T7i^M!RL{qe)w^)gh7Bca5F<-cMTa;OT}x0F$OO$fu{u>bvF6 zB+s{(&cQQ>4+Z%Mr8K9fCf9%eBLXi@JOB?UeE@({m_zbglpmMfVWHyGT7AK4m=CY> z%GL+W0F^$D`4k~OLw8m%t}FlQK&GsOW29$|Ep!Cx2N2HwxiUL{p~ek4LSgb!VZoJt zZmw%^ZJono)y|&G)}sTrm)Dcb%Gl*JbREhb-Zqlt;;cdUA~yIulSZWn|E`aykCLOX zYP03=2f_y+6K_u5_2xNJXbisZ27P^0`2ACKV!XVyj5Orfw@yICH@iW`(Va3i6Fhyu zvh}Saazwkj-^oQCQs(D(vREwE;B4TP@*GbIu154})JzyJN}mQVKvuRJ16)#D!k=Cf zYRkXdx~2PL>}5H~5ZD%+miB1fQMg&NwgVpD`&^Nnw6x@{AC0urjB^ua~rI%zLenr4_@Az@tUV?C%m6R@T&G_B08$aV)hR}8}U4QPz8NCA#3w4>WS482`e#al}50OhC0R| zeO42l4XQbZfE&}nouA+{BQ~>2aTU$1+Q0NmHkxCG5Wh?G0&M(*z{|G$)%48JP$<7> zxgp9@olzapewgA1pI06f3>Fc(fk0h&1BngT`Ne3_91xpe=QSv;E>XbTZ1)smqh$@A zk$X=@g@H&8vA!abL;Q2sV8f1QML9I6^gjB|i>me6KXIpCHT{*|JP~&eXM*{g(OY$VN_2 zPLo&WRQagSfiA;0TnQS$XO(NdLcAuJ+LuRJpZ>EwYAx)S?}hEgxZLDq%8v+PRI)@^vk2C&XIw%xZkrkMr-FmLIfH z|KhkUzxX+k4zMw(6zL*FMd%1McT5rGaT#bRoG9S7B{A^P=+cdvpJ>m<-H9MHRFgtm+YOxWPWYS8y z&nqFBqaX%_BrA7dC2m#_7Z}dEU1rscZo2v_avUC7?Q~Pt$y3aEP-2|1iJf7r=uoot zkWtE0LWxxq$wfCDVV5d2C7-XH=Qt_M_>0|tIT)y@XvS@x2p^a1Fn7GkeYY(KL&2Xh z3QQ|cGF@<GZCY9DF)&2HTZb^?T$X(j#Fg;&hH!{r3(eWqtK2L_n)+P-7J*;Acm?4$+ z9M$uXnA0byt*F{l>G*o0HrTy8h^YJkGPpW!|Fw)*5&XNUpcZ}7KmxLCm1)^)dy)7D z;8j!8&u5D+@h-Xfo9^_F#$}O=@a{k#`9-SVdvP1=t2wT|GJe*#GPB4bcbu=%>`SY~ z!s(BeZ8c7rU&n9%zD2Czbo7& zCzn!BtLB9I3$tz`{{XOFQ8J_%eh20VZzWH#Y-o=Ifmj2|x;dDKzZj z60BQu_c7RZ)my}W<yqFZ;3U~f$Y&TnhVOf8) zchyrEVkth3@O(u3ZJOMyEkt&{S#3*NVUULHAuZ;_pYvssXccv5uj6!6*=9X!ht9hx!pjSK>s(TwvqRQNENMTpy;DS{#3W%KIvy7#oAy zQ}AM6N2kTKN!Ajbm7Y2}r@_$O`dxXIUMMQ$=k61!Z1@m&rEdJ^YvW7#-N)OqIL}+5 zWA50aESHW27#MC?$)-klk3)q?k+fy1;YUhrPKv+S=T&|>%Te)DPn&wHGE2X~+-Gnk z^7ZmZOiB=*#~~-@OYi6+A>YNQ`Kd|iaq1G13tMy#s(2*LjmA<~wv-=u4ebAyFibElJyh^*4=wppopGozqWV_#)Nem#}Lxx zwxytTUt)N@_et=@p5&=PP^r}=!P98_z>&k%fp)`7zU=yH>`#Y%o3zP7$E-t5G8hL* z?L5(9$p%J6FC}EjTGY9xE_tR=(jF*rJ`}VSn}i*LqO59+7& zVp9m*o^qaRbJY2qJyOXLohCF)7)d6o^}ZY~MePrVml$@KZ_pDT$x#%HvsmN)R-^Q(vBcm9?yUvY(jjyR9=%TTS#{mOK)|l4u3try|A& z=xLpxPzT5D3l@arAoboV_JfMo3Ih6KlDT4<0|?efO^3n0I|w+$h~D#n8Y`YcOkS6b;R0kskIPffUSgiTU-OlIXDe!XxyVvij=v@w@ zWJ|Eez>5(Dqj*N?6stjLaRf$tn)n@vOgG;q9`cn*s$LKpQ}M>$vi)*eh%7yN^L6n{ zjio}05e^s6=z%73K4gytE0+aj^gm7Z51{6oxisa9&O~in{qTe+&^&l;=NP1#6NVOX zX-^g+9;Q>v<|ss|_G*K}J5*ei^2#KR+GKr@viT$R7W&xtZCuR&4IecWxf$SbTCOU* zj=8DNA&l5q!{6~iaCsMK1ksBV>0mNcIS6|YP61~dQL>%@EO~zy;g4{+r;^>K9;%VS zFJSdIhXVsCp5lS(rHjCh6=)|8POA5|C=KJ(s@t^O9k{N)<<)999zknnX1@`g!d5#s z;C3rDQV+F`Fa)p-lITL$S#UHaRrAo5{o2Y+?(B1Q%JF)gBWHg0Xa}YmsdV7%WUy5; z&aMAeQT^+0k`C(&htOd^G=qJF9(9hS)WeF__%^jl+aJL3Uahh2nL^db1eHvZ{j)TR z>iF3%6*BP+`qT=SC*LZ)Z@0R?;CAdd#X6q#g%1hG_56OM9_wQz8sZsOu$_v;I)(yt zMHxN#)RvK-$^vjoydkM6p+avnyx$Y7f(ZZrlhJhhs9`aMP z9e7;{3Uldb76~b|@6=GNauZ)ljNG10wwY0Q*_px&YRHGN%M;$8HnYvq;twYRAm-jV znkO>BFO#zA;FX<&@xAs7-+hBwEoyDlMx?Syf8?e_m8$nryw4O9U|?Cjn-rgCa4F@m zDM)-jFj7b(7+wJP`KZp^A@IAz;L!%!=5sH{eViJXkcwXK!_VQ=T7u!5lCObZPM@_{ zrbl~yZ8d4=VA6{1gkwk}zR_ZBGW8>zI$146MXss5UwB?myzL8Z@+JNlQc8U-SX9ZK zyJ!-~P?lNR#C_5DR&36Pc0ijB)o#4&@Wrx0P;_B44z=&oTMHiUu9ACI$Nj9jxvst$ z!y=tI>4FKRE$)cyi#+R2C(3hiaG4V4%6cCG@wL?(+;TDAUdo>XZPu~6Mhsr!e+v)v zH3dd1!037kwN~AEZvE_c@9;oadSm>%AGK zf@QYkanC_}zeG@=PkqLWy>VQenz2G$0){gbX*q?7)-_7=RA_Tg@ztQpj~o5Wt`W^TWd{Eepoo1RJ6(qQ<=wIN(ee*wfEacJSpw;M2us zkR?q1(J#5)>6UA}S;1|x~ zZBa*m0N-F$AFMsQ@+&9t)0p}tM67ciY~(zZc{mp-=JM)S2JJ?Fqo*iJmN-Wq(o zXqq!R7V0cy9$%lfwI8$oV#H?%`)llEAO8mnosJTdxOd=j9rZj1`sx!SUc~M(kxpbr+}(5eF}*e8U{N%QCwc$goIq#K*}sNI;EUfLJ-b zFWzk4s3WLF@W>l>KE|qG55QF@O1s(n)_A^(#n9sKobm+}IkktWkO$tTL_)c639!Lc zL&#})_Foo=+_(zryeFlt^DjxEU#kcSjS71PnN=pxf!P3shP4oj5l40 zOvaS$N5YaXJ)N}_sdcB}P~uC6*C2pJWjXYaF7Qz1wU`A(a|8YoYBG=6R1h$AkK=HFH7I5$@j3FEeq9=f^PzwH4yHT@A?X#- z;c`6U3#CY&nmaJud=;h<%7pBt(PgU3yG3HSUq`AuS$3xHn)C{eBpiliZ5`%ssx_IG=aE0nkeQoi)FVr z^p_(t-RhncvIb9#*#FZ53OyCuslkzoU3LXT;?>9*&k8X=F0+XVFGs$SQiJbSG0!>L z2>l9)MsH@N8cgnVYqZ%uu(LUd`=z}ln-gU4MyTQ2!y7Z=x2Gd_Zq=?X-)c#vYUQL_ ze2(#CPNaTRA~rPM+1G~P6&vi{yeNu|mz-VTjmD!8CA1NN)_IO@(S*)Ih(olHOn)hix zQft7q&dj&mxK2;n?by`> z+m|N+wz9FkVcXyIQp&lKt}9JU9+XK=-Is^WV-mfmd7O~^x$+fd+A>aQLsr3GC3U=N z|DM}l=Spw(^H*fF)HY);V3+#7_oJlzmZ<)DF?8?;N0O6vg(96yc40g~f!7l0@J#PL zZS$;KV852B@Z2qfXBYwO%quw-KJ~?#ruq5SuC3&fR z{lRq1pa>CC0pC&v{LEztW|eN@dByvgk79xPQhQ12OytwZvpBV{(|*R%C7<-0v|Z0! zbCZ-5?`B#ocwHhnpY)OP!a6iYPUZieUjKkzFs_}Ww#5?j&50Yz_WcNo{4)p%fY5Q=J;W<$S zhBZZ%yN};1x*J4(3AAJG_}XIi+^o?~Op<(hXW5y+>yH$kIY{b_qRFdS&vMgfzM)>1 zTGqaP@2(GGijxE^RCw-b=2C&3J=57ZQ%4V4&LzqliW-IP$<^OKN@w2}pUPBfQQn_T z?>KaCbIiL&qg8H~(2_eO_bRPOzhg({h^>h8E{D*!Gak;CG){dV3uN5pmZl+X9HnE+x}E=P4BL(@fyl5~r% z3Zf+$+!SgOO7}HMa8!AF5^W@uT&10f>@&&^beoL`P_@CY;Wd2HZ3r0Rji!!|-+y(& z+e!>@OWb&9-XG|tCLwfmw`ef?G0Pz~L|3z0>!WV%%d9QJDc~R6Wwyf|FWt_5ZEOr1 zp{vyrGV}fRv*%NsH|?9nZm(B4{PxQR&iNJ!l@$>$+}g6*bQH^G7+vdVw^q{_C_*w{ zQc#aUs9>@XA7n~2yB%vzPKiQib$b^ZwyScF$$3)^h8*>huV%)K5Pn6iYw2r6v(zkLnh*`XAA3V4lW1>DHA+`xH@>aXt z57hcz?z$OwC<>bSGB97IGev%wrLZtwVzVDW({>9!op?TA*wGhz`AV8uLjNNLC%n8P z!UXjB^_f!&46hi`m1yuTOQ|dz#N7BJB!PUg)|j}<>=uBCfwiRF4E&XG+jF(PFnjQO zyfAMh;CC&a)3S?f-+f@Qs7NI=Y+X$`rTD@B(5jW!*0k<-=+vRQoeZ*P)i)K) z7Rk0$eyGvOq+{z^7&Lr)r>+U=!xb(X4zr}ZrcjR;;l~<@ z!|+3lBjhhl*LyqilEQlRY$VrK>%~uPxJZa=ZqJIFFcUSoYn`ubpVB2?DxCGxGzgrIW6|{>Qh8;&vf?^VM9i(TDql(a@OR{4zA)2MRIxb^chLyYdXpmHTs_sMR|Ckbw>q>qxFzeM68@Dl!bs6vD zN~(YIdjPMl62*PMTmGBX!s#*@7@u1P49I=r8UnO^=lCBu-o;DPBTuyn%`Dg-`~}b( z$Hfo4VM$1N!>D|`RbFd?7gfwOG+QKTCEfUOYT<8g#L7(8z(BBc`#0gR6;x*4y z?3zZ+_k;W5dR-${7c&L1f!;5-mYA2;t$j_Bqj5Wf3+`)gvCTvZ*Kg~Q~t)=@0#S5^7sd>v9KK35>MLuVUnka zfF6R8{w5K2qIy*#3eLg|Z|r#Sztw=4dS5fB*3YQHvp;Hn=htIPQj1}x{Q-tA&V{3f z>|ZP*kK40Bm6bKKMcFSHDw-{l%hR>E{O;9xulNs(Zdat<81TEP5-b6y(`O{7*`rV~ zfJBr&Qr_Xx_%Q1gqN&^CkgEP#CBk1fNaVrJ1Bskq-qn-Q15m+OH7Mu5kQt4NKi#s_ z+J?y}1wCn)NO=G=B8}hqZaStV^(Ep>K+DH>VFwanT>8X>?j1^3zB*{DgUs*Qer(U# z>L~T<=M!%~@S_VXBWQuZmAi@3A^wmM*s*;jUgN)2n(`&k)WtQyQT!kkY6NRB?On}CIlLfW)Xb2x3 zkQj$XUgf9$R>kG6L`on3@04o#T6`?ojV=#%Ij&hst@m=LQn3GZu8uzem(9Ue3=T-8R#}ioMeKo|GvJBY=0e_??N@T9bdq2AQ z?!O7T%mtmbIhrVL$Wbt+ko|bkL^v0+G~#CN;Yc~hsKC3_C&vjYdd~xGdaQQeCtV~6G#plyz6SZHs2WZ;p?F^-WSu^BfOb44;%yn z;VrER@SlGX6CgMMF{H96+7M$0_l`(QFYW%Dc>r&KeS-rp_WELV?Psd>yo@a*p7~RjA|9qJvz-ngJpuA!Z^CQrC;gt2 zbJOS6RVz+3)cgx$xTC7t#lu-jv$!#~lR8{MMU%SePb-=4ovVe2JD|a&0!SQoFr&w_H7QYf<I4D5Cn3-E}2HXPA}VoG?|TeSuXQB8jPt$|Yb|G{a9+JctP#ad{5vcRL?!?E+ZXtcTY_4;y5LWc zRhYQ2%h$gE0`9mD8r#(X4UX|iHDi^`%6l!_y|f84F?+UqfZ%)OghH);9l=|2fVQptR2- z%(rAHsr^w|Z;(ESN11N{qJQpEXvFE&Vw6D<{yZ=?smZeW_IS9aFdWmVvrsB?&rHcO z_V_RtLJ$hsn3}6$)|@=!%}vyV)b_6mZOZF(C6K|b%=7)_r?^_9%2lFmoQP>If^OJq zIS0D|x8xAKw2EHTGH@`^MMgldJ1r5QuBcV^UFpzksQ7mk zpY1MC9B{fiOsgWArc*C|m_C~55{x=ZQwDP?)kUC5asapb3D(zP@-YLhuF&h^Ghe18 zT`g?X-9raFWJEy_1_#2-ppGN0YU>9~5qGivZH;W(0nZ|1E>1>cU(3 z=Z8_n0KcCFjO5;PeHySfKBZX+ZdSE|lI3o&Bulk!Qtyje$`7TgKM|yATZsD?(=!)V zLY3eQ(Qx>2Jeh$iBDX%n9-lmuZ>D=+dKDa$N#-Bsn{Pw9TXfjlG3 z?V_oVD^2hI85@NyBW&r9;JX+qXU!766Nc`ROHw3tZ@eKzm+SYrWAwr4g3+W~{KNK2 zb5)2)8*6({6U>^k{<$KJ_h%Y4Lna=SU+V7A2mX8~m2zf<1q-kuOFV@TX`j=zn*5oMQ$4Lgt(4?@@fv~FZc;+e!LN#-9>_= zPd_9&hJAnW4N5WSMv{Cl z^kA*`50By^b9_$IOmOO43Lq=zbV!sfAgVN!6VwGR?Sh(@$F+u(*)a*&X`Pq8Scx$3 z)anU5yvgF?$wgU7%^a=HqNj;CZY#w+R`=#jHI9(FD&QwdbWhI&mGt7F1nI-gW+=o-ui4 zR(yf)lWz6;66q2Z9AhoUTBw+IhKd|T4YG+alE({C`BZ`gS;FP|vKz~DRgOBJ^xCgI zUU;UK4%{V9;f>FBQ57w%4^|i7NYf~Y0oKaE7p8+>rKY5wt<-$9a3 zBY|GemgTaNDXNKEijUFj*dq~gTf``8FDy$eokmTA6IU3&dwk{wd`spldruBNv-(0} zC-UQKP!AY@gE?_2D0{_%pz$9_>!$0kHU;|+RvR5m78EtRHtt&kQ}t$auYs&ad-08Q zF|+~a5hQLJ4OIi4D1N4@>R@~Nb=CCj%2U)Nv948!GToRii=L!21{zlSeQ!%vSyxxR zy*o%^zV7;XiI2oDo+FS*JGBe$CkJHfQ^i@o8kUww@Bv4>#5h0(oN$cjKg?JP~Pd%%TDMjE@}%a7E9Ycv&8Gj)`ks zz6*)8&rVg+CDVr!&@?2w=}*C{!F7eLFI(3b7Znj* zPwBj^V(B~Y5OcjD%5U=-%6xM`^{Vf?4n!log?ZSkS_1BWHJ*2DxCAt!p*vB%Pr+V- zz6m=4dE1%$m^3K=oW4>;s2EqMQ;!nNL<^vlZIEAF>$U4#s zYUwzb-jQ2{0cy=ov=;2x+I~wZCtg2>nyaiY5_L1Y6^t@I_D!qjT$9<*}3Xo%^nUh594I+v5)c{zUcBohD`^SjHbJK!Z`<*aSUJ%hbGauHF>sLV>bBL==hk`f;g+-bu0Pp_CqmX-n~ z8xVSAUpPOTkrw%Niw}xGTP6v*>1@eg`@$B#Uot4A1wL!)rw#*UbeU}K#vvB2{J-MH zOg`Qk?Z+{wb}IUNnbTYE?>M?GF|7G%?F&ft0{DO?14IeR$1Yv`w)?}KuM#9IwnT;? zAhL_W-3l7-KCj-DT>`3YVeQi82N=nh2ro!bfkhsZlAS>}s8GNtX1E#x@!r#fVZ>V_ z3{5<3p%#Elk<01VH)E^u{9MaK3Yu*w3i;k?_KjByPapNVc+sLa8}e^Q`hj^@4&EAZ z6O~Jsh>*?NnCn>h@x#~PVuMk4EvMyPV=YIejKEhc&l&^->dxykbilXmV7Yuqw;XU8 zB=d29_G|^e6?W1n+x$zZYdE}l1iDNY;CgrBTb?Q*c%tniL@f)4aEc_CoX>XZv1q-& z8C5L1rni+vL#`2DJ`Z_c;L10=OcQK~j*{llc6@y&6r1OG08bM^LpM*tb`D-E6igLB zTqu8wSk+8WZ&r)7d)arYM)U5-eZ=v=sF=UD5zrwb(emF{R3=Z!I=2g~h}B-u?GFf< zfWj<2gV@u!!dTFT5Op@XqlVvyKM4q*k1?C_86u$HL?1j?(jIMpd&(5~A*9#B4Z+YL zhoEtI2+Afv_rv*!iC7+3b@%Z6aHsD6G11oZP7zlPD=Vbg-H43)5l{eA@DoupSH)H) zPi0y_j?Dva6?N6E?T~;b{9?N_lqm4#gDeNu7DDm*6g^Sd^5(J5z?hFCTO!YDZWgGnuCCGCG{k)Ms>1I1iNnPENqynK zuxt!YuCO}Ov!&2yu*Hw~=UYs~RCa~MGj)yERe?d?wgv-K1>L8k=4L8YRV8b1?9An{Rw-PB!S9X3#bQA z$-Wn53poZGhxsQzr@Bcbl(_p1v5as8DE8}=rH6y9kN z;t&vK`sPdLH=Wpv8N?-)(^bcB5aSl~2Tr%sQEKs2lz|J`%48W_aLsWw^g8Hn3!~S@EwRvirz2=!l1y)6``*KzL80>eoaZIJ1~{@t}-nH zG*EI2X@{ZOj+IYJkE+vB-JuSb%HYyUN2##%4*r<%KyuS3)Di8gR_(HRP*S}89-+)Y z?;>gbd+IL$F9jgOFT(}{fA|aGe_pu%7ydt$fHdZRJq?DY$Np~-LICK+|AHgB@Sem( z|3?G?*&hgr{O=KX&K@ut0J8o&-UR?qF92Y|fBtKD1^{$Wus#6rq5mrk#RBXKPyp}5 z3@G_8I0qVlV#uI)S|9+RT>EzfNDlxQfIm244FE9z8&^UDAoSljK-L8S+y9Dy!U4bt z_y-3N06_dN91q{XAO5)yK41XQ-}^sx4%&r3B!hhLeD=Y!uIoQ>qQO7-zfSx2`2<*i zVFCas{*9ymbyNlbHUL11{nt;?|G+7+05}f-8u52;003%yI{p=6@F`mRa}2cwfY3h& z{{$iy0I0>{pUZmyP(=R=1VC7P=>YhD2W+qa$O7Ln{S!lF3jp{{6(H~ez;ys%_YVxf z)v*A~3jit~VgXkC73u$h1B}3*4TSu21rYe3`GsKrlnXv|;r7yij( z0ScG@EQb;RjIU7vUEn_spD%<$$udDeGve#;){y{4FGBX2_pfJ698xe-~a%C;j0Wj_D_J{Lj&YE z0OW$t6mbavqWlL2;2>Lk(((DV1qg)j#S!rzI6#O7h$R2~!ha$EonQPPzQ_Lam@EKL z_rLQ?xCQ`z_y+x z9#>P5n_hg9uCe^pw#yg8l=UpxT@fV(j0|Kl0I%}LzGp}9aF$f933Zm}ykGGo$@UKk z37joek*B#jsIn(@n=E<8o{c^L4+91D2aoH)&DO99s!ub9E?vC<@j+q3B*0U(V(n=G z?#NZKMJg${DwF?^zP2G|LPNht&cXeVa}@jZVk96#xI3He#1X{mA#CwtfxcA9T;SQF zE_W%p9>n31VH$lF1~!s`Dh1=x5xA6IHO~IuVl}!`zkp#W0 z23JdIszs+W(yuV|K>6j^ukI(yc82B?mqz90ogyrzHBpyBpqS5vl^epl%T-=;e3iI=TBw|HqMLnQ_xW{JpukupKUUefQ9P z*#KifPW5+8y5F^FHFlZ<*6oTpOxXlxz8kOec?JIkgg+!Nm4auogyIt5q(3$jp2~z0 z29+gvWx$g3-N8FW928VC`aI7{rq@tNDuW3Zq8pH>F(%YQFV-IM&skuJPh&|g^Q$p! zYfRcR;H@`IS`G#+NH$=Z1TZgwW8U1|`9oXl+qIYiE1^36uIv(K*sRx z=HG$%{Z@O)A(0a~{WZt}lnug)j$2t%R>hfazBFlq0y>+>O(ULzn`%x34ll@(Fkc7TxyX>VL?fIuGNm~hyH@kD)CGrm zIb)6;hPPs6AAbzF(Ru&q{N{A?(Z2HoF35T!A1&1YTAc}Ue~iz(BZ1%^j{8nAkKQA3 zhoQ{BcT&u|qjXBqin8-{&zcG(Efa+{L=|XhT^VSv6_s4~{d%iTVdF?euV&&V1ECG< z{kJs&j`z&dO!RUZ#TNYFy%u$ZEp23%nTwS|rD|6U5hNPXWH*VoJJUia#KyYKFs+N) zd9Je5gUDHKZ)X;bM`!*flpkJ)a?sq*Wb}CG`Yf)%u9Fs{m{EX97AphHG?ccOSIaPx zPLw{#;4-vJI@hn)F#~OS@NPd* zGd$tH+brH;XDAX#LzC1%dv2F(VwOzmmB4kx0XG=c(z{AXvplv`-`(!J_lQI8Er?V( zt^PrIF&FPE+T>C(TNRj$qY}%)d*oB1mC(*NFDdkEIFE7aEU0-%21rmd*)6z&f`cQ9S!@&X`bXJ3qE$G@i zE{?nVw$RXNS&KnGb;1_|*|QHL)jy`w=Q73{KBtHvp0z~`TF(q^yMDEFTssKQA1t>d zWGvgOdR7DS!lF>H%RBqPLoC0t!Lz7eZDLjAIsP(|CFDkfvE;d~OkJGiMdO>A)dn+; zchg(o@jK0~n1(1W0mJtVPiRT9-8T!PW%YnM0Axx4Uj`I@k1D63eC>y!4?S7*hD-A+ z`ELSsE6olLXownuiL-@TE1mj|`{*SF=@6VlD_fPHPE^#+$gL9)w_*M-!B;iK5{_5&yW*X>q2k`bU+${uwQYlNEx6E`j8!zQ)}-7u@FzonCs z=`m6prLW7X5NN&hXm3(%oYbAnG*R-Od^G-v{3QX*f_u;Qhkg1CowA(8cf;}uxQ#V2 zk^D&<)tu8aYK>3*>s6+L%ZP!E2ntFp)W@H)dRaM520HKFH-3kRLI+#})HM^hHDRTn zSOh$=T2+Tyv|5c`l71sCkj)Yp&?gd1ET7Vzu$s8B`qOnOXOM+nE_7`cnUSX1Pd=fh zOoew3)O#j#GrXYDwNOffmd#BOl~_A%FMfn`dFC<#Zf{|cydViKBPX=PocjAARYQp9 z5Mzb;V??+b8sK}qWl;PlK88(CP_o$MmZRD9qpR+8&;;$vV@>^NPjeXj zsis(xR`to?wKUsnD;a7_J&U&<8^5>IuCgQKRp%r5{5ok3qP5>@k>8;j`{vj!W&Y8m zTfVn32FgohKCUdq(^v_Z3es?&fs5k)bROWKX6CrJW_NecJB8O=8YTqlp;6{^ikc!I zyzXBOF(0~4XOmA|t{h4d3dx~CLhyo@>~qxb8gcX|8pC#Riw*vRYgczFNU6;=sqa7O zUhPoUD&nrg z85l_@uu9QA%{Fm;3D8!m3;~Rm6{zO(O{Mi0qUMspv$}y9-nAgvP?kOkl&lJ9N z2#gc7RD}=;Pv4wmxbz~WL(#yxp=qSuxy~h{NUl`}H9{|ew`wviqkX;7Uap`wAN?Zl z^@wMinwr(O+svN5{sfsJ=8iy5#v_?#uVxOAl+p{>5-0%FSpc5agon5bWlFu-&SzAq+@Zd1G?4cAra*6>0lp6#%kt`aysXiiD6ZDK z_-@v4laMwT9F6=b>6loN9xK8oH|CX2E^KX?K2 z7mV9}b8416%gU3vP?Y)VSLoN&SC1Iar}6|rKEL<5dKd&m%mb)U<&%D~tiY?no@@46 zXPZp4PhC=ZP+LSeE(vRkJ2U8$Sqw@2b_LB(869QKB9A%sl?o>a`Cov?v2AST4^M+! zXA}S%1=1W8A?Ffld{8vVG#FTV8+A__s)G?i6RUj2?YH@E_(rnM$~L%sb-H%*oT_w* zfmfsYB0w6^Bp)M}u2WH5LRbkkA8&Pb8d{MySUvrxyf^r0?OR@i3z5f#=>Z^h1dZP&Jk5#!TMSd}y*qa%L^;4ER{TM4-#mdK zC)DFsSvDxYlAa3o6D9J)y+G?O5!WfS+meXpy1QjnMG06#g>kyny_C1*Q7x)pw9h_q z4ytRsL>jgrl8@f|AuGZhj6|drXVDgQ7J>rD;=M)-5hJsNdk#-?Cp6S1kOH!_I(#Ok zrgcrT0ZsD-k?@0gI~zHSY9-PsSvY01KGgo^eC-D}<<$=^9waO-;VQ^{p{|UiiyE7v z7%;Nn0ycgR3W7Giqq6?iO50v%NE!Y1WqzNnimhA0#YQZnsxej2_B7Rcx??ZMRNCQEYiS|hnilOMtf z%>au({6C?prm;_PXu57Kg5GzEy`}D02r?ts?NlgH&SX$ivIO-T4R^A*J$B_U9qvBsHXM|ytJ|NJ~zVbxkEdbD=^@;C35t>dDzk%?ck(jz|Uy0N&+K=fLO9;SUXa+{%wF7$cjyP-`FHG%Q~zg*)W&++u#GaflVY z;?V+w%gw2R`EJ)2Z$k+`FZWRaIe-=j?wv*Ms!^SVwHq>8H+3_cGqHLoV)HFoXf3Kz zVc5{0xJ0N{wOg=9Il!Z1GR2>UOo@ch)20wBVgF$yGBZ?V&4TRlDB_Yq(U?!5tlqpR zsw;Yv$}yUn1v7zt4l6W9D3AOzwLpSO$U!AXB?_o2OpICyRs78qCP-|0scVVVLbDak z*31j8kZ2;NLJ3k;oXiNC4oOW^)SX`a;pmyfCm(d-npOn{$>x4mhozAZ^~|qYCC`tR6?|#sHn_hu);|+MLCnF@5J^flwfAs zo0yNolS^82u|}Jmg5pJF0W1o=a;xr$(BD?4#&XiOjfH$yuK7ghWf~=u{D~b^T&1D4 z`vD^b!WuImCWlDxhASf=I-JWlQ(KFRl|s*t&nC1(M03g1?PQ;XiW*5iem8Lm-0Sa; zT$xc1g^O%Q1U~1ZiZCoPrUe8_Kud2_rR(-9Otap+_(scsg;R>s`kM$?$G?+00M~(X zZHj2XUoo!M^0*;-- znH98PS&e!5i@$)`#}FM!AD+zdPwv;R&JTw+6?8KK9T_T^`*?+qgoPF^L{kb_)QdVOS-ov(!Rn!qkP?xV2?)45P`rw zLWpx#KYAMYESARtGDT}mkS6;@_VT_0rb>tNXF~xqqe+%{j1au6wCMJA5ek+^6K}gtzXny>g=QFF>!6dAyJa7lwlwmHC3Si!G4n}&ljrW!&YZffTFjcX(`$RG^C z@p_idNcrc4OWs$N@_v;|??j=t=$&G-76KoEM>R&aswJde9Ae^OHtM~Jw`4kF@ssAx z#cl6c``*kX?MjIj?aXW#37JT^CKaXb>YvYtQuSSF=>^bt1*RL2JS-|< z9!j4)80XA#0Ha`)lDS)axKnt*GzBjmR{2OtFC~*lF)&~J>^gzVC~e=S1n}YFlj2*Lc-Uoc5U2sB0Bc9tTg4b(FjfeZ~J9ikMP4PG(^X^GShG3rAAY4HD!rJvdvHxlr$gf z^nBmhJz!c&hu(EN*q#}UOSSQO^Sb$C1q$ge9TL%=qriz**m6IV3e*~}NH zBl_qju~ZKt%rl{vOy~iv_m(K5AZ&sR8a6;rQw9C;EJ7o<>nTMu(fw=Oi+XI!cb8#P zIu|FkIy$VqHRCT6WQi7#sVS)gL%{(L?|j_FqLC>4NOK_tad1@op~1le6drCZR7y0MF8#4c4^zS<$=5|VW!I{3t&&)FNilvQGJxIZqeI#a&h}uE zrWB0fQ~T#`-2NIC>1+}v>6!dy0Am*jd%Cizs@xz9idj*P8Q^`{HfR<4s9((yv-#uAW+oYj???p zuoHe$F)VQ)p$WC11&A3-!u8AGo5BqhOL@L`-+OtZr-(SIw9dcRKJtZ&C}lctUH$Hb z+P}3oe#3n)*-@R&>L-6WPrx&E*a+#j{BZB}Q$}xrBzpd*f!fOwLrKwHj^{5!%FE2I z6pM3z`~@`S71)BZL-9+y&p#Ih{j+T#!KgovXX`>(`w&&%#R`Z+sl?QQenY-gt$`;m zU9Se>W&{v;r?t3AYLqNB=OFfjHt}i%z7Bc#R+S73dZR)(HV38`&%?vt-3tHma2)Zv ztm2{GyD2+y{(V?vPex96#TVLzqd;7@iT@)uqsATwuM8Z-57!&^7KheK;B4u5xaF5X zO+wOK12TO|5>^7bx!ce>gfSN7*cw@>AnT;KSvMm69@mz%Zu#{ z4?x0y%csd)@Zsu(VhwvbfXoclm@3!>!d#G*eR<0VN9JJ2nq#f z>s2POHIsl;ATIIgKg9h<*2^5|DUgLN+>Z%Lc11#YCh_k>nAbF=I{W>IZ<|r1EZ)|j zyquG3)(o&)Z`=Cwajgu6c~f>;2SwVCBq&2Dne*PUhprIW@;b7{sqpk4{%|wp^+;pH zYA{=&jL;=NO*9vY#-G$82MAT0K znAj@mI2Nxf1n_d$`Q--M$y_W1UM8ujm8V(J<8V3-ccak3+@Vd=OM)NvF@OmP2^4Kqf-xhVU&6mH zpPtsX^SF};zjFNm*&M0ha}=Bs1~pue=e-Z=L|T0=!4SkHCCe3;lkdi=1fMp^TioTp zcj07}gH;}kj%<<(?f2rg&YZesMW!NBo^-*#vE;NB^X*nkThbce#b@s2jF1%B$u$Oj z14qBmLa)>^cb7EFH?VPE#`3E&T;$w_1+jNmeAyZMoJ~z^PKI`;O_+%TUOSxMyOgO@e zRf4#SGbu(ENifWV_dE%?j!H%5ZSzl8LXLc*5;y2>%3)aI$P)LNwbz{H2fqR1&;GOu z6JCvFh{w_Q$1^Ep5vqWlVn6XVwd$yNYbj-tt2{$t9Nryt2Qxbd^$Mjx7D-bwmSZ^+ zV^xy?(LkYi5O6gw9Itaz91h2+VkclnV>nn4+-PKwEhH!DzfTo4(YoS3i2W+d4~kC< zJs6u{(4kqw>kUC`FrtAbQObzOu2s1jM&)5?J@vSkJK@~Qx6i)bcyVyibgci5nVEQY z;ugzM5C^!B(R5xWP;buXqts}_9;Ma7(K%f%07)bOfQyrr6W z{m2%iUpL5y@J9f`Isa{rc#=u2yzcjXABi@CwWBvsn-m2G?`!Y9DeYeMrLs9?WNG6o zBcT_l{M)TRP4AyE5uTfvErOPYURJ<;^EN$9QV#p#j3Cr*lkMgFk575vY}9?b#j)aR zB&_;OU-iUn>!Mt$C(~s~h}E8x&P$GTW4~Xg+2@M2hldti%#f@JGy&purz0DVAFr9B zUMKDH%jEWZk!XohGd*$dyt5;C5#G7dD?JVcbt6Pi6p*gXl({5Gb9hKBOh)A)V7Gl(gMF9~(ISy*( zx3mR6A@@rT+#>0ICAp|J46$fHsVKP&qh8a_7q>(4#*KfJV>h?b%^HgzXRna&K{nEu zBZTZ5Nf%NL8ee8p-5{S)O4I?&(7 z>>UX<$0cwXQP8MqqGU8V zfIy{_u?z&I6XTh(CEZc)yHdl?BDs-QV_l)G!4e|k}P#6qkdO&#p+0{#76TT?V0Ls?js%0JyNuhvj zw%I%3UHW=uHFdL4e%~m!syes{JFh++U5R+A1q6e{;(HvH`1GM6M^+sJC!qhn+iS19 zTtv%PV8?|a3DSwS^fR3A$wTykaV7~qG+5X&NDu{P*`jm~?OxB86@+I@M z-X3*=jaIE);g^Ffy@cRy+*$KjMqIPOJ+#^;>K>}mdb3Xzi~`V@U251#-boAav@GF$ zA_Mr1SGx`;??x8$dqV_;K$f8?ttozVA9}G5cDexR`wNi$_++cbGz@FJAZ1O-6T|3D>8d=mjvL(|;WH6vGPSDP zvg&l3{*_8uYRp~rnb9Lp=N&1Y{Gpm^H?`Ic9 zdJ`zxqd3u?c{GY}WrCz#;RXdeQ#MS4a$F59V2Zb-?_%C|Wmr>PBz~wDI*=Lk{eDom zvRw&T@R)=EKsf8=!vMv#uxvB$^4cma(&nC#6O;gl|FpkVasYYs*-XEjS4>c{JQ2I;QMo_ohv%IH*v$xv zh-=T01`c;i_XkjYtrlZh?<y4_sz2N< zGh~$s{7IE^AcITM;~RMlm1zT09LWyGZ>qi9!_VKsZElCP!&0Ag7lZ; z*rpUPnueTu@GRtFoeCmj-sR#8m6r{isE=N)#9YVVWFI`y^>=}?+m4S%U1Ng_ztkA4 zwVq7*Mn8>=33zMXUbi*g2&)|4I-?vU`T41k2y|r|DlEFKk2DgXWvv}90T{TB=Y7R~po;_(#aYj2sN2grzWGB8?1Bc^3*avPbhqL?z zcwhee_i8wc&8>8ct>&H&&-K*w={36*+OT_a5{R&S$r@#xx1LGS_Mur`lB~OyH2X3@ z51fm?-$)5hI~Fx=i}{{*6FrC>fXrN`Ur{Ioc?hg z!-rqf_-8pI=#N>-f3Zu!%WRbY*rj-vrlqe(wETNj;~%S(!Ia|GJD1GVcBwl*{h($* z-5b!N_dE4QJY9z@_=a@35+C=P4;G4{XK$g1GOT)2rk&bg>ik`5t?I+6?U>LtO9^md zLE4V)vD{xkg0d28`V_*88&#lW_SxMgHAxM%K4eC}w{tl&anFdDHF^i$6ETw_a~-X% z*iv?m>EWNF^7D)6QlpxEwoxk|T}H7I9wn2ptS@ti;v=4tX}$nn0`$hXy?LWo7CHWP ztg%J?nDmIt{r?1652o;jR9WnR0w@>XHq_NsgKZm$3lrF4beh3Z%OlHm*(%1(Q3w#m zO02bAT{_61;0c_t0)U_q5kzRuj@yc^d6nFyr!nFi`wj+Vsb8m^UNXh&RTB|iNExG9 zqET+5F@Ao3-a?HSn-j77;GnaG$YwwtkYHImg8=|aKNpoz*nF3LRPmt8xvHZouq@~@ zl;@5*Peuml0&xc^BXp>F#oEwYB+y!;Lv2~K?0(#DQaDa*d1Vj)(x$dPmc zfj3EjWs**f>h`;S&Y8Ok7=kA?NED(&e}+F>w#W#RZJMXm|*_`>@wg=9OZ#t z+jy|cFPx;sKq~}Pzp@u+DSABp3V(8n45{40mm_qfn;At<+wA`9c z-rDa=rrW*e`d7HY_!`qr(T%yJ8{k5Z;|k|VqAzLN&MV^6fUjgaS4++e(#1z8sUoA` zl|#>d{rmUt-@ktS`}gmk)o+9rPLAEIrD+>vP)X-)7N#Ia<<D!7zF|+J*)axR}2aAWX;shTc#O9#~Y94{ckbUIUj-M6`~MIXOHPIN=sZnjA{%sXPdc_M1soB5I6g+t8mRV;xh!EuV-0wH&bCF4Yi5+q2G zBVV*LxJojN0)Q?vbTw!yci`rwYDS%fnY9`wK&ZMU# zXtr1w3J#?*>>NxCV2QiJSJG$*(a~6cs*&>w%7}QwCH%&CCcOV;WRjpkJ$V9$k znHya!TgH?RB03UaK@2{(#ds#HF`?D}0R2I83xqs8TC@eQ1KpjFXh;o~MQK3kPH_fx zgj8aEpcOJD#O zPt#}%QYFW#{&p6afx8_mm)3o7;}6q|6dY8P9m&NCl^b0PY=RSx)NsrqzyS7Ab);Ct zEjR$H3^InbA!i=Ip?N|BK6(>Ar7_V5WsEBVke+FvB&7iXhyo^&1bKgWX)`DiQfN|U z#Opq-(K4-fhSM01AcxRaF2Ax-m_XUL?$T9!0_L1~Del;^y0k30$6tCa#w122RzP z2%*5$Vy~z?O)6^*jADA!V4@1jxktS+F+Y{cxJw1u;TedGIpG_|& zZ%rmCtW`it+d{_N-ABK5Yy>4zIlI^@Z|pija4uG;189yzdm?}?)quzIib~*}53=e< zi~2BdVvNHl7U-6c&=T7!)k-K-RaL64)poAenus}bwen-gVY{qliHi%MLy<(~f34wx z{5!%%flpw(Zh`TjSRT?Uuzwg`pQe@s5}Kwd(3FKlN+YGVxq!_xS|j*g$i#9^e_ny3 zp;?+?VuU!cobCd;VS>?fb|i@FIx-^i)vA`LcT&O|8SM>LlhffapmLyx%R;$U(Odzh z*FV58Nj2){fJ;&wfD5_~dy9sNJudpH!AR|z6-%Lu9E^x9khE=4S5%^_?*9N7AXuF? zn?OhiiQX1A6dhpI&!ACL^5*ypOhP5_0O zK{7Q0m}Xun>3e?SrJ!TcMsrd1skgW-MauK;EMf|<_-Qa(V$=`0?_;q`k_I|CqJ~9va?wjlnz1J!3zw2YjRepGv78g&UfCfw zR(OH@{{VcQ4PJw1!8#l^lpd-HP56o;WpFo{zibS>1|rls>gK2U$^QToZsj21-jf7D zq(#Op^Tu*!RLVhgk;xZ3e;^HCm;C9ePeq&dGsJss#hzaYA)HijDhPd=LQ0sNd&VLC zfKVzRgwCD-0000105kw-13-1omItESLvsqvazQpf+A6H|H*$Iod2j%zKm}9+xM~<6 zY?1uXm9||B<(#!(7wcLYR|DM!1+87AGO0e%YK{?RTi^;UkW@9&wzxs$=?Td4T@fa} z4=r4)oY%1#7R0 z0)DcFvpN3&EgjkhL+GujbI<_-27u^3-pT`*#KM#6TmZDSOnFRoWdp*Ho({=nzlVqj zob|_y%GIg!1Cx_ZK50yA&_`m@E{ zVvgL#$;AQ7n3#}DKuESbxI6$Ah(r~s=nKzFHtRpmLFSfp{3Ou2wF zm@(a1^XA_wLkb~Br4U^pcd(dZL^ZuD=|?3-82)xEx;H0TT<;a~tnG6IF8(Fv-I zaQXsk|5=kQU#}EmkT>*BQEcpJAZgQ@RSM+0AMF4X)xu1&l#eK zWQ#~&y+-g_w)}@=4-NwW000002RD!P7a1_r|B-tP-fAy>Cg9WtoV|E^%SI0($eS20TX+=_2XQ++rA5 z5~f6K;BMVkF-1uPu|TNgBe8QBoV$GDMv#^kGW|86$JSDbJ~^r|j~ChgF#S0m9#Xy_3#OpjGw0ye6zR?#kQ946q#B1ulf1;{Bk~k%;RW8TmYfoB4i+}aS9Xe z6auD1ek2RD)1D7jNm^T$w-g6mSo3JUQEe@yrEmZ(X{(}-J+#hZ$k3?@f%GbaS>Ch2 zu%i`$DXsLDt??-npdFSY%X8$r7#6kb%SJ?0Bq0OxT309#rT+(xeK=yFgMKm}ERA65DvcLf_55gF~9bnvlXFwi(dFk+do~vpB+8Y6FE`41=*9 zkJy_s7TIFSWgD#f{@Q#2*LakTtBkN81yS7}2rb1Z{vpMb{0IsM000x4fV9%|T@17` z8p3_-fVjy;Mi0?5oKaLZl&bA^?dARd0P+6-=YF9rV$=~e0C0$dq<4fo4YtpO4~pd$ z?jQr0I_~F2b2hM`>E8n}(x&8bB9?R1Gckg4wN^hMqD2GEPfkruunm+s(FMFtg(f3G zDT4jMnZghhU*?=J!-Hjv9my#90R0Xg<;&xqLD z@6covCIA^#fCVb(4X$5hipn!q;4+HyTGGfxTL8P0nft2V>Vk Date: Wed, 24 Apr 2024 09:53:08 +0000 Subject: [PATCH 37/50] chore(deps): update stalwartlabs/mail-server docker tag to v0.7.2 (#3272) --- apps/stalwart-mail/config.json | 4 ++-- apps/stalwart-mail/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/stalwart-mail/config.json b/apps/stalwart-mail/config.json index ff4a60bf..08ac4b7a 100644 --- a/apps/stalwart-mail/config.json +++ b/apps/stalwart-mail/config.json @@ -3,8 +3,8 @@ "name": "Stalwart Mail", "available": true, "exposable": true, - "tipi_version": 1, - "version": "0.7.0", + "tipi_version": 2, + "version": "0.7.2", "port": 8677, "id": "stalwart-mail", "categories": [ diff --git a/apps/stalwart-mail/docker-compose.yml b/apps/stalwart-mail/docker-compose.yml index 5e4efb04..413adff3 100644 --- a/apps/stalwart-mail/docker-compose.yml +++ b/apps/stalwart-mail/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: stalwart-mail: - image: stalwartlabs/mail-server:v0.7.0 + image: stalwartlabs/mail-server:v0.7.2 container_name: stalwart-mail volumes: - ${APP_DATA_DIR}/data:/opt/stalwart-mail From f59c332c94c9e398c4beb618788bb1bd6a35901f Mon Sep 17 00:00:00 2001 From: Wraithers <4705057+Wraithers@users.noreply.github.com> Date: Wed, 24 Apr 2024 15:29:43 +0530 Subject: [PATCH 38/50] Add: Komga app (#3258) * Create docker-compose.yml * Create config.json * Update docker-compose.yml * Update docker-compose.yml * Create description.md * Add logo.jpg * Update README.md * Add tipi_main_network to docker-compose.yml * Update description.md * refactor(komga): small changes --------- Co-authored-by: Stavros --- apps/komga/config.json | 23 +++++++++++++++++ apps/komga/docker-compose.yml | 40 +++++++++++++++++++++++++++++ apps/komga/metadata/description.md | 32 +++++++++++++++++++++++ apps/komga/metadata/logo.jpg | Bin 0 -> 60485 bytes 4 files changed, 95 insertions(+) create mode 100644 apps/komga/config.json create mode 100644 apps/komga/docker-compose.yml create mode 100644 apps/komga/metadata/description.md create mode 100644 apps/komga/metadata/logo.jpg diff --git a/apps/komga/config.json b/apps/komga/config.json new file mode 100644 index 00000000..ea0037b1 --- /dev/null +++ b/apps/komga/config.json @@ -0,0 +1,23 @@ +{ + "$schema": "../schema.json", + "name": "Komga", + "port": 2560, + "available": true, + "exposable": true, + "id": "komga", + "tipi_version": 1, + "version": "1.11.0", + "categories": [ + "media" + ], + "description": "A media server for your comics, mangas, BDs, magazines and eBooks.", + "short_desc": "A media server for your comics, mangas, BDs, magazines and eBooks.", + "author": "gotson", + "source": "https://github.com/gotson/komga", + "website": "https://komga.org/", + "form_fields": [], + "supported_architectures": [ + "arm64", + "amd64" + ] +} diff --git a/apps/komga/docker-compose.yml b/apps/komga/docker-compose.yml new file mode 100644 index 00000000..fe48391a --- /dev/null +++ b/apps/komga/docker-compose.yml @@ -0,0 +1,40 @@ +version: "3.9" +services: + komga: + image: ghcr.io/gotson/komga:1.11.0 + container_name: komga + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${APP_DATA_DIR}/data/data:/data + environment: + - TZ=${TZ} + ports: + - ${APP_PORT}:25600 + networks: + - tipi_main_network + restart: unless-stopped + labels: + # Main + traefik.enable: true + traefik.http.middlewares.komga-web-redirect.redirectscheme.scheme: https + traefik.http.services.komga.loadbalancer.server.port: 8080 + # Web + traefik.http.routers.komga-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.komga-insecure.entrypoints: web + traefik.http.routers.komga-insecure.service: komga + traefik.http.routers.komga-insecure.middlewares: komga-web-redirect + # Websecure + traefik.http.routers.komga.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.komga.entrypoints: websecure + traefik.http.routers.komga.service: komga + traefik.http.routers.komga.tls.certresolver: myresolver + # Local domain + traefik.http.routers.komga-local-insecure.rule: Host(`komga.${LOCAL_DOMAIN}`) + traefik.http.routers.komga-local-insecure.entrypoints: web + traefik.http.routers.komga-local-insecure.service: komga + traefik.http.routers.komga-local-insecure.middlewares: komga-web-redirect + # Local domain secure + traefik.http.routers.komga-local.rule: Host(`komga.${LOCAL_DOMAIN}`) + traefik.http.routers.komga-local.entrypoints: websecure + traefik.http.routers.komga-local.service: komga + traefik.http.routers.komga-local.tls: true diff --git a/apps/komga/metadata/description.md b/apps/komga/metadata/description.md new file mode 100644 index 00000000..68d722d9 --- /dev/null +++ b/apps/komga/metadata/description.md @@ -0,0 +1,32 @@ +## Komga + +Komga is a media server for your comics, mangas, BDs, magazines and eBooks. + +### Chat on [Discord](https://discord.gg/TdRpkDu) + +### Features + +- Browse libraries, series and books via a responsive web UI that works on desktop, tablets and phones +- Organize your library with collections and read lists +- Edit metadata for your series and books +- Import embedded metadata automatically +- Webreader with multiple reading modes +- Manage multiple users, with per-library access control, age restrictions, and labels restrictions +- Offers a REST API, many community tools and scripts can interact with Komga +- Download book files, whole series, or read lists +- Duplicate files detection +- Duplicate pages detection and removal +- Import books from outside your libraries directly into your series folder +- Import ComicRack `cbl` read lists + +### Documentation + +Head over to our [website](https://komga.org) for more information. + +### Develop in Komga + +Check the [development guidelines](./DEVELOPING.md). + +### Credits + +The Komga icon is based on an icon made by [Freepik](https://www.freepik.com/home) from [Flaticon](https://www.flaticon.com). diff --git a/apps/komga/metadata/logo.jpg b/apps/komga/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..381f0526fdb8d133eea353ee57941a04fc8b4cd2 GIT binary patch literal 60485 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 WCbNr%Hf^Jdh3@|UeCzSAgZ~GDBh8!u literal 0 HcmV?d00001 From 5cec6e6f139cf5565c1f486958654029609d1ad2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 10:02:10 +0000 Subject: [PATCH 39/50] chore(deps): update ghcr.io/gotson/komga docker tag to v1.11.1 (#3273) --- apps/komga/config.json | 4 ++-- apps/komga/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/komga/config.json b/apps/komga/config.json index ea0037b1..b3830ae1 100644 --- a/apps/komga/config.json +++ b/apps/komga/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "komga", - "tipi_version": 1, - "version": "1.11.0", + "tipi_version": 2, + "version": "1.11.1", "categories": [ "media" ], diff --git a/apps/komga/docker-compose.yml b/apps/komga/docker-compose.yml index fe48391a..ddc48b0c 100644 --- a/apps/komga/docker-compose.yml +++ b/apps/komga/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.9" services: komga: - image: ghcr.io/gotson/komga:1.11.0 + image: ghcr.io/gotson/komga:1.11.1 container_name: komga volumes: - ${APP_DATA_DIR}/data/config:/config From 79f4942ef7676a0e087a3c07c588e34e83621040 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 13:43:15 +0000 Subject: [PATCH 40/50] chore(deps): update budibase/budibase docker tag to v2.23.12 (#3275) --- apps/budibase/config.json | 4 ++-- apps/budibase/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/budibase/config.json b/apps/budibase/config.json index d25c28c4..559ffd95 100644 --- a/apps/budibase/config.json +++ b/apps/budibase/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "budibase", - "tipi_version": 127, - "version": "2.23.11", + "tipi_version": 128, + "version": "2.23.12", "categories": [ "development" ], diff --git a/apps/budibase/docker-compose.yml b/apps/budibase/docker-compose.yml index 7d7dd1c6..8fcf3ec1 100644 --- a/apps/budibase/docker-compose.yml +++ b/apps/budibase/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.7' services: budibase: - image: budibase/budibase:2.23.11 + image: budibase/budibase:2.23.12 restart: unless-stopped container_name: budibase ports: From 88118573472f1c54d0c8a1f6aec7351ca4123298 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 13:43:22 +0000 Subject: [PATCH 41/50] chore(deps): update 1dev/server docker tag to v10.5.1 (#3274) --- apps/onedev/config.json | 4 ++-- apps/onedev/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/onedev/config.json b/apps/onedev/config.json index 5b48f053..d810e548 100644 --- a/apps/onedev/config.json +++ b/apps/onedev/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "onedev", - "tipi_version": 88, - "version": "10.5.0", + "tipi_version": 89, + "version": "10.5.1", "categories": [ "development" ], diff --git a/apps/onedev/docker-compose.yml b/apps/onedev/docker-compose.yml index 3df86232..cdb8165a 100644 --- a/apps/onedev/docker-compose.yml +++ b/apps/onedev/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: onedev: - image: 1dev/server:10.5.0 + image: 1dev/server:10.5.1 container_name: onedev environment: - hibernate_dialect=io.onedev.server.persistence.PostgreSQLDialect From 3b3e0544af579ce6dd504198914e67dab0b04bd5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 17:38:32 +0000 Subject: [PATCH 42/50] chore(deps): update ghcr.io/goauthentik/server docker tag to v2024.4.0 (#3278) --- apps/authentik/config.json | 4 ++-- apps/authentik/docker-compose.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/authentik/config.json b/apps/authentik/config.json index 32314616..d6ffd3ca 100644 --- a/apps/authentik/config.json +++ b/apps/authentik/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "authentik", - "tipi_version": 11, - "version": "2024.2.3", + "tipi_version": 12, + "version": "2024.4.0", "https": true, "categories": [ "development" diff --git a/apps/authentik/docker-compose.yml b/apps/authentik/docker-compose.yml index 287d5671..9984d952 100644 --- a/apps/authentik/docker-compose.yml +++ b/apps/authentik/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: authentik: - image: ghcr.io/goauthentik/server:2024.2.3 + image: ghcr.io/goauthentik/server:2024.4.0 restart: unless-stopped command: server container_name: authentik @@ -49,7 +49,7 @@ services: traefik.http.routers.authentik-local.service: authentik traefik.http.routers.authentik-local.tls: true authentik-worker: - image: ghcr.io/goauthentik/server:2024.2.3 + image: ghcr.io/goauthentik/server:2024.4.0 restart: unless-stopped command: worker container_name: authentik-worker From a29a7436ea89ae55ff8751932325701608a7ff3d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 17:38:41 +0000 Subject: [PATCH 43/50] chore(deps): update lobehub/lobe-chat docker tag to v0.149.1 (#3277) --- apps/lobe-chat/config.json | 4 ++-- apps/lobe-chat/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/lobe-chat/config.json b/apps/lobe-chat/config.json index 8bb6b4a9..1875432e 100644 --- a/apps/lobe-chat/config.json +++ b/apps/lobe-chat/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "lobe-chat", "description": "LobeChat is an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible (Function Call) plugin system.", - "tipi_version": 111, - "version": "0.149.0", + "tipi_version": 112, + "version": "0.149.1", "categories": [ "ai" ], diff --git a/apps/lobe-chat/docker-compose.yml b/apps/lobe-chat/docker-compose.yml index d34d395d..2a34a01c 100644 --- a/apps/lobe-chat/docker-compose.yml +++ b/apps/lobe-chat/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.9' services: lobe-chat: container_name: lobe-chat - image: lobehub/lobe-chat:v0.149.0 + image: lobehub/lobe-chat:v0.149.1 environment: - OPENAI_API_KEY=${OPENAI_API_KEY} - OPENAI_PROXY_URL=${OPEANAI_PROXY_URL} From 7881fac59051c157088f691894296d2e6c840150 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 18:45:41 +0000 Subject: [PATCH 44/50] chore(deps): update lobehub/lobe-chat docker tag to v0.149.2 (#3279) --- apps/lobe-chat/config.json | 4 ++-- apps/lobe-chat/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/lobe-chat/config.json b/apps/lobe-chat/config.json index 1875432e..55b31867 100644 --- a/apps/lobe-chat/config.json +++ b/apps/lobe-chat/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "lobe-chat", "description": "LobeChat is an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible (Function Call) plugin system.", - "tipi_version": 112, - "version": "0.149.1", + "tipi_version": 113, + "version": "0.149.2", "categories": [ "ai" ], diff --git a/apps/lobe-chat/docker-compose.yml b/apps/lobe-chat/docker-compose.yml index 2a34a01c..e7c9df4d 100644 --- a/apps/lobe-chat/docker-compose.yml +++ b/apps/lobe-chat/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.9' services: lobe-chat: container_name: lobe-chat - image: lobehub/lobe-chat:v0.149.1 + image: lobehub/lobe-chat:v0.149.2 environment: - OPENAI_API_KEY=${OPENAI_API_KEY} - OPENAI_PROXY_URL=${OPEANAI_PROXY_URL} From 18ba26778b5bec2591bd6c74c452388de667cbc4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 23:03:10 +0000 Subject: [PATCH 45/50] chore(deps): update invoiceninja/invoiceninja docker tag to v5.8.51 (#3280) --- apps/invoice-ninja/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/invoice-ninja/docker-compose.yml b/apps/invoice-ninja/docker-compose.yml index 65351d1f..b910cb09 100644 --- a/apps/invoice-ninja/docker-compose.yml +++ b/apps/invoice-ninja/docker-compose.yml @@ -42,7 +42,7 @@ services: traefik.http.routers.invoice-ninja-local.tls: true invoice-ninja-server: - image: invoiceninja/invoiceninja:5.8.50 + image: invoiceninja/invoiceninja:5.8.51 container_name: invoice-ninja-server restart: unless-stopped user: 1500:1500 From 70a4872ea910336cc2c0b130dd62ee37bf589401 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 23:04:30 +0000 Subject: [PATCH 46/50] chore(deps): update dockurr/windows docker tag to v2.17 (#3281) --- apps/windows/config.json | 4 ++-- apps/windows/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/windows/config.json b/apps/windows/config.json index 62a01345..b570ca79 100644 --- a/apps/windows/config.json +++ b/apps/windows/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "windows", "description": "Run windows in docker...because why not?", - "tipi_version": 15, - "version": "2.16", + "tipi_version": 16, + "version": "2.17", "categories": [ "utilities" ], diff --git a/apps/windows/docker-compose.yml b/apps/windows/docker-compose.yml index a2d81836..7254dd22 100644 --- a/apps/windows/docker-compose.yml +++ b/apps/windows/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.9" services: windows: container_name: windows - image: dockurr/windows:2.16 + image: dockurr/windows:2.17 restart: unless-stopped devices: - /dev/kvm From d223a0ff2358d94798c42c1773c588728be908f8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 23:09:11 +0000 Subject: [PATCH 47/50] chore(deps): update ghcr.io/blacktirion/email-oauth2-proxy-docker docker tag to v2024.04.24 (#3282) --- apps/email-oauth2-proxy/config.json | 4 ++-- apps/email-oauth2-proxy/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/email-oauth2-proxy/config.json b/apps/email-oauth2-proxy/config.json index 0e7364c8..61782fed 100644 --- a/apps/email-oauth2-proxy/config.json +++ b/apps/email-oauth2-proxy/config.json @@ -6,8 +6,8 @@ "no_gui": true, "port": 1999, "id": "email-oauth2-proxy", - "tipi_version": 6, - "version": "2024.03.26", + "tipi_version": 7, + "version": "2024.04.24", "categories": [ "utilities", "security" diff --git a/apps/email-oauth2-proxy/docker-compose.yml b/apps/email-oauth2-proxy/docker-compose.yml index 7a98da46..60b3d26a 100644 --- a/apps/email-oauth2-proxy/docker-compose.yml +++ b/apps/email-oauth2-proxy/docker-compose.yml @@ -3,7 +3,7 @@ version: "3.9" services: email-oauth2-proxy: container_name: email-oauth2-proxy - image: ghcr.io/blacktirion/email-oauth2-proxy-docker:2024.03.26 + image: ghcr.io/blacktirion/email-oauth2-proxy-docker:2024.04.24 ports: - ${APP_PORT}:80 restart: unless-stopped From 05f6c5845a07716ae47c913cd891fda81c7d68d5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Apr 2024 03:58:19 +0000 Subject: [PATCH 48/50] chore(deps): update wisdomsky/cloudflared-web docker tag to v2024.4.1 (#3284) --- apps/cloudflared/config.json | 4 ++-- apps/cloudflared/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/cloudflared/config.json b/apps/cloudflared/config.json index b6783b61..547ab747 100644 --- a/apps/cloudflared/config.json +++ b/apps/cloudflared/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": false, "id": "cloudflared", - "tipi_version": 9, - "version": "2024.4.0", + "tipi_version": 10, + "version": "2024.4.1", "categories": [ "utilities" ], diff --git a/apps/cloudflared/docker-compose.yml b/apps/cloudflared/docker-compose.yml index 90406541..617f6c6e 100644 --- a/apps/cloudflared/docker-compose.yml +++ b/apps/cloudflared/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.9" services: cloudflared: - image: wisdomsky/cloudflared-web:2024.4.0 + image: wisdomsky/cloudflared-web:2024.4.1 container_name: cloudflared restart: unless-stopped network_mode: host From 7c7ec2df9095dda2d5179ac04d5315c14cd50543 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Apr 2024 06:46:17 +0000 Subject: [PATCH 49/50] chore(deps): update ghcr.io/requarks/wiki docker tag to v2.5.302 (#3285) --- apps/wikijs/config.json | 4 ++-- apps/wikijs/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/wikijs/config.json b/apps/wikijs/config.json index 1ad84f5d..90cba0d2 100644 --- a/apps/wikijs/config.json +++ b/apps/wikijs/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "wikijs", - "tipi_version": 6, - "version": "2.5.301", + "tipi_version": 7, + "version": "2.5.302", "categories": [ "media" ], diff --git a/apps/wikijs/docker-compose.yml b/apps/wikijs/docker-compose.yml index 4a2e834b..871ef20d 100644 --- a/apps/wikijs/docker-compose.yml +++ b/apps/wikijs/docker-compose.yml @@ -3,7 +3,7 @@ version: '3.7' services: wikijs: container_name: wikijs - image: ghcr.io/requarks/wiki:2.5.301 + image: ghcr.io/requarks/wiki:2.5.302 depends_on: - wikijs-db environment: From c8dfa55f493c630d8b0f475b20ef9d716327bdc3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Apr 2024 06:48:34 +0000 Subject: [PATCH 50/50] chore(deps): update matrixconduit/matrix-conduit docker tag to v0.7.0 (#3286) --- apps/matrix-conduit/config.json | 13 +++++++++---- apps/matrix-conduit/docker-compose.yml | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/apps/matrix-conduit/config.json b/apps/matrix-conduit/config.json index b7800a8a..0443ab6b 100644 --- a/apps/matrix-conduit/config.json +++ b/apps/matrix-conduit/config.json @@ -7,9 +7,11 @@ "force_expose": true, "no_gui": true, "id": "matrix-conduit", - "tipi_version": 4, - "version": "0.6.0", - "categories": ["social"], + "tipi_version": 5, + "version": "0.7.0", + "categories": [ + "social" + ], "description": "Conduit is a fast Matrix homeserver that’s easy to set up and just works. You can install it on a mini-computer like the Raspberry Pi to host Matrix for your family, friends or company.", "short_desc": "Conduit is a simple, fast and reliable chat server written in Rust", "author": "Timo Kösters", @@ -69,5 +71,8 @@ "env_variable": "TURN_SECRET" } ], - "supported_architectures": ["arm64", "amd64"] + "supported_architectures": [ + "arm64", + "amd64" + ] } diff --git a/apps/matrix-conduit/docker-compose.yml b/apps/matrix-conduit/docker-compose.yml index 69ec6f26..f52a6cc2 100644 --- a/apps/matrix-conduit/docker-compose.yml +++ b/apps/matrix-conduit/docker-compose.yml @@ -3,7 +3,7 @@ version: "3.7" services: matrix-conduit: container_name: matrix-conduit - image: matrixconduit/matrix-conduit:v0.6.0 + image: matrixconduit/matrix-conduit:v0.7.0 environment: CONDUIT_SERVER_NAME: ${APP_DOMAIN} CONDUIT_DATABASE_PATH: /var/lib/matrix-conduit/