Merge branch 'release/v2.24.0'

This commit is contained in:
Jan Niklas Grabowski
2025-02-21 08:16:08 +01:00
27 changed files with 1127 additions and 190 deletions

View File

@@ -1,3 +1,27 @@
Changes in BWI project 2.24.0 (2025-02-17)
===================================================
Upstream merge ✨:
Features ✨:
- MESSENGER-6856 add link to the learning portal
- MESSNEGER-6854 show happy birthday popup
- MESSENGER-6879 add support for authenticated media
- MESSENGER-6790 add handling of expired jwt
Improvements 🙌:
- MESSENGER-6777 use baseURL from wellknown for jwt handling
Bugfix 🐛:
Translations 🗣 :
SDK API changes ⚠️:
Build 🧱:
Documentation 📄:
Changes in BWI project 2.23.1 (2025-01-08)
===================================================

View File

@@ -16,5 +16,5 @@
//
// Version
MARKETING_VERSION = 2.23.1
MARKETING_VERSION = 2.24.0
CURRENT_PROJECT_VERSION = 20220714163152

View File

@@ -588,7 +588,7 @@ class BWIBuildSettings: NSObject {
var bwiEnableRegisterInfo = false
var bwiShowHappyBirthdayCampaign = false
var bwiHappyBirthdayCampaignIdentifier: String = "2024"
var bwiHappyBirthdayCampaignIdentifier: String = "2025"
var bwiDisableSecuritySettingsUntrustedDevices = true

View File

@@ -44,5 +44,6 @@ extension BWIBuildSettings {
avoidServerSelectionOnAppConfig = true
enableFeatureWYSIWYGByDefault = true
bwiEnableTokenizedLoginProtection = true
bwiShowHappyBirthdayCampaign = true
}
}

View File

@@ -32,6 +32,7 @@ extension BWIBuildSettings {
avoidServerSelectionOnAppConfig = true
enableFeatureWYSIWYGByDefault = true
bwiEnableTokenizedLoginProtection = true
bwiShowHappyBirthdayCampaign = true
}
}

View File

@@ -43,7 +43,7 @@ when String # specific MatrixSDK released version
$matrixSDKVersionSpec = $matrixSDKVersion
end
$matrixSDKVersionSpec = { :git => 'https://dl-gitlab.example.com/bwmessenger/bundesmessenger/bundesmessenger-ios-sdk', :tag => 'v2.23.1' }
$matrixSDKVersionSpec = { :git => 'https://dl-gitlab.example.com/bwmessenger/bundesmessenger/bundesmessenger-ios-sdk', :tag => 'v2.24.0' }
########################################
@@ -56,7 +56,6 @@ end
def import_SwiftUI_pods
pod 'Introspect', '~> 0.1'
pod 'DSBottomSheet', '~> 0.3'
pod 'ZXingObjC', '~> 3.6.9'
end

View File

@@ -14,43 +14,48 @@ PODS:
- AFNetworking/Serialization (4.0.1)
- AFNetworking/UIKit (4.0.1):
- AFNetworking/NSURLSession
- BlueCryptor (1.0.32)
- BlueECC (1.2.5)
- BlueRSA (1.0.200)
- Down (0.11.0)
- DSBottomSheet (0.3.0)
- DSWaveformImage (6.1.1)
- FLEX (5.22.10)
- DTCoreText (1.6.26):
- DTCoreText/Core (= 1.6.26)
- DTFoundation/Core (~> 1.7.5)
- DTFoundation/DTAnimatedGIF (~> 1.7.5)
- DTFoundation/DTHTMLParser (~> 1.7.5)
- DTFoundation/UIKit (~> 1.7.5)
- DTCoreText/Core (1.6.26):
- DTFoundation/Core (~> 1.7.5)
- DTFoundation/DTAnimatedGIF (~> 1.7.5)
- DTFoundation/DTHTMLParser (~> 1.7.5)
- DTFoundation/UIKit (~> 1.7.5)
- DTFoundation/Core (1.7.19)
- DTFoundation/DTAnimatedGIF (1.7.19)
- DTFoundation/DTHTMLParser (1.7.19):
- DTFoundation/Core
- DTFoundation/UIKit (1.7.19):
- DTFoundation/Core
- DTTJailbreakDetection (0.4.0)
- FlowCommoniOS (1.12.2)
- GBDeviceInfo (7.1.0):
- GBDeviceInfo/Core (= 7.1.0)
- GBDeviceInfo/Core (7.1.0)
- GZIP (1.3.2)
- Introspect (0.12.0)
- JitsiMeetSDKLite (8.1.2-lite):
- JitsiWebRTC (~> 111.0)
- JitsiWebRTC (111.0.2)
- KeychainAccess (4.2.2)
- KituraContracts (1.2.1):
- LoggerAPI (~> 1.7)
- KTCenterFlowLayout (1.3.1)
- libbase58 (0.1.4)
- libPhoneNumber-iOS (0.9.15)
- LoggerAPI (1.9.200):
- Logging (~> 1.1)
- Logging (1.4.0)
- MatrixSDK (0.27.13):
- MatrixSDK/Core (= 0.27.13)
- MatrixSDK/Core (0.27.13):
- MatomoTracker (7.5.2):
- MatomoTracker/Core (= 7.5.2)
- MatomoTracker/Core (7.5.2)
- MatrixSDK (0.27.15):
- MatrixSDK/Core (= 0.27.15)
- MatrixSDK/Core (0.27.15):
- AFNetworking (~> 4.0.0)
- GZIP (~> 1.3.0)
- libbase58 (~> 0.1.4)
- MatrixSDKCrypto (= 0.4.3)
- Realm (= 10.27.0)
- SwiftyBeaver (= 1.9.5)
- MatrixSDK/JingleCallStack (0.27.13):
- JitsiMeetSDKLite (= 8.1.2-lite)
- MatrixSDK/Core
- MatrixSDKCrypto (0.4.3)
- ReadMoreTextView (3.0.1)
- Realm (10.27.0):
@@ -61,19 +66,9 @@ PODS:
- Reusable/View (= 4.1.2)
- Reusable/Storyboard (4.1.2)
- Reusable/View (4.1.2)
- Sentry (7.15.0):
- Sentry/Core (= 7.15.0)
- Sentry/Core (7.15.0)
- SideMenu (6.5.0)
- SwiftBase32 (0.9.0)
- SwiftFormat/CLI (0.54.5)
- SwiftGen (6.6.3)
- SwiftJWT (3.6.200):
- BlueCryptor (~> 1.0)
- BlueECC (~> 1.1)
- BlueRSA (~> 1.0)
- KituraContracts (~> 1.2)
- LoggerAPI (~> 1.7)
- SwiftLint (0.57.0)
- SwiftyBeaver (1.9.5)
- UICollectionViewLeftAlignedLayout (1.0.2)
@@ -86,25 +81,22 @@ PODS:
DEPENDENCIES:
- Down (~> 0.11.0)
- DSBottomSheet (~> 0.3)
- DSWaveformImage (~> 6.1.1)
- FLEX (~> 5.22.10)
- DTCoreText (= 1.6.26)
- DTTJailbreakDetection (~> 0.4.0)
- FlowCommoniOS (~> 1.12.0)
- GBDeviceInfo (~> 7.1.0)
- Introspect (~> 0.1)
- KeychainAccess (~> 4.2.2)
- KTCenterFlowLayout (~> 1.3.1)
- libPhoneNumber-iOS (~> 0.9.13)
- MatrixSDK (from `matrix-ios-sdk/MatrixSDK.podspec`)
- MatrixSDK/JingleCallStack (from `matrix-ios-sdk/MatrixSDK.podspec`)
- MatomoTracker (~> 7.5.2)
- MatrixSDK (from `https://dl-gitlab.example.com/bwmessenger/bundesmessenger/bundesmessenger-ios-sdk`, tag `v2.23.1`)
- ReadMoreTextView (~> 3.0.1)
- Reusable (~> 4.1)
- Sentry (~> 7.15.0)
- SideMenu (~> 6.5)
- SwiftBase32 (~> 0.9.0)
- SwiftFormat/CLI
- SwiftGen
- SwiftJWT (~> 3.6.200)
- SwiftLint
- UICollectionViewLeftAlignedLayout (~> 1.0.2)
- UICollectionViewRightAlignedLayout (~> 0.0.3)
@@ -113,40 +105,32 @@ DEPENDENCIES:
- ZXingObjC (~> 3.6.9)
SPEC REPOS:
trunk:
https://github.com/CocoaPods/Specs.git:
- AFNetworking
- BlueCryptor
- BlueECC
- BlueRSA
- DTCoreText
- DTFoundation
- DTTJailbreakDetection
- GZIP
- libbase58
- MatomoTracker
- MatrixSDKCrypto
- Realm
- SwiftyBeaver
trunk:
- Down
- DSBottomSheet
- DSWaveformImage
- FLEX
- FlowCommoniOS
- GBDeviceInfo
- GZIP
- Introspect
- JitsiMeetSDKLite
- JitsiWebRTC
- KeychainAccess
- KituraContracts
- KTCenterFlowLayout
- libbase58
- libPhoneNumber-iOS
- LoggerAPI
- Logging
- MatrixSDKCrypto
- ReadMoreTextView
- Realm
- Reusable
- Sentry
- SideMenu
- SwiftBase32
- SwiftFormat
- SwiftGen
- SwiftJWT
- SwiftLint
- SwiftyBeaver
- UICollectionViewLeftAlignedLayout
- UICollectionViewRightAlignedLayout
- WeakDictionary
@@ -155,41 +139,38 @@ SPEC REPOS:
EXTERNAL SOURCES:
MatrixSDK:
:path: matrix-ios-sdk/MatrixSDK.podspec
:git: https://dl-gitlab.example.com/bwmessenger/bundesmessenger/bundesmessenger-ios-sdk
:tag: v2.23.1
CHECKOUT OPTIONS:
MatrixSDK:
:git: https://dl-gitlab.example.com/bwmessenger/bundesmessenger/bundesmessenger-ios-sdk
:tag: v2.23.1
SPEC CHECKSUMS:
AFNetworking: 3bd23d814e976cd148d7d44c3ab78017b744cd58
BlueCryptor: b0aee3d9b8f367b49b30de11cda90e1735571c24
BlueECC: 0d18e93347d3ec6d41416de21c1ffa4d4cd3c2cc
BlueRSA: dfeef51db96bcc4edec654956c1581adbda4e6a3
Down: b6ba1bc985c9d2f4e15e3b293d2207766fa12612
DSBottomSheet: ca0ac37eb5af2dd54663f86b84382ed90a59be2a
DSWaveformImage: 3c718a0cf99291887ee70d1d0c18d80101d3d9ce
FLEX: f21ee4f498eed3f8a1eded66b21939fd3b7a22ce
DTCoreText: ec749e013f2e1f76de5e7c7634642e600a7467ce
DTFoundation: 76b624967cf5bcaae6bb057d622c536c36ef36d0
DTTJailbreakDetection: 5e356c5badc17995f65a83ed9483f787a0057b71
FlowCommoniOS: ca92071ab526dc89905495a37844fd7e78d1a7f2
GBDeviceInfo: 5d62fa85bdcce3ed288d83c28789adf1173e4376
GZIP: 3c0abf794bfce8c7cb34ea05a1837752416c8868
Introspect: b66b675de8a85d9ef832f3a710d8e3c7db186884
JitsiMeetSDKLite: 895213158cf62342069a10634a41d2f1c00057f7
JitsiWebRTC: 80f62908fcf2a1160e0d14b584323fb6e6be630b
KeychainAccess: c0c4f7f38f6fc7bbe58f5702e25f7bd2f65abf51
KituraContracts: e845e60dc8627ad0a76fa55ef20a45451d8f830b
KTCenterFlowLayout: 6e02b50ab2bd865025ae82fe266ed13b6d9eaf97
libbase58: 7c040313537b8c44b6e2d15586af8e21f7354efd
libbase58: 8abc2a53ac38cd37720c0acbc53ef3660e9016c2
libPhoneNumber-iOS: 0a32a9525cf8744fe02c5206eb30d571e38f7d75
LoggerAPI: ad9c4a6f1e32f518fdb43a1347ac14d765ab5e3d
Logging: beeb016c9c80cf77042d62e83495816847ef108b
MatrixSDK: b5756a518af19296b94e3ad9b6f16648f9eb17c3
MatomoTracker: 1d98ddc58322fd9d65e1a6886b8e41363047bd13
MatrixSDK: 12b379749b84ab5b3662042acb1914b9f9bb692b
MatrixSDKCrypto: 27bee960e0e8b3a3039f3f3e93dd2ec88299c77e
ReadMoreTextView: 19147adf93abce6d7271e14031a00303fe28720d
Realm: 9ca328bd7e700cc19703799785e37f77d1a130f2
Reusable: 6bae6a5e8aa793c9c441db0213c863a64bce9136
Sentry: 63ca44f5e0c8cea0ee5a07686b02e56104f41ef7
SideMenu: f583187d21c5b1dd04c72002be544b555a2627a2
SwiftBase32: 9399c25a80666dc66b51e10076bf591e3bbb8f17
SwiftFormat: 543a7b1ab4a6ce2d88bd5616a17903446ca3dc5c
SwiftGen: 4993cbf71cbc4886f775e26f8d5c3a1188ec9f99
SwiftJWT: 88c412708f58c169d431d344c87bc79a87c830ae
SwiftLint: eb47480d47c982481592c195c221d11013a679cc
SwiftyBeaver: 84069991dd5dca07d7069100985badaca7f0ce82
UICollectionViewLeftAlignedLayout: 830bf6fa5bab9f9b464f62e3384f9d2e00b3c0f6
@@ -198,6 +179,6 @@ SPEC CHECKSUMS:
zxcvbn-ios: fef98b7c80f1512ff0eec47ac1fa399fc00f7e3c
ZXingObjC: 8898711ab495761b2dbbdec76d90164a6d7e14c5
PODFILE CHECKSUM: 484a1cdf04951cc82156f29de196efd76d3ad893
PODFILE CHECKSUM: 8e9f350d7011b2bfcf0a200516b533a1717af7ea
COCOAPODS: 1.15.2

View File

@@ -13,9 +13,9 @@ Wir freuen uns, dass Du Dich für den BundesMessenger interessierst.
Fangen wir mit dem Wichtigsten an. Hier findest Du die offizielle App für iOS:
<p align="center">
<a href=https://apps.apple.com/de/app/bundesmessenger/id1616866351>
<img alt="Download Apple App Store" src="https://linkmaker.itunes.apple.com/images/badges/en-us/badge_appstore-lrg.svg" width=160>
</a>
<a href="https://apps.apple.com/de/app/bundesmessenger/id1616866351" style="display: inline-block;">
<img src="https://toolbox.marketingtools.apple.com/api/v2/badges/download-on-the-app-store/black/de-de?releaseDate=1671408000" alt="Im App Store laden" style="width: 245px; height: 82px; vertical-align: middle; object-fit: contain;" />
</a>
</p>
Wenn Dir die App gefällt, lass gerne eine positive Bewertung da.

View File

@@ -1,7 +1,7 @@
{
"images" : [
{
"filename" : "web_dark.svg",
"filename" : "undraw_Birthday_cake_BwM.svg",
"idiom" : "universal"
}
],

View File

@@ -0,0 +1,758 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="b1da7443-2b43-4a55-9b6b-835488f8f109"
data-name="Layer 1"
width="1077.87045"
height="818.13939"
viewBox="0 0 1077.87045 818.13939"
version="1.1"
sodipodi:docname="undraw_Birthday_cake_BwM.svg"
inkscape:version="1.0.2 (e86c870879, 2021-01-15)">
<metadata
id="metadata373">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Birthday cake</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs371" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1016"
id="namedview369"
showgrid="false"
inkscape:zoom="0.69142914"
inkscape:cx="781.85579"
inkscape:cy="344.59674"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="b1da7443-2b43-4a55-9b6b-835488f8f109" />
<title
id="title2">Birthday cake</title>
<path
d="M724.88913,132.77315C678.637,165.15693,618.64686,163.06077,566.0755,146.21272S465.2185,99.36712,413.9902,78.0458A494.18659,494.18659,0,0,0,280.38075,43.2116c-65.27725-7.46816-138.17815,1.629-183.6634,53.98071C46.06687,155.489,49.9558,260.63994,104.74175,314.16073c27.86523,27.22173,64.3542,40.58007,96.17591,61.83552s61.27768,56.54522,58.56766,97.56983c-2.50884,37.97919-31.67671,67.1203-61.86034,85.4044-23.33,14.13247-52.06519,29.56582-54.877,58.83474-2.72081,28.32129,21.43765,50.51207,44.50822,63.13276,75.26244,41.17208,167.99042,40.7761,242.96352-1.03754,26.75083-14.91935,51.33838-34.75613,79.39114-46.38368,73.6499-30.52707,154.80787.20352,232.79573,11.43993A465.4391,465.4391,0,0,0,940.40967,630.544c38.62329-11.40826,77.38928-28.84831,104.52167-61.3378,19.56546-23.42852,31.75437-53.07661,43.19758-82.35738q18.30444-46.83727,35.18876-94.3336c6.75709-19.00815,13.40626-38.38513,15.15148-58.71982,3.16313-36.85563-10.159-73.28074-28.30108-104.38505C1067.09817,155.56778,994.559,103.64386,916.0413,90.45336s-161.71258,12.571-222.64322,68.9421"
transform="translate(-61.06478 -40.93031)"
fill="#ff0000"
opacity="0.1"
id="path4" />
<path
d="m 850.13864,538.05009 -2.78768,-1.6121 c 2.606,-4.50561 -4.388,-23.6855 -10.16161,-33.34366 -4.00573,-6.70054 -6.51846,-12.79214 -7.68236,-18.62319 -1.85316,-9.28413 -0.0928,-17.33381 5.23238,-23.92538 11.04722,-13.6744 10.95161,-39.778 10.94925,-40.03985 l 3.22,-0.0288 c 0.0102,1.11657 0.11332,27.51363 -11.66457,42.0925 -7.82879,9.69069 -6.91723,22.76927 2.709,38.87274 4.53651,7.58822 14.22699,29.62004 10.18559,36.60779 z"
fill="#d4d5e0"
id="path6" />
<path
d="m 885.41237,392.72961 c 0.73072,-26.15292 -16.46834,-47.85115 -38.41521,-48.46435 -21.94687,-0.6132 -40.33063,20.09086 -41.06134,46.24379 -0.70948,25.39283 15.48424,46.58433 36.51445,48.356 a 13.88746,13.88746 0 0 1 -3.25839,7.15025 c -3.18843,3.25617 10.02792,0.28018 10.02792,0.28018 a 23.47942,23.47942 0 0 1 -1.4247,-7.4045 c 20.39429,-1.50966 36.92512,-21.38943 37.61727,-46.16137 z"
fill="#ff0000"
id="path8" />
<path
d="m 817.50885,410.18998 c -3.2502,-9.95233 -0.25316,-19.94507 6.68944,-22.9455 -0.32111,0.073 -0.64062,0.15961 -0.95767,0.26315 -7.59894,2.48164 -11.00956,12.91264 -7.61784,23.2983 3.29314,10.0838 11.78807,16.41654 19.23453,14.50467 0.15121,0.79026 -14.06082,-5.05367 -17.34846,-15.12062 z"
fill="#ffffff"
opacity="0.2"
id="path10" />
<path
d="m 866.63555,574.28524 3.21738,0.13587 c 0.2192,-5.20037 16.41432,-17.63033 26.46937,-22.68106 6.97606,-3.50395 12.36555,-7.29537 16.4771,-11.59083 6.54635,-6.83918 9.38122,-14.57609 8.42553,-22.9959 -1.9825,-17.46712 12.10769,-39.44145 12.25024,-39.66117 l -2.70147,-1.75247 c -0.60785,0.93668 -14.86191,23.15462 -12.7483,41.77705 1.40487,12.37844 -6.38342,22.92464 -23.14841,31.34612 -7.90035,3.96808 -27.90124,17.35729 -28.24144,25.42239 z"
fill="#d4d5e0"
id="path12" />
<path
d="m 914.86434,432.73574 c 13.41945,-22.45947 39.57686,-31.53743 58.42426,-20.27616 18.8474,11.26127 23.2476,38.5973 9.8282,61.05677 -13.0294,21.80671 -38.0667,30.99666 -56.76236,21.20489 a 13.88742,13.88742 0 0 0 -1.08811,7.782 c 0.94278,4.45868 -8.61172,-5.14548 -8.61172,-5.14548 a 23.47928,23.47928 0 0 0 5.17605,-5.48314 c -16.39805,-12.21928 -19.67717,-37.86537 -6.96632,-59.13888 z"
fill="#ff0000"
id="path14" />
<path
d="m 962.7891,483.91158 c 8.0838,-6.65322 10.918,-16.69337 6.6702,-22.9511 0.2318,0.23389 0.4549,0.47849 0.6669,0.736 5.08,6.17223 2.3595,16.80415 -6.0762,23.747 -8.1906,6.74111 -18.7571,7.5254 -24.01423,1.91576 -0.55171,0.58572 14.57643,3.28218 22.75333,-3.44766 z"
fill="#ffffff"
opacity="0.2"
id="path16" />
<path
d="m 294.69734,704.07757 -3.21738,0.13586 c -0.21921,-5.20037 -16.41432,-17.63032 -26.46938,-22.68106 -6.97606,-3.50394 -12.36555,-7.29536 -16.47709,-11.59082 -6.54636,-6.83918 -9.38122,-14.57609 -8.42554,-22.99591 1.9825,-17.46712 -12.10768,-39.44145 -12.25023,-39.66116 l 2.70146,-1.75248 c 0.60785,0.93668 14.86191,23.15462 12.74831,41.77705 -1.40487,12.37844 6.38342,22.92465 23.14841,31.34613 7.90032,3.96808 27.90123,17.35728 28.24144,25.42239 z"
fill="#d4d5e0"
id="path18" />
<path
d="m 246.46855,562.52807 c -13.41945,-22.45947 -39.57689,-31.53743 -58.4243,-20.27617 -18.84741,11.26126 -23.2476,38.5973 -9.82815,61.05677 13.02944,21.80672 38.06663,30.99667 56.76235,21.2049 a 13.8874,13.8874 0 0 1 1.08811,7.782 c -0.94278,4.45868 8.61172,-5.14547 8.61172,-5.14547 a 23.47942,23.47942 0 0 1 -5.17605,-5.48315 c 16.39805,-12.21926 19.67717,-37.86538 6.96632,-59.13888 z"
fill="#ff0000"
id="path20" />
<path
d="m 198.54375,613.7039 c -8.08377,-6.65321 -10.91793,-16.69336 -6.67021,-22.95109 -0.23179,0.23389 -0.45488,0.47849 -0.66683,0.736 -5.08,6.17223 -2.35956,16.80415 6.07618,23.74705 8.19057,6.74111 18.75713,7.5254 24.01422,1.91576 0.55172,0.58566 -14.57648,3.28213 -22.75336,-3.44772 z"
fill="#ffffff"
opacity="0.2"
id="path22" />
<path
d="m 400.69734,366.07757 -3.21738,0.13586 c -0.21921,-5.20037 -16.41432,-17.63032 -26.46938,-22.68106 -6.97606,-3.50394 -12.36555,-7.29536 -16.47709,-11.59082 -6.54636,-6.83918 -9.38122,-14.57609 -8.42554,-22.99591 1.9825,-17.46712 -12.10768,-39.44145 -12.25023,-39.66116 l 2.70146,-1.75248 c 0.60785,0.93668 14.86191,23.15462 12.74831,41.777 -1.40487,12.37844 6.38342,22.92465 23.14841,31.34613 7.90032,3.96813 27.90123,17.35733 28.24144,25.42244 z"
fill="#d4d5e0"
id="path24" />
<path
d="m 352.46855,224.52807 c -13.41945,-22.45947 -39.57689,-31.53743 -58.4243,-20.27617 -18.84741,11.26126 -23.2476,38.5973 -9.82815,61.05677 13.02944,21.80672 38.06663,30.99667 56.76235,21.2049 a 13.8874,13.8874 0 0 1 1.08811,7.782 c -0.94278,4.45868 8.61172,-5.14547 8.61172,-5.14547 a 23.47942,23.47942 0 0 1 -5.17605,-5.48315 c 16.39805,-12.21926 19.67717,-37.86538 6.96632,-59.13888 z"
fill="#ff0000"
id="path26" />
<path
d="m 304.54375,275.7039 c -8.08377,-6.65321 -10.91793,-16.69336 -6.67021,-22.95109 -0.23179,0.23389 -0.45488,0.47849 -0.66683,0.736 -5.08,6.17223 -2.35956,16.80415 6.07618,23.74705 8.19057,6.74111 18.75713,7.5254 24.01422,1.91576 0.55172,0.58566 -14.57648,3.28213 -22.75336,-3.44772 z"
fill="#ffffff"
opacity="0.2"
id="path28" />
<path
d="m 363.69734,509.07757 -3.21738,0.13586 c -0.21921,-5.20037 -16.41432,-17.63032 -26.46938,-22.68106 -6.97606,-3.50394 -12.36555,-7.29536 -16.47709,-11.59082 -6.54636,-6.83918 -9.38122,-14.57609 -8.42554,-22.99591 1.9825,-17.46712 -12.10768,-39.44145 -12.25023,-39.66116 l 2.70146,-1.75248 c 0.60785,0.93668 14.86191,23.15462 12.74831,41.777 -1.40487,12.37844 6.38342,22.92465 23.14841,31.34613 7.90032,3.96813 27.90123,17.35733 28.24144,25.42244 z"
fill="#d4d5e0"
id="path30" />
<path
d="m 315.46855,367.52807 c -13.41945,-22.45947 -39.57689,-31.53743 -58.4243,-20.27617 -18.84741,11.26126 -23.2476,38.5973 -9.82815,61.05677 13.02944,21.80672 38.06663,30.99667 56.76235,21.2049 a 13.8874,13.8874 0 0 1 1.08811,7.782 c -0.94278,4.45868 8.61172,-5.14547 8.61172,-5.14547 a 23.47942,23.47942 0 0 1 -5.17605,-5.48315 c 16.39805,-12.21926 19.67717,-37.86538 6.96632,-59.13888 z"
fill="#ff0000"
id="path32" />
<path
d="m 267.54375,418.7039 c -8.08377,-6.65321 -10.91793,-16.69336 -6.67021,-22.95109 -0.23179,0.23389 -0.45488,0.47849 -0.66683,0.736 -5.08,6.17223 -2.35956,16.80415 6.07618,23.74705 8.19057,6.74111 18.75713,7.5254 24.01422,1.91576 0.55172,0.58566 -14.57648,3.28213 -22.75336,-3.44772 z"
fill="#ffffff"
opacity="0.2"
id="path34" />
<path
d="m 807.62983,698.32458 -2.04355,-2.48874 c 4.0229,-3.30276 4.21344,-23.7172 2.20127,-34.78811 -1.39615,-7.68075 -1.60844,-14.26682 -0.64945,-20.135 1.52689,-9.34333 6.00319,-16.26135 13.30481,-20.5617 15.14731,-8.92134 24.22911,-33.39427 24.31892,-33.64034 l 3.02483,1.10431 c -0.38277,1.049 -9.56062,25.79936 -25.70982,35.31071 -10.73443,6.32229 -14.476,18.88733 -11.12136,37.34627 1.58124,8.69836 2.9132,32.73026 -3.32565,37.8526 z"
fill="#d4d5e0"
id="path36" />
<path
d="m 891.71207,574.66192 c 9.87277,-24.22886 1.39373,-50.58653 -18.93851,-58.8715 -20.33224,-8.28497 -44.81821,4.64011 -54.691,28.869 -9.58584,23.52469 -1.87,49.05471 17.197,58.10228 a 13.88748,13.88748 0 0 1 -5.56285,5.54959 c -4.12919,1.92835 9.29017,3.78556 9.29017,3.78556 a 23.47942,23.47942 0 0 1 1.26765,-7.433 c 19.62452,5.75192 42.0861,-7.05246 51.43754,-30.00193 z"
fill="#ff0000"
id="path38" />
<path
d="m 822.00304,567.15169 c 0.45369,-10.45977 6.77053,-18.76245 14.32471,-19.13236 -0.32627,-0.0445 -0.65586,-0.0756 -0.98908,-0.0901 -7.98639,-0.3464 -14.84443,8.22129 -15.31787,19.13648 -0.45968,10.598 5.26871,19.5116 12.91216,20.33787 -0.13608,0.79304 -11.38883,-9.67162 -10.92992,-20.25189 z"
fill="#ffffff"
opacity="0.2"
id="path40" />
<ellipse
cx="547.48303"
cy="706.71136"
rx="302.44354"
ry="22.4762"
fill="#ff0000"
opacity="0.1"
id="ellipse42" />
<polygon
points="580.006,156.496 583.71,156.496 583.71,119.458 580.006,121.167 "
fill="#53425a"
id="polygon44"
transform="translate(-58)" />
<path
d="m 543.66246,230.85469 -27.924,3.41892 v -83.19083 h 17.66724 c -0.11962,0.94018 -0.19657,2.00859 -0.23929,3.19668 a 140.553,140.553 0 0 0 1.10258,18.77838 c 0.59832,5.419 1.38466,11.23971 2.24794,17.02625 0.66672,4.48733 1.38466,8.949 2.0941,13.197 2.56419,15.23981 5.05143,27.5736 5.05143,27.5736 z"
fill="#ff0000"
id="path52" />
<path
d="m 529.03566,38.85702 c 0,0 2.07871,8.31482 -19.74771,31.18059 -21.82642,22.86577 -13.16514,68.94375 10.04708,67.55795 0,0 21.70014,3.57941 29.50612,-11.19363 a 19.78166,19.78166 0 0 0 -1.385,-20.27 C 540.28321,95.56868 526.44854,73.36947 529.03569,62.76214 Z"
fill="#ffc13d"
id="path64" />
<path
d="m 526.74691,80.12829 c 0,0 1.15975,4.639 -11.01769,17.39635 -12.17744,12.75735 -7.34513,38.46526 5.60549,37.69209 0,0 12.107,1.997 16.46212,-6.24517 a 11.03664,11.03664 0 0 0 -0.77274,-11.30909 c -4.00194,-5.89348 -11.72062,-18.27891 -10.27718,-24.197 z"
fill="#ffffff"
opacity="0.5"
id="path66" />
<path
d="m 534.26899,173.05784 a 199.17332,199.17332 0 0 0 -18.53053,16.85529 v -21.5563 a 99.76217,99.76217 0 0 1 17.428,-14.07737 140.553,140.553 0 0 0 1.10253,18.77838 z"
fill="#ffffff"
opacity="0.5"
id="path70" />
<path
d="m 538.61103,203.28111 c -6.8635,6.01728 -16.30825,14.57313 -22.87257,20.53913 v -15.42786 c 6.855,-6.30791 15.23984,-13.57311 20.77847,-18.30829 0.66672,4.48733 1.38466,8.94899 2.0941,13.19702 z"
fill="#ff0000"
id="path72" />
<rect
x="395.79425"
y="246.23978"
width="278.92389"
height="127.64532"
fill="#c99398"
id="rect76" />
<path
d="m 674.71814,246.23978 v 19.21435 c -5.3335,1.03419 -12.32518,-0.56415 -18.18011,-2.52146 a 24.1701,24.1701 0 0 0 -20.90665,2.63258 c -16.06895,10.5046 -28.61638,8.28233 -37.3688,3.05989 a 32.191,32.191 0 0 0 -29.12919,-2.24789 31.62676,31.62676 0 0 1 -12.91495,2.36757 27.26651,27.26651 0 0 0 -14.65858,4.0429 c -13.197,7.9917 -26.35133,3.36759 -34.61655,-1.4616 a 24.40043,24.40043 0 0 0 -17.898,-2.5813 25.785,25.785 0 0 1 -7.949,0.6496 29.82535,29.82535 0 0 0 -17.55613,3.78645 c -21.787,12.72693 -28.98385,-2.72659 -33.27461,-5.00015 -4.8463,-2.56419 -5.41045,6.26513 -6.83783,6.26513 -1.42738,0 -6.26519,-11.67558 -7.41049,-7.69257 -0.52993,1.87186 -5.01726,4.11981 -9.63282,5.98311 a 19.218,19.218 0 0 1 -10.59011,1.09408 v -27.59069 z"
opacity="0.1"
id="path78" />
<path
d="m 406.90784,220.79181 c 0,0 -45.71376,20.40038 -21.32,45.891 a 18.99689,18.99689 0 0 0 20.79823,4.34267 c 4.61229,-1.8591 9.09915,-4.10715 9.63391,-5.9788 1.13964,-3.98874 5.98311,7.69257 7.40766,7.69257 1.42455,0 1.99437,-8.83221 6.83783,-6.268 4.29018,2.27127 11.48632,17.73112 33.27042,4.99755 a 29.88085,29.88085 0 0 1 17.5643,-3.784 25.57433,25.57433 0 0 0 7.94279,-0.65068 24.42806,24.42806 0 0 1 17.9011,2.57955 c 8.26488,4.83 21.42127,9.45336 34.61417,1.4682 a 27.26077,27.26077 0 0 1 14.66319,-4.0486 31.46519,31.46519 0 0 0 12.90972,-2.36943 32.23663,32.23663 0 0 1 29.13319,2.24885 c 8.75173,5.2288 21.30162,7.44766 37.36683,-3.05448 a 24.1437,24.1437 0 0 1 20.90269,-2.63919 c 11.68411,3.91417 27.91865,6.40973 26.44662,-10.70267 -2.27927,-26.49666 -33.61932,-34.18922 -46.72517,-34.47413 -13.10585,-0.28491 -34.759,-2.56419 -59.26125,0 -24.50225,2.56419 -74.36146,2.27928 -74.36146,2.27928 0,0 -83.72051,-3.32416 -95.72477,2.47031 z"
fill="#f8f8fa"
id="path80" />
<rect
x="338.80945"
y="373.8851"
width="397.87659"
height="156.2702"
fill="#c99398"
id="rect82" />
<path
d="m 674.71814,347.22608 v 26.659 H 519.61041 q -0.39753,-0.0513 -0.79494,-0.077 a 20.86814,20.86814 0 0 0 -3.94029,0.077 H 395.79422 v -23.77 c 12.97478,1.58123 26.06069,3.58988 38.95858,3.5386 17.12026,-0.077 34.03534,-3.6326 51.18976,-2.67531 59.97636,3.33341 121.04679,4.32493 180.78385,-2.77787 2.65823,-0.31626 5.32498,-0.64961 7.99173,-0.97442 z"
opacity="0.1"
id="path84" />
<path
d="m 736.68603,373.8851 v 14.09448 c -4.32493,-0.547 -8.48745,-2.27356 -12.66709,-3.64116 -3.76934,-1.23081 -7.84641,-2.1881 -11.67559,-1.171 -2.0172,0.53848 -3.85483,1.59834 -5.84637,2.21377 -8.32506,2.59836 -17.00908,-2.81209 -25.73589,-2.84626 -8.64986,-0.0342 -16.38515,5.17966 -24.82988,7.07718 -13.05174,2.93172 -26.394,-2.21377 -38.89875,-6.98317 -5.06,-1.92315 -10.92347,-3.76078 -15.65009,-1.12825 -2.077,1.15391 -3.64116,3.05139 -5.66687,4.29931 -5.92326,3.65827 -13.67567,0.80345 -19.58188,-2.889 -3.73516,-2.33339 -8.25666,-5.07709 -12.197,-3.11123 -2.03426,1.00858 -3.3078,3.05139 -4.99164,4.56428 -5.33351,4.77791 -13.727,3.49582 -20.26561,0.58977 -6.53014,-2.9061 -12.73549,-7.19681 -19.86395,-7.72679 -10.05158,-0.76067 -18.85533,6.01733 -27.62482,10.9833 -8.76949,4.96597 -20.93236,7.90625 -28.08645,0.7949 -2.36756,-2.35051 -4.1198,-5.75232 -7.3592,-6.56432 -5.35917,-1.33338 -9.38492,5.29933 -14.78681,6.46175 -6.65838,1.43594 -12.07734,-5.64975 -18.75277,-7.043 -6.90623,-1.44449 -13.33381,3.35908 -19.428,6.90618 -6.09419,3.5471 -14.94926,5.54723 -19.36819,0.0513 -1.41028,-1.75224 -2.17955,-4.1113 -4.11125,-5.27372 a 8.23976,8.23976 0 0 0 -4.7523,-0.76072 48.28961,48.28961 0 0 0 -16.76123,4.00868 c -6.08567,2.68387 -11.97477,6.70966 -18.616,6.58143 -0.11962,0 -0.2393,-0.009 -0.359,-0.0171 V 373.8851 Z"
opacity="0.1"
id="path86" />
<path
d="m 434.74956,355.36259 c -30.52022,0.12919 -62.04306,-11.3139 -90.817,-1.13741 -10.4405,3.6925 -21.029,12.42945 -19.92809,23.44882 a 16.08175,16.08175 0 0 0 15.16183,13.99129 c 6.64583,0.12838 12.53348,-3.90136 18.61606,-6.582 a 48.23892,48.23892 0 0 1 16.76677,-4.01339 8.28854,8.28854 0 0 1 4.753,0.76727 c 1.928,1.15674 2.70008,3.52168 4.10938,5.27352 4.42088,5.49545 13.26969,3.49469 19.3653,-0.0532 6.09561,-3.54791 12.52636,-8.35316 19.43022,-6.91063 6.67,1.39365 12.08971,8.48267 18.75064,7.04643 5.39973,-1.1643 9.42524,-7.79193 14.78555,-6.45783 3.24447,0.8075 4.99258,4.20694 7.36357,6.56428 7.14781,7.10667 19.31229,4.16878 28.08228,-0.79943 8.76999,-4.96821 17.57221,-11.74161 27.62338,-10.98672 7.13314,0.53573 13.33311,4.828 19.87015,7.73241 6.53704,2.90441 14.93261,4.18424 20.26041,-0.58893 1.68926,-1.5134 2.96278,-3.56046 4.99346,-4.57057 3.93911,-1.9594 8.46274,0.78428 12.19394,3.11537 5.90792,3.691 13.66249,6.5482 19.5889,2.887 2.01867,-1.24709 3.588,-3.14367 5.661,-4.29821 4.72765,-2.633 10.59585,-0.79551 15.65211,1.13266 12.50125,4.76725 25.84952,9.9135 38.90289,6.97792 8.43711,-1.89742 16.17949,-7.106 24.82727,-7.07412 8.72291,0.0321 17.40825,5.44354 25.73608,2.84788 1.98918,-0.62 3.82748,-1.677 5.84081,-2.21343 3.83579,-1.022 7.90741,-0.0656 11.68031,1.16845 5.00614,1.63742 9.99053,3.7923 15.25762,3.80752 5.26709,0.0152 11.02793,-2.86 12.288,-7.97416 0.9646,-3.9149 -0.91453,-7.9726 -3.25943,-11.2526 -8.51489,-11.91046 -23.27858,-18.03985 -37.82877,-19.6692 -14.55019,-1.62935 -29.21245,0.64422 -43.75131,2.37166 -59.73875,7.09789 -120.8111,6.10982 -180.78208,2.77458 -17.15392,-0.95398 -34.07119,2.60231 -51.19425,2.67479 z"
fill="#f8f8fa"
id="path88" />
<rect
x="311.88547"
y="516.05225"
width="439.93784"
height="181.20265"
fill="#c99398"
id="rect90" />
<path
d="m 753.77207,511.08629 a 519.32412,519.32412 0 0 1 -66.72874,9.91484 45.84426,45.84426 0 0 0 -22.51355,1.718 c -0.13678,0.0427 -0.27352,0.0855 -0.4103,0.13673 -13.86369,4.90619 -25.79573,16.539 -40.49709,16.351 -11.73542,-0.15384 -21.88105,-7.90625 -33.15494,-11.15421 a 42.23114,42.23114 0 0 0 -9.89778,-1.61545 43.4249,43.4249 0 0 0 -6.82928,0.18807 c -13.63294,0.359 -27.26584,0.50426 -40.89878,0.22224 -20.00069,-0.40175 -39.95861,-1.72657 -59.91657,-3.04284 q -32.001,-2.11548 -64.0021,-4.23092 -30.10362,-1.98723 -60.2157,-3.97451 -7.38487,-0.4872 -14.78681,-0.98291 c -5.30789,-0.35047 -9.24818,0.79489 -11.39356,-3.94885 -2.54713,-5.67541 -0.29919,-11.32516 2.8206,-16.26552 2.68386,0.0513 5.37623,0.23935 8.05153,0.42736 q 60.97641,4.295 121.92719,8.88921 l -6.24807,1.10258 a 682.06118,682.06118 0 0 1 128.36326,-7.94042 c 20.04342,0.65811 40.1979,2.19666 60.096,-0.359 13.98336,-1.79491 27.6847,-5.58991 41.73646,-6.778 19.29975,-1.63251 38.64228,1.7009 57.737,5.02581 a 116.104,116.104 0 0 1 11.93205,2.53 c 1.01712,4.88903 2.15387,9.76955 4.82918,13.78679 z"
opacity="0.1"
id="path92" />
<path
d="m 751.82331,516.05227 v 17.03475 c -5.4874,-0.812 -10.86363,-1.61545 -14.1971,2.28211 -1.56411,1.83769 -2.171,4.33349 -3.69238,6.2139 -3.1369,3.8719 -9.26529,3.8634 -13.74407,1.66674 -4.47027,-2.19666 -7.88063,-6.043 -11.73547,-9.20546 a 46.66119,46.66119 0 0 0 -44.33481,-7.76951 c -13.86369,4.90619 -25.79573,16.539 -40.49709,16.351 -11.73542,-0.15385 -21.88105,-7.90625 -33.15494,-11.15421 a 44.78974,44.78974 0 0 0 -37.779,6.419 c -7.98314,5.66686 -15.52186,14.462 -25.24013,13.34231 -5.09421,-0.58976 -9.37641,-3.90612 -13.70134,-6.66688 A 72.89966,72.89966 0 0 0 485.0537,533.93319 c -4.45311,-0.6325 -9.17979,-0.82056 -13.28248,1.02568 -5.1711,2.3334 -8.51312,7.48744 -13.3167,10.51316 -11.15421,7.01735 -25.61621,0.68378 -37.11234,-5.75231 -11.50467,-6.43614 -25.73589,-13.02607 -37.12945,-6.41047 -2.68386,1.55561 -4.98308,3.77789 -7.82079,5.02581 -16.02623,7.03442 -31.76178,-20.06907 -48.20672,-14.07737 -3.70955,1.35049 -6.66688,4.26509 -10.3166,5.76943 a 12.36821,12.36821 0 0 1 -5.9831,0.83761 v -14.81246 z"
opacity="0.1"
id="path94" />
<path
d="m 455.33042,505.42518 q -60.95452,-4.58713 -121.93034,-8.885 c -7.05844,-0.49751 -14.29773,-0.97386 -21.08084,1.04075 -6.78311,2.01461 -13.12151,7.08092 -14.57243,14.00653 -2.19351,10.47014 10.23123,20.79764 20.124,16.72713 3.65133,-1.50239 6.60662,-4.41991 10.31685,-5.7703 16.44216,-5.98439 32.18,21.11323 48.20052,14.07749 2.84064,-1.24753 5.13753,-3.46238 7.82058,-5.02021 11.39733,-6.61752 25.6285,-0.0238 37.12917,6.41247 11.50067,6.43625 25.96162,12.76192 37.118,5.74583 4.80482,-3.02169 8.1408,-8.17553 13.31563,-10.50751 4.10424,-1.84954 8.82484,-1.663 13.28113,-1.02493 a 72.77513,72.77513 0 0 1 28.69594,10.63272 c 4.32394,2.75614 8.60687,6.07051 13.70048,6.66035 9.719,1.12546 17.25985,-7.676 25.23738,-13.34036 a 44.82021,44.82021 0 0 1 37.78062,-6.42169 c 11.27221,3.25 21.42144,11.00426 33.15182,11.157 14.70313,0.19145 26.63606,-11.44248 40.49649,-16.35242 a 46.685,46.685 0 0 1 44.34037,7.77212 c 3.85411,3.16471 7.25985,7.00548 11.73593,9.20416 4.47608,2.19868 10.60421,2.20775 13.74426,-1.66647 1.52069,-1.87624 2.12239,-4.37738 3.6922,-6.21272 6.41716,-7.50261 20.39158,2.41224 28.17191,-3.66523 a 10.65272,10.65272 0 0 0 3.5614,-5.86348 c 1.95046,-7.77429 -2.93317,-15.96775 -9.622,-20.384 -6.68883,-4.41625 -14.83663,-5.88933 -22.73286,-7.26531 -19.087,-3.32605 -38.429,-6.66492 -57.7346,-5.03172 -14.05,1.18858 -27.75122,4.98941 -41.73679,6.78385 -19.89389,2.55253 -40.04886,1.01561 -60.09508,0.35892 a 682.05255,682.05255 0 0 0 -128.36461,7.93591"
fill="#f8f8fa"
id="path96" />
<path
d="m 751.82331,647.91991 v 42.57407 q -25.25727,1.29494 -50.5231,2.57274 c -27.19745,1.38466 -54.42061,2.76932 -81.64372,2.23939 -23.00936,-0.453 -45.96738,-2.265 -68.96813,-2.983 -48.36061,-1.50433 -96.858,1.87186 -145.08177,-2 -15.43642,-1.23937 -30.82155,-3.21379 -46.28363,-4.09419 a 340.601,340.601 0 0 0 -47.43748,0.68377 v -40.11248 a 37.31411,37.31411 0 0 1 4.36765,-0.10256 55.84923,55.84923 0 0 1 22.0264,5.32495 c 5.39334,2.55568 10.50461,6.02588 16.38515,7.043 15.29968,2.64109 28.59071,-11.81236 44.0784,-12.96628 12.47053,-0.92307 23.676,6.81222 34.37725,13.28253 2.05988,1.23937 4.35055,2.48724 6.71816,2.13682 1.983,-0.29063 3.61549,-1.64962 5.23094,-2.83771 15.26546,-11.26532 38.52267,-9.89778 52.35218,3.08557 1.50434,1.40176 3.00011,2.983 4.98309,3.50437 3.92318,1.04279 7.44466,-2.359 10.55589,-4.97448 16.85524,-14.21416 42.83048,-9.94051 62.173,0.6581 3.58132,1.95737 7.54728,4.1882 11.50468,3.16251 2.64964,-0.68377 4.69246,-2.718 6.81217,-4.45316 16.47065,-13.51327 41.2407,-11.00036 60.51484,-1.91458 1.86335,0.88039 3.82922,1.82913 5.872,1.59834 2.45307,-0.29058 4.33343,-2.17955 6.2224,-3.76078 a 31.73577,31.73577 0 0 1 33.37718,-4.13692 c 3.04283,1.46161 5.86348,3.436 9.09433,4.4275 9.20545,2.81209 18.5562,-2.90605 27.74454,-5.8036 a 47.66956,47.66956 0 0 1 15.54758,-2.15392 z"
opacity="0.1"
id="path98" />
<path
d="m 798.18383,689.84438 q -48.43756,2.47451 -96.88362,4.9318 c -27.19745,1.38466 -54.42061,2.76932 -81.64372,2.23939 -23.00936,-0.453 -45.96738,-2.265 -68.96813,-2.983 -48.36061,-1.50433 -96.858,1.87186 -145.08177,-2 -15.43642,-1.23937 -30.82155,-3.2138 -46.28363,-4.09419 a 344.33108,344.33108 0 0 0 -52.18978,1.10263 c -3.70954,0.35042 -9.41913,2.20517 -13.009,1.47867 -3.87189,-0.78634 -2.39323,-1.23081 -1.12819,-4.89759 a 32.43645,32.43645 0 0 0 0.95729,-3.32491 c 1.05986,-4.48733 1.25643,-9.01738 1.69235,-13.67567 0.5641,-5.94893 1.43594,-12.49614 6.35919,-16.539 3.8719,-3.18813 9.23107,-3.83773 14.24832,-3.67533 a 55.84906,55.84906 0 0 1 22.0264,5.325 c 5.39334,2.55568 10.50461,6.02588 16.38515,7.043 15.29968,2.64109 28.59071,-11.81237 44.0784,-12.96628 12.47053,-0.92307 23.676,6.81222 34.37725,13.28253 2.05988,1.23937 4.35055,2.48724 6.71816,2.13682 1.983,-0.29063 3.61549,-1.64962 5.23094,-2.83771 15.26546,-11.26533 38.52267,-9.89778 52.35218,3.08556 1.50434,1.40177 3.00011,2.983 4.98309,3.50437 3.92318,1.0428 7.44466,-2.359 10.55589,-4.97448 16.85524,-14.21415 42.83048,-9.9405 62.173,0.65811 3.58132,1.95736 7.54728,4.1882 11.50468,3.16251 2.64964,-0.68377 4.69246,-2.718 6.81217,-4.45316 16.47065,-13.51327 41.2407,-11.00036 60.51484,-1.91458 1.86335,0.88039 3.82922,1.82913 5.872,1.59834 2.45307,-0.29058 4.33343,-2.17955 6.2224,-3.76078 a 31.73577,31.73577 0 0 1 33.37718,-4.13692 c 3.04283,1.46161 5.86348,3.436 9.09433,4.4275 9.20545,2.81209 18.5562,-2.906 27.74454,-5.8036 a 48.03718,48.03718 0 0 1 60.002,30.51385 45.82008,45.82008 0 0 1 1.90609,7.54712 z"
fill="#f8f8fa"
id="path100" />
<path
d="m 798.18383,689.84438 q -48.43756,2.47451 -96.88362,4.9318 c -27.19745,1.38466 -54.42061,2.76932 -81.64372,2.23939 -23.00936,-0.453 -45.96738,-2.265 -68.96813,-2.983 -48.36061,-1.50433 -96.858,1.87186 -145.08177,-2 -15.43642,-1.23937 -30.82155,-3.2138 -46.28363,-4.09419 a 344.33108,344.33108 0 0 0 -52.18978,1.10263 c -3.70954,0.35042 -9.41913,2.20517 -13.009,1.47867 -3.87189,-0.78634 -2.39323,-1.23081 -1.12819,-4.89759 a 32.43645,32.43645 0 0 0 0.95729,-3.32491 h 502.32447 a 45.82008,45.82008 0 0 1 1.90608,7.5472 z"
opacity="0.1"
id="path102" />
<path
d="m 281.48168,683.15189 h 522.36153 a 17.03368,17.03368 0 0 1 17.03368,17.03368 v 2.19773 H 264.448 v -2.19773 a 17.03368,17.03368 0 0 1 17.03368,-17.03368 z"
fill="#d4d5e0"
id="path104" />
<rect
x="458.60144"
y="107.35271"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.71337)"
fill="#ff0000"
id="rect106" />
<rect
x="451.04474"
y="240.62312"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.7134)"
fill="#ff0000"
id="rect108" />
<rect
x="446.08771"
y="393.80121"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.7134)"
fill="#ff0000"
id="rect110" />
<rect
x="565.72491"
y="367.95346"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.71339)"
fill="#ff0000"
id="rect112" />
<rect
x="633.54791"
y="341.91098"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.71339)"
fill="#ff0000"
id="rect114" />
<rect
x="734.52704"
y="323.09839"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.71336)"
fill="#ff0000"
id="rect116" />
<rect
x="796.78986"
y="287.58524"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.71341)"
fill="#ff0000"
id="rect118" />
<rect
x="504.96783"
y="382.38846"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.71339)"
fill="#ff0000"
id="rect120" />
<rect
x="651.00446"
y="353.8197"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.71336)"
fill="#ff0000"
id="rect122" />
<rect
x="704.80426"
y="320.51514"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.71337)"
fill="#ff0000"
id="rect124" />
<rect
x="826.94171"
y="278.53192"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.71338)"
fill="#ff0000"
id="rect126" />
<rect
x="143.97374"
y="594.66351"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(-53.67407)"
fill="#ff0000"
id="rect128" />
<rect
x="123.72319"
y="562.32275"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(-53.67411)"
fill="#ff0000"
id="rect130" />
<rect
x="87.124039"
y="512.54572"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(-53.67408)"
fill="#ff0000"
id="rect132" />
<rect
x="-63.003796"
y="520.77222"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(-53.67407)"
fill="#ff0000"
id="rect134" />
<rect
x="-70.465736"
y="532.08289"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(-53.67409)"
fill="#ff0000"
id="rect136" />
<rect
x="-0.87182206"
y="606.97858"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(-53.67407)"
fill="#ff0000"
id="rect138" />
<rect
x="-158.01865"
y="672.51807"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(-53.67409)"
fill="#ff0000"
id="rect140" />
<rect
x="59.01112"
y="699.48578"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(-53.67408)"
fill="#ff0000"
id="rect142" />
<rect
x="80.974785"
y="739.49146"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(-53.67409)"
fill="#ff0000"
id="rect144" />
<rect
x="-35.942822"
y="808.46613"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(-53.67402)"
fill="#ff0000"
id="rect146" />
<rect
x="6.3373632"
y="893.10767"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(-53.67405)"
fill="#ff0000"
id="rect148" />
<rect
x="-173.57845"
y="632.88159"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(-53.67407)"
fill="#ff0000"
id="rect150" />
<rect
x="-208.95927"
y="574.62866"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(-53.67404)"
fill="#ff0000"
id="rect152" />
<rect
x="-137.61473"
y="689.3941"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(-53.67406)"
fill="#ff0000"
id="rect154" />
<rect
x="-90.925537"
y="745.29285"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(-53.67405)"
fill="#ff0000"
id="rect156" />
<rect
x="566.99335"
y="-389.09595"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(54.67721)"
fill="#ff0000"
id="rect158" />
<rect
x="530.26068"
y="-316.85919"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(54.67719)"
fill="#ff0000"
id="rect160" />
<rect
x="548.32477"
y="-141.5455"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(54.67721)"
fill="#ff0000"
id="rect162" />
<rect
x="574.7215"
y="-171.97626"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(54.6772)"
fill="#ff0000"
id="rect164" />
<rect
x="619.52966"
y="-235.20763"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(54.67718)"
fill="#ff0000"
id="rect166" />
<rect
x="626.82996"
y="-259.72891"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(54.67719)"
fill="#ff0000"
id="rect168" />
<rect
x="662.49255"
y="-304.74033"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(54.67719)"
fill="#ff0000"
id="rect170" />
<rect
x="681.33765"
y="-342.66898"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(54.67719)"
fill="#ff0000"
id="rect172" />
<rect
x="717.02673"
y="-387.01089"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(54.67719)"
fill="#ff0000"
id="rect174" />
<rect
x="595.41364"
y="59.630775"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.71337)"
fill="#ff0000"
id="rect176" />
<rect
x="639.8175"
y="44.12019"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.71339)"
fill="#ff0000"
id="rect178" />
<rect
x="583.4975"
y="80.867691"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.71339)"
fill="#ff0000"
id="rect180" />
<rect
x="496.44278"
y="110.52627"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.71337)"
fill="#ff0000"
id="rect182" />
<rect
x="650.97314"
y="56.208157"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.7134)"
fill="#ff0000"
id="rect184" />
<rect
x="483.25769"
y="93.30764"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.71338)"
fill="#ff0000"
id="rect186" />
<rect
x="531.93488"
y="87.553413"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.71337)"
fill="#ff0000"
id="rect188" />
<rect
x="539.16327"
y="214.1637"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.71339)"
fill="#ff0000"
id="rect190" />
<rect
x="608.24188"
y="193.4239"
width="3.1340203"
height="8.6578474"
rx="1.3879346"
transform="rotate(16.713074)"
fill="#ff0000"
id="rect192"
style="stroke-width:1" />
<rect
x="769.59155"
y="148.47212"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.71335)"
fill="#ff0000"
id="rect194" />
<rect
x="786.37939"
y="143.43382"
width="3.1340203"
height="8.6578474"
rx="1.3879346"
transform="rotate(16.713074)"
fill="#ff0000"
id="rect196"
style="stroke-width:1" />
<rect
x="553.78607"
y="93.307686"
width="3.1340101"
height="8.6578197"
rx="1.38793"
transform="rotate(16.71338)"
fill="#ff0000"
id="rect198" />
<ellipse
cx="140.97244"
cy="702.9892"
rx="28.598101"
ry="2.8970201"
fill="#ff0000"
opacity="0.1"
id="ellipse202" />
<ellipse
cx="64"
cy="775.50677"
rx="28.598101"
ry="2.8970201"
fill="#ff0000"
opacity="0.1"
id="ellipse204" />
<ellipse
cx="849.92664"
cy="766.80573"
rx="28.598101"
ry="2.8970201"
fill="#ff0000"
opacity="0.1"
id="ellipse206" />
<ellipse
cx="838.42141"
cy="797.49528"
rx="28.5981"
ry="2.89702"
fill="#ff0000"
opacity="0.1"
id="ellipse208" />
<ellipse
cx="698.20782"
cy="747.95856"
rx="28.598101"
ry="2.8970201"
fill="#ff0000"
opacity="0.1"
id="ellipse210" />
<ellipse
cx="626.7996"
cy="815.24236"
rx="28.5981"
ry="2.89702"
fill="#ff0000"
opacity="0.1"
id="ellipse212" />
<path
d="m 273.47467,742.52714 c 0,0 -0.0322,0.29995 -0.0535,0.79282 v 0.375 l -3.09636,5.2606 -9.8461,-1.36069 -5.08915,-3.4606 a 16.50825,16.50825 0 0 0 1.10358,-2.1 c 2.47486,-0.7071 8.14248,1.29642 8.14248,1.29642 0,0 6.11778,1.16778 8.68916,-0.70716 a 0.589,0.589 0 0 0 0.14989,-0.0964 z"
opacity="0.1"
id="path258" />
<path
d="m 424.7403,543.91642 c 0,0 -13.12465,6.86986 -15.66923,7.23194 -2.54458,0.36208 11.11578,-1.47317 11.11578,-1.47317 z"
opacity="0.1"
id="path320" />
<path
d="m 435.45429,549.27341 c 0,0 -17.41024,5.8927 -25.044,4.8213 3e-5,-2e-5 19.01738,3.61598 25.044,-4.8213 z"
opacity="0.1"
id="path322" />
<path
d="m 591.62983,509.32458 -2.04355,-2.48874 c 4.0229,-3.30276 4.21344,-23.7172 2.20127,-34.78811 -1.39615,-7.68075 -1.60844,-14.26682 -0.64945,-20.135 1.52689,-9.34333 6.00319,-16.26135 13.30481,-20.5617 15.14731,-8.92134 24.22911,-33.39427 24.31892,-33.64034 l 3.02483,1.10431 c -0.38277,1.049 -9.56062,25.79936 -25.70982,35.31071 -10.73443,6.32229 -14.476,18.88733 -11.12136,37.34627 1.58124,8.69836 2.9132,32.73026 -3.32565,37.8526 z"
fill="#d4d5e0"
id="path350" />
<path
d="m 675.71207,385.66192 c 9.87277,-24.22886 1.39373,-50.58653 -18.93851,-58.8715 -20.33224,-8.28497 -44.81821,4.64011 -54.691,28.869 -9.58584,23.52469 -1.87,49.05471 17.197,58.10228 a 13.88748,13.88748 0 0 1 -5.56285,5.54959 c -4.12919,1.92835 9.29017,3.78556 9.29017,3.78556 a 23.47942,23.47942 0 0 1 1.26765,-7.433 c 19.62452,5.75192 42.0861,-7.05246 51.43754,-30.00193 z"
fill="#ff0000"
id="path352" />
<path
d="m 606.00304,378.15169 c 0.45369,-10.45977 6.77053,-18.76245 14.32471,-19.13236 -0.32627,-0.0445 -0.65586,-0.0757 -0.98908,-0.0901 -7.98639,-0.3464 -14.84443,8.22129 -15.31787,19.13648 -0.45968,10.598 5.26871,19.5116 12.91216,20.33787 -0.13608,0.79304 -11.38883,-9.67162 -10.92992,-20.25189 z"
fill="#ffffff"
opacity="0.2"
id="path354" />
<path
d="m 714.62983,673.32458 -2.04355,-2.48874 c 4.0229,-3.30276 4.21344,-23.7172 2.20127,-34.78811 -1.39615,-7.68075 -1.60844,-14.26682 -0.64945,-20.135 1.52689,-9.34333 6.00319,-16.26135 13.30481,-20.5617 15.14731,-8.92134 24.22911,-33.39427 24.31892,-33.64034 l 3.02483,1.10431 c -0.38277,1.049 -9.56062,25.79936 -25.70982,35.31071 -10.73443,6.32229 -14.476,18.88733 -11.12136,37.34627 1.58124,8.69836 2.9132,32.73026 -3.32565,37.8526 z"
fill="#d4d5e0"
id="path356" />
<path
d="m 798.71207,549.66192 c 9.87277,-24.22886 1.39373,-50.58653 -18.93851,-58.8715 -20.33224,-8.28497 -44.81821,4.64011 -54.691,28.869 -9.58584,23.52469 -1.87,49.05471 17.197,58.10228 a 13.88748,13.88748 0 0 1 -5.56285,5.54959 c -4.12919,1.92835 9.29017,3.78556 9.29017,3.78556 a 23.47942,23.47942 0 0 1 1.26765,-7.433 c 19.62452,5.75192 42.0861,-7.05246 51.43754,-30.00193 z"
fill="#ff0000"
id="path358" />
<path
d="m 729.00304,542.15169 c 0.45369,-10.45977 6.77053,-18.76245 14.32471,-19.13236 -0.32627,-0.0445 -0.65586,-0.0756 -0.98908,-0.0901 -7.98639,-0.3464 -14.84443,8.22129 -15.31787,19.13648 -0.45968,10.598 5.26871,19.5116 12.91216,20.33787 -0.13608,0.79304 -11.38883,-9.67162 -10.92992,-20.25189 z"
fill="#ffffff"
opacity="0.2"
id="path360" />
<path
d="m 541.00304,225.15169 c 0.45369,-10.45977 6.77053,-18.76245 14.32471,-19.13236 -0.32627,-0.0445 -0.65586,-0.0756 -0.98908,-0.0901 -7.98639,-0.3464 -14.84443,8.22129 -15.31787,19.13648 -0.45968,10.598 5.26871,19.5116 12.91216,20.33787 -0.13608,0.79304 -11.38883,-9.67162 -10.92992,-20.25189 z"
fill="#ffffff"
opacity="0.2"
id="path366" />
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -1,29 +0,0 @@
<svg width="387" height="254" viewBox="0 0 387 254" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_3878_1251)">
<path d="M383.487 253.614H0.412795C0.303315 253.614 0.198319 253.571 0.120905 253.493C0.0434905 253.416 0 253.311 0 253.201C0 253.092 0.0434905 252.987 0.120905 252.909C0.198319 252.832 0.303315 252.788 0.412795 252.788H383.487C383.596 252.788 383.701 252.832 383.779 252.909C383.856 252.987 383.9 253.092 383.9 253.201C383.9 253.311 383.856 253.416 383.779 253.493C383.701 253.571 383.596 253.614 383.487 253.614Z" fill="#C1C6CD"/>
<path d="M141.672 62.1213C135.55 53.9289 124.346 51.9517 118.778 56.1121C113.21 60.2726 111.931 71.5779 118.053 79.7703C123.72 87.3534 133.986 89.4215 139.64 86.5805C139.622 86.6692 139.621 86.7605 139.637 86.8497L139.956 88.4258C139.98 88.5459 140.035 88.6578 140.114 88.7509C140.194 88.844 140.296 88.9152 140.411 88.9577C140.526 89.0002 140.65 89.0126 140.771 88.9937C140.893 88.9749 141.007 88.9253 141.103 88.8499L143.803 86.7408C143.9 86.6654 143.975 86.5665 144.023 86.4535C144.071 86.3406 144.089 86.2173 144.075 86.0955C144.062 85.9736 144.017 85.8572 143.946 85.7573C143.875 85.6574 143.78 85.5773 143.669 85.5247L142.217 84.834C142.166 84.8111 142.112 84.7942 142.057 84.7838C146.416 80.1759 147.35 69.7208 141.672 62.1213Z" fill="#C1C6CD"/>
<path d="M128.281 59.0282C131.276 59.5039 133.973 61.1111 135.817 63.5181C137.661 65.9252 138.511 68.9483 138.19 71.9634C138.124 72.6541 139.204 72.6496 139.269 71.9634C139.578 68.7136 138.646 65.4672 136.662 62.8753C134.677 60.2834 131.786 58.5376 128.568 57.9881C127.889 57.8726 127.597 58.9119 128.281 59.0282Z" fill="white"/>
<path d="M311.466 138.378C316.818 129.663 314.517 118.521 308.595 114.883C302.672 111.246 291.694 114.233 286.341 122.948C281.387 131.014 283.257 141.319 287.986 145.524C287.897 145.54 287.811 145.572 287.735 145.62L286.388 146.499C286.285 146.566 286.201 146.658 286.144 146.766C286.087 146.875 286.059 146.996 286.062 147.119C286.065 147.241 286.099 147.361 286.161 147.466C286.223 147.572 286.312 147.66 286.417 147.722L289.374 149.452C289.48 149.513 289.6 149.547 289.723 149.55C289.845 149.552 289.966 149.524 290.075 149.466C290.183 149.409 290.275 149.324 290.341 149.222C290.408 149.119 290.447 149 290.455 148.878L290.561 147.273C290.563 147.218 290.559 147.161 290.548 147.106C296.44 149.455 306.501 146.462 311.466 138.378Z" fill="#C1C6CD"/>
<path d="M307.912 125.348C308.576 128.306 308.079 131.407 306.523 134.009C304.967 136.612 302.472 138.518 299.551 139.333C298.885 139.527 299.288 140.529 299.95 140.336C303.084 139.422 305.757 137.358 307.432 134.556C309.108 131.755 309.662 128.423 308.985 125.23C308.841 124.556 307.767 124.669 307.912 125.348Z" fill="white"/>
<path d="M266.278 72.0433C268.068 61.974 261.847 52.448 255.003 51.232C248.16 50.016 239.038 56.8154 237.249 66.8847C235.592 76.205 241.106 85.1089 247.046 87.2908C246.969 87.3381 246.901 87.3998 246.847 87.4725L245.915 88.7831C245.844 88.883 245.8 88.9994 245.787 89.1212C245.773 89.2431 245.791 89.3663 245.839 89.4793C245.887 89.5922 245.962 89.6911 246.059 89.7665C246.155 89.842 246.27 89.8915 246.391 89.9103L249.776 90.4372C249.897 90.4561 250.021 90.4436 250.136 90.4011C250.251 90.3586 250.353 90.2874 250.433 90.1943C250.513 90.1012 250.567 89.9892 250.591 89.8691C250.616 89.7489 250.609 89.6246 250.572 89.5078L250.082 87.976C250.064 87.9231 250.04 87.8724 250.009 87.8251C256.352 87.8531 264.618 81.3839 266.278 72.0433Z" fill="#DEBB6B"/>
<path d="M266.278 72.0433C268.068 61.974 261.847 52.448 255.003 51.232C248.16 50.016 239.038 56.8154 237.249 66.8847C235.593 76.205 241.106 85.1089 247.046 87.2908C246.969 87.3381 246.901 87.3998 246.847 87.4725L245.915 88.7831C245.844 88.883 245.8 88.9994 245.787 89.1212C245.773 89.2431 245.791 89.3663 245.839 89.4793C245.887 89.5922 245.962 89.6911 246.059 89.7665C246.156 89.842 246.27 89.8915 246.391 89.9103L249.776 90.4372C249.897 90.4561 250.021 90.4436 250.136 90.4011C250.251 90.3586 250.353 90.2874 250.433 90.1943C250.513 90.1012 250.567 89.9892 250.592 89.8691C250.616 89.7489 250.609 89.6246 250.572 89.5078L250.082 87.976C250.064 87.9231 250.04 87.8724 250.01 87.8251C256.352 87.8531 264.619 81.3839 266.278 72.0433Z" fill="#DEBB6B"/>
<path d="M259.376 60.1592C261.077 62.6691 261.75 65.7364 261.255 68.7278C260.761 71.7193 259.136 74.4067 256.717 76.2352C256.169 76.6596 256.91 77.4437 257.455 77.0221C260.037 75.0245 261.768 72.1246 262.302 68.904C262.835 65.6835 262.131 62.3803 260.331 59.6569C259.951 59.0827 258.993 59.5807 259.376 60.1592Z" fill="white"/>
<path d="M91.8384 118.755C87.131 109.676 90.2323 98.7291 96.4026 95.5299C102.573 92.3307 113.306 96.1044 118.014 105.184C122.371 113.588 119.76 123.729 114.74 127.582C114.827 127.604 114.91 127.643 114.983 127.696L116.263 128.67C116.361 128.744 116.438 128.842 116.487 128.954C116.536 129.066 116.555 129.189 116.544 129.311C116.532 129.433 116.489 129.55 116.419 129.651C116.349 129.752 116.255 129.833 116.145 129.887L113.071 131.398C112.961 131.453 112.839 131.478 112.716 131.471C112.594 131.465 112.475 131.427 112.371 131.362C112.267 131.297 112.182 131.207 112.123 131.099C112.064 130.992 112.033 130.871 112.034 130.748L112.045 129.14C112.047 129.084 112.055 129.029 112.07 128.975C106.023 130.89 96.2051 127.177 91.8384 118.755Z" fill="#DEBB6B"/>
<path d="M94.8873 105.354C94.011 108.257 94.2825 111.386 95.6459 114.094C97.0093 116.802 99.3604 118.884 102.214 119.909C102.864 120.15 102.39 121.12 101.744 120.88C98.6844 119.742 96.1679 117.489 94.6994 114.574C93.231 111.658 92.919 108.295 93.8261 105.159C94.018 104.498 95.0807 104.688 94.8873 105.354Z" fill="white"/>
<path d="M326.919 64.6996C324.928 66.4962 322.54 67.7954 319.95 68.4906C317.359 69.1858 314.641 69.2573 312.018 68.6992C311.278 68.5377 310.406 68.4195 310.035 67.6679C309.886 67.3867 309.837 67.0632 309.895 66.7503C309.954 66.4374 310.117 66.1536 310.357 65.9453C311.002 65.4284 311.946 65.6106 312.566 66.0756C313.27 66.6031 313.33 67.5217 313.031 68.2915C312.3 70.1727 310.116 70.6571 308.361 71.0561C304.361 71.9653 300.273 73.2694 297.174 76.0783C294.307 78.6772 292.495 82.6985 293.389 86.5763C293.546 87.2547 294.586 86.9656 294.43 86.2905C293.543 82.4447 295.7 78.5298 298.685 76.2097C300.496 74.8594 302.526 73.8292 304.685 73.1638C305.787 72.8009 306.908 72.5006 308.037 72.236C309.152 72.0241 310.247 71.7137 311.307 71.3083C313.013 70.5721 314.565 68.9057 314.241 66.9103C313.939 65.0488 311.527 63.9031 309.913 64.9454C309.567 65.1828 309.286 65.5022 309.095 65.8748C308.904 66.2475 308.808 66.6619 308.816 67.0808C308.824 67.4997 308.936 67.9101 309.141 68.2751C309.347 68.6401 309.64 68.9483 309.994 69.1722C310.764 69.6628 311.859 69.7926 312.745 69.9304C315.413 70.3495 318.14 70.1648 320.727 69.39C323.313 68.6152 325.693 67.27 327.691 65.4534C328.201 64.9811 327.428 64.2285 326.919 64.6996Z" fill="#C1C6CD"/>
<path d="M154.844 110.73C154.892 108.048 155.574 105.416 156.836 103.05C158.097 100.683 159.901 98.6488 162.101 97.1141C162.724 96.6837 163.406 96.1278 164.209 96.37C164.516 96.4532 164.786 96.6381 164.974 96.8946C165.163 97.1511 165.259 97.4639 165.247 97.782C165.184 98.6059 164.406 99.1709 163.643 99.3065C162.776 99.4603 162.065 98.8765 161.707 98.1322C160.832 96.3135 161.97 94.3873 162.878 92.8327C164.945 89.2905 166.785 85.4139 166.85 81.2318C166.91 77.3623 165.211 73.2926 161.768 71.2972C161.165 70.9481 160.666 71.9049 161.266 72.2523C164.68 74.2312 166.067 78.4806 165.722 82.2454C165.471 84.491 164.837 86.677 163.848 88.7087C163.361 89.7612 162.815 90.7853 162.237 91.7906C161.63 92.7499 161.109 93.761 160.681 94.8123C160.053 96.5617 160.211 98.8329 161.889 99.9593C163.455 101.01 165.939 100.031 166.281 98.1401C166.343 97.7258 166.302 97.3025 166.16 96.9081C166.019 96.5137 165.782 96.1606 165.47 95.8804C165.159 95.6001 164.783 95.4016 164.376 95.3025C163.968 95.2035 163.543 95.207 163.138 95.3127C162.254 95.5398 161.411 96.2512 160.705 96.8043C158.577 98.4663 156.849 100.585 155.648 103.003C154.447 105.421 153.804 108.078 153.766 110.778C153.763 111.473 154.841 111.423 154.844 110.73Z" fill="#C1C6CD"/>
<path d="M106.185 145.781C104.802 146.668 103.228 147.215 101.593 147.376C99.9575 147.538 98.3072 147.31 96.7773 146.71C96.3458 146.539 95.8307 146.38 95.6814 145.889C95.6193 145.704 95.6218 145.503 95.6885 145.32C95.7551 145.137 95.8819 144.982 96.0483 144.88C96.4896 144.632 97.042 144.836 97.3707 145.179C97.7435 145.568 97.6879 146.13 97.4302 146.565C96.8004 147.629 95.4317 147.704 94.3307 147.77C91.8221 147.92 89.2207 148.3 87.0667 149.689C85.0738 150.973 83.5771 153.223 83.7305 155.657C83.7573 156.082 84.4146 156.011 84.3879 155.588C84.2358 153.174 85.9307 151.023 87.9667 149.919C89.1968 149.283 90.5266 148.863 91.8985 148.677C92.6006 148.567 93.3085 148.498 94.0174 148.451C94.7127 148.434 95.4051 148.356 96.0865 148.216C97.1918 147.942 98.2959 147.089 98.2995 145.851C98.3028 144.695 96.9594 143.762 95.8793 144.231C95.6468 144.34 95.4451 144.505 95.2922 144.711C95.1392 144.917 95.0398 145.158 95.0029 145.412C94.9659 145.666 94.9926 145.925 95.0805 146.167C95.1684 146.408 95.3148 146.623 95.5065 146.794C95.9227 147.168 96.572 147.355 97.0939 147.527C98.6645 148.047 100.332 148.208 101.973 147.998C103.614 147.788 105.187 147.212 106.576 146.314C106.931 146.079 106.539 145.547 106.185 145.781Z" fill="#C1C6CD"/>
<path d="M243.835 158.611V247.974C243.833 249.152 243.364 250.28 242.531 251.113C241.699 251.945 240.57 252.414 239.393 252.416H143.236C142.059 252.414 140.931 251.945 140.098 251.113C139.266 250.28 138.797 249.152 138.794 247.974V158.611C138.795 157.433 139.263 156.304 140.096 155.471C140.929 154.638 142.058 154.17 143.236 154.169H239.393C240.571 154.17 241.7 154.638 242.533 155.471C243.366 156.304 243.834 157.433 243.835 158.611Z" fill="#DEBB6B"/>
<path d="M198.108 252.866H184.521C183.358 252.88 182.238 252.432 181.405 251.62C180.572 250.809 180.095 249.701 180.079 248.539V155.84C180.095 154.677 180.572 153.569 181.405 152.758C182.238 151.947 183.358 151.499 184.521 151.513H198.108C199.271 151.499 200.391 151.947 201.224 152.758C202.056 153.569 202.533 154.677 202.55 155.84V248.539C202.533 249.701 202.056 250.809 201.224 251.62C200.391 252.432 199.271 252.88 198.108 252.866Z" fill="#6F7882"/>
<path d="M188.517 126.197C195.5 132.242 193.295 146.23 193.295 146.23C193.295 146.23 179.768 150.418 172.785 144.374C165.801 138.329 168.007 124.341 168.007 124.341C168.007 124.341 181.534 120.153 188.517 126.197Z" fill="#6F7882"/>
<path d="M211.712 143.215C205.689 150.217 191.694 148.056 191.694 148.056C191.694 148.056 187.464 134.542 193.486 127.54C199.509 120.538 213.504 122.699 213.504 122.699C213.504 122.699 217.734 136.213 211.712 143.215Z" fill="#6F7882"/>
<path opacity="0.2" d="M243.835 158.611V173.657L138.794 173.212V158.611C138.795 157.433 139.263 156.304 140.096 155.471C140.929 154.638 142.058 154.17 143.236 154.169H239.393C240.571 154.17 241.7 154.638 242.533 155.471C243.366 156.304 243.834 157.433 243.835 158.611Z" fill="black"/>
<path d="M255.146 167.758C254.73 168.305 254.193 168.747 253.577 169.051C252.961 169.355 252.283 169.511 251.597 169.508L134.537 169.017C133.954 169.015 133.377 168.897 132.839 168.672C132.301 168.446 131.812 168.117 131.402 167.703C130.991 167.289 130.666 166.798 130.445 166.258C130.224 165.718 130.111 165.14 130.114 164.556L130.169 151.492C130.173 150.314 130.646 149.186 131.482 148.357C132.319 147.527 133.45 147.064 134.628 147.069H134.629L251.689 147.559C252.272 147.562 252.849 147.679 253.387 147.905C253.925 148.13 254.413 148.459 254.824 148.874C255.235 149.288 255.56 149.779 255.781 150.319C256.002 150.859 256.114 151.437 256.112 152.02L256.057 165.085C256.054 166.052 255.734 166.991 255.146 167.758Z" fill="#DEBB6B"/>
<path d="M180.36 146.217L180.266 169.734L202.737 169.824L202.831 146.307L180.36 146.217Z" fill="#6F7882"/>
</g>
<defs>
<clipPath id="clip0_3878_1251">
<rect width="387" height="253.786" fill="white"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -120,7 +120,7 @@
//
/* BWI: Happy Birthday Campaign*/
"HAPPY_BIRTHDAY" = "🥳 HAPPY BIRTHDAY 🥳";
"HAPPY_BIRTHDAY_BODY" = "Danke für Deine Treue - jetzt und in Zukunft. Gratuliere dem BwMessenger zum 4. Geburtstag und schenke uns deine Sternebewertung im App Store.";
"HAPPY_BIRTHDAY_BODY" = "Wir feiern 1 Jahr BundesMessenger. Möchtest du uns auch gratulieren? Schenke dem BundesMessenger deine Sterne Bewertung im App Store.";
"HAPPY_BIRTHDAY_BUTTON_GIVE_STARS" = "Sterne schenken";
"HAPPY_BIRTHDAY_BUTTON_DISMISS" = "X";

View File

@@ -187,6 +187,6 @@
/* BWI: Happy Birthday Campaign*/
"HAPPY_BIRTHDAY" = "🥳 HAPPY BIRTHDAY 🥳";
"HAPPY_BIRTHDAY_BODY" = "Thank you for your loyalty - now and in the future. Congratulate BwMessenger on its 4th anniversary and give us your star rating on the App Store.";
"HAPPY_BIRTHDAY_BUTTON_GIVE_STARS" = "Give Stars";
"HAPPY_BIRTHDAY_BODY" = "We are celebrating 1 year of BundesMessenger. Don't you want to congratulate us too? Donate your star rating to BundesMessenger in the App Store.";
"HAPPY_BIRTHDAY_BUTTON_GIVE_STARS" = "Donate stars";
"HAPPY_BIRTHDAY_BUTTON_DISMISS" = "X";

View File

@@ -26,6 +26,18 @@
</style>
</head>
<body>
<div>
<p>
<b>Version 2.24.0</b>
</p>
<b>Verbesserungen</b>
<ul>
<li/>Hilfreiche Tipps zum BundesMessenger findest du jetzt unter: Einstellungen > Support > BundesMessenger Dokumentation.
<li/>Sicherheitsfunktionen wurden verbessert.
</ul>
</div>
<div>
<p>
<b>Version 2.23.1</b>

View File

@@ -37,6 +37,13 @@ Du suchst Hilfe bei der Bedienung von BundesMessenger, hast ein Problem oder ben
Hierzu gibt es folgende Möglichkeiten:
<ul>
<li>
<b>BundesMessenger Dokumentation</b>
<br/>
Hilfreiche Tipps findest du unter: <a href="https://docs.bundesmessenger.info/de/start/welcome/">Willkommen beim BundesMessenger 🚀 BundesMessenger Dokumentation</a>
<br/><br/>
</li>
<li>
<b>FAQs</b>
<br/>

View File

@@ -72,6 +72,10 @@ UINavigationControllerDelegate
@property (strong, nonatomic) UIAlertController *errorNotification;
// BWI: #6790
@property (strong, nonatomic) UIAlertController *serverNotAllowedAlertController;
// BWI #6790 END
@property (strong, nonatomic) NSString *appVersion;
@property (strong, nonatomic) NSString *build;

View File

@@ -505,6 +505,18 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
[self setupAppConfig];
// BWI: #6790 check if active session is available
if ([self.mxSessions count] > 0)
{
// Check url savety for homeserver url
NSString *homeServerURL = [[[self.mxSessions firstObject] matrixRestClient] homeserver];
if (homeServerURL)
{
[self checkUrlSavetyWithURL: homeServerURL];
}
}
// BWI #6790 END
return YES;
}
@@ -533,6 +545,14 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
self.errorNotification = nil;
}
// BWI: #6790
if (self.serverNotAllowedAlertController)
{
[self.serverNotAllowedAlertController dismissViewControllerAnimated:NO completion:nil];
self.serverNotAllowedAlertController = nil;
}
// BWI #6790 END
if (accountPicker)
{
[accountPicker dismissViewControllerAnimated:NO completion:nil];
@@ -4342,6 +4362,60 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
}
}
#pragma mark - App login protection
// BWI: #6790 Check url savety for homeserver url on app start
- (void)checkUrlSavetyWithURL:(NSString *)serverURL {
if (BWIBuildSettings.shared.bwiEnableLoginProtection || BWIBuildSettings.shared.bwiEnableTokenizedLoginProtection) {
LoginProtectionService *protectionService = [LoginProtectionService new];
protectionService.hashes = BWIBuildSettings.shared.bwiHashes;
MXWeakify(self);
[protectionService isValid:serverURL ignoreNetworkConnectionLost:YES completionHandler:^(BOOL isVaild) {
if (!isVaild) {
dispatch_async(dispatch_get_main_queue(), ^{
MXStrongifyAndReturnIfNil(self);
if (self.setPinCoordinatorBridgePresenter)
{
[self.setPinCoordinatorBridgePresenter dismissWithMainAppWindow:self.window];
self.setPinCoordinatorBridgePresenter = nil;
}
// Force logout
[self logoutWithConfirmation:NO completion:^(BOOL isLoggedOut) {
if (isLoggedOut)
{
// Show error Alert
[self->_serverNotAllowedAlertController dismissViewControllerAnimated:NO completion:nil];
self->_serverNotAllowedAlertController = [UIAlertController alertControllerWithTitle:[BWIL10n authenticationServerSelectionServerDeniedTitle] message:[BWIL10n authenticationServerSelectionServerDeniedMessage] preferredStyle:UIAlertControllerStyleAlert];
// Open bum advertizementURL
[self->_serverNotAllowedAlertController addAction:[UIAlertAction actionWithTitle:[BWIL10n authenticationServerSelectionServerDeniedAdvertizementWebsiteButton]
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {
NSURL *url = [[NSURL alloc] initWithString:BWIBuildSettings.shared.bumAdvertizementURLString];
[[UIApplication sharedApplication] vc_open:url completionHandler:nil];
}]];
// Close dialog
[self->_serverNotAllowedAlertController addAction:[UIAlertAction actionWithTitle:[VectorL10n ok]
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {
[AppDelegate theDelegate].errorNotification = nil;
}]];
[self->_serverNotAllowedAlertController mxk_setAccessibilityIdentifier:@"AppDelegateErrorAlertServerVerificationFailed"];
[self showNotificationAlert:self->_serverNotAllowedAlertController];
}
}];
});
}
}];
}
}
// BWI #6790 END
#pragma mark - App version management
- (void)checkAppVersion

View File

@@ -205,6 +205,20 @@ class AuthenticationService: NSObject {
delegate?.authenticationService(self, didReceive: token, with: transactionID) ?? false
}
/// BWI: #6777 use baseURL for JWT handling
func getBaseURL(_ homeserverAddress: String) async -> String? {
guard let homeserverURL = URL(string: homeserverAddress) else {
return nil
}
guard let wellKnown = try? await wellKnown(for: homeserverURL) else {
return nil
}
return wellKnown.homeServer.baseUrl
}
/// BWI END
// MARK: - Private
/// Query the supported login flows for the supplied homeserver.

View File

@@ -62,6 +62,11 @@ struct AuthenticationServerSelectionBindings {
var homeserverAddress: String
/// Information describing the currently displayed alert.
var alertInfo: AlertInfo<AuthenticationServerSelectionErrorType>?
/// BWI: #6777 Show error alerts
var showAlert = false
/// BWI: #6777 show info alert if the server is not supported
var isInvalidServerAlert = false
/// BWI END
}
enum AuthenticationServerSelectionViewAction {

View File

@@ -32,6 +32,9 @@ final class AuthenticationServerSelectionCoordinator: Coordinator, Presentable {
private var indicatorPresenter: UserIndicatorTypePresenterProtocol
private var loadingIndicator: UserIndicator?
// BWI: #6777 for accessing bindings
private let viewModel: AuthenticationServerSelectionViewModel
// BWI END
/// The authentication service that will be updated with the new selection.
var authenticationService: AuthenticationService { parameters.authenticationService }
@@ -54,9 +57,11 @@ final class AuthenticationServerSelectionCoordinator: Coordinator, Presentable {
} else {
homeserverAddress = homeserver.displayableAddress
}
let viewModel = AuthenticationServerSelectionViewModel(homeserverAddress: homeserverAddress,
// BWI: #6777 for accessing bindings
viewModel = AuthenticationServerSelectionViewModel(homeserverAddress: homeserverAddress,
flow: parameters.authenticationService.state.flow,
hasModalPresentation: parameters.hasModalPresentation)
// BWI END
let view = AuthenticationServerSelectionScreen(viewModel: viewModel.context)
authenticationServerSelectionViewModel = viewModel
authenticationServerSelectionHostingController = VectorHostingController(rootView: view)
@@ -87,7 +92,9 @@ final class AuthenticationServerSelectionCoordinator: Coordinator, Presentable {
switch result {
case .confirm(let homeserverAddress):
self.useHomeserver(homeserverAddress)
// BWI: #6777 check wellknown for base url, validate url with jwt and use homeserver
self.validateServer(homeserverAddress)
// BWI END
case .dismiss:
self.callback?(.dismiss)
}
@@ -132,4 +139,37 @@ final class AuthenticationServerSelectionCoordinator: Coordinator, Presentable {
}
}
}
// MARK: BWI
/// BWI: #6777 use baseURL for JWT handling
/// Use baseURL from Wellknown to vaildate server with JWT
/// If valid use homeserver
@MainActor private func validateServer(_ homeServerAddress: String) {
// bwi #6162 homeserver validation is async now, due to server calls for token validation
Task {
let homeServerAddress = HomeserverAddress.sanitized(homeServerAddress)
let baseURL = await authenticationService.getBaseURL(homeServerAddress) ?? homeServerAddress
let verified = await isHomeserverAddressValid(baseURL)
if verified {
useHomeserver(baseURL)
} else {
viewModel.context.isInvalidServerAlert = true
viewModel.context.showAlert = true
}
}
}
private func isHomeserverAddressValid(_ homeserverAddress: String) async -> Bool {
if BWIBuildSettings.shared.bwiEnableLoginProtection || BWIBuildSettings.shared.bwiEnableTokenizedLoginProtection {
let protectionService = LoginProtectionService()
protectionService.hashes = BWIBuildSettings.shared.bwiHashes
return await protectionService.isValid(homeserverAddress)
}
return true
}
}

View File

@@ -24,8 +24,6 @@ struct AuthenticationServerSelectionScreen: View {
// bwi #4976 show maintenance alert
@State private var isFetchingDowntime = false
@State private var showAlert = false
@State private var isInvalidServerAlert = false
@State private var activeAlert: ServerMaintenanceAlertType = .showInvalidAppVersionAlert
private var textFieldFooterColor: Color {
@@ -84,8 +82,8 @@ struct AuthenticationServerSelectionScreen: View {
}
}
}
.alert(isPresented: $showAlert, content: {
if isInvalidServerAlert {
.alert(isPresented: $viewModel.showAlert, content: {
if viewModel.isInvalidServerAlert {
return self.invalidServerAlert()
} else {
return ServerDowntimeDefaultService.shared.alert(alertType: activeAlert) {
@@ -202,30 +200,9 @@ struct AuthenticationServerSelectionScreen: View {
/// Sends the `confirm` view action so long as the text field input is valid.
private func submit() {
guard !viewModel.viewState.hasValidationError else { return }
// bwi #6162 homeserver validation is async now, due to server calls for token validation
Task {
let verified = await isHomeserverAddressValid(viewModel.homeserverAddress)
if verified {
viewModel.send(viewAction: .confirm)
} else {
isInvalidServerAlert = true
showAlert = true
}
}
}
private func isHomeserverAddressValid(_ homeserverAddress: String) async -> Bool {
if BWIBuildSettings.shared.bwiEnableLoginProtection || BWIBuildSettings.shared.bwiEnableTokenizedLoginProtection {
let protectionService = LoginProtectionService()
protectionService.hashes = BWIBuildSettings.shared.bwiHashes
return await protectionService.isValid(homeserverAddress)
}
return true
// BWI: #6777 validate and use base url from wellknown
viewModel.send(viewAction: .confirm)
// BWI END
}
/// bwi: jump directly into the iOS settings app to allow camera access
@@ -259,14 +236,27 @@ struct AuthenticationServerSelectionScreen: View {
return Alert(
title: Text(BWIL10n.authenticationServerSelectionServerDeniedTitle),
message: Text(BWIL10n.authenticationServerSelectionServerDeniedMessage),
primaryButton: .default(Text(BWIL10n.authenticationServerSelectionServerDeniedAdvertizementWebsiteButton), action: {UIApplication.shared.vc_open(url, completionHandler: nil)}),
secondaryButton: .default(Text(VectorL10n.ok)))
primaryButton: .default(Text(BWIL10n.authenticationServerSelectionServerDeniedAdvertizementWebsiteButton), action: {
// BWI: #6777 reset isInvalidServerAlert on dismiss, otherwise server downtime errors are not displayed
viewModel.isInvalidServerAlert = false
// BWI END
UIApplication.shared.vc_open(url, completionHandler: nil)
}),
secondaryButton: .default(Text(VectorL10n.ok), action: {
// BWI: #6777 reset isInvalidServerAlert on dismiss, otherwise server downtime errors are not displayed
viewModel.isInvalidServerAlert = false
// BWI END
}))
} else {
return Alert(
title: Text(BWIL10n.authenticationServerSelectionServerDeniedTitle),
message: Text(BWIL10n.authenticationServerSelectionServerDeniedMessage),
dismissButton: .default(Text(VectorL10n.ok)))
dismissButton: .default(Text(VectorL10n.ok), action: {
// BWI: #6777 reset isInvalidServerAlert on dismiss, otherwise server downtime errors are not displayed
viewModel.isInvalidServerAlert = false
// BWI END
}))
}
}
@@ -302,7 +292,9 @@ struct AuthenticationServerSelectionScreen: View {
private func showAlertIfNeeded() {
if ServerDowntimeDefaultService.shared.showAlert() {
activeAlert = ServerDowntimeDefaultService.shared.alertType()
showAlert = true
// BWI: #6777 moved boolean to viewmodel bindings
viewModel.showAlert = true
// BWI END
} else {
self.submit()
}

View File

@@ -5,7 +5,6 @@
// Please see LICENSE in the repository root for full details.
//
import DSBottomSheet
import SwiftUI
struct LiveLocationSharingViewer: View {
@@ -16,9 +15,7 @@ struct LiveLocationSharingViewer: View {
@Environment(\.theme) private var theme: ThemeSwiftUI
@Environment(\.openURL) var openURL
@State private var isBottomSheetExpanded = false
var bottomSheetCollapsedHeight: CGFloat = 150.0
// MARK: Public
@@ -114,7 +111,19 @@ struct LiveLocationSharingViewer: View {
}
.accentColor(theme.colors.accent)
.background(theme.colors.system.ignoresSafeArea())
.bottomSheet(sheet, if: viewModel.viewState.isBottomSheetVisible)
.sheet(isPresented: .constant(viewModel.viewState.isBottomSheetVisible)) {
if #available(iOS 16.4, *) {
userLocationList
.presentationBackgroundInteraction(.enabled)
.presentationBackground(theme.colors.background)
.presentationDragIndicator(.visible)
.presentationDetents([.height(bottomSheetCollapsedHeight), .large])
.interactiveDismissDisabled()
} else {
userLocationList
.interactiveDismissDisabled()
}
}
.actionSheet(isPresented: $viewModel.showMapCreditsSheet) {
MapCreditsActionSheet(
attribution: LocationSharingAttribution(),
@@ -135,8 +144,6 @@ struct LiveLocationSharingViewer: View {
LiveLocationListItem(viewData: viewData, onStopSharingAction: {
viewModel.send(viewAction: .stopSharing)
}, onBackgroundTap: { userId in
// Push bottom sheet down on item tap
isBottomSheetExpanded = false
viewModel.send(viewAction: .tapListItem(userId))
})
}
@@ -147,34 +154,6 @@ struct LiveLocationSharingViewer: View {
}
}
// MARK: - Bottom sheet
extension LiveLocationSharingViewer {
var sheetStyle: BottomSheetStyle {
var bottomSheetStyle = BottomSheetStyle.standard
bottomSheetStyle.snapRatio = 0.16
let backgroundColor = theme.colors.background
let handleStyle = BottomSheetHandleStyle(backgroundColor: backgroundColor, dividerColor: backgroundColor)
bottomSheetStyle.handleStyle = handleStyle
return bottomSheetStyle
}
var sheet: some BottomSheetView {
BottomSheet(
isExpanded: $isBottomSheetExpanded,
minHeight: .points(bottomSheetCollapsedHeight),
maxHeight: .available,
style: sheetStyle
) {
userLocationList
}
}
}
// MARK: - Previews
struct LiveLocationSharingViewer_Previews: PreviewProvider {

View File

@@ -120,7 +120,7 @@ extension UserDefaults
func handleAppConfig() async {
if let dict = UserDefaults.standard.dictionary(forKey: configKey) {
// only compute if serverURL has not changed (this may need to be changed on Adminportal integration
// only compute if serverURL has changed (this may need to be changed on Adminportal integration
if !isSameConfig(dict: dict) {
var config = AppConfig()

View File

@@ -66,7 +66,6 @@ struct HappyBirthdayBody: View {
VStack(spacing: 40) {
VStack {
Text("HAPPY_BIRTHDAY")
Text("\(AppInfo.current.displayName)")
}
.font(.title)
.foregroundColor(Color(ThemeService.shared().theme.textPrimaryColor))

View File

@@ -21,7 +21,7 @@ import CryptoKit
@objcMembers class LoginProtectionService : NSObject {
var hashes: [String]?
@objc func isValid(_ homeserverAddress: String) async -> Bool {
@objc func isValid(_ homeserverAddress: String, ignoreNetworkConnectionLost: Bool = false) async -> Bool {
// bwi #6162 a homeserveraddress is valid when there is either
// a) no homeserver protection (bwm)
// b) tokenized protection and there is a valid token
@@ -36,8 +36,12 @@ import CryptoKit
let tokens = await tokenVerificator.fetchToken(baseURL: homeserverAddress)
if let tokens = tokens {
validHomeserver = tokenVerificator.verifyToken(baseURL: homeserverAddress, tokens: tokens)
if tokens == nil && ignoreNetworkConnectionLost {
validHomeserver = true
} else {
if let tokens = tokens, !tokens.isEmpty {
validHomeserver = tokenVerificator.verifyToken(baseURL: homeserverAddress, tokens: tokens)
}
}
}

View File

@@ -21,8 +21,8 @@ import SwiftJWT
struct ServerTokenClaims: Claims {
let issuer: String
let sub: String
let exp: Int
let iat: Int
let exp: Date?
let iat: Date?
let jti: String
let version: Int
}
@@ -80,8 +80,11 @@ struct ServerTokenVerificator {
let fetchedStrings = try JSONDecoder().decode([String].self, from: data)
return fetchedStrings
} catch {
return nil
} catch (let error) {
if let error = error as? URLError, error.code == .notConnectedToInternet {
return nil
}
return [String]()
}
}

69
publiccode.yml Normal file
View File

@@ -0,0 +1,69 @@
publiccodeYmlVersion: "0.4"
name: BundesMessenger
applicationSuite: BundesMessenger
url: https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
platforms:
- ios
categories:
- communications
- collaboration
developmentStatus: stable
softwareType: standalone/mobile
intendedAudience:
countries:
- de
scope:
- government
- local-authorities
description:
de:
genericName: BundesMessenger
shortDescription: Der BundesMessenger ist eine sichere Messaging-Lösung für die
Öffentliche Verwaltung.
longDescription: >
Der BundesMessenger ist eine sichere Messaging-Lösung für die Öffentliche
Verwaltung. Von der BWI für die Behörden in Deutschland.
Das Ziel ist es eine moderne & sichere Zusammenarbeitsplattform auf Basis
von Open Source für Deutschland zu schaffen, die sich den Bedürfnissen und
Vorgaben der Deutschen Verwaltung anpassen kann.
Mit dem BundesMessenger kannst Du auch beruflich so kommunizieren, wie Du
es privat von anderen Messengern gewohnt bist.
Der Messenger nutzt das Open-Source-Protokoll Matrix und wurde für
maximale Sicherheit konzipiert. Wenn Du schon andere Messengers verwendet
hast, findest Du Dich im BundesMessenger sofort zurecht!
Tausch Dich in 1:1-Chats oder in Diskussionsgruppen aus und versende
Textnachrichten, Dokumente oder Mediendateien - aber auch
Sprachnachrichten und Umfragen sind möglich. Jede Kommunikation wird
automatisch und durchgängig VERSCHLÜSSELT.
features:
- Messaging
- Kommunikation
- Ende-zu-Ende verschlüsselte Kommunikation für Text & Medien
- Direktnachrichten, offene und geschlossenen Gruppen
- Integriertes Adressbuch
- Abstimmungen (Poll)
- Sprachnachrichten
legal:
license: AGPL-3.0-or-later
mainCopyrightOwner: BWI GmbH
maintenance:
type: internal
contractors:
- name: BWI GmbH
until: 2025-12-31
email: bundesmessenger@bwi.de
website: https://messenger.bwi.de/
contacts:
- name: BWI GmbH
email: bundesmessenger@bwi.de
phone: ""
affiliation: ""
localisation:
localisationReady: true
availableLanguages:
- de
- en