Skip to content

Commit

Permalink
Merge pull request #2 from zed-io/@matt/add-tabs
Browse files Browse the repository at this point in the history
(feat): Port Map Screen and Components from Kolektivo Curacao
  • Loading branch information
shottah authored May 23, 2024
2 parents b1b2c41 + c8a824a commit 609c32e
Show file tree
Hide file tree
Showing 57 changed files with 3,370 additions and 25 deletions.
2 changes: 1 addition & 1 deletion .env.alfajores
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ DEV_SETTINGS_ACTIVE_INITIALLY=false
FIREBASE_ENABLED=true
SHOW_TESTNET_BANNER=true
SHOW_GET_INVITE_LINK=true
APP_BUNDLE_ID=cw.kolektivo.alfajores
APP_BUNDLE_ID=tt.kolektivo.alfajores
APP_STORE_ID=1482389446
APP_DISPLAY_NAME=Alfajores
IOS_GOOGLE_SERVICE_PLIST=GoogleService-Info.alfajores.plist
Expand Down
2 changes: 1 addition & 1 deletion .env.alfajoresdev
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ SHOW_GET_INVITE_LINK=false
DEV_SETTINGS_ACTIVE_INITIALLY=true
# Enable for true hot reloading while dev-ing UI
DEV_RESTORE_NAV_STATE_ON_RELOAD=false
APP_BUNDLE_ID=cw.kolektivo.alfajores.dev
APP_BUNDLE_ID=tt.kolektivo.alfajores.dev
APP_STORE_ID=1482389446
APP_DISPLAY_NAME=Alfajores (dev)
IOS_GOOGLE_SERVICE_PLIST=GoogleService-Info.alfajoresdev.plist
Expand Down
2 changes: 1 addition & 1 deletion .env.alfajoresnightly
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ DEV_SETTINGS_ACTIVE_INITIALLY=false
FIREBASE_ENABLED=true
SHOW_TESTNET_BANNER=true
SHOW_GET_INVITE_LINK=true
APP_BUNDLE_ID=cw.kolektivo.alfajores.nightly
APP_BUNDLE_ID=tt.kolektivo.alfajores.nightly
APP_STORE_ID=1482389446
APP_DISPLAY_NAME=Alfajores (nightly)
IOS_GOOGLE_SERVICE_PLIST=GoogleService-Info.alfajoresnightly.plist
Expand Down
2 changes: 1 addition & 1 deletion .env.mainnet
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ DEV_SETTINGS_ACTIVE_INITIALLY=false
FIREBASE_ENABLED=true
SHOW_TESTNET_BANNER=false
SHOW_GET_INVITE_LINK=false
APP_BUNDLE_ID=cw.kolektivo.mainnet
APP_BUNDLE_ID=tt.kolektivo.mainnet
APP_STORE_ID=1520414263
APP_DISPLAY_NAME=Kolektivo
IOS_GOOGLE_SERVICE_PLIST=GoogleService-Info.mainnet.plist
Expand Down
2 changes: 1 addition & 1 deletion .env.mainnetdev
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ DEV_RESTORE_NAV_STATE_ON_RELOAD=false
FIREBASE_ENABLED=true
SHOW_TESTNET_BANNER=false
SHOW_GET_INVITE_LINK=false
APP_BUNDLE_ID=cw.kolektivo.mainnet.dev
APP_BUNDLE_ID=tt.kolektivo.mainnet.dev
APP_STORE_ID=1520414263
APP_DISPLAY_NAME=Kolektivo (dev)
IOS_GOOGLE_SERVICE_PLIST=GoogleService-Info.mainnetdev.plist
Expand Down
2 changes: 1 addition & 1 deletion .env.mainnetnightly
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ DEV_SETTINGS_ACTIVE_INITIALLY=false
FIREBASE_ENABLED=true
SHOW_TESTNET_BANNER=false
SHOW_GET_INVITE_LINK=false
APP_BUNDLE_ID=cw.kolektivo.mainnet.nightly
APP_BUNDLE_ID=tt.kolektivo.mainnet.nightly
APP_STORE_ID=1520414263
APP_DISPLAY_NAME=Kolektivo (nightly)
IOS_GOOGLE_SERVICE_PLIST=GoogleService-Info.mainnetnightly.plist
Expand Down
4 changes: 2 additions & 2 deletions .github/scripts/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"allowJs": true,
"checkJs": true,
"noEmit": true,
"strict": true
"strict": true,
},
"include": ["*.js", "*.ts"]
"include": ["*.js", "*.ts"],
}
11 changes: 11 additions & 0 deletions android/app/.project
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,15 @@
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
</natures>
<filteredResources>
<filter>
<id>1706715488756</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>
12 changes: 12 additions & 0 deletions fastlane/Matchfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
git_url("https://github.com/zed-io/kolektivo-app-certificates")

storage_mode("git")

# app_identifier(["tools.fastlane.app", "tools.fastlane.app2"])
username("mabrahamtt@icloud.com") # Your Apple Developer Portal username
app_identifier(["tt.kolektivo.alfajores", "tt.kolektivo.mainnet"]) # Bundle identifier of your app
team_id("2QB23S3GZ3")
# For all available options run `fastlane match --help`
# Remove the # in the beginning of the line to enable the other options

# The docs are available on https://docs.fastlane.tools/actions/match
24 changes: 13 additions & 11 deletions ios/celo.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -421,16 +421,16 @@
TargetAttributes = {
00E356ED1AD99517003FC87E = {
CreatedOnToolsVersion = 6.2;
DevelopmentTeam = 48TPT4QN6K;
DevelopmentTeam = 2QB23S3GZ3;
TestTargetID = 13B07F861A680F5B00A75B9A;
};
0F49F5EC270F2F2A0005F897 = {
CreatedOnToolsVersion = 12.5;
DevelopmentTeam = 48TPT4QN6K;
DevelopmentTeam = 2QB23S3GZ3;
ProvisioningStyle = Automatic;
};
13B07F861A680F5B00A75B9A = {
DevelopmentTeam = 48TPT4QN6K;
DevelopmentTeam = 2QB23S3GZ3;
LastSwiftMigration = 1250;
SystemCapabilities = {
com.apple.BackgroundModes = {
Expand Down Expand Up @@ -890,7 +890,7 @@
baseConfigurationReference = A7DD4FB9579104C1EB8C2328 /* Pods-celoTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
DEVELOPMENT_TEAM = 48TPT4QN6K;
DEVELOPMENT_TEAM = 2QB23S3GZ3;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
Expand All @@ -917,7 +917,7 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
COPY_PHASE_STRIP = NO;
DEVELOPMENT_TEAM = 48TPT4QN6K;
DEVELOPMENT_TEAM = 2QB23S3GZ3;
INFOPLIST_FILE = celoTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
Expand Down Expand Up @@ -957,7 +957,7 @@
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = 48TPT4QN6K;
DEVELOPMENT_TEAM = 2QB23S3GZ3;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
Expand Down Expand Up @@ -997,7 +997,7 @@
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = 48TPT4QN6K;
DEVELOPMENT_TEAM = 2QB23S3GZ3;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
INFOPLIST_FILE = NotificationService/Info.plist;
Expand All @@ -1020,7 +1020,7 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = celo/celo.entitlements;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 48TPT4QN6K;
DEVELOPMENT_TEAM = 2QB23S3GZ3;
INFOPLIST_FILE = celo/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
Expand Down Expand Up @@ -1049,7 +1049,7 @@
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = celo/celo.entitlements;
DEVELOPMENT_TEAM = 48TPT4QN6K;
DEVELOPMENT_TEAM = 2QB23S3GZ3;
INFOPLIST_FILE = celo/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
Expand Down Expand Up @@ -1230,7 +1230,8 @@
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = (
"$(inherited)",
" ",
"-Wl",
"-ld_classic",
);
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
Expand Down Expand Up @@ -1278,7 +1279,8 @@
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_LDFLAGS = (
"$(inherited)",
" ",
"-Wl",
"-ld_classic",
);
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
Expand Down
9 changes: 9 additions & 0 deletions locales/base/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -2196,6 +2196,11 @@
"title": "Buy crypto or transfer tokens",
"body": "Buy or transfer compatible tokens to send crypto and explore web3!"
},
"map": "Map",
"explore": "Explore",
"activities": {
"more": "More Activities"
},
"nftCelebration": {
"bottomSheet": {
"title": "Congratulations!",
Expand Down Expand Up @@ -2239,6 +2244,10 @@
"discover": {
"tabName": "Discover",
"title": "Discover"
},
"activities": {
"tabName": "Activities",
"title": "Activities"
}
},
"jumpstartStatus": {
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"license": "Apache-2.0",
"private": true,
"engines": {
"node": "20.11.1"
"node": "20"
},
"scripts": {
"lint": "eslint --ext=.tsx,.ts src/",
Expand Down
2 changes: 1 addition & 1 deletion scripts/sync_branding.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ echo $mobile_root
cd "$mobile_root"

# Please update the sha when valora branding updates are needed
valora_branding_sha=e1e08eadfb00f0ae73feca95c8253b0701dc17ef
valora_branding_sha=d55cad3a094165d124ada4d8c42a6401c5ec7f46

if [[ "$branding" == "valora" ]]; then
# prevents git from asking credentials
Expand Down
28 changes: 28 additions & 0 deletions src/icons/Directions.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import * as React from 'react'
import colors from 'src/styles/colors'
import Svg, { Path } from 'svgs'

export interface Props {
color?: string
size?: number
onPress?: () => void
}

function Directions({ color = colors.greenBrand, size = 24, ...props }: Props) {
return (
<Svg
width={size}
height={size}
viewBox="0 0 27 28"
fill="none"
xmlns="http://www.w3.org/2000/Svg"
>
<Path
d="M16.564 1.98063L25.5213 10.938C26.3339 11.7506 26.7904 12.8528 26.7904 14.002C26.7904 15.1512 26.3339 16.2533 25.5213 17.066L16.564 26.022C15.7514 26.8345 14.6492 27.291 13.5 27.291C12.3508 27.291 11.2487 26.8345 10.436 26.022L1.48001 17.0673C0.667433 16.2547 0.210938 15.1525 0.210938 14.0033C0.210938 12.8541 0.667433 11.7519 1.48001 10.9393L10.436 1.98197C11.2487 1.16939 12.3508 0.712891 13.5 0.712891C14.6492 0.712891 15.7514 1.16939 16.564 1.98197V1.98063ZM15.6213 7.62863L15.5093 7.5313C15.3393 7.4054 15.1338 7.33668 14.9222 7.335C14.7106 7.33332 14.504 7.39878 14.332 7.52196L14.208 7.62863L14.1107 7.74063C13.9848 7.91066 13.9161 8.11623 13.9144 8.32778C13.9127 8.53933 13.9782 8.74597 14.1013 8.91796L14.208 9.0433L15.1653 10.0006H13.1667L12.944 10.0086C12.0521 10.063 11.2108 10.4413 10.5781 11.0722C9.94536 11.7032 9.56484 12.5435 9.50801 13.4353L9.50001 13.67V18.0006L9.50935 18.1353C9.54228 18.3746 9.66075 18.594 9.84286 18.7528C10.025 18.9115 10.2584 18.999 10.5 18.999C10.7416 18.999 10.9751 18.9115 11.1572 18.7528C11.3393 18.594 11.4577 18.3746 11.4907 18.1353L11.5 18.0006V13.6673L11.5093 13.4966C11.5484 13.1155 11.7175 12.7595 11.9883 12.4885C12.2591 12.2175 12.6149 12.048 12.996 12.0086L13.1667 12.0006H15.1667L14.2067 12.9606L14.1107 13.0726C13.9663 13.2652 13.8961 13.5034 13.9132 13.7435C13.9303 13.9836 14.0334 14.2095 14.2036 14.3797C14.3738 14.5499 14.5997 14.6531 14.8398 14.6701C15.0799 14.6872 15.3181 14.6171 15.5107 14.4726L15.6213 14.3753L18.288 11.7086L18.3853 11.5966C18.5112 11.4266 18.58 11.221 18.5816 11.0095C18.5833 10.7979 18.5179 10.5913 18.3947 10.4193L18.288 10.294L15.6213 7.6273L15.5093 7.52996L15.6213 7.6273V7.62863Z"
fill={color}
/>
</Svg>
)
}

export default React.memo(Directions)
26 changes: 26 additions & 0 deletions src/icons/FindMy.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import * as React from 'react'
import colors from 'src/styles/colors'
import Svg, { Path } from 'svgs'

function FindMy({ color = colors.black, size = 35 }) {
return (
<Svg
width={size}
height={size}
viewBox="0 0 20 20"
fill="none"
xmlns="http://www.w3.org/2000/Svg"
>
<Path
d="M10 13C11.6569 13 13 11.6569 13 10C13 8.34315 11.6569 7 10 7C8.34315 7 7 8.34315 7 10C7 11.6569 8.34315 13 10 13Z"
fill={color}
/>
<Path
d="M11 2.069V1C11 0.447715 10.5523 0 10 0C9.44772 0 9 0.447715 9 1V2.069C7.24017 2.29335 5.60466 3.09574 4.3502 4.3502C3.09574 5.60466 2.29335 7.24017 2.069 9H1C0.447715 9 0 9.44772 0 10C0 10.5523 0.447715 11 1 11H2.069C2.29319 12.7599 3.09552 14.3955 4.35001 15.65C5.6045 16.9045 7.2401 17.7068 9 17.931V19C9 19.5523 9.44772 20 10 20C10.5523 20 11 19.5523 11 19V17.931C12.7599 17.7068 14.3955 16.9045 15.65 15.65C16.9045 14.3955 17.7068 12.7599 17.931 11H19C19.5523 11 20 10.5523 20 10C20 9.44772 19.5523 9 19 9H17.931C17.7066 7.24017 16.9043 5.60466 15.6498 4.3502C14.3953 3.09574 12.7598 2.29335 11 2.069ZM10 16C6.691 16 4 13.309 4 10C4 6.691 6.691 4 10 4C13.309 4 16 6.691 16 10C16 13.309 13.309 16 10 16Z"
fill={color}
/>
</Svg>
)
}

export default React.memo(FindMy)
27 changes: 27 additions & 0 deletions src/icons/Phone.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import * as React from 'react'
import colors from 'src/styles/colors'
import Svg, { Path } from 'svgs'

export interface Props {
color?: string
size?: number
}

function Phone({ color = colors.greenBrand, size = 24, ...props }: Props) {
return (
<Svg
width={size}
height={size}
viewBox="0 0 27 26"
fill="none"
xmlns="http://www.w3.org/2000/Svg"
>
<Path
d="M25.05 4.19375L21.7219 0.86875C21.4871 0.632949 21.2081 0.445856 20.9008 0.31822C20.5935 0.190584 20.264 0.12492 19.9313 0.125C19.2531 0.125 18.6156 0.390625 18.1375 0.86875L14.5563 4.45C14.3205 4.68477 14.1334 4.96382 14.0057 5.27111C13.8781 5.5784 13.8124 5.90788 13.8125 6.24063C13.8125 6.91875 14.0781 7.55625 14.5563 8.03438L17.175 10.6531C16.562 12.0043 15.7098 13.2334 14.6594 14.2812C13.6116 15.3342 12.3826 16.1895 11.0313 16.8062L8.4125 14.1875C8.17773 13.9517 7.89869 13.7646 7.5914 13.637C7.28411 13.5093 6.95462 13.4437 6.62188 13.4438C5.94375 13.4438 5.30625 13.7094 4.82813 14.1875L1.24375 17.7656C1.00766 18.0008 0.820407 18.2804 0.692766 18.5882C0.565124 18.8961 0.499613 19.2261 0.500002 19.5594C0.500002 20.2375 0.765627 20.875 1.24375 21.3531L4.56563 24.675C5.32813 25.4406 6.38125 25.875 7.4625 25.875C7.69063 25.875 7.90938 25.8563 8.125 25.8188C12.3375 25.125 16.5156 22.8844 19.8875 19.5156C23.2563 16.15 25.4938 11.975 26.1969 7.75C26.4094 6.45937 25.9813 5.13125 25.05 4.19375Z"
fill={color}
/>
</Svg>
)
}

export default React.memo(Phone)
42 changes: 42 additions & 0 deletions src/icons/Pin.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import * as React from 'react'
import Svg, { G, Path } from 'react-native-svg'
import Colors from 'src/styles/colors'

function Pin({ focused = false, size = 25, color = Colors.black as string }) {
if (focused) {
color = color ?? Colors.black
return (
<Svg width={size} height={size} viewBox="0 0 30 34" fill="none">
<Path
fill-rule="evenodd"
clip-rule="evenodd"
d="M0.833984 14.1964C0.833984 6.52998 7.24045 0.333496 14.9897 0.333496C22.7608 0.333496 29.1673 6.52998 29.1673 14.1964C29.1673 18.0596 27.7623 21.6462 25.4498 24.6861C22.8987 28.0394 19.7542 30.9609 16.2149 33.2542C15.4048 33.7842 14.6738 33.8242 13.7847 33.2542C10.2252 30.9609 7.0808 28.0394 4.55148 24.6861C2.23729 21.6462 0.833984 18.0596 0.833984 14.1964ZM10.3236 14.6283C10.3236 17.1965 12.4193 19.2165 14.9889 19.2165C17.5603 19.2165 19.6761 17.1965 19.6761 14.6283C19.6761 12.08 17.5603 9.96175 14.9889 9.96175C12.4193 9.96175 10.3236 12.08 10.3236 14.6283Z"
fill={color}
/>
</Svg>
)
}
return (
<Svg width={size} height={size} viewBox="0 0 95 107">
<G id="Kolektivo" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<G id="Artboard" transform="translate(-1115.000000, -88.000000)" fill-rule="nonzero">
<G id="map" transform="translate(1115.287937, 88.295764)">
<Path
d="M46.9660184,100.416711 L22.8328763,73.8446376 C9.99923543,59.7140097 10.3666287,38.0396772 23.6718049,24.3521182 C36.3801516,11.2785414 57.2805302,10.9824638 70.354107,23.6908105 C70.5776544,23.9081128 70.7981125,24.1285708 71.0154148,24.3521182 C84.3484798,38.0683675 84.8001762,59.7612533 72.0496287,74.0206242 L48.4517262,100.410961 C48.0835912,100.822659 47.4514119,100.857974 47.039714,100.489839 C47.0138992,100.466755 46.9893008,100.442347 46.9660184,100.416711 Z"
id="Path-3"
stroke={color}
strokeWidth="10"
></Path>
<Path
d="M47.7120627,58.7042365 C42.2120627,58.7042365 37.7120627,54.2042365 37.7120627,48.7042365 C37.7120627,43.2042365 42.2120627,38.7042365 47.7120627,38.7042365 C53.2120627,38.7042365 57.7120627,43.2042365 57.7120627,48.7042365 C57.7120627,54.2042365 53.2120627,58.7042365 47.7120627,58.7042365 Z"
id="Path"
fill={color}
></Path>
</G>
</G>
</G>
</Svg>
)
}

export default Pin
25 changes: 25 additions & 0 deletions src/icons/VerifiedIcon.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import * as React from 'react'
import colors from 'src/styles/colors'
import { Path, Svg } from 'svgs'

export interface Props {
color?: string
size?: number
}

export default function VerifiedIcon({ color = colors.greenBrand, size = 22 }: Props) {
return (
<Svg
width={size}
height={size}
viewBox="0 0 22 22"
fill="none"
xmlns="http://www.w3.org/2000/Svg"
>
<Path
d="M22 11L19.56 8.21L19.9 4.52L16.29 3.7L14.4 0.5L11 1.96L7.6 0.5L5.71 3.69L2.1 4.5L2.44 8.2L0 11L2.44 13.79L2.1 17.49L5.71 18.31L7.6 21.5L11 20.03L14.4 21.49L16.29 18.3L19.9 17.48L19.56 13.79L22 11ZM8.38 15.01L6 12.61C5.9073 12.5175 5.83375 12.4076 5.78357 12.2866C5.73339 12.1657 5.70756 12.036 5.70756 11.905C5.70756 11.774 5.73339 11.6443 5.78357 11.5234C5.83375 11.4024 5.9073 11.2925 6 11.2L6.07 11.13C6.46 10.74 7.1 10.74 7.49 11.13L9.1 12.75L14.25 7.59C14.64 7.2 15.28 7.2 15.67 7.59L15.74 7.66C16.13 8.05 16.13 8.68 15.74 9.07L9.82 15.01C9.41 15.4 8.78 15.4 8.38 15.01Z"
fill={color}
/>
</Svg>
)
}
Loading

0 comments on commit 609c32e

Please sign in to comment.