From ed714af8d17fcc29a9365c7486f534ffb07b1bba Mon Sep 17 00:00:00 2001 From: eddy Date: Tue, 14 Jul 2026 09:14:18 +0200 Subject: [PATCH 01/29] feat: add MeasurementDetailScreen, 365-day charts, and edit support - New MeasurementDetailScreen with wijzigen/verwijderen - WeightChart now supports 30 and 365 days - NewMeasurementScreen now handles both create and edit - Updated README to match current code - Add build-toolchain documentation - Ignore *.apk build artifacts --- .gitignore | 6 + App.tsx | 17 +- README.md | 7 +- app.json | 13 +- docs/build-toolchain.md | 106 ++++++++ package-lock.json | 312 +++++++++++++++++++++-- package.json | 5 +- src/components/LatestMeasurementCard.tsx | 4 +- src/components/MeasurementForm.tsx | 41 +-- src/components/WeightChart.tsx | 116 ++++++--- src/screens/HistoryScreen.tsx | 6 +- src/screens/MeasurementDetailScreen.tsx | 135 ++++++++++ src/screens/NewMeasurementScreen.tsx | 97 +++---- src/sync/syncService.ts | 8 +- tests/syncService.test.ts | 15 ++ 15 files changed, 744 insertions(+), 144 deletions(-) create mode 100644 docs/build-toolchain.md create mode 100644 src/screens/MeasurementDetailScreen.tsx diff --git a/.gitignore b/.gitignore index f4c927b..d03787f 100644 --- a/.gitignore +++ b/.gitignore @@ -111,6 +111,12 @@ test/fixtures/ test/sample-pdfs/ test/output/ +# Expo +.expo/ + +# APK builds +*.apk + # Temporary files temp/ tmp/ diff --git a/App.tsx b/App.tsx index 00a9ac1..bccac9b 100644 --- a/App.tsx +++ b/App.tsx @@ -5,8 +5,18 @@ import DashboardScreen from './src/screens/DashboardScreen' import NewMeasurementScreen from './src/screens/NewMeasurementScreen' import HistoryScreen from './src/screens/HistoryScreen' import SettingsScreen from './src/screens/SettingsScreen' +import MeasurementDetailScreen from './src/screens/MeasurementDetailScreen' +import { Measurement } from './src/types' -const Stack = createNativeStackNavigator() +type RootStackParamList = { + Dashboard: undefined + NewMeasurement: { measurement?: Measurement } + History: undefined + MeasurementDetail: { measurementId: string } + Settings: undefined +} + +const Stack = createNativeStackNavigator() export default function App() { return ( @@ -27,6 +37,11 @@ export default function App() { component={HistoryScreen} options={{ title: 'Historie' }} /> + .apk` in de projectroot + +## Duur + +- **Eerste build**: ~13 minuten (Gradle download, NDK/CMake compilatie) +- **Latere builds**: ~2-3 minuten (Gradle daemon werkt door) + +## Veelvoorkomende problemen + +**`ANDROID_HOME` niet gezet** +``` +Error: ANDROID_HOME is not set +``` +→ Controleer of de export in `~/.zshrc` staat en herlaad met `source ~/.zshrc` + +**Gradle fault / OutOfMemoryError** +``` +The daemon will expire after running out of JVM Metaspace +``` +→ Zet in `android/gradle.properties`: +``` +org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1g +``` + +**Licenties niet geaccepteerd** +→ Voer `yes | sdkmanager --licenses` uit + +## Testen + +Voor het bouwen kun je de tests draaien: + +```bash +cd /home/eddy/bin/weegschaal-app +npm test +``` + +## Installatie op Android + +```bash +# Via ADB (als je toestel aan de USB hangt met debugging aan) +adb install -r weegschaal.apk + +# Of handmatig: kopieer APK naar toestel, open bestand, kies 'installeren' +``` diff --git a/package-lock.json b/package-lock.json index 3310c9d..b4a933a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,12 +15,15 @@ "expo-secure-store": "~15.0.8", "expo-sqlite": "~16.0.10", "expo-status-bar": "~3.0.9", + "expo-updates": "~29.0.18", "react": "19.1.0", + "react-dom": "19.1.0", "react-native": "0.81.5", "react-native-chart-kit": "^7.0.1", "react-native-safe-area-context": "~5.6.0", "react-native-screens": "~4.16.0", - "react-native-svg": "15.12.1" + "react-native-svg": "15.12.1", + "react-native-web": "^0.21.0" }, "devDependencies": { "@types/jest": "29.5.14", @@ -1734,25 +1737,6 @@ "semver": "^7.6.0" } }, - "node_modules/@expo/image-utils/node_modules/@expo/require-utils": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/@expo/require-utils/-/require-utils-55.0.5.tgz", - "integrity": "sha512-U4K/CQ2VpXuwfNGsN+daKmYOt15hCP8v/pXaYH6eut7kdYZo6SfJ1yr67BIcJ+1Gzzs+QzTxswAZChKpXmceyw==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.20.0", - "@babel/core": "^7.25.2", - "@babel/plugin-transform-modules-commonjs": "^7.24.8" - }, - "peerDependencies": { - "typescript": "^5.0.0 || ^5.0.0-0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/@expo/json-file": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-10.2.0.tgz", @@ -2161,6 +2145,25 @@ "xmlbuilder": "^15.1.1" } }, + "node_modules/@expo/require-utils": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/@expo/require-utils/-/require-utils-55.0.5.tgz", + "integrity": "sha512-U4K/CQ2VpXuwfNGsN+daKmYOt15hCP8v/pXaYH6eut7kdYZo6SfJ1yr67BIcJ+1Gzzs+QzTxswAZChKpXmceyw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "@babel/core": "^7.25.2", + "@babel/plugin-transform-modules-commonjs": "^7.24.8" + }, + "peerDependencies": { + "typescript": "^5.0.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/@expo/schema-utils": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-0.1.8.tgz", @@ -4326,6 +4329,57 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/cross-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/cross-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/cross-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -4340,6 +4394,15 @@ "node": ">= 8" } }, + "node_modules/css-in-js-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", + "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==", + "license": "MIT", + "dependencies": { + "hyphenate-style-name": "^1.0.3" + } + }, "node_modules/css-select": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", @@ -5077,6 +5140,31 @@ } } }, + "node_modules/expo-eas-client": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-1.0.8.tgz", + "integrity": "sha512-5or11NJhSeDoHHI6zyvQDW2cz/yFyE+1Cz8NTs5NK8JzC7J0JrkUgptWtxyfB6Xs/21YRNifd3qgbBN3hfKVgA==", + "license": "MIT" + }, + "node_modules/expo-json-utils": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-0.15.0.tgz", + "integrity": "sha512-duRT6oGl80IDzH2LD2yEFWNwGIC2WkozsB6HF3cDYNoNNdUvFk6uN3YiwsTsqVM/D0z6LEAQ01/SlYvN+Fw0JQ==", + "license": "MIT" + }, + "node_modules/expo-manifests": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-1.0.11.tgz", + "integrity": "sha512-6zItytTewN37Cjhp3glUg0ozrgW2GwB8x9wtfzUNoJIMmxO38nnGdTLMaotYhRqdf5PP2Dzdmej1HDHXVNUpRw==", + "license": "MIT", + "dependencies": { + "@expo/config": "~12.0.13", + "expo-json-utils": "~0.15.0" + }, + "peerDependencies": { + "expo": "*" + } + }, "node_modules/expo-modules-autolinking": { "version": "3.0.26", "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-3.0.26.tgz", @@ -5151,6 +5239,57 @@ "react-native": "*" } }, + "node_modules/expo-structured-headers": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/expo-structured-headers/-/expo-structured-headers-5.0.0.tgz", + "integrity": "sha512-RmrBtnSphk5REmZGV+lcdgdpxyzio5rJw8CXviHE6qH5pKQQ83fhMEcigvrkBdsn2Efw2EODp4Yxl1/fqMvOZw==", + "license": "MIT" + }, + "node_modules/expo-updates": { + "version": "29.0.18", + "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-29.0.18.tgz", + "integrity": "sha512-qn0YDM7wVwghQAaxb9NYzzwrmj+v8Djz5H+Zft4/myG9SPg4ICAfDy52IVF0K+/GH/oNgsFfzmmLl6hIkDu42g==", + "license": "MIT", + "dependencies": { + "@expo/code-signing-certificates": "^0.0.6", + "@expo/plist": "^0.4.9", + "@expo/spawn-async": "^1.7.2", + "arg": "4.1.0", + "chalk": "^4.1.2", + "debug": "^4.3.4", + "expo-eas-client": "~1.0.8", + "expo-manifests": "~1.0.11", + "expo-structured-headers": "~5.0.0", + "expo-updates-interface": "~2.0.0", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "ignore": "^5.3.1", + "resolve-from": "^5.0.0" + }, + "bin": { + "expo-updates": "bin/cli.js" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-updates-interface": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-2.0.0.tgz", + "integrity": "sha512-pTzAIufEZdVPKql6iMi5ylVSPqV1qbEopz9G6TSECQmnNde2nwq42PxdFBaUEd8IZJ/fdJLQnOT3m6+XJ5s7jg==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-updates/node_modules/arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", + "license": "MIT" + }, "node_modules/expo/node_modules/@expo/cli": { "version": "54.0.25", "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-54.0.25.tgz", @@ -5580,6 +5719,36 @@ "bser": "2.1.1" } }, + "node_modules/fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "license": "MIT", + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "license": "MIT" + }, + "node_modules/fbjs/node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.3" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -6056,6 +6225,12 @@ "node": ">=10.17.0" } }, + "node_modules/hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", + "license": "BSD-3-Clause" + }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -6166,6 +6341,15 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "license": "ISC" }, + "node_modules/inline-style-prefixer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz", + "integrity": "sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==", + "license": "MIT", + "dependencies": { + "css-in-js-utils": "^3.1.0" + } + }, "node_modules/invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -9051,6 +9235,12 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, "node_modules/pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", @@ -9263,6 +9453,18 @@ "ws": "^7" } }, + "node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, "node_modules/react-freeze": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.4.tgz", @@ -9409,6 +9611,38 @@ "react-native": "*" } }, + "node_modules/react-native-web": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.21.2.tgz", + "integrity": "sha512-SO2t9/17zM4iEnFvlu2DA9jqNbzNhoUP+AItkoCOyFmDMOhUnBBznBDCYN92fGdfAkfQlWzPoez6+zLxFNsZEg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.6", + "@react-native/normalize-colors": "^0.74.1", + "fbjs": "^3.0.4", + "inline-style-prefixer": "^7.0.1", + "memoize-one": "^6.0.0", + "nullthrows": "^1.1.1", + "postcss-value-parser": "^4.2.0", + "styleq": "^0.1.3" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-native-web/node_modules/@react-native/normalize-colors": { + "version": "0.74.89", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.89.tgz", + "integrity": "sha512-qoMMXddVKVhZ8PA1AbUCk83trpd6N+1nF2A6k1i6LsQObyS92fELuk8kU/lQs6M7BsMHwqyLCpQJ1uFgNvIQXg==", + "license": "MIT" + }, + "node_modules/react-native-web/node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" + }, "node_modules/react-native/node_modules/@react-native/js-polyfills": { "version": "0.81.5", "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.81.5.tgz", @@ -9957,6 +10191,12 @@ "dev": true, "license": "MIT" }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -10304,6 +10544,12 @@ "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==", "license": "MIT" }, + "node_modules/styleq": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/styleq/-/styleq-0.1.3.tgz", + "integrity": "sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==", + "license": "MIT" + }, "node_modules/sucrase": { "version": "3.35.1", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", @@ -10673,6 +10919,32 @@ "node": ">=14.17" } }, + "node_modules/ua-parser-js": { + "version": "1.0.41", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.41.tgz", + "integrity": "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, "node_modules/undici": { "version": "6.27.0", "resolved": "https://registry.npmjs.org/undici/-/undici-6.27.0.tgz", diff --git a/package.json b/package.json index b87035e..a09395c 100644 --- a/package.json +++ b/package.json @@ -10,12 +10,15 @@ "expo-secure-store": "~15.0.8", "expo-sqlite": "~16.0.10", "expo-status-bar": "~3.0.9", + "expo-updates": "~29.0.18", "react": "19.1.0", + "react-dom": "19.1.0", "react-native": "0.81.5", "react-native-chart-kit": "^7.0.1", "react-native-safe-area-context": "~5.6.0", "react-native-screens": "~4.16.0", - "react-native-svg": "15.12.1" + "react-native-svg": "15.12.1", + "react-native-web": "^0.21.0" }, "devDependencies": { "@types/jest": "29.5.14", diff --git a/src/components/LatestMeasurementCard.tsx b/src/components/LatestMeasurementCard.tsx index 295fbb5..7cc0134 100644 --- a/src/components/LatestMeasurementCard.tsx +++ b/src/components/LatestMeasurementCard.tsx @@ -47,8 +47,8 @@ const styles = StyleSheet.create({ card: { backgroundColor: '#fff', borderRadius: 12, padding: 16, margin: 16, shadowColor: '#000', shadowOpacity: 0.1, shadowRadius: 8, elevation: 3 }, title: { fontSize: 18, fontWeight: '700', marginBottom: 4 }, date: { fontSize: 14, color: '#666', marginBottom: 12 }, - row: { flexDirection: 'row', justifyContent: 'space-between', paddingVertical: 4 }, - rowLabel: { fontSize: 14, color: '#555' }, + row: { flexDirection: 'row', paddingVertical: 4 }, + rowLabel: { fontSize: 14, color: '#555', flex: 1 }, rowValue: { fontSize: 14, fontWeight: '600' }, emptyText: { fontSize: 16, color: '#999', textAlign: 'center', padding: 20 }, }) diff --git a/src/components/MeasurementForm.tsx b/src/components/MeasurementForm.tsx index 9888c37..71195b7 100644 --- a/src/components/MeasurementForm.tsx +++ b/src/components/MeasurementForm.tsx @@ -8,6 +8,7 @@ import { generateId } from '../utils/uuid' type Props = { onSubmit: (m: Measurement) => void initialValues?: Partial + isEdit?: boolean } type FieldDef = { @@ -29,13 +30,10 @@ const fields: FieldDef[] = [ { key: 'bmr', label: 'Stofwisseling (kcal)', placeholder: '1650', keyboardType: 'number-pad' }, ] -export default function MeasurementForm({ onSubmit, initialValues }: Props) { +export default function MeasurementForm({ onSubmit, initialValues, isEdit }: Props) { const insets = useSafeAreaInsets() const [pickerOpen, setPickerOpen] = useState(false) - const [measurementDate, setMeasurementDate] = useState(() => { - if (initialValues?.measuredAt) return new Date(initialValues.measuredAt) - return new Date() - }) + const [measurementDate, setMeasurementDate] = useState(new Date()) const [values, setValues] = useState>(() => { const init: Record = {} for (const f of fields) { @@ -47,9 +45,18 @@ export default function MeasurementForm({ onSubmit, initialValues }: Props) { - const weight = parseFloat(values.weight) || 0 - const bodyFatPct = parseFloat(values.bodyFatPercentage) || 0 - const musclePct = parseFloat(values.musclePercentage) || 0 +function toFloat(s: string): number { + return parseFloat(s.replace(',', '.')) || 0 +} + +function toInt(s: string): number { + return parseInt(s.replace(',', '.'), 10) || 0 +} + + + const weight = toFloat(values.weight) + const bodyFatPct = toFloat(values.bodyFatPercentage) + const musclePct = toFloat(values.musclePercentage) const computed = useMemo(() => ({ fatMass: weight > 0 && bodyFatPct > 0 ? ((weight * bodyFatPct) / 100).toFixed(1) : '', @@ -59,17 +66,17 @@ export default function MeasurementForm({ onSubmit, initialValues }: Props) { const handleSubmit = () => { const now = new Date().toISOString() const m: Measurement = { - id: generateId(), + id: isEdit && initialValues?.id ? initialValues.id : generateId(), weight, - bmi: parseFloat(values.bmi) || 0, + bmi: toFloat(values.bmi), bodyFatPercentage: bodyFatPct, - fatMass: parseFloat(computed.fatMass) || 0, + fatMass: toFloat(computed.fatMass), musclePercentage: musclePct, - muscleMass: parseFloat(computed.muscleMass) || 0, - visceralFat: parseInt(values.visceralFat, 10) || 0, - bmr: parseFloat(values.bmr) || 0, + muscleMass: toFloat(computed.muscleMass), + visceralFat: toInt(values.visceralFat), + bmr: toFloat(values.bmr), measuredAt: measurementDate.toISOString(), - createdAt: now, + createdAt: isEdit && initialValues?.createdAt ? initialValues.createdAt : now, updatedAt: now, syncStatus: 'local', } @@ -140,7 +147,7 @@ export default function MeasurementForm({ onSubmit, initialValues }: Props) { ) })} - + Opslaan @@ -149,7 +156,7 @@ export default function MeasurementForm({ onSubmit, initialValues }: Props) { const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#f5f5f5' }, - scroll: { padding: 16, paddingBottom: 0 }, + scroll: { padding: 16 }, field: { marginBottom: 12 }, label: { fontSize: 14, fontWeight: '600', color: '#333', marginBottom: 4 }, input: { backgroundColor: '#fff', borderRadius: 8, padding: 12, fontSize: 16, borderWidth: 1, borderColor: '#ddd' }, diff --git a/src/components/WeightChart.tsx b/src/components/WeightChart.tsx index 7ea663f..5d1a183 100644 --- a/src/components/WeightChart.tsx +++ b/src/components/WeightChart.tsx @@ -1,5 +1,5 @@ -import React from 'react' -import { View, Text, StyleSheet, Dimensions } from 'react-native' +import React, { useRef, useState } from 'react' +import { View, Text, StyleSheet, Dimensions, ScrollView, NativeSyntheticEvent, NativeScrollEvent } from 'react-native' import { LineChart } from 'react-native-chart-kit' import { Measurement } from '../types' @@ -11,6 +11,9 @@ const COLORS = { muscleMass: '#2196F3', } +const screenWidth = Dimensions.get('window').width +const chartWidth = screenWidth - 32 + function SingleChart({ title, data, @@ -29,7 +32,7 @@ function SingleChart({ {title} color, strokeWidth: 2 }] }} - width={Dimensions.get('window').width - 32} + width={chartWidth} height={180} yAxisSuffix={unit} chartConfig={{ @@ -57,7 +60,56 @@ function hexToRgb(hex: string): string { return `${r}, ${g}, ${b}` } +function filterData(sorted: Measurement[], days: number, lastDate: Date) { + const cutoff = new Date(lastDate) + cutoff.setDate(cutoff.getDate() - days) + const filtered = sorted.filter(m => new Date(m.measuredAt) >= cutoff) + return filtered.length >= 2 ? filtered : sorted +} + +function prepareLabels(dataPoints: Measurement[]) { + const labels = dataPoints.map(m => { + const d = new Date(m.measuredAt) + return `${d.getDate()}/${d.getMonth() + 1}` + }) + const labelStep = labels.length > 8 ? Math.ceil(labels.length / 8) : 1 + return labels.map((l, i) => (i % labelStep === 0 ? l : '')) +} + +function ChartSet({ dataPoints, title }: { dataPoints: Measurement[]; title: string }) { + const labels = prepareLabels(dataPoints) + return ( + + {title} + m.weight)} + labels={labels} + color={COLORS.weight} + unit=" kg" + /> + m.fatMass)} + labels={labels} + color={COLORS.fatMass} + unit=" kg" + /> + m.muscleMass)} + labels={labels} + color={COLORS.muscleMass} + unit=" kg" + /> + + ) +} + export default function WeightChart({ measurements }: Props) { + const scrollRef = useRef(null) + const [page, setPage] = useState(0) + if (measurements.length < 2) { return null } @@ -66,52 +118,38 @@ export default function WeightChart({ measurements }: Props) { (a, b) => new Date(a.measuredAt).getTime() - new Date(b.measuredAt).getTime() ) - const cutoff = new Date(sorted[sorted.length - 1].measuredAt) - cutoff.setDate(cutoff.getDate() - 30) - const filtered = sorted.filter(m => new Date(m.measuredAt) >= cutoff) - const dataPoints = filtered.length >= 2 ? filtered : sorted + const lastDate = new Date(sorted[sorted.length - 1].measuredAt) - const labels = dataPoints.map(m => { - const d = new Date(m.measuredAt) - return `${d.getDate()}/${d.getMonth() + 1}` - }) + const data30 = filterData(sorted, 30, lastDate) + const data365 = filterData(sorted, 365, lastDate) - const labelStep = labels.length > 8 ? Math.ceil(labels.length / 8) : 1 - const sparseLabels = labels.map((l, i) => (i % labelStep === 0 ? l : '')) + const onScroll = (e: NativeSyntheticEvent) => { + const offset = e.nativeEvent.contentOffset.x + const newPage = Math.round(offset / screenWidth) + if (newPage !== page) { + setPage(newPage) + } + } return ( - Voortgang (30 dagen) - - m.weight)} - labels={sparseLabels} - color={COLORS.weight} - unit=" kg" - /> - - m.fatMass)} - labels={sparseLabels} - color={COLORS.fatMass} - unit=" kg" - /> - - m.muscleMass)} - labels={sparseLabels} - color={COLORS.muscleMass} - unit=" kg" - /> + + + + ) } const styles = StyleSheet.create({ - container: { marginHorizontal: 16, marginBottom: 16 }, + container: { marginBottom: 16 }, + page: { width: screenWidth, paddingHorizontal: 16 }, title: { fontSize: 18, fontWeight: '700', marginBottom: 8 }, chartBlock: { marginBottom: 12 }, chartTitle: { fontSize: 13, fontWeight: '600', color: '#555', marginBottom: 4, marginLeft: 4 }, diff --git a/src/screens/HistoryScreen.tsx b/src/screens/HistoryScreen.tsx index e84f507..8fd941d 100644 --- a/src/screens/HistoryScreen.tsx +++ b/src/screens/HistoryScreen.tsx @@ -1,5 +1,5 @@ import React, { useCallback, useState } from 'react' -import { View, FlatList, StyleSheet, Text, RefreshControl, Alert } from 'react-native' +import { View, FlatList, StyleSheet, Text, RefreshControl, TouchableOpacity } from 'react-native' import { useFocusEffect } from '@react-navigation/native' import { initDatabase, getAllMeasurements, deleteMeasurement } from '../database/db' import { Measurement } from '../types' @@ -80,7 +80,9 @@ export default function HistoryScreen({ navigation }: Props) { data={measurements} keyExtractor={item => item.id} renderItem={({ item }) => ( - handlePress(item)} /> + navigation.navigate('MeasurementDetail', { measurementId: item.id })}> + + )} contentContainerStyle={measurements.length === 0 ? styles.empty : undefined} ListEmptyComponent={Nog geen metingen} diff --git a/src/screens/MeasurementDetailScreen.tsx b/src/screens/MeasurementDetailScreen.tsx new file mode 100644 index 0000000..ee17a30 --- /dev/null +++ b/src/screens/MeasurementDetailScreen.tsx @@ -0,0 +1,135 @@ +import React, { useCallback, useState } from 'react' +import { View, Text, StyleSheet, TouchableOpacity, Alert, ScrollView } from 'react-native' +import { useFocusEffect } from '@react-navigation/native' +import { useSafeAreaInsets } from 'react-native-safe-area-context' +import { initDatabase, getAllMeasurements, deleteMeasurement } from '../database/db' +import { Measurement } from '../types' + +type Props = { + navigation: any + route: { + params: { + measurementId: string + } + } +} + +const rows: { label: string; key: keyof Measurement; suffix: string }[] = [ + { label: 'Gewicht', key: 'weight', suffix: 'kg' }, + { label: 'BMI', key: 'bmi', suffix: '' }, + { label: 'Vetpercentage', key: 'bodyFatPercentage', suffix: '%' }, + { label: 'Vetmassa', key: 'fatMass', suffix: 'kg' }, + { label: 'Spierpercentage', key: 'musclePercentage', suffix: '%' }, + { label: 'Spiermassa', key: 'muscleMass', suffix: 'kg' }, + { label: 'Buikvet', key: 'visceralFat', suffix: '' }, + { label: 'Stofwisseling', key: 'bmr', suffix: 'kcal' }, +] + +export default function MeasurementDetailScreen({ navigation, route }: Props) { + const insets = useSafeAreaInsets() + const { measurementId } = route.params + const [measurement, setMeasurement] = useState(null) + + useFocusEffect( + useCallback(() => { + const load = async () => { + await initDatabase() + const all = await getAllMeasurements() + const m = all.find(x => x.id === measurementId) + setMeasurement(m ?? null) + } + load() + }, [measurementId]) + ) + + const handleEdit = () => { + navigation.navigate('NewMeasurement', { measurement }) + } + + const handleDelete = () => { + Alert.alert( + 'Meting verwijderen?', + 'Dit kan niet ongedaan worden gemaakt.', + [ + { text: 'Annuleren', style: 'cancel' }, + { + text: 'Verwijderen', + style: 'destructive', + onPress: async () => { + await initDatabase() + await deleteMeasurement(measurementId) + try { + const { syncAll } = await import('../sync/syncService') + await syncAll(new Set([measurementId])) + } catch {} + navigation.goBack() + }, + }, + ] + ) + } + + if (!measurement) { + return ( + + Laden... + + ) + } + + return ( + + + + {new Date(measurement.measuredAt).toLocaleDateString('nl-NL', { + weekday: 'long', + day: 'numeric', + month: 'long', + year: 'numeric', + })} + + + {rows.map(r => ( + + {r.label} + + {typeof measurement[r.key] === 'number' + ? (measurement[r.key] as number).toFixed(1) + : measurement[r.key]}{' '} + {r.suffix} + + + ))} + + + + + Wijzigen + + + Verwijderen + + + + ) +} + +const styles = StyleSheet.create({ + container: { flex: 1, backgroundColor: '#f5f5f5' }, + content: { padding: 16 }, + centered: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#f5f5f5' }, + date: { fontSize: 18, fontWeight: '700', marginBottom: 16, textAlign: 'center' }, + row: { + flexDirection: 'row', + backgroundColor: '#fff', + padding: 14, + marginBottom: 8, + borderRadius: 8, + }, + label: { fontSize: 15, color: '#555', flex: 1 }, + value: { fontSize: 15, fontWeight: '600' }, + buttons: { flexDirection: 'row', gap: 12, padding: 16 }, + editButton: { flex: 1, backgroundColor: '#2196F3', padding: 14, borderRadius: 8, alignItems: 'center' }, + deleteButton: { flex: 1, backgroundColor: '#e53935', padding: 14, borderRadius: 8, alignItems: 'center' }, + buttonText: { color: '#fff', fontSize: 16, fontWeight: '700' }, +}) diff --git a/src/screens/NewMeasurementScreen.tsx b/src/screens/NewMeasurementScreen.tsx index 82eb6f3..91b3913 100644 --- a/src/screens/NewMeasurementScreen.tsx +++ b/src/screens/NewMeasurementScreen.tsx @@ -3,88 +3,74 @@ import { View, Text, Alert } from 'react-native' import { useFocusEffect } from '@react-navigation/native' import MeasurementForm from '../components/MeasurementForm' import { Measurement } from '../types' -import { - initDatabase, - insertMeasurement, - getLatestMeasurement, - getMeasurementByDate, - upsertMeasurement, -} from '../database/db' +import { initDatabase, insertMeasurement, upsertMeasurement, getLatestMeasurement, getMeasurementByDate } from '../database/db' type Props = { navigation: any - route: any + route: { + params: { + measurement?: Measurement + } + } } export default function NewMeasurementScreen({ navigation, route }: Props) { - const editing = route.params?.measurement as Measurement | undefined + const editMeasurement = route.params?.measurement + const isEdit = !!editMeasurement const [latest, setLatest] = useState | undefined>(undefined) const [loaded, setLoaded] = useState(false) + React.useLayoutEffect(() => { + navigation.setOptions({ title: isEdit ? 'Meting wijzigen' : 'Nieuwe meting' }) + }, [navigation, isEdit]) + useFocusEffect( useCallback(() => { + if (isEdit) { + setLatest(editMeasurement) + setLoaded(true) + return + } let cancelled = false const load = async () => { await initDatabase() - if (editing) { - if (!cancelled) { - setLatest(editing) - setLoaded(true) - } - } else { - const m = await getLatestMeasurement() - if (!cancelled) { - setLatest(m || {}) - setLoaded(true) - } + const m = await getLatestMeasurement() + if (!cancelled) { + setLatest(m || {}) + setLoaded(true) } } load() return () => { cancelled = true } - }, [editing]) + }, [isEdit, editMeasurement]) ) - useEffect(() => { - if (editing) { - navigation.setOptions({ title: 'Meting wijzigen' }) - } - }, [editing, navigation]) - const handleSubmit = async (m: Measurement) => { await initDatabase() - if (editing) { - m.id = editing.id - m.createdAt = editing.createdAt + if (isEdit) { await upsertMeasurement(m) - doSync() - return - } - const existing = await getMeasurementByDate(m.measuredAt) - if (existing) { - Alert.alert( - 'Dubbele datum', - `Er bestaat al een meting van ${new Date(m.measuredAt).toLocaleDateString('nl-NL')}. Overschrijven?`, - [ - { text: 'Annuleren', style: 'cancel' }, - { text: 'Overschrijven', style: 'destructive', onPress: () => doSave(m, existing.id) }, - ] - ) - return + } else { + const existing = await getMeasurementByDate(m.measuredAt) + if (existing) { + Alert.alert( + 'Dubbele datum', + `Er bestaat al een meting van ${new Date(m.measuredAt).toLocaleDateString('nl-NL')}. Overschrijven?`, + [ + { text: 'Annuleren', style: 'cancel' }, + { text: 'Overschrijven', style: 'destructive', onPress: () => { + m.id = existing.id + doSave(m) + }}, + ] + ) + return + } + await insertMeasurement(m) } doSave(m) } - const doSave = async (m: Measurement, existingId?: string) => { - if (existingId) { - m.id = existingId - await upsertMeasurement(m) - } else { - await insertMeasurement(m) - } - doSync() - } - - const doSync = async () => { + const doSave = async (m: Measurement) => { try { const { syncAll } = await import('../sync/syncService') await syncAll() @@ -110,6 +96,7 @@ export default function NewMeasurementScreen({ navigation, route }: Props) { | undefined} + isEdit={isEdit} /> ) } diff --git a/src/sync/syncService.ts b/src/sync/syncService.ts index 1bc0991..94d315f 100644 --- a/src/sync/syncService.ts +++ b/src/sync/syncService.ts @@ -6,14 +6,16 @@ const WEBDAV_PATH = 'weegschaal/measurements.json' type SyncResult = { local: number; remote: number; merged: number } -export function mergeMeasurements(local: Measurement[], remote: Measurement[]): Measurement[] { +export function mergeMeasurements(local: Measurement[], remote: Measurement[], excludeIds?: Set): Measurement[] { const map = new Map() for (const m of local) { + if (excludeIds?.has(m.id)) continue map.set(m.id, m) } for (const m of remote) { + if (excludeIds?.has(m.id)) continue const existing = map.get(m.id) if (!existing || new Date(m.updatedAt) > new Date(existing.updatedAt)) { map.set(m.id, { ...m, syncStatus: 'synced' }) @@ -82,7 +84,7 @@ async function uploadRemote( } } -export async function syncAll(): Promise { +export async function syncAll(excludeIds?: Set): Promise { const config = await getWebDAVConfig() if (!config) { throw new Error('Geen WebDAV configuratie. Stel deze eerst in in Instellingen.') @@ -93,7 +95,7 @@ export async function syncAll(): Promise { const local = await getAllMeasurements() const remote = await fetchRemote(config) - const merged = mergeMeasurements(local, remote) + const merged = mergeMeasurements(local, remote, excludeIds) for (const m of merged) { await upsertMeasurement(m) diff --git a/tests/syncService.test.ts b/tests/syncService.test.ts index fae08ca..1f5878d 100644 --- a/tests/syncService.test.ts +++ b/tests/syncService.test.ts @@ -54,4 +54,19 @@ describe('mergeMeasurements', () => { expect(result).toHaveLength(1) expect(result[0].weight).toBe(77) }) + + it('excludes ids in excludeIds from both sides', () => { + const local = { ...base, id: 'id-1' } + const remote = { ...base, id: 'id-2' } + const result = mergeMeasurements([local], [remote], new Set(['id-1', 'id-2'])) + expect(result).toHaveLength(0) + }) + + it('keeps ids not in excludeIds', () => { + const local = { ...base, id: 'id-1' } + const remote = { ...base, id: 'id-2' } + const result = mergeMeasurements([local], [remote], new Set(['id-1'])) + expect(result).toHaveLength(1) + expect(result[0].id).toBe('id-2') + }) }) From ac681dbfaaea60e727d230d2d8c80802ce651cfa Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 16:55:07 +0200 Subject: [PATCH 02/29] types: vervang WebDAVConfig door ApiConfig, verwijder SyncStatus, voeg deletedAt toe --- src/types.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/types.ts b/src/types.ts index 1d759d0..ea4373d 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,5 +1,3 @@ -export type SyncStatus = 'local' | 'synced' - export type Measurement = { id: string weight: number @@ -13,11 +11,10 @@ export type Measurement = { measuredAt: string createdAt: string updatedAt: string - syncStatus: SyncStatus + deletedAt?: string } -export type WebDAVConfig = { +export type ApiConfig = { url: string - username: string - password: string + token: string } From a13f2b821b95f714d524ba5413a121d6abea771c Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 16:55:50 +0200 Subject: [PATCH 03/29] feat: REST API client module --- src/sync/api.ts | 70 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/sync/api.ts diff --git a/src/sync/api.ts b/src/sync/api.ts new file mode 100644 index 0000000..143ec7b --- /dev/null +++ b/src/sync/api.ts @@ -0,0 +1,70 @@ +import { Measurement } from '../types' +import { ApiConfig } from '../types' + +export class ApiError extends Error { + status: number + constructor(message: string, status: number) { + super(message) + this.name = 'ApiError' + this.status = status + } +} + +function authHeaders(token: string): Record { + return { + Authorization: `Bearer ${token}`, + 'Content-Type': 'application/json', + } +} + +export type Api = ReturnType + +export function createApi(config: ApiConfig) { + const base = config.url.replace(/\/+$/, '') + + return { + async getMeasurements(since?: string): Promise { + let url = `${base}/api/v1/measurements` + if (since) { + url += `?since=${encodeURIComponent(since)}` + } + const response = await fetch(url, { + headers: { Authorization: `Bearer ${config.token}` }, + }) + if (response.status === 401) { + throw new ApiError('Authenticatie mislukt. Controleer je token in Instellingen.', 401) + } + if (!response.ok) { + throw new ApiError(`Serverfout bij ophalen metingen: ${response.status}`, response.status) + } + return response.json() + }, + + async createMeasurement(m: Measurement): Promise { + const response = await fetch(`${base}/api/v1/measurements`, { + method: 'POST', + headers: authHeaders(config.token), + body: JSON.stringify(m), + }) + if (response.status === 401) { + throw new ApiError('Authenticatie mislukt. Controleer je token in Instellingen.', 401) + } + if (!response.ok) { + throw new ApiError(`Serverfout bij opslaan meting: ${response.status}`, response.status) + } + }, + + async deleteMeasurement(id: string): Promise { + const response = await fetch(`${base}/api/v1/measurements/${id}`, { + method: 'DELETE', + headers: { Authorization: `Bearer ${config.token}` }, + }) + if (response.status === 401) { + throw new ApiError('Authenticatie mislukt. Controleer je token in Instellingen.', 401) + } + if (!response.ok) { + throw new ApiError(`Serverfout bij verwijderen meting: ${response.status}`, response.status) + } + }, + } +} From cec6c54e6164b92d74bc016837d7a947cf624be0 Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 16:56:28 +0200 Subject: [PATCH 04/29] sync: herschrijf syncService voor timestamp-based REST sync --- src/sync/syncService.ts | 143 +++++++++++++++++----------------------- 1 file changed, 60 insertions(+), 83 deletions(-) diff --git a/src/sync/syncService.ts b/src/sync/syncService.ts index 94d315f..b52563a 100644 --- a/src/sync/syncService.ts +++ b/src/sync/syncService.ts @@ -1,111 +1,88 @@ import { Measurement } from '../types' -import { initDatabase, getAllMeasurements, upsertMeasurement } from '../database/db' -import { getWebDAVConfig } from '../screens/SettingsScreen' +import { + initDatabase, + getAllMeasurements, + upsertMeasurement, + getMeasurementsUpdatedSince, + removeMeasurement, +} from '../database/db' +import { createApi } from './api' +import { ApiError } from './api' +import * as SecureStore from 'expo-secure-store' -const WEBDAV_PATH = 'weegschaal/measurements.json' +const LAST_SYNC_KEY = 'weegschaal_last_sync' -type SyncResult = { local: number; remote: number; merged: number } - -export function mergeMeasurements(local: Measurement[], remote: Measurement[], excludeIds?: Set): Measurement[] { +export function mergeMeasurements(local: Measurement[], remote: Measurement[]): Measurement[] { const map = new Map() for (const m of local) { - if (excludeIds?.has(m.id)) continue map.set(m.id, m) } - for (const m of remote) { - if (excludeIds?.has(m.id)) continue - const existing = map.get(m.id) - if (!existing || new Date(m.updatedAt) > new Date(existing.updatedAt)) { - map.set(m.id, { ...m, syncStatus: 'synced' }) + for (const r of remote) { + const existing = map.get(r.id) + if (!existing || new Date(r.updatedAt) > new Date(existing.updatedAt)) { + map.set(r.id, { + ...r, + deletedAt: r.deletedAt || undefined, + } as Measurement) } } return Array.from(map.values()) } -async function fetchRemote(config: { url: string; username: string; password: string }): Promise { - const url = `${config.url.replace(/\/+$/, '')}/${WEBDAV_PATH}` - const response = await fetch(url, { - headers: { - Authorization: 'Basic ' + btoa(`${config.username}:${config.password}`), - }, - }) - - if (response.status === 404) { - return [] - } - - if (!response.ok) { - throw new Error(`WebDAV fetch failed: ${response.status}`) - } - - return response.json() +export async function uploadMeasurement(m: Measurement): Promise { + const { getApiConfig } = await import('../screens/SettingsScreen') + const config = await getApiConfig() + if (!config) throw new Error('Geen API configuratie. Stel deze eerst in in Instellingen.') + const api = createApi(config) + await api.createMeasurement(m) } -async function createDir(config: { url: string; username: string; password: string }): Promise { - const base = config.url.replace(/\/+$/, '') - const dirUrl = `${base}/weegschaal` - - const response = await fetch(dirUrl, { - method: 'MKCOL', - headers: { - Authorization: 'Basic ' + btoa(`${config.username}:${config.password}`), - }, - }) - - if (response.status !== 201 && response.status !== 405) { - throw new Error(`WebDAV directory create failed: ${response.status}`) - } -} - -async function uploadRemote( - config: { url: string; username: string; password: string }, - measurements: Measurement[] -): Promise { - const base = config.url.replace(/\/+$/, '') - const url = `${base}/${WEBDAV_PATH}` - const body = JSON.stringify(measurements) - - await createDir(config) - - const response = await fetch(url, { - method: 'PUT', - headers: { - Authorization: 'Basic ' + btoa(`${config.username}:${config.password}`), - 'Content-Type': 'application/json', - }, - body, - }) - - if (!response.ok) { - throw new Error(`WebDAV upload failed: ${response.status}`) - } -} - -export async function syncAll(excludeIds?: Set): Promise { - const config = await getWebDAVConfig() - if (!config) { - throw new Error('Geen WebDAV configuratie. Stel deze eerst in in Instellingen.') - } +export async function syncAll(): Promise<{ pushed: number; deleted: number; pulled: number }> { + const { getApiConfig } = await import('../screens/SettingsScreen') + const config = await getApiConfig() + if (!config) throw new Error('Geen API configuratie. Stel deze eerst in in Instellingen.') + const api = createApi(config) await initDatabase() - const local = await getAllMeasurements() - const remote = await fetchRemote(config) + const lastSyncAt = await SecureStore.getItemAsync(LAST_SYNC_KEY) - const merged = mergeMeasurements(local, remote, excludeIds) + const remote = await api.getMeasurements(lastSyncAt || undefined) + const local = await getAllMeasurements() + + const merged = mergeMeasurements(local, remote) for (const m of merged) { await upsertMeasurement(m) } - await uploadRemote(config, merged) + const since = lastSyncAt || '1970-01-01T00:00:00.000Z' + const updated = await getMeasurementsUpdatedSince(since) - return { - local: local.length, - remote: remote.length, - merged: merged.length, - } + let pushed = 0 + let deleted = 0 + + await Promise.allSettled( + updated.map(async m => { + if (m.deletedAt && m.deletedAt > since) { + try { + await api.deleteMeasurement(m.id) + await removeMeasurement(m.id) + deleted++ + } catch {} + } else { + try { + await api.createMeasurement(m) + pushed++ + } catch {} + } + }) + ) + + await SecureStore.setItemAsync(LAST_SYNC_KEY, new Date().toISOString()) + + return { pushed, deleted, pulled: remote.length } } From 79c91eb5374cc7d0927dbe6476a9f7dabe3864b8 Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 16:58:12 +0200 Subject: [PATCH 05/29] db: voeg deletedAt toe, vervang syncStatus logica door timestamp-based functies --- src/database/db.ts | 50 ++++++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/src/database/db.ts b/src/database/db.ts index 77b8fe9..f3d8d81 100644 --- a/src/database/db.ts +++ b/src/database/db.ts @@ -1,5 +1,5 @@ import * as SQLite from 'expo-sqlite' -import { Measurement, SyncStatus } from '../types' +import { Measurement } from '../types' let db: SQLite.SQLiteDatabase | null = null @@ -20,16 +20,17 @@ export async function initDatabase(): Promise { measuredAt TEXT NOT NULL, createdAt TEXT NOT NULL, updatedAt TEXT NOT NULL, - syncStatus TEXT NOT NULL DEFAULT 'local' + syncStatus TEXT NOT NULL DEFAULT 'local', + deletedAt TEXT ); `) } export async function insertMeasurement(m: Measurement): Promise { await db!.runAsync( - `INSERT INTO measurements (id, weight, bmi, bodyFatPercentage, fatMass, musclePercentage, muscleMass, visceralFat, bmr, measuredAt, createdAt, updatedAt, syncStatus) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, - [m.id, m.weight, m.bmi, m.bodyFatPercentage, m.fatMass, m.musclePercentage, m.muscleMass, m.visceralFat, m.bmr, m.measuredAt, m.createdAt, m.updatedAt, m.syncStatus] + `INSERT INTO measurements (id, weight, bmi, bodyFatPercentage, fatMass, musclePercentage, muscleMass, visceralFat, bmr, measuredAt, createdAt, updatedAt, syncStatus, deletedAt) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, + [m.id, m.weight, m.bmi, m.bodyFatPercentage, m.fatMass, m.musclePercentage, m.muscleMass, m.visceralFat, m.bmr, m.measuredAt, m.createdAt, m.updatedAt, m.syncStatus, m.deletedAt ?? null] ) } @@ -56,28 +57,33 @@ export async function getMeasurementByDate(date: string): Promise 0 ? (rows[0] as Measurement) : null } -export async function updateMeasurement(id: string, syncStatus: SyncStatus): Promise { - await db!.runAsync( - 'UPDATE measurements SET syncStatus = ?, updatedAt = ? WHERE id = ?', - [syncStatus, new Date().toISOString(), id] - ) -} - export async function upsertMeasurement(m: Measurement): Promise { await db!.runAsync( - `INSERT OR REPLACE INTO measurements (id, weight, bmi, bodyFatPercentage, fatMass, musclePercentage, muscleMass, visceralFat, bmr, measuredAt, createdAt, updatedAt, syncStatus) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, - [m.id, m.weight, m.bmi, m.bodyFatPercentage, m.fatMass, m.musclePercentage, m.muscleMass, m.visceralFat, m.bmr, m.measuredAt, m.createdAt, m.updatedAt, m.syncStatus] + `INSERT OR REPLACE INTO measurements (id, weight, bmi, bodyFatPercentage, fatMass, musclePercentage, muscleMass, visceralFat, bmr, measuredAt, createdAt, updatedAt, syncStatus, deletedAt) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, + [m.id, m.weight, m.bmi, m.bodyFatPercentage, m.fatMass, m.musclePercentage, m.muscleMass, m.visceralFat, m.bmr, m.measuredAt, m.createdAt, m.updatedAt, m.syncStatus, m.deletedAt ?? null] ) } -export async function getUnsyncedMeasurements(): Promise { - const rows = await db!.getAllAsync( - "SELECT * FROM measurements WHERE syncStatus = 'local' ORDER BY updatedAt ASC" - ) - return rows as Measurement[] -} - export async function deleteMeasurement(id: string): Promise { await db!.runAsync('DELETE FROM measurements WHERE id = ?', [id]) } + +export async function getMeasurementsUpdatedSince(since: string): Promise { + const rows = await db!.getAllAsync( + 'SELECT * FROM measurements WHERE updatedAt > ? ORDER BY updatedAt ASC', + [since] + ) + return rows as Measurement[] +} + +export async function setDeletedAt(id: string): Promise { + await db!.runAsync( + 'UPDATE measurements SET deletedAt = ? WHERE id = ?', + [new Date().toISOString(), id] + ) +} + +export async function removeMeasurement(id: string): Promise { + await db!.runAsync('DELETE FROM measurements WHERE id = ?', [id]) +} From 4b7b7e3d5ca33132ab40531052cf8baa15d72f0e Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 16:58:55 +0200 Subject: [PATCH 06/29] =?UTF-8?q?db:=20fix=20insertMeasurement/upsertMeasu?= =?UTF-8?q?rement=20=E2=80=94=20remove=20syncStatus=20param?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plans/2026-07-20-rest-api-sync-plan.md | 1285 +++++++++++++++++ .../specs/2026-07-20-rest-api-sync-design.md | 266 ++++ src/database/db.ts | 12 +- upgrade.md | 140 ++ 4 files changed, 1697 insertions(+), 6 deletions(-) create mode 100644 docs/superpowers/plans/2026-07-20-rest-api-sync-plan.md create mode 100644 docs/superpowers/specs/2026-07-20-rest-api-sync-design.md create mode 100644 upgrade.md diff --git a/docs/superpowers/plans/2026-07-20-rest-api-sync-plan.md b/docs/superpowers/plans/2026-07-20-rest-api-sync-plan.md new file mode 100644 index 0000000..7e4460c --- /dev/null +++ b/docs/superpowers/plans/2026-07-20-rest-api-sync-plan.md @@ -0,0 +1,1285 @@ +# REST API Sync — Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Vervang WebDAV-sync door een eigen REST API op `weegschaal.eddydevink.nl` met MariaDB en Bearer token auth. Incrementele delta-sync op basis van `updatedAt`/`deletedAt` timestamps — standaard sync patroon zonder syncStatus veld. + +**Architecture:** Server: PHP API (Slim 4) op nextcloud met nginx + MariaDB, soft deletes via `deleted` flag. Client: fetch() met Bearer token, delta-sync via `?since=lastSyncAt`, last-writer-wins merge, push van alle lokale records met `updatedAt > lastSyncAt`. `deletedAt` veld voor offline delete resilience. + +**Tech Stack:** PHP 8 + Slim 4 + PDO/MySQL, nginx, certbot, expo-sqlite, expo-secure-store, TypeScript, Jest + +--- + +## File Structure + +``` +nextcloud server: + /etc/nginx/conf.d/weegschaal-api.conf ← NEW + /usr/share/nginx/html/weegschaal-api/ ← NEW directory + composer.json + public/index.php + src/Database.php + src/Auth.php + src/Measurements.php + src/helpers.php + config.php + +app (weegschaal-app): + src/types.ts ← MODIFY (WebDAVConfig→ApiConfig, SyncStatus weg, +deletedAt) + src/sync/api.ts ← NEW + src/sync/syncService.ts ← REWRITE + src/screens/SettingsScreen.tsx ← MODIFY (WebDAV→API form) + src/screens/NewMeasurementScreen.tsx ← MODIFY (direct push) + src/screens/MeasurementDetailScreen.tsx ← MODIFY (soft delete via deletedAt) + src/screens/HistoryScreen.tsx ← MODIFY (filter deletedAt, soft delete) + src/screens/DashboardScreen.tsx ← MODIFY (filter deletedAt) + src/database/db.ts ← MODIFY (+deletedAt column, +setDeletedAt, +getUpdatedSince) + tests/syncService.test.ts ← REWRITE +``` + +--- + +### Task 1: SSH naar nextcloud — nginx + certbot + +**Files:** +- Create: `/etc/nginx/conf.d/weegschaal-api.conf` (remote) + +- [ ] **Step 1: SSH naar nextcloud, check PHP-FPM socket** + +```bash +ssh aiaiaiaiagent@nextcloud "ls /run/php-fpm/ && php -v && which composer" +``` + +Noteer de socket naam (bv. `www.sock`). Als composer ontbreekt: `sudo -A dnf install -y composer`. + +- [ ] **Step 2: Schrijf nginx config** + +```bash +ssh aiaiaiaiagent@nextcloud 'sudo -A tee /etc/nginx/conf.d/weegschaal-api.conf' <<'EOF' +server { + listen 80; + server_name weegschaal.eddydevink.nl; + root /usr/share/nginx/html/weegschaal-api/public; + + index index.php; + + location / { + try_files $uri /index.php$is_args$args; + } + + location ~ \.php$ { + include fastcgi_params; + fastcgi_pass unix:/run/php-fpm/www.sock; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + } +} +EOF +``` + +Pas `fastcgi_pass` aan naar stap 1 resultaat indien nodig. + +- [ ] **Step 3: Maak document root, zet permissies** + +```bash +ssh aiaiaiaiagent@nextcloud 'sudo -A mkdir -p /usr/share/nginx/html/weegschaal-api/public /usr/share/nginx/html/weegschaal-api/src && sudo -A chown -R aiaiaiaiagent:aiaiaiaiagent /usr/share/nginx/html/weegschaal-api' +``` + +- [ ] **Step 4: SELinux context** + +```bash +ssh aiaiaiaiagent@nextcloud 'sudo -A restorecon -R /usr/share/nginx/html/weegschaal-api' +``` + +- [ ] **Step 5: Test nginx config en herlaad** + +```bash +ssh aiaiaiaiagent@nextcloud 'sudo -A nginx -t && sudo -A systemctl reload nginx' +``` + +- [ ] **Step 6: Certbot SSL** + +```bash +ssh aiaiaiaiagent@nextcloud 'sudo -A certbot --nginx -d weegschaal.eddydevink.nl' +``` + +--- + +### Task 2: MariaDB setup + +- [ ] **Step 1: Bepaal MySQL auth op nextcloud** + +```bash +ssh aiaiaiaiagent@nextcloud 'sudo -A mysql -e "SELECT 1"' +``` + +- [ ] **Step 2: Genereer credentials lokaal** + +```bash +DB_PASS=$(openssl rand -hex 16) && echo "DB_PASS=$DB_PASS" +APP_TOKEN=$(openssl rand -hex 32) && echo "APP_TOKEN=$APP_TOKEN" +``` + +Sla beide op in `/tmp/weegschaal-credentials.txt` (tijdelijk, wordt later in de app gezet): + +```bash +echo "URL=https://weegschaal.eddydevink.nl" > /tmp/weegschaal-credentials.txt +echo "TOKEN=$APP_TOKEN" >> /tmp/weegschaal-credentials.txt +``` + +- [ ] **Step 3: Database, gebruiker, tabellen** + +```bash +ssh aiaiaiaiagent@nextcloud "sudo -A mysql" < /usr/share/nginx/html/weegschaal-api/composer.json' <<'EOF' +{ + "name": "eddy/weegschaal-api", + "type": "project", + "require": { + "php": ">=8.0", + "slim/slim": "^4.0", + "slim/psr7": "^1.0" + }, + "autoload": { + "psr-4": { + "Weegschaal\\": "src/" + } + } +} +EOF +``` + +- [ ] **Step 2: composer install** + +```bash +ssh aiaiaiaiagent@nextcloud 'cd /usr/share/nginx/html/weegschaal-api && composer install' +``` + +- [ ] **Step 3: config.php** + +```bash +ssh aiaiaiaiagent@nextcloud 'cat > /usr/share/nginx/html/weegschaal-api/config.php' < [ + 'host' => 'localhost', + 'port' => 3306, + 'name' => 'weegschaal', + 'user' => 'weegschaal', + 'pass' => '$DB_PASS', + ], +]; +EOF +``` + +- [ ] **Step 4: src/Database.php** + +```bash +ssh aiaiaiaiagent@nextcloud 'cat > /usr/share/nginx/html/weegschaal-api/src/Database.php' <<'EOF' + PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::ATTR_EMULATE_PREPARES => false, + ]); + } + return self::$instance; + } +} +EOF +``` + +- [ ] **Step 5: src/helpers.php** + +```bash +ssh aiaiaiaiagent@nextcloud 'cat > /usr/share/nginx/html/weegschaal-api/src/helpers.php' <<'EOF' +getBody()->write($body); + return $response->withHeader('Content-Type', 'application/json')->withStatus($status); +} + +function errorResponse(Response $response, string $message, int $status): Response +{ + return jsonResponse($response, ['error' => $message], $status); +} + +function rowToMeasurement(array $row): array +{ + return [ + 'id' => $row['id'], + 'weight' => (float)$row['weight'], + 'bmi' => (float)$row['bmi'], + 'bodyFatPercentage' => (float)$row['body_fat_percentage'], + 'fatMass' => (float)$row['fat_mass'], + 'musclePercentage' => (float)$row['muscle_percentage'], + 'muscleMass' => (float)$row['muscle_mass'], + 'visceralFat' => (int)$row['visceral_fat'], + 'bmr' => (float)$row['bmr'], + 'measuredAt' => $row['measured_at'], + 'createdAt' => $row['created_at'], + 'updatedAt' => $row['updated_at'], + 'deleted' => (bool)$row['deleted'], + ]; +} +EOF +``` + +--- + +### Task 4: PHP Auth middleware + +**Files:** +- Create: `src/Auth.php` (remote) + +- [ ] **Step 1: src/Auth.php** + +```bash +ssh aiaiaiaiagent@nextcloud 'cat > /usr/share/nginx/html/weegschaal-api/src/Auth.php' <<'EOF' +getHeaderLine('Authorization'); + if (!preg_match('/^Bearer\s+(.+)$/', $header, $matches)) { + return errorResponse(new SlimResponse(), 'Authenticatie vereist', 401); + } + $stmt = Database::get()->prepare('SELECT user_id FROM auth_tokens WHERE token = ?'); + $stmt->execute([$matches[1]]); + $row = $stmt->fetch(); + if (!$row) { + return errorResponse(new SlimResponse(), 'Ongeldige token', 401); + } + return $handler->handle($request->withAttribute('user_id', (int)$row['user_id'])); + } +} +EOF +``` + +--- + +### Task 5: PHP Measurements controller + +**Files:** +- Create: `src/Measurements.php` (remote) + +- [ ] **Step 1: src/Measurements.php** + +```bash +ssh aiaiaiaiagent@nextcloud 'cat > /usr/share/nginx/html/weegschaal-api/src/Measurements.php' <<'EOF' +getAttribute('user_id'); + $params = $request->getQueryParams(); + $db = Database::get(); + + if (!empty($params['since'])) { + $stmt = $db->prepare( + 'SELECT * FROM measurements WHERE user_id = ? AND updated_at > ? ORDER BY updated_at ASC' + ); + $stmt->execute([$userId, $params['since']]); + } else { + $stmt = $db->prepare( + 'SELECT * FROM measurements WHERE user_id = ? ORDER BY updated_at ASC' + ); + $stmt->execute([$userId]); + } + + $rows = $stmt->fetchAll(); + $data = array_map('\Weegschaal\rowToMeasurement', $rows); + return jsonResponse($response, $data); + } + + public function create(Request $request, Response $response): Response + { + $userId = $request->getAttribute('user_id'); + $body = $request->getParsedBody(); + if (!is_array($body)) { + return errorResponse($response, 'Ongeldige JSON', 400); + } + + $db = Database::get(); + $stmt = $db->prepare( + 'INSERT INTO measurements + (id, user_id, weight, bmi, body_fat_percentage, fat_mass, + muscle_percentage, muscle_mass, visceral_fat, bmr, + measured_at, created_at, updated_at) + VALUES + (:id, :user_id, :weight, :bmi, :body_fat_percentage, :fat_mass, + :muscle_percentage, :muscle_mass, :visceral_fat, :bmr, + :measured_at, :created_at, :updated_at) + ON DUPLICATE KEY UPDATE + weight = VALUES(weight), bmi = VALUES(bmi), + body_fat_percentage = VALUES(body_fat_percentage), + fat_mass = VALUES(fat_mass), + muscle_percentage = VALUES(muscle_percentage), + muscle_mass = VALUES(muscle_mass), + visceral_fat = VALUES(visceral_fat), + bmr = VALUES(bmr), + measured_at = VALUES(measured_at), + updated_at = VALUES(updated_at), + deleted = 0' + ); + + $stmt->execute([ + ':id' => $body['id'], + ':user_id' => $userId, + ':weight' => $body['weight'], + ':bmi' => $body['bmi'], + ':body_fat_percentage' => $body['bodyFatPercentage'], + ':fat_mass' => $body['fatMass'], + ':muscle_percentage' => $body['musclePercentage'], + ':muscle_mass' => $body['muscleMass'], + ':visceral_fat' => $body['visceralFat'], + ':bmr' => $body['bmr'], + ':measured_at' => substr($body['measuredAt'], 0, 10), + ':created_at' => $body['createdAt'], + ':updated_at' => $body['updatedAt'], + ]); + + return jsonResponse($response, $body, 201); + } + + public function delete(Request $request, Response $response, array $args): Response + { + $userId = $request->getAttribute('user_id'); + $id = $args['id']; + $db = Database::get(); + $stmt = $db->prepare( + 'UPDATE measurements SET deleted = 1, updated_at = NOW() WHERE user_id = ? AND id = ?' + ); + $stmt->execute([$userId, $id]); + return jsonResponse($response, ['deleted' => $id]); + } +} +EOF +``` + +--- + +### Task 6: PHP Entry point + +**Files:** +- Create: `public/index.php` (remote) + +- [ ] **Step 1: public/index.php** + +```bash +ssh aiaiaiaiagent@nextcloud 'cat > /usr/share/nginx/html/weegschaal-api/public/index.php' <<'EOF' +addErrorMiddleware(false, true, true); + +$app->get('/api/v1/measurements', [Measurements::class, 'list'])->add(new Auth()); +$app->post('/api/v1/measurements', [Measurements::class, 'create'])->add(new Auth()); +$app->delete('/api/v1/measurements/{id}', [Measurements::class, 'delete'])->add(new Auth()); + +$app->run(); +EOF +``` + +--- + +### Task 7: Test API met curl + +- [ ] **Step 1: GET measurements (lege lijst)** + +```bash +curl -s https://weegschaal.eddydevink.nl/api/v1/measurements \ + -H "Authorization: Bearer $APP_TOKEN" +``` +Expected: `200` met `[]` + +- [ ] **Step 2: POST nieuwe meting** + +```bash +curl -s -X POST https://weegschaal.eddydevink.nl/api/v1/measurements \ + -H "Authorization: Bearer $APP_TOKEN" \ + -H "Content-Type: application/json" \ + -d "{ + \"id\": \"test-$(date +%s)\", + \"weight\": 75.5, + \"bmi\": 22.3, + \"bodyFatPercentage\": 15.2, + \"fatMass\": 11.5, + \"musclePercentage\": 40.1, + \"muscleMass\": 30.3, + \"visceralFat\": 8, + \"bmr\": 1650, + \"measuredAt\": \"2026-07-20T08:00:00.000Z\", + \"createdAt\": \"2026-07-20T08:00:00.000Z\", + \"updatedAt\": \"2026-07-20T08:00:00.000Z\" + }" +``` +Expected: `201` + +- [ ] **Step 3: GET met since** + +```bash +curl -s "https://weegschaal.eddydevink.nl/api/v1/measurements?since=2020-01-01T00:00:00Z" \ + -H "Authorization: Bearer $APP_TOKEN" | python3 -m json.tool +``` +Expected: array met de test meting + +- [ ] **Step 4: Test 401** + +```bash +curl -s -o /dev/null -w "%{http_code}" https://weegschaal.eddydevink.nl/api/v1/measurements +``` +Expected: `401` + +--- + +### Task 8: Client — Update types.ts + +**Files:** +- Modify: `src/types.ts` + +- [ ] **Step 1: Vervang types** + +Vervang volledige inhoud van `src/types.ts`: + +```typescript +export type Measurement = { + id: string + weight: number + bmi: number + bodyFatPercentage: number + fatMass: number + musclePercentage: number + muscleMass: number + visceralFat: number + bmr: number + measuredAt: string + createdAt: string + updatedAt: string + deletedAt?: string +} + +export type ApiConfig = { + url: string + token: string +} +``` + +- [ ] **Step 2: Check TypeScript** + +```bash +cd /home/eddy/bin/weegschaal-app && npx tsc --noEmit +``` +Expected: fouten vanwege verwijzingen naar `WebDAVConfig` en `syncStatus` in andere files — normaal, wordt in volgende tasks opgelost. + +- [ ] **Step 3: Commit** + +```bash +git add src/types.ts +git commit -m "types: vervang WebDAVConfig door ApiConfig, verwijder SyncStatus, voeg deletedAt toe" +``` + +--- + +### Task 9: Client — Create src/sync/api.ts + +**Files:** +- Create: `src/sync/api.ts` + +- [ ] **Step 1: Schrijf api.ts** + +```typescript +import { Measurement } from '../types' +import { ApiConfig } from '../types' + +export class ApiError extends Error { + status: number + constructor(message: string, status: number) { + super(message) + this.name = 'ApiError' + this.status = status + } +} + +function authHeaders(token: string): Record { + return { + Authorization: `Bearer ${token}`, + 'Content-Type': 'application/json', + } +} + +export type Api = ReturnType + +export function createApi(config: ApiConfig) { + const base = config.url.replace(/\/+$/, '') + + return { + async getMeasurements(since?: string): Promise { + let url = `${base}/api/v1/measurements` + if (since) { + url += `?since=${encodeURIComponent(since)}` + } + const response = await fetch(url, { + headers: { Authorization: `Bearer ${config.token}` }, + }) + if (response.status === 401) { + throw new ApiError('Authenticatie mislukt. Controleer je token in Instellingen.', 401) + } + if (!response.ok) { + throw new ApiError(`Serverfout bij ophalen metingen: ${response.status}`, response.status) + } + return response.json() + }, + + async createMeasurement(m: Measurement): Promise { + const response = await fetch(`${base}/api/v1/measurements`, { + method: 'POST', + headers: authHeaders(config.token), + body: JSON.stringify(m), + }) + if (response.status === 401) { + throw new ApiError('Authenticatie mislukt. Controleer je token in Instellingen.', 401) + } + if (!response.ok) { + throw new ApiError(`Serverfout bij opslaan meting: ${response.status}`, response.status) + } + }, + + async deleteMeasurement(id: string): Promise { + const response = await fetch(`${base}/api/v1/measurements/${id}`, { + method: 'DELETE', + headers: { Authorization: `Bearer ${config.token}` }, + }) + if (response.status === 401) { + throw new ApiError('Authenticatie mislukt. Controleer je token in Instellingen.', 401) + } + if (!response.ok) { + throw new ApiError(`Serverfout bij verwijderen meting: ${response.status}`, response.status) + } + }, + } +} +``` + +- [ ] **Step 2: Commit** + +```bash +git add src/sync/api.ts +git commit -m "feat: REST API client module" +``` + +--- + +### Task 10: Client — Rewrite src/sync/syncService.ts + +**Files:** +- Modify: `src/sync/syncService.ts` + +- [ ] **Step 1: Volledige herschrijving** + +```typescript +import { Measurement } from '../types' +import { + initDatabase, + getAllMeasurements, + upsertMeasurement, + getMeasurementsUpdatedSince, + removeMeasurement, +} from '../database/db' +import { createApi, ApiError } from './api' +import * as SecureStore from 'expo-secure-store' + +const LAST_SYNC_KEY = 'weegschaal_last_sync' + +export function mergeMeasurements(local: Measurement[], remote: Measurement[]): Measurement[] { + const map = new Map() + + for (const m of local) { + map.set(m.id, m) + } + + for (const r of remote) { + const existing = map.get(r.id) + if (!existing || new Date(r.updatedAt) > new Date(existing.updatedAt)) { + map.set(r.id, { + ...r, + deletedAt: r.deletedAt || undefined, + } as Measurement) + } + } + + return Array.from(map.values()) +} + +export async function uploadMeasurement(m: Measurement): Promise { + const { getApiConfig } = await import('../screens/SettingsScreen') + const config = await getApiConfig() + if (!config) throw new Error('Geen API configuratie. Stel deze eerst in in Instellingen.') + const api = createApi(config) + await api.createMeasurement(m) +} + +export async function syncAll(): Promise<{ pushed: number; deleted: number; pulled: number }> { + const { getApiConfig } = await import('../screens/SettingsScreen') + const config = await getApiConfig() + if (!config) throw new Error('Geen API configuratie. Stel deze eerst in in Instellingen.') + + const api = createApi(config) + await initDatabase() + + const lastSyncAt = await SecureStore.getItemAsync(LAST_SYNC_KEY) + + const remote = await api.getMeasurements(lastSyncAt || undefined) + const local = await getAllMeasurements() + + const merged = mergeMeasurements(local, remote) + + for (const m of merged) { + await upsertMeasurement(m) + } + + const since = lastSyncAt || '1970-01-01T00:00:00.000Z' + const updated = await getMeasurementsUpdatedSince(since) + + let pushed = 0 + let deleted = 0 + + await Promise.allSettled( + updated.map(async m => { + if (m.deletedAt && m.deletedAt > since) { + try { + await api.deleteMeasurement(m.id) + await removeMeasurement(m.id) + deleted++ + } catch {} + } else { + try { + await api.createMeasurement(m) + pushed++ + } catch {} + } + }) + ) + + await SecureStore.setItemAsync(LAST_SYNC_KEY, new Date().toISOString()) + + return { pushed, deleted, pulled: remote.length } +} +``` + +- [ ] **Step 2: Commit** + +```bash +git add src/sync/syncService.ts +git commit -m "sync: herschrijf syncService voor timestamp-based REST sync" +``` + +--- + +### Task 11: Client — Update src/database/db.ts + +**Files:** +- Modify: `src/database/db.ts` + +- [ ] **Step 1: Voeg deletedAt kolom toe, nieuwe functies** + +Huidige `db.ts` lezen en alle wijzigingen toepassen: + +**Schema wijziging** — voeg `deletedAt TEXT` toe na `syncStatus TEXT` in CREATE TABLE: + +```typescript +await db.execAsync(` + CREATE TABLE IF NOT EXISTS measurements ( + id TEXT PRIMARY KEY, + weight REAL NOT NULL, + bmi REAL NOT NULL, + bodyFatPercentage REAL NOT NULL, + fatMass REAL NOT NULL, + musclePercentage REAL NOT NULL, + muscleMass REAL NOT NULL, + visceralFat INTEGER NOT NULL, + bmr REAL NOT NULL, + measuredAt TEXT NOT NULL, + createdAt TEXT NOT NULL, + updatedAt TEXT NOT NULL, + deletedAt TEXT, + syncStatus TEXT NOT NULL DEFAULT 'local' + ); +`) +``` + +**Verwijder** `updateMeasurement`, `getUnsyncedMeasurements`. Houd `deleteMeasurement` voor backward compat (wordt niet meer geëxporteerd). + +**Voeg toe** onderaan: + +```typescript +export async function getMeasurementsUpdatedSince(since: string): Promise { + const rows = await db!.getAllAsync( + 'SELECT * FROM measurements WHERE updatedAt > ? ORDER BY updatedAt ASC', + [since] + ) + return rows as Measurement[] +} + +export async function setDeletedAt(id: string): Promise { + await db!.runAsync( + 'UPDATE measurements SET deletedAt = ? WHERE id = ?', + [new Date().toISOString(), id] + ) +} + +export async function removeMeasurement(id: string): Promise { + await db!.runAsync('DELETE FROM measurements WHERE id = ?', [id]) +} +``` + +- [ ] **Step 2: Controleer dat insertMeasurement het deletedAt veld ook invult** + +`insertMeasurement` moet `deletedAt` opnemen in INSERT (NULL voor nieuwe metingen): + +```typescript +export async function insertMeasurement(m: Measurement): Promise { + await db!.runAsync( + `INSERT INTO measurements (id, weight, bmi, bodyFatPercentage, fatMass, musclePercentage, muscleMass, visceralFat, bmr, measuredAt, createdAt, updatedAt, deletedAt) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, + [m.id, m.weight, m.bmi, m.bodyFatPercentage, m.fatMass, m.musclePercentage, m.muscleMass, m.visceralFat, m.bmr, m.measuredAt, m.createdAt, m.updatedAt, m.deletedAt ?? null] + ) +} +``` + +En `upsertMeasurement`: + +```typescript +export async function upsertMeasurement(m: Measurement): Promise { + await db!.runAsync( + `INSERT OR REPLACE INTO measurements (id, weight, bmi, bodyFatPercentage, fatMass, musclePercentage, muscleMass, visceralFat, bmr, measuredAt, createdAt, updatedAt, deletedAt) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, + [m.id, m.weight, m.bmi, m.bodyFatPercentage, m.fatMass, m.musclePercentage, m.muscleMass, m.visceralFat, m.bmr, m.measuredAt, m.createdAt, m.updatedAt, m.deletedAt ?? null] + ) +} +``` + +- [ ] **Step 3: Check TypeScript** + +```bash +cd /home/eddy/bin/weegschaal-app && npx tsc --noEmit +``` + +- [ ] **Step 4: Commit** + +```bash +git add src/database/db.ts +git commit -m "db: voeg deletedAt kolom toe, nieuwe sync-gerelateerde functies" +``` + +--- + +### Task 12: Client — Update SettingsScreen + +**Files:** +- Modify: `src/screens/SettingsScreen.tsx` + +- [ ] **Step 1: Vervang WebDAV form door API form** + +```tsx +import React, { useEffect, useState } from 'react' +import { View, Text, TextInput, TouchableOpacity, StyleSheet, Alert, ScrollView } from 'react-native' +import * as SecureStore from 'expo-secure-store' +import { ApiConfig } from '../types' + +const CONFIG_KEY = 'weegschaal_api_config' + +async function loadConfig(): Promise { + try { + const json = await SecureStore.getItemAsync(CONFIG_KEY) + return json ? JSON.parse(json) : null + } catch { + return null + } +} + +async function saveConfig(config: ApiConfig): Promise { + await SecureStore.setItemAsync(CONFIG_KEY, JSON.stringify(config)) +} + +async function deleteConfig(): Promise { + await SecureStore.deleteItemAsync(CONFIG_KEY) +} + +export async function getApiConfig(): Promise { + return loadConfig() +} + +export default function SettingsScreen() { + const [url, setUrl] = useState('https://weegschaal.eddydevink.nl') + const [token, setToken] = useState('') + const [showToken, setShowToken] = useState(false) + const [syncing, setSyncing] = useState(false) + + useEffect(() => { + loadConfig().then(c => { + if (c) { setUrl(c.url); setToken(c.token) } + }) + }, []) + + const handleSave = async () => { + await saveConfig({ url, token }) + Alert.alert('Opgeslagen', 'API instellingen zijn opgeslagen') + } + + const handleClear = () => { + Alert.alert('Instellingen wissen?', 'API configuratie definitief verwijderen?', [ + { text: 'Annuleren', style: 'cancel' }, + { text: 'Ja, wissen', style: 'destructive', onPress: async () => { + await deleteConfig(); setUrl(''); setToken('') + }}, + ]) + } + + const handleSync = async () => { + setSyncing(true) + try { + const { syncAll } = await import('../sync/syncService') + const result = await syncAll() + Alert.alert('Sync voltooid', `Opgehaald: ${result.pulled}, gepusht: ${result.pushed}, verwijderd: ${result.deleted}`) + } catch (e: any) { + Alert.alert('Sync fout', e?.message ?? 'Onbekende fout') + } finally { + setSyncing(false) + } + } + + return ( + + REST API + API URL + + Token + + + setShowToken(!showToken)}> + {showToken ? 'O' : 'O'} + + + + Instellingen opslaan + + + Instellingen wissen + + + {syncing ? 'Bezig met sync...' : 'Nu synchroniseren'} + + + ) +} + +const styles = StyleSheet.create({ + container: { flex: 1, backgroundColor: '#f5f5f5' }, + content: { padding: 16 }, + sectionTitle: { fontSize: 18, fontWeight: '700', marginBottom: 16 }, + label: { fontSize: 14, fontWeight: '600', color: '#333', marginBottom: 4, marginTop: 12 }, + input: { backgroundColor: '#fff', borderRadius: 8, padding: 12, fontSize: 16, borderWidth: 1, borderColor: '#ddd' }, + passwordRow: { flexDirection: 'row', alignItems: 'center', backgroundColor: '#fff', borderRadius: 8, borderWidth: 1, borderColor: '#ddd' }, + passwordInput: { flex: 1, padding: 12, fontSize: 16 }, + eyeButton: { padding: 12 }, + eyeIcon: { fontSize: 20 }, + saveButton: { backgroundColor: '#4CAF50', padding: 14, borderRadius: 8, alignItems: 'center', marginTop: 24 }, + clearButton: { padding: 14, borderRadius: 8, alignItems: 'center', alignSelf: 'stretch', marginTop: 8 }, + clearButtonText: { color: '#e53935', fontSize: 14 }, + syncButton: { backgroundColor: '#2196F3', padding: 14, borderRadius: 8, alignItems: 'center', marginTop: 24 }, + syncButtonDisabled: { opacity: 0.6 }, + buttonText: { color: '#fff', fontSize: 16, fontWeight: '700' }, +}) +``` + +- [ ] **Step 2: Commit** + +```bash +git add src/screens/SettingsScreen.tsx +git commit -m "settings: vervang WebDAV configuratie door REST API configuratie" +``` + +--- + +### Task 13: Client — Update NewMeasurementScreen + +**Files:** +- Modify: `src/screens/NewMeasurementScreen.tsx` + +- [ ] **Step 1: Pas doSave aan voor directe push** + +In `doSave`, gebruik `uploadMeasurement` i.p.v. `syncAll`: + +Huidige file lezen en de `doSave` functie vervangen door: + +```typescript +const doSave = async (m: Measurement) => { + try { + await uploadMeasurement(m) + Alert.alert('Opgeslagen & gesynct', 'Meting is opgeslagen en gesynchroniseerd', [ + { text: 'OK', onPress: () => navigation.goBack() }, + ]) + } catch { + Alert.alert('Opgeslagen', 'Meting is opgeslagen (sync mislukt)', [ + { text: 'OK', onPress: () => navigation.goBack() }, + ]) + } +} +``` + +En de import aanpassen: `import { uploadMeasurement } from '../sync/syncService'` toevoegen, `syncAll` import verwijderen. + +In `handleSubmit`: na insert/upsert (die `syncStatus: 'local'` niet meer zet — moet `syncStatus` überhaupt nog? Nee, het veld bestaat niet meer in het type). Dus: + +Het MeasurementForm zet nu geen `syncStatus` meer omdat het type dat veld niet meer heeft. We moeten `MeasurementForm.tsx` aanpassen. + +**MeasurementForm.tsx wijziging** — verwijder `syncStatus: 'local'` uit de `submit` functie. Lees het bestand en verwijder die regel. + +- [ ] **Step 2: Pas MeasurementForm aan** + +Huidig: `syncStatus: 'local'` in de submit. Verwijder die regel. Form submit returned nu een Measurement zonder syncStatus. + +- [ ] **Step 3: Check TypeScript** + +```bash +cd /home/eddy/bin/weegschaal-app && npx tsc --noEmit +``` + +- [ ] **Step 4: Commit** + +```bash +git add src/screens/NewMeasurementScreen.tsx src/components/MeasurementForm.tsx +git commit -m "save: directe uploadMeasurement push, verwijder syncStatus uit MeasurementForm" +``` + +--- + +### Task 14: Client — Update MeasurementDetailScreen + +**Files:** +- Modify: `src/screens/MeasurementDetailScreen.tsx` + +- [ ] **Step 1: Soft delete via deletedAt** + +In `MeasurementDetailScreen.tsx`: + +Imports aanpassen: +- Verwijder `deleteMeasurement`, voeg `setDeletedAt`, `removeMeasurement` toe van `../database/db` +- Voeg `createApi` toe van `../sync/api` +- Import `getApiConfig` van `./SettingsScreen` (of `../screens/SettingsScreen`) + +Vervang `handleDelete`: + +```typescript +const handleDelete = () => { + Alert.alert('Meting verwijderen?', 'Dit kan niet ongedaan worden gemaakt.', [ + { text: 'Annuleren', style: 'cancel' }, + { + text: 'Verwijderen', + style: 'destructive', + onPress: async () => { + await initDatabase() + await setDeletedAt(measurementId) + try { + const config = await getApiConfig() + if (config) { + await createApi(config).deleteMeasurement(measurementId) + await removeMeasurement(measurementId) + } + } catch {} + navigation.goBack() + }, + }, + ]) +} +``` + +- [ ] **Step 2: Commit** + +```bash +git add src/screens/MeasurementDetailScreen.tsx +git commit -m "detail: soft delete via deletedAt i.p.v. syncStatus" +``` + +--- + +### Task 15: Client — Update HistoryScreen + DashboardScreen + +**Files:** +- Modify: `src/screens/HistoryScreen.tsx` +- Modify: `src/screens/DashboardScreen.tsx` + +- [ ] **Step 1: HistoryScreen — filter + soft delete** + +In `HistoryScreen.tsx`, `load` functie: + +```typescript +const load = useCallback(async () => { + await initDatabase() + const all = await getAllMeasurements() + setMeasurements(all.filter(m => !m.deletedAt)) +}, []) +``` + +`confirmDelete` aanpassen: + +```typescript +const confirmDelete = (m: Measurement) => { + const date = new Date(m.measuredAt).toLocaleDateString('nl-NL') + Alert.alert('Verwijderen?', `Meting van ${date} definitief verwijderen?`, [ + { text: 'Annuleren', style: 'cancel' }, + { + text: 'Ja, verwijderen', + style: 'destructive', + onPress: async () => { + await initDatabase() + await setDeletedAt(m.id) + try { + const config = await getApiConfig() + if (config) { + await createApi(config).deleteMeasurement(m.id) + await removeMeasurement(m.id) + } + } catch {} + load() + }, + }, + ]) +} +``` + +Imports updaten: +- Verwijder `deleteMeasurement`, voeg `setDeletedAt`, `removeMeasurement` toe van `../database/db` +- Voeg `createApi` toe van `../sync/api` +- Import `getApiConfig` van `../screens/SettingsScreen` + +- [ ] **Step 2: DashboardScreen — filter deleted** + +In `DashboardScreen.tsx`, `load` functie: + +```typescript +const load = async () => { + await initDatabase() + const allM = await getAllMeasurements() + const visible = allM.filter(m => !m.deletedAt) + setAll(visible) + setLatest(visible.length > 0 ? visible[0] : null) +} +``` + +- [ ] **Step 3: Commit** + +```bash +git add src/screens/HistoryScreen.tsx src/screens/DashboardScreen.tsx +git commit -m "ui: filter deletedAt in History en Dashboard, soft delete in History" +``` + +--- + +### Task 16: Client — Update tests + +**Files:** +- Modify: `tests/syncService.test.ts` + +- [ ] **Step 1: Herschrijf tests** + +```typescript +import { mergeMeasurements } from '../src/sync/syncService' +import { Measurement } from '../src/types' + +jest.mock('expo-sqlite', () => ({ openDatabaseAsync: jest.fn() })) + +const make = (overrides: Partial = {}): Measurement => ({ + id: 'id-1', weight: 75, bmi: 22, bodyFatPercentage: 15, fatMass: 10, + musclePercentage: 40, muscleMass: 30, visceralFat: 8, bmr: 1600, + measuredAt: '2024-06-01T08:00:00.000Z', createdAt: '2024-06-01T08:00:00.000Z', + updatedAt: '2024-06-01T08:00:00.000Z', ...overrides, +}) + +describe('mergeMeasurements', () => { + it('both empty returns empty', () => { + expect(mergeMeasurements([], [])).toEqual([]) + }) + + it('local only kept', () => { + const r = mergeMeasurements([make()], []) + expect(r).toHaveLength(1) + }) + + it('remote only kept', () => { + const r = mergeMeasurements([], [make({ id: 'r1' })]) + expect(r).toHaveLength(1) + expect(r[0].id).toBe('r1') + }) + + it('last-writer-wins: remote newer', () => { + const local = make({ weight: 75, updatedAt: '2024-06-02T08:00:00.000Z' }) + const remote = make({ weight: 76, updatedAt: '2024-06-03T08:00:00.000Z' }) + const r = mergeMeasurements([local], [remote]) + expect(r[0].weight).toBe(76) + }) + + it('last-writer-wins: local newer', () => { + const local = make({ weight: 77, updatedAt: '2024-06-04T08:00:00.000Z' }) + const remote = make({ weight: 76, updatedAt: '2024-06-03T08:00:00.000Z' }) + const r = mergeMeasurements([local], [remote]) + expect(r[0].weight).toBe(77) + }) + + it('remote deleted wins over older local', () => { + const local = make({ updatedAt: '2024-06-01T08:00:00.000Z' }) + const remote = make({ updatedAt: '2024-06-03T08:00:00.000Z', deletedAt: '2024-06-03T08:00:00.000Z' }) + const r = mergeMeasurements([local], [remote]) + expect(r[0].deletedAt).toBe('2024-06-03T08:00:00.000Z') + }) + + it('local wins over older remote deleted', () => { + const local = make({ updatedAt: '2024-06-03T08:00:00.000Z' }) + const remote = make({ updatedAt: '2024-06-01T08:00:00.000Z', deletedAt: '2024-06-01T08:00:00.000Z' }) + const r = mergeMeasurements([local], [remote]) + expect(r[0].deletedAt).toBeUndefined() + }) +}) +``` + +- [ ] **Step 2: Run tests** + +```bash +cd /home/eddy/bin/weegschaal-app && npm test +``` +Expected: 7 PASS + +- [ ] **Step 3: Commit** + +```bash +git add tests/syncService.test.ts +git commit -m "test: herschrijf merge tests voor timestamp-based sync" +``` + +--- + +### Task 17: Build APK + sideload + test + +- [ ] **Step 1: Bouw APK** + +```bash +cd /home/eddy/bin/weegschaal-app && npx eas build --local --profile apk --platform android +``` + +- [ ] **Step 2: Verbind telefoon** + +```bash +adb-wireless-connect +``` + +- [ ] **Step 3: Installeer APK** + +```bash +adb install -r /home/eddy/bin/weegschaal-app/build-*.apk +``` + +- [ ] **Step 4: Stel API configuratie in op de telefoon** + +Open de app → Instellingen → vul `https://weegschaal.eddydevink.nl` en token (uit `/tmp/weegschaal-credentials.txt`) in → Opslaan → Nu synchroniseren. + +- [ ] **Step 5: Commit** + +```bash +# Done +``` diff --git a/docs/superpowers/specs/2026-07-20-rest-api-sync-design.md b/docs/superpowers/specs/2026-07-20-rest-api-sync-design.md new file mode 100644 index 0000000..164cf71 --- /dev/null +++ b/docs/superpowers/specs/2026-07-20-rest-api-sync-design.md @@ -0,0 +1,266 @@ +# REST API Sync — Design Doc + +Vervang WebDAV-sync door een eigen REST API op `weegschaal.eddydevink.nl`, +met MariaDB-backend en Bearer token-authenticatie. Incrementele sync i.p.v. volledig bestand. + +## Fase 1 — Server-side: PHP API + +### Infrastructuur + +- **DNS**: `weegschaal.eddydevink.nl` → zelfde server als `git.eddydevink.nl` (nextcloud) +- **nginx**: server block in `/etc/nginx/conf.d/weegschaal-api.conf`, proxy naar PHP-FPM socket +- **SSL**: `certbot --nginx -d weegschaal.eddydevink.nl` +- **Document root**: `/usr/share/nginx/html/weegschaal-api/` + +### MariaDB + +Database `weegschaal` met gebruiker `weegschaal@localhost` (random wachtwoord). + +```sql +CREATE TABLE users ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(255) NOT NULL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE auth_tokens ( + id INT AUTO_INCREMENT PRIMARY KEY, + user_id INT NOT NULL REFERENCES users(id), + token VARCHAR(64) NOT NULL UNIQUE, + description VARCHAR(255), + created_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE measurements ( + id VARCHAR(36) NOT NULL, + user_id INT NOT NULL, + weight DECIMAL(5,2) NOT NULL, + bmi DECIMAL(4,1) NOT NULL, + body_fat_percentage DECIMAL(4,1) NOT NULL, + fat_mass DECIMAL(5,2) NOT NULL, + muscle_percentage DECIMAL(4,1) NOT NULL, + muscle_mass DECIMAL(5,2) NOT NULL, + visceral_fat TINYINT NOT NULL, + bmr DECIMAL(6,1) NOT NULL, + measured_at DATE NOT NULL, + created_at DATETIME NOT NULL, + updated_at DATETIME NOT NULL, + deleted TINYINT NOT NULL DEFAULT 0, + PRIMARY KEY (user_id, id), + INDEX idx_updated_at (user_id, updated_at) +); +``` + +`deleted` flag voor soft deletes op server. De client stuurt harde DELETEs; +de server zet `deleted=1` en update `updated_at` zodat de volgende `?since=` +query deze doorgeeft zodat andere clients de delete kunnen verwerken. + +### Endpoints (Slim Framework) + +| Methode | Pad | Beschrijving | +|---------|-----|-------------| +| `GET` | `/api/v1/measurements` | Alle metingen (`?since=ISO` voor delta) | +| `POST` | `/api/v1/measurements` | Nieuwe meting of upsert op ID | +| `DELETE` | `/api/v1/measurements/:id` | Meting verwijderen (soft delete) | + +**Geen** auth endpoints — eerste token wordt handmatig via SQL INSERT aangemaakt. + +### Auth middleware + +- `Authorization: Bearer ` → valideert tegen `auth_tokens` tabel +- Zet `user_id` in request context +- 401 bij ongeldige/missing token + +### Bestandsstructuur + +``` +/usr/share/nginx/html/weegschaal-api/ +├── composer.json +├── public/ +│ └── index.php ← Entry point, routing +├── src/ +│ ├── Database.php ← PDO singleton +│ ├── Auth.php ← Token validation middleware +│ ├── Measurements.php ← CRUD + sync queries +│ └── helpers.php +└── config.php ← DB credentials +``` + +### Sync-logica server + +- `GET ?since=ISO` → `WHERE user_id = ? AND updated_at > ? ORDER BY updated_at ASC` +- `POST` → `INSERT ... ON DUPLICATE KEY UPDATE` — upsert op client-ID +- `DELETE` → set `deleted=1`, update `updated_at=NOW()` (soft delete, zodat delta-sync werkt voor andere clients) +- Geretourneerde records bevatten `deleted: true` veld zodat de client weet dat dit een soft-deleted record is + +--- + +## Fase 2 — Client-side: App aanpassen + +### Types (`src/types.ts`) + +`WebDAVConfig` en `SyncStatus` vervallen. Toegevoegd: `ApiConfig`, `deletedAt`: + +```typescript +export type Measurement = { + id: string + weight: number + bmi: number + bodyFatPercentage: number + fatMass: number + musclePercentage: number + muscleMass: number + visceralFat: number + bmr: number + measuredAt: string + createdAt: string + updatedAt: string + deletedAt?: string +} + +export type ApiConfig = { + url: string + token: string +} +``` + +### SettingsScreen (`src/screens/SettingsScreen.tsx`) + +- Vervang URL/username/password door API-URL + token (met oogje) +- SecureStore key: `weegschaal_api_config` +- `getApiConfig()` (exported) i.p.v. `getWebDAVConfig()` +- Sync knop blijft + +### Nieuwe module `src/sync/api.ts` + +```typescript +const createApi = (config: ApiConfig) => ({ + getMeasurements: (since?: string) => GET /api/v1/measurements?since=... + createMeasurement: (m: Measurement) => POST /api/v1/measurements + deleteMeasurement: (id: string) => DELETE /api/v1/measurements/:id +}) +``` + +Alle calls met `Authorization: Bearer ` header. + +### syncService.ts — volledig herschreven + +#### `mergeMeasurements(local, remote)` + +Simpele last-writer-wins op `updatedAt`: + +1. Bouw map van alle IDs (lokaal + remote) +2. Voor elke ID: als beide bestaan → behoud de met de hoogste `updatedAt` +3. Remote metingen die winnen krijgen `deletedAt` overgenomen uit server indien de server record `deleted: true` had + +#### `syncAll()` + +1. Lees `lastSyncAt` uit SecureStore (`weegschaal_last_sync`) +2. `GET /api/v1/measurements?since=lastSyncAt` → remote delta +3. `getAllMeasurements()` → lokale metingen +4. Merge remote delta in lokale DB (last-writer-wins) +5. Verwijder lokale records waar remote `deleted: true` en remote `updatedAt > local updatedAt` +6. Verzamel lokale metingen met `updatedAt > lastSyncAt` (alleen niet-verwijderde) +7. Voor `deletedAt` metingen met `deletedAt > lastSyncAt` → DELETE naar API → bij succes lokaal verwijderen +8. Voor overige metingen met `updatedAt > lastSyncAt` → POST naar API +9. `lastSyncAt = now()` + +#### `uploadMeasurement(m)` + +Losstaande functie voor directe push na opslaan: + +1. POST naar API +2. Bij succes → return +3. Bij netwerkfout → throw; meting blijft lokaal, `syncAll` pakt hem later op (want `updatedAt > lastSyncAt`) + +### NewMeasurementScreen + +1. Lokaal opslaan (insert of upsert, met `updatedAt = now()`) +2. Direct `uploadMeasurement(m)` proberen +3. Bij succes → navigeer terug met "Opgeslagen & gesynct" +4. Bij falen → navigeer terug met "Opgeslagen (sync mislukt)" + +### MeasurementDetailScreen + +Bij delete: +1. Zet `deletedAt = now()` lokaal +2. Fire-and-forget: DELETE API call +3. Bij succes → record lokaal verwijderen +4. Bij falen → record blijft met `deletedAt`, syncAll pakt het op + +### HistoryScreen + +Bij delete (vanuit alert in HistoryScreen): +1. Zet `deletedAt = now()` lokaal +2. Fire-and-forget: DELETE API call +3. Bij succes → record lokaal verwijderen +4. Bij falen → record blijft met `deletedAt` + +Filter bij laden: `!m.deletedAt`. + +### DashboardScreen + +Laatste meting en grafiek: alleen metingen zonder `deletedAt`. +Laatste meting = meest recente `measuredAt` zonder `deletedAt`. + +### Database (`db.ts`) + +Nieuw kolom in schema: `deletedAt TEXT`. + +Nieuwe functies: +- `getMeasurementsUpdatedSince(since: string)` — metingen met `updatedAt > since` +- `setDeletedAt(id: string)` — zet `deletedAt = now()` +- `removeMeasurement(id: string)` — harde delete + +Verwijderd/onbruikbaar: +- `getUnsyncedMeasurements()` — niet meer nodig +- `getPendingMeasurements()` — niet meer nodig +- `markAsDeleted()` — vervangen door `setDeletedAt` +- `syncStatus` kolom — blijft in DB maar wordt niet meer gebruikt in code + +--- + +## Fase 3 — Migratie (eerste sync) + +Eerste keer dat de app de nieuwe API gebruikt (`lastSyncAt` is `null`): +- `GET /api/v1/measurements` (zonder `?since`) → alle remote metingen +- Merge met lokale DB: last-writer-wins, remote deleted overschrijft lokaal +- Alle lokale metingen (die niet deleted zijn) worden gepusht (`updatedAt > null` = alles) +- `lastSyncAt = now()` +- Vanaf dan: delta-sync + +--- + +## Foutafhandeling + +| Situatie | Gedrag | +|----------|--------| +| Geen netwerk bij opslaan | Lokaal opgeslagen, `updatedAt > lastSyncAt` dus next sync pakt op | +| Geen netwerk bij sync | Throw error, scherm toont melding | +| Geen API-config | Throw `'Geen API configuratie. Stel deze eerst in in Instellingen.'` | +| HTTP 401 (ongeldige token) | Throw `'Authenticatie mislukt. Controleer je token in Instellingen.'` | +| HTTP 5xx | Throw met statuscode, scherm toont melding | + +--- + +## Testen + +### Client-side (Jest) + +- `mergeMeasurements()` unit tests: local wins, remote wins, deleted remote vs local +- `api.ts` calls mocken met fetch-mock +- `syncAll()` integratietest met gemockte API + +### Server-side + +- Handmatig testen met curl na deployment + +--- + +## Implementatievolgorde + +1. Server-side: nginx, MariaDB, PHP API → testen met curl +2. Client-side: types, api.ts, db.ts, syncService.ts, SettingsScreen → testen +3. Client-side: DashboardScreen, HistoryScreen, MeasurementDetailScreen, NewMeasurementScreen +4. Client-side: unit tests +5. Build APK, sideloaden, testen op telefoon diff --git a/src/database/db.ts b/src/database/db.ts index f3d8d81..88dfb8a 100644 --- a/src/database/db.ts +++ b/src/database/db.ts @@ -28,9 +28,9 @@ export async function initDatabase(): Promise { export async function insertMeasurement(m: Measurement): Promise { await db!.runAsync( - `INSERT INTO measurements (id, weight, bmi, bodyFatPercentage, fatMass, musclePercentage, muscleMass, visceralFat, bmr, measuredAt, createdAt, updatedAt, syncStatus, deletedAt) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, - [m.id, m.weight, m.bmi, m.bodyFatPercentage, m.fatMass, m.musclePercentage, m.muscleMass, m.visceralFat, m.bmr, m.measuredAt, m.createdAt, m.updatedAt, m.syncStatus, m.deletedAt ?? null] + `INSERT INTO measurements (id, weight, bmi, bodyFatPercentage, fatMass, musclePercentage, muscleMass, visceralFat, bmr, measuredAt, createdAt, updatedAt, deletedAt) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, + [m.id, m.weight, m.bmi, m.bodyFatPercentage, m.fatMass, m.musclePercentage, m.muscleMass, m.visceralFat, m.bmr, m.measuredAt, m.createdAt, m.updatedAt, m.deletedAt ?? null] ) } @@ -59,9 +59,9 @@ export async function getMeasurementByDate(date: string): Promise { await db!.runAsync( - `INSERT OR REPLACE INTO measurements (id, weight, bmi, bodyFatPercentage, fatMass, musclePercentage, muscleMass, visceralFat, bmr, measuredAt, createdAt, updatedAt, syncStatus, deletedAt) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, - [m.id, m.weight, m.bmi, m.bodyFatPercentage, m.fatMass, m.musclePercentage, m.muscleMass, m.visceralFat, m.bmr, m.measuredAt, m.createdAt, m.updatedAt, m.syncStatus, m.deletedAt ?? null] + `INSERT OR REPLACE INTO measurements (id, weight, bmi, bodyFatPercentage, fatMass, musclePercentage, muscleMass, visceralFat, bmr, measuredAt, createdAt, updatedAt, deletedAt) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, + [m.id, m.weight, m.bmi, m.bodyFatPercentage, m.fatMass, m.musclePercentage, m.muscleMass, m.visceralFat, m.bmr, m.measuredAt, m.createdAt, m.updatedAt, m.deletedAt ?? null] ) } diff --git a/upgrade.md b/upgrade.md new file mode 100644 index 0000000..f51a5e1 --- /dev/null +++ b/upgrade.md @@ -0,0 +1,140 @@ +# Upgrade: REST API sync i.p.v. WebDAV + +Vervang WebDAV-sync door een eigen REST API op `weegschaal.eddydevink.nl`, +met MariaDB-backend en Bearer token-authenticatie. Incrementele sync i.p.v. volledig bestand. + +## Fase 1 — Server-side: PHP API + +### Subdomein & nginx + +- DNS: `weegschaal.eddydevink.nl` → zelfde server als `git.eddydevink.nl` +- nginx server block in `/etc/nginx/conf.d/weegschaal-api.conf` +- SSL via Let's Encrypt (`sudo certbot`) +- Document root: `/usr/share/nginx/html/weegschaal-api/` + +### MariaDB + +```sql +CREATE DATABASE weegschaal; +CREATE USER 'weegschaal'@'localhost' IDENTIFIED BY ''; +GRANT ALL ON weegschaal.* TO 'weegschaal'@'localhost'; + +CREATE TABLE users ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(255) NOT NULL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE auth_tokens ( + id INT AUTO_INCREMENT PRIMARY KEY, + user_id INT NOT NULL REFERENCES users(id), + token VARCHAR(64) NOT NULL UNIQUE, + description VARCHAR(255), + created_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE measurements ( + id VARCHAR(36) NOT NULL, + user_id INT NOT NULL, + weight DECIMAL(5,2) NOT NULL, + bmi DECIMAL(4,1) NOT NULL, + body_fat_percentage DECIMAL(4,1) NOT NULL, + fat_mass DECIMAL(5,2) NOT NULL, + muscle_percentage DECIMAL(4,1) NOT NULL, + muscle_mass DECIMAL(5,2) NOT NULL, + visceral_fat TINYINT NOT NULL, + bmr DECIMAL(6,1) NOT NULL, + measured_at DATE NOT NULL, + created_at DATETIME NOT NULL, + updated_at DATETIME NOT NULL, + PRIMARY KEY (user_id, id), + INDEX idx_updated_at (user_id, updated_at) +); +``` + +### PHP API endpoints (Slim Framework via Composer) + +| Methode | Pad | Beschrijving | +|---------|-----|-------------| +| `POST` | `/api/v1/auth/register` | (later) Nieuwe gebruiker | +| `POST` | `/api/v1/auth/tokens` | (later) Nieuwe token aanmaken | +| `GET` | `/api/v1/measurements` | Alle metingen (of `?since=ISO` voor delta) | +| `POST` | `/api/v1/measurements` | Nieuwe meting aanmaken | +| `PUT` | `/api/v1/measurements/:id` | Meting bijwerken | +| `DELETE` | `/api/v1/measurements/:id` | Meting verwijderen | + +Authenticatie: `Authorization: Bearer `, gevalideerd tegen `auth_tokens`-tabel. + +Sync-logica server: +- `GET /api/v1/measurements?since=2025-01-01T12:00:00Z` → alleen metingen met `updated_at > since` +- Bij PUT/DELETE: controleer `updated_at` client, bij conflict → HTTP 409 met server-versie + +### Bestandsstructuur API + +``` +/usr/share/nginx/html/weegschaal-api/ +├── composer.json +├── public/ +│ └── index.php ← Entry point, routing +├── src/ +│ ├── Database.php ← PDO singleton +│ ├── Auth.php ← Token validation middleware +│ ├── Measurements.php ← CRUD + sync queries +│ └── helpers.php +└── config.php ← DB credentials (uit .env of env vars) +``` + +## Fase 2 — Client-side: App aanpassen + +### Types (`src/types.ts`) + +- Vervang `WebDAVConfig` door `ApiConfig { url: string; token: string }` +- Verwijder `SyncStatus` (niet meer nodig — sync status volgt uit `updatedAt`) + +### SettingsScreen (`src/screens/SettingsScreen.tsx`) + +- Vervang URL/username/password door API-URL + token (met oogje) +- Opslaan → SecureStore +- Wissen → SecureStore verwijderen +- 'Nu synchroniseren' knop blijft + +### Nieuwe module `src/sync/api.ts` + +```typescript +const api = (config: ApiConfig) => ({ + getMeasurements: (since?: string) => GET /api/v1/measurements?since=... + createMeasurement: (m: Measurement) => POST /api/v1/measurements + updateMeasurement: (m: Measurement) => PUT /api/v1/measurements/:id + deleteMeasurement: (id: string) => DELETE /api/v1/measurements/:id +}) +``` + +### syncService.ts — volledig herschreven + +Nieuwe sync-flow: + +| Stap | Actie | +|------|-------| +| 1 | Lees lokale `lastSyncAt` (uit SecureStore) | +| 2 | `GET ?since=lastSyncAt` → alleen wijzigingen ophalen | +| 3 | Upsert remote wijzigingen lokaal (last-writer-wins) | +| 4 | Voor elke lokale meting met `updatedAt > lastSyncAt`: push naar API | +| 5 | Update `lastSyncAt` naar server-tijd | + +Bij opslaan in `NewMeasurementScreen`: +1. Direct naar lokale SQLite (offline-first) +2. Direct erna: push naar API (async, niet-blokkerend via `Promise.allSettled`) + +## Fase 3 — Migratie + +Eerste keer na API-setup: +1. App stuurt alle lokale metingen naar de API (1-voor-1 via POST) +2. Alle metingen nu in MariaDB +3. Vanaf dan: alleen delta-sync + +## Benodigde server-toegang + +- SSH naar nextcloud (`aiaiaiaiagent@nextcloud`) — key werkte niet +- `sudo -A mysql` voor DB + user aanmaken +- nginx config aanpassen (`/etc/nginx/conf.d/`) +- DNS controleren voor subdomein From 23db4453662c6228e02f020db868372b9a73e92e Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 17:00:21 +0200 Subject: [PATCH 07/29] settings: vervang WebDAV configuratie door REST API configuratie --- src/screens/SettingsScreen.tsx | 81 ++++++++++++++-------------------- 1 file changed, 33 insertions(+), 48 deletions(-) diff --git a/src/screens/SettingsScreen.tsx b/src/screens/SettingsScreen.tsx index f434065..42bf76b 100644 --- a/src/screens/SettingsScreen.tsx +++ b/src/screens/SettingsScreen.tsx @@ -1,11 +1,11 @@ import React, { useEffect, useState } from 'react' import { View, Text, TextInput, TouchableOpacity, StyleSheet, Alert, ScrollView } from 'react-native' import * as SecureStore from 'expo-secure-store' -import { WebDAVConfig } from '../types' +import { ApiConfig } from '../types' -const CONFIG_KEY = 'weegschaal_webdav_config' +const CONFIG_KEY = 'weegschaal_api_config' -async function loadConfig(): Promise { +async function loadConfig(): Promise { try { const json = await SecureStore.getItemAsync(CONFIG_KEY) return json ? JSON.parse(json) : null @@ -14,7 +14,7 @@ async function loadConfig(): Promise { } } -async function saveConfig(config: WebDAVConfig): Promise { +async function saveConfig(config: ApiConfig): Promise { await SecureStore.setItemAsync(CONFIG_KEY, JSON.stringify(config)) } @@ -22,50 +22,43 @@ async function deleteConfig(): Promise { await SecureStore.deleteItemAsync(CONFIG_KEY) } -export async function getWebDAVConfig(): Promise { +export async function getApiConfig(): Promise { return loadConfig() } export default function SettingsScreen() { - const [url, setUrl] = useState('https://nextcloud.eddydevink.nl/remote.php/dav/files/eddy') - const [username, setUsername] = useState('') - const [password, setPassword] = useState('') - const [showPassword, setShowPassword] = useState(false) + const [url, setUrl] = useState('https://weegschaal.eddydevink.nl') + const [token, setToken] = useState('') + const [showToken, setShowToken] = useState(false) const [syncing, setSyncing] = useState(false) useEffect(() => { loadConfig().then(c => { if (c) { setUrl(c.url) - setUsername(c.username) - setPassword(c.password) + setToken(c.token) } }) }, []) const handleSave = async () => { - await saveConfig({ url, username, password }) - Alert.alert('Opgeslagen', 'WebDAV instellingen zijn opgeslagen') + await saveConfig({ url, token }) + Alert.alert('Opgeslagen', 'API instellingen zijn opgeslagen') } const handleClear = () => { - Alert.alert( - 'Instellingen wissen?', - 'WebDAV configuratie definitief verwijderen? Je kunt deze later opnieuw invoeren.', - [ - { text: 'Annuleren', style: 'cancel' }, - { - text: 'Ja, wissen', - style: 'destructive', - onPress: async () => { - await deleteConfig() - setUrl('') - setUsername('') - setPassword('') - }, + Alert.alert('Instellingen wissen?', 'API configuratie definitief verwijderen?', [ + { text: 'Annuleren', style: 'cancel' }, + { + text: 'Ja, wissen', + style: 'destructive', + onPress: async () => { + await deleteConfig() + setUrl('') + setToken('') }, - ] - ) + }, + ]) } const handleSync = async () => { @@ -73,7 +66,7 @@ export default function SettingsScreen() { try { const { syncAll } = await import('../sync/syncService') const result = await syncAll() - Alert.alert('Sync voltooid', `Lokaal: ${result.local}, WebDAV: ${result.remote}, samengevoegd: ${result.merged}`) + Alert.alert('Sync voltooid', `Opgehaald: ${result.pulled}, gepusht: ${result.pushed}, verwijderd: ${result.deleted}`) } catch (e: any) { Alert.alert('Sync fout', e?.message ?? 'Onbekende fout') } finally { @@ -83,38 +76,30 @@ export default function SettingsScreen() { return ( - WebDAV (Nextcloud) + REST API - URL + API URL - Gebruikersnaam - - - Wachtwoord + Token - setShowPassword(!showPassword)}> - {showPassword ? '👁' : '👁‍🗨'} + setShowToken(!showToken)}> + {showToken ? 'O' : 'O'} From 143572bc81629231c90f8c908146d0780f1cb558 Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 17:00:41 +0200 Subject: [PATCH 08/29] save: directe uploadMeasurement push, verwijder syncStatus uit MeasurementForm --- src/components/MeasurementForm.tsx | 1 - src/screens/NewMeasurementScreen.tsx | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/MeasurementForm.tsx b/src/components/MeasurementForm.tsx index 71195b7..9b4b9ae 100644 --- a/src/components/MeasurementForm.tsx +++ b/src/components/MeasurementForm.tsx @@ -78,7 +78,6 @@ function toInt(s: string): number { measuredAt: measurementDate.toISOString(), createdAt: isEdit && initialValues?.createdAt ? initialValues.createdAt : now, updatedAt: now, - syncStatus: 'local', } onSubmit(m) } diff --git a/src/screens/NewMeasurementScreen.tsx b/src/screens/NewMeasurementScreen.tsx index 91b3913..345352a 100644 --- a/src/screens/NewMeasurementScreen.tsx +++ b/src/screens/NewMeasurementScreen.tsx @@ -4,6 +4,7 @@ import { useFocusEffect } from '@react-navigation/native' import MeasurementForm from '../components/MeasurementForm' import { Measurement } from '../types' import { initDatabase, insertMeasurement, upsertMeasurement, getLatestMeasurement, getMeasurementByDate } from '../database/db' +import { uploadMeasurement } from '../sync/syncService' type Props = { navigation: any @@ -72,8 +73,7 @@ export default function NewMeasurementScreen({ navigation, route }: Props) { const doSave = async (m: Measurement) => { try { - const { syncAll } = await import('../sync/syncService') - await syncAll() + await uploadMeasurement(m) Alert.alert('Opgeslagen & gesynct', 'Meting is opgeslagen en gesynchroniseerd', [ { text: 'OK', onPress: () => navigation.goBack() }, ]) From b043a5c1d2ce405cab07fc200cf5b47bc5218b72 Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 17:00:59 +0200 Subject: [PATCH 09/29] detail: soft delete via deletedAt i.p.v. syncStatus --- src/screens/MeasurementDetailScreen.tsx | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/screens/MeasurementDetailScreen.tsx b/src/screens/MeasurementDetailScreen.tsx index ee17a30..20fecb3 100644 --- a/src/screens/MeasurementDetailScreen.tsx +++ b/src/screens/MeasurementDetailScreen.tsx @@ -2,8 +2,10 @@ import React, { useCallback, useState } from 'react' import { View, Text, StyleSheet, TouchableOpacity, Alert, ScrollView } from 'react-native' import { useFocusEffect } from '@react-navigation/native' import { useSafeAreaInsets } from 'react-native-safe-area-context' -import { initDatabase, getAllMeasurements, deleteMeasurement } from '../database/db' +import { initDatabase, getAllMeasurements, setDeletedAt, removeMeasurement } from '../database/db' import { Measurement } from '../types' +import { createApi } from '../sync/api' +import { getApiConfig } from './SettingsScreen' type Props = { navigation: any @@ -57,10 +59,13 @@ export default function MeasurementDetailScreen({ navigation, route }: Props) { style: 'destructive', onPress: async () => { await initDatabase() - await deleteMeasurement(measurementId) + await setDeletedAt(measurementId) try { - const { syncAll } = await import('../sync/syncService') - await syncAll(new Set([measurementId])) + const config = await getApiConfig() + if (config) { + await createApi(config).deleteMeasurement(measurementId) + await removeMeasurement(measurementId) + } } catch {} navigation.goBack() }, From 8e1783306ae6dec09ff2cac684bc94d6fd7a24d9 Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 17:01:39 +0200 Subject: [PATCH 10/29] ui: filter deletedAt in History en Dashboard, soft delete in History --- src/screens/DashboardScreen.tsx | 6 +++--- src/screens/HistoryScreen.tsx | 17 +++++++++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/screens/DashboardScreen.tsx b/src/screens/DashboardScreen.tsx index dc5c8c7..995b674 100644 --- a/src/screens/DashboardScreen.tsx +++ b/src/screens/DashboardScreen.tsx @@ -19,9 +19,9 @@ export default function DashboardScreen({ navigation }: Props) { const load = async () => { await initDatabase() const allM = await getAllMeasurements() - setAll(allM) - const latestM = await getLatestMeasurement() - setLatest(latestM) + const visible = allM.filter(m => !m.deletedAt) + setAll(visible) + setLatest(visible.length > 0 ? visible[0] : null) } load() }, []) diff --git a/src/screens/HistoryScreen.tsx b/src/screens/HistoryScreen.tsx index 8fd941d..a2f87af 100644 --- a/src/screens/HistoryScreen.tsx +++ b/src/screens/HistoryScreen.tsx @@ -1,8 +1,10 @@ import React, { useCallback, useState } from 'react' -import { View, FlatList, StyleSheet, Text, RefreshControl, TouchableOpacity } from 'react-native' +import { View, FlatList, StyleSheet, Text, RefreshControl, TouchableOpacity, Alert } from 'react-native' import { useFocusEffect } from '@react-navigation/native' -import { initDatabase, getAllMeasurements, deleteMeasurement } from '../database/db' +import { initDatabase, getAllMeasurements, setDeletedAt, removeMeasurement } from '../database/db' import { Measurement } from '../types' +import { createApi } from '../sync/api' +import { getApiConfig } from './SettingsScreen' import MeasurementRow from '../components/MeasurementRow' type Props = { navigation: any } @@ -14,7 +16,7 @@ export default function HistoryScreen({ navigation }: Props) { const load = useCallback(async () => { await initDatabase() const all = await getAllMeasurements() - setMeasurements(all) + setMeasurements(all.filter(m => !m.deletedAt)) }, []) useFocusEffect( @@ -61,10 +63,13 @@ export default function HistoryScreen({ navigation }: Props) { style: 'destructive', onPress: async () => { await initDatabase() - await deleteMeasurement(m.id) + await setDeletedAt(m.id) try { - const { syncAll } = await import('../sync/syncService') - await syncAll() + const config = await getApiConfig() + if (config) { + await createApi(config).deleteMeasurement(m.id) + await removeMeasurement(m.id) + } } catch {} load() }, From d0dd2f4e391181cc2212f67fa0f13b73d6e51017 Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 17:03:44 +0200 Subject: [PATCH 11/29] test: herschrijf tests voor timestamp-based sync, vervang updateMeasurement door setDeletedAt --- tests/database.test.ts | 13 +++--- tests/syncService.test.ts | 86 ++++++++++++++++----------------------- 2 files changed, 41 insertions(+), 58 deletions(-) diff --git a/tests/database.test.ts b/tests/database.test.ts index 48a7f22..f2b1a90 100644 --- a/tests/database.test.ts +++ b/tests/database.test.ts @@ -18,7 +18,6 @@ const mockMeasurement: Measurement = { measuredAt: '2024-01-01T08:00:00.000Z', createdAt: '2024-01-01T08:00:00.000Z', updatedAt: '2024-01-01T08:00:00.000Z', - syncStatus: 'local', } describe('database', () => { @@ -27,7 +26,7 @@ describe('database', () => { let insertMeasurement: any let getAllMeasurements: any let getLatestMeasurement: any - let updateMeasurement: any + let setDeletedAt: any beforeEach(async () => { jest.resetModules() @@ -46,7 +45,7 @@ describe('database', () => { insertMeasurement = mod.insertMeasurement getAllMeasurements = mod.getAllMeasurements getLatestMeasurement = mod.getLatestMeasurement - updateMeasurement = mod.updateMeasurement + setDeletedAt = mod.setDeletedAt }) it('initDatabase creates the measurements table', async () => { @@ -82,13 +81,13 @@ describe('database', () => { expect(result!.id).toBe(mockMeasurement.id) }) - it('updateMeasurement updates syncStatus', async () => { + it('setDeletedAt sets the deletedAt timestamp', async () => { db.runAsync.mockResolvedValue(undefined) await initDatabase() - await updateMeasurement(mockMeasurement.id, 'synced') + await setDeletedAt(mockMeasurement.id) expect(db.runAsync).toHaveBeenCalledWith( - expect.stringContaining('UPDATE measurements'), - expect.arrayContaining(['synced', mockMeasurement.id]) + expect.stringContaining('UPDATE measurements SET deletedAt'), + expect.arrayContaining([mockMeasurement.id]) ) }) }) diff --git a/tests/syncService.test.ts b/tests/syncService.test.ts index 1f5878d..ff769a7 100644 --- a/tests/syncService.test.ts +++ b/tests/syncService.test.ts @@ -1,72 +1,56 @@ import { mergeMeasurements } from '../src/sync/syncService' import { Measurement } from '../src/types' -jest.mock('expo-sqlite', () => ({ - openDatabaseAsync: jest.fn(), -})) +jest.mock('expo-sqlite', () => ({ openDatabaseAsync: jest.fn() })) -const base: Measurement = { - id: 'id-1', - weight: 75, - bmi: 22, - bodyFatPercentage: 15, - fatMass: 10, - musclePercentage: 40, - muscleMass: 30, - visceralFat: 8, - bmr: 1600, - measuredAt: '2024-06-01T08:00:00.000Z', - createdAt: '2024-06-01T08:00:00.000Z', - updatedAt: '2024-06-01T08:00:00.000Z', - syncStatus: 'local', -} +const make = (overrides: Partial = {}): Measurement => ({ + id: 'id-1', weight: 75, bmi: 22, bodyFatPercentage: 15, fatMass: 10, + musclePercentage: 40, muscleMass: 30, visceralFat: 8, bmr: 1600, + measuredAt: '2024-06-01T08:00:00.000Z', createdAt: '2024-06-01T08:00:00.000Z', + updatedAt: '2024-06-01T08:00:00.000Z', ...overrides, +}) describe('mergeMeasurements', () => { - it('returns empty array when both are empty', () => { + it('both empty returns empty', () => { expect(mergeMeasurements([], [])).toEqual([]) }) - it('keeps local items not on remote', () => { - const result = mergeMeasurements([base], []) - expect(result).toHaveLength(1) - expect(result[0].id).toBe('id-1') + it('local only kept', () => { + const r = mergeMeasurements([make()], []) + expect(r).toHaveLength(1) }) - it('keeps remote items not on local', () => { - const remote = { ...base, syncStatus: 'synced' as const } - const result = mergeMeasurements([], [remote]) - expect(result).toHaveLength(1) - expect(result[0].id).toBe('id-1') + it('remote only kept', () => { + const r = mergeMeasurements([], [make({ id: 'r1' })]) + expect(r).toHaveLength(1) + expect(r[0].id).toBe('r1') }) - it('picks the newer version when both have same id', () => { - const local = { ...base, weight: 75, updatedAt: '2024-06-02T08:00:00.000Z' } - const remote = { ...base, weight: 76, updatedAt: '2024-06-03T08:00:00.000Z' } - const result = mergeMeasurements([local], [remote]) - expect(result).toHaveLength(1) - expect(result[0].weight).toBe(76) + it('last-writer-wins: remote newer', () => { + const local = make({ weight: 75, updatedAt: '2024-06-02T08:00:00.000Z' }) + const remote = make({ weight: 76, updatedAt: '2024-06-03T08:00:00.000Z' }) + const r = mergeMeasurements([local], [remote]) + expect(r[0].weight).toBe(76) }) - it('picks local when local is newer', () => { - const local = { ...base, weight: 77, updatedAt: '2024-06-04T08:00:00.000Z' } - const remote = { ...base, weight: 76, updatedAt: '2024-06-03T08:00:00.000Z' } - const result = mergeMeasurements([local], [remote]) - expect(result).toHaveLength(1) - expect(result[0].weight).toBe(77) + it('last-writer-wins: local newer', () => { + const local = make({ weight: 77, updatedAt: '2024-06-04T08:00:00.000Z' }) + const remote = make({ weight: 76, updatedAt: '2024-06-03T08:00:00.000Z' }) + const r = mergeMeasurements([local], [remote]) + expect(r[0].weight).toBe(77) }) - it('excludes ids in excludeIds from both sides', () => { - const local = { ...base, id: 'id-1' } - const remote = { ...base, id: 'id-2' } - const result = mergeMeasurements([local], [remote], new Set(['id-1', 'id-2'])) - expect(result).toHaveLength(0) + it('remote deleted wins over older local', () => { + const local = make({ updatedAt: '2024-06-01T08:00:00.000Z' }) + const remote = make({ updatedAt: '2024-06-03T08:00:00.000Z', deletedAt: '2024-06-03T08:00:00.000Z' }) + const r = mergeMeasurements([local], [remote]) + expect(r[0].deletedAt).toBe('2024-06-03T08:00:00.000Z') }) - it('keeps ids not in excludeIds', () => { - const local = { ...base, id: 'id-1' } - const remote = { ...base, id: 'id-2' } - const result = mergeMeasurements([local], [remote], new Set(['id-1'])) - expect(result).toHaveLength(1) - expect(result[0].id).toBe('id-2') + it('local wins over older remote deleted', () => { + const local = make({ updatedAt: '2024-06-03T08:00:00.000Z' }) + const remote = make({ updatedAt: '2024-06-01T08:00:00.000Z', deletedAt: '2024-06-01T08:00:00.000Z' }) + const r = mergeMeasurements([local], [remote]) + expect(r[0].deletedAt).toBeUndefined() }) }) From e93d12565e488d06bb62c49bfd8619c2e4a0a6d6 Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 17:39:32 +0200 Subject: [PATCH 12/29] db: voeg ALTER TABLE migratie toe voor bestaande databases zonder deletedAt --- src/database/db.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/database/db.ts b/src/database/db.ts index 88dfb8a..357feed 100644 --- a/src/database/db.ts +++ b/src/database/db.ts @@ -24,6 +24,9 @@ export async function initDatabase(): Promise { deletedAt TEXT ); `) + try { + await db.execAsync('ALTER TABLE measurements ADD COLUMN deletedAt TEXT') + } catch {} } export async function insertMeasurement(m: Measurement): Promise { From df91f4d46fcbb5a87263788315b3017847b1f13f Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 17:52:26 +0200 Subject: [PATCH 13/29] ui: voeg laad-indicator toe aan Dashboard --- src/screens/DashboardScreen.tsx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/screens/DashboardScreen.tsx b/src/screens/DashboardScreen.tsx index 995b674..78db588 100644 --- a/src/screens/DashboardScreen.tsx +++ b/src/screens/DashboardScreen.tsx @@ -13,15 +13,18 @@ export default function DashboardScreen({ navigation }: Props) { const insets = useSafeAreaInsets() const [latest, setLatest] = useState(null) const [all, setAll] = useState([]) + const [loading, setLoading] = useState(true) useFocusEffect( useCallback(() => { const load = async () => { + setLoading(true) await initDatabase() const allM = await getAllMeasurements() const visible = allM.filter(m => !m.deletedAt) setAll(visible) setLatest(visible.length > 0 ? visible[0] : null) + setLoading(false) } load() }, []) @@ -38,8 +41,14 @@ export default function DashboardScreen({ navigation }: Props) { - - + {loading ? ( + Laden... + ) : ( + <> + + + + )} Date: Mon, 20 Jul 2026 18:16:56 +0200 Subject: [PATCH 14/29] ui: toon voorlaatste meting en gewichtsverschil in dashboard card --- src/components/LatestMeasurementCard.tsx | 36 +++++++++++++++++++----- src/screens/DashboardScreen.tsx | 6 ++-- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/src/components/LatestMeasurementCard.tsx b/src/components/LatestMeasurementCard.tsx index 7cc0134..8cb3ed3 100644 --- a/src/components/LatestMeasurementCard.tsx +++ b/src/components/LatestMeasurementCard.tsx @@ -2,7 +2,7 @@ import React from 'react' import { View, Text, StyleSheet } from 'react-native' import { Measurement } from '../types' -type Props = { measurement: Measurement | null } +type Props = { measurements: Measurement[] } const rows: { label: string; key: keyof Measurement; suffix: string }[] = [ { label: 'Gewicht', key: 'weight', suffix: 'kg' }, @@ -15,8 +15,8 @@ const rows: { label: string; key: keyof Measurement; suffix: string }[] = [ { label: 'Stofwisseling', key: 'bmr', suffix: 'kcal' }, ] -export default function LatestMeasurementCard({ measurement }: Props) { - if (!measurement) { +export default function LatestMeasurementCard({ measurements }: Props) { + if (measurements.length === 0) { return ( Nog geen metingen @@ -24,21 +24,38 @@ export default function LatestMeasurementCard({ measurement }: Props) { ) } + const latest = measurements[0] + const previous = measurements[1] + const diff = previous ? (latest.weight - previous.weight) : null + return ( Laatste meting - {new Date(measurement.measuredAt).toLocaleDateString('nl-NL')} + {new Date(latest.measuredAt).toLocaleDateString('nl-NL')} {rows.map(r => ( {r.label} - {typeof measurement[r.key] === 'number' - ? (measurement[r.key] as number).toFixed(1) - : measurement[r.key]}{' '} + {typeof latest[r.key] === 'number' + ? (latest[r.key] as number).toFixed(1) + : latest[r.key]}{' '} {r.suffix} ))} + + {previous && ( + + + Voorlaatste meting + + {new Date(previous.measuredAt).toLocaleDateString('nl-NL')} — {previous.weight.toFixed(1)} kg + + + Verschil {diff !== null && (diff > 0 ? '+' : '')}{diff?.toFixed(1)} kg + + + )} ) } @@ -51,4 +68,9 @@ const styles = StyleSheet.create({ rowLabel: { fontSize: 14, color: '#555', flex: 1 }, rowValue: { fontSize: 14, fontWeight: '600' }, emptyText: { fontSize: 16, color: '#999', textAlign: 'center', padding: 20 }, + previous: { marginTop: 4 }, + divider: { height: 1, backgroundColor: '#eee', marginVertical: 12 }, + previousTitle: { fontSize: 18, fontWeight: '700', marginBottom: 4 }, + previousDate: { fontSize: 14, color: '#666', marginBottom: 4 }, + diffLabel: { fontSize: 16, fontWeight: '700', color: '#2196F3' }, }) diff --git a/src/screens/DashboardScreen.tsx b/src/screens/DashboardScreen.tsx index 78db588..7107665 100644 --- a/src/screens/DashboardScreen.tsx +++ b/src/screens/DashboardScreen.tsx @@ -2,7 +2,7 @@ import React, { useCallback, useState } from 'react' import { View, ScrollView, TouchableOpacity, Text, StyleSheet } from 'react-native' import { useFocusEffect } from '@react-navigation/native' import { useSafeAreaInsets } from 'react-native-safe-area-context' -import { initDatabase, getAllMeasurements, getLatestMeasurement } from '../database/db' +import { initDatabase, getAllMeasurements } from '../database/db' import { Measurement } from '../types' import LatestMeasurementCard from '../components/LatestMeasurementCard' import WeightChart from '../components/WeightChart' @@ -11,7 +11,6 @@ type Props = { navigation: any } export default function DashboardScreen({ navigation }: Props) { const insets = useSafeAreaInsets() - const [latest, setLatest] = useState(null) const [all, setAll] = useState([]) const [loading, setLoading] = useState(true) @@ -23,7 +22,6 @@ export default function DashboardScreen({ navigation }: Props) { const allM = await getAllMeasurements() const visible = allM.filter(m => !m.deletedAt) setAll(visible) - setLatest(visible.length > 0 ? visible[0] : null) setLoading(false) } load() @@ -45,7 +43,7 @@ export default function DashboardScreen({ navigation }: Props) { Laden... ) : ( <> - + )} From 86d6cde478795daea4c70f3ad931e30dc755f8d4 Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 18:40:26 +0200 Subject: [PATCH 15/29] fix: plaats voorlaatste meting boven laatste, fix MeasurementRow onPress in History --- src/components/LatestMeasurementCard.tsx | 26 ++++++++++++------------ src/screens/HistoryScreen.tsx | 7 ++++--- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/components/LatestMeasurementCard.tsx b/src/components/LatestMeasurementCard.tsx index 8cb3ed3..04976d4 100644 --- a/src/components/LatestMeasurementCard.tsx +++ b/src/components/LatestMeasurementCard.tsx @@ -30,6 +30,19 @@ export default function LatestMeasurementCard({ measurements }: Props) { return ( + {previous && ( + + Voorlaatste meting + + {new Date(previous.measuredAt).toLocaleDateString('nl-NL')} — {previous.weight.toFixed(1)} kg + + + Verschil {diff !== null && (diff > 0 ? '+' : '')}{diff?.toFixed(1)} kg + + + + )} + Laatste meting {new Date(latest.measuredAt).toLocaleDateString('nl-NL')} {rows.map(r => ( @@ -43,19 +56,6 @@ export default function LatestMeasurementCard({ measurements }: Props) { ))} - - {previous && ( - - - Voorlaatste meting - - {new Date(previous.measuredAt).toLocaleDateString('nl-NL')} — {previous.weight.toFixed(1)} kg - - - Verschil {diff !== null && (diff > 0 ? '+' : '')}{diff?.toFixed(1)} kg - - - )} ) } diff --git a/src/screens/HistoryScreen.tsx b/src/screens/HistoryScreen.tsx index a2f87af..30fc38b 100644 --- a/src/screens/HistoryScreen.tsx +++ b/src/screens/HistoryScreen.tsx @@ -85,9 +85,10 @@ export default function HistoryScreen({ navigation }: Props) { data={measurements} keyExtractor={item => item.id} renderItem={({ item }) => ( - navigation.navigate('MeasurementDetail', { measurementId: item.id })}> - - + navigation.navigate('MeasurementDetail', { measurementId: item.id })} + /> )} contentContainerStyle={measurements.length === 0 ? styles.empty : undefined} ListEmptyComponent={Nog geen metingen} From dc85cd3ff0ceb2626bd4dfae6a12e236f3dd0e6a Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 18:58:24 +0200 Subject: [PATCH 16/29] =?UTF-8?q?feat:=20share=20knop=20op=20dashboard=20k?= =?UTF-8?q?aart=20=E2=80=94=20deelt=20kaart=20als=20PNG=20via=20expo-shari?= =?UTF-8?q?ng?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 73 +++++++++++++++++++++ package.json | 2 + src/components/LatestMeasurementCard.tsx | 81 ++++++++++++++++-------- 3 files changed, 129 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index b4a933a..4264be1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@react-navigation/native-stack": "^7.17.6", "expo": "~54.0.0", "expo-secure-store": "~15.0.8", + "expo-sharing": "~14.0.8", "expo-sqlite": "~16.0.10", "expo-status-bar": "~3.0.9", "expo-updates": "~29.0.18", @@ -23,6 +24,7 @@ "react-native-safe-area-context": "~5.6.0", "react-native-screens": "~4.16.0", "react-native-svg": "15.12.1", + "react-native-view-shot": "4.0.3", "react-native-web": "^0.21.0" }, "devDependencies": { @@ -3728,6 +3730,15 @@ "node": "18 || 20 || >=22" } }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -4403,6 +4414,15 @@ "hyphenate-style-name": "^1.0.3" } }, + "node_modules/css-line-break": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", + "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", + "license": "MIT", + "dependencies": { + "utrie": "^1.0.2" + } + }, "node_modules/css-select": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", @@ -5212,6 +5232,15 @@ "node": ">=20.16.0" } }, + "node_modules/expo-sharing": { + "version": "14.0.8", + "resolved": "https://registry.npmjs.org/expo-sharing/-/expo-sharing-14.0.8.tgz", + "integrity": "sha512-A1pPr2iBrxypFDCWVAESk532HK+db7MFXbvO2sCV9ienaFXAk7lIBm6bkqgE6vzRd9O3RGdEGzYx80cYlc089Q==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, "node_modules/expo-sqlite": { "version": "16.0.10", "resolved": "https://registry.npmjs.org/expo-sqlite/-/expo-sqlite-16.0.10.tgz", @@ -6144,6 +6173,19 @@ "license": "MIT", "peer": true }, + "node_modules/html2canvas": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz", + "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", + "license": "MIT", + "dependencies": { + "css-line-break": "^2.1.0", + "text-segmentation": "^1.0.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/http-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", @@ -9611,6 +9653,19 @@ "react-native": "*" } }, + "node_modules/react-native-view-shot": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/react-native-view-shot/-/react-native-view-shot-4.0.3.tgz", + "integrity": "sha512-USNjYmED7C0me02c1DxKA0074Hw+y/nxo+xJKlffMvfUWWzL5ELh/TJA/pTnVqFurIrzthZDPtDM7aBFJuhrHQ==", + "license": "MIT", + "dependencies": { + "html2canvas": "^1.4.1" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, "node_modules/react-native-web": { "version": "0.21.2", "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.21.2.tgz", @@ -10753,6 +10808,15 @@ "node": "*" } }, + "node_modules/text-segmentation": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", + "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", + "license": "MIT", + "dependencies": { + "utrie": "^1.0.2" + } + }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -11087,6 +11151,15 @@ "node": ">= 0.4.0" } }, + "node_modules/utrie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz", + "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", + "license": "MIT", + "dependencies": { + "base64-arraybuffer": "^1.0.2" + } + }, "node_modules/uuid": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", diff --git a/package.json b/package.json index a09395c..785600e 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "@react-navigation/native-stack": "^7.17.6", "expo": "~54.0.0", "expo-secure-store": "~15.0.8", + "expo-sharing": "~14.0.8", "expo-sqlite": "~16.0.10", "expo-status-bar": "~3.0.9", "expo-updates": "~29.0.18", @@ -18,6 +19,7 @@ "react-native-safe-area-context": "~5.6.0", "react-native-screens": "~4.16.0", "react-native-svg": "15.12.1", + "react-native-view-shot": "4.0.3", "react-native-web": "^0.21.0" }, "devDependencies": { diff --git a/src/components/LatestMeasurementCard.tsx b/src/components/LatestMeasurementCard.tsx index 04976d4..1926c58 100644 --- a/src/components/LatestMeasurementCard.tsx +++ b/src/components/LatestMeasurementCard.tsx @@ -1,5 +1,7 @@ -import React from 'react' -import { View, Text, StyleSheet } from 'react-native' +import React, { useRef } from 'react' +import { View, Text, StyleSheet, TouchableOpacity } from 'react-native' +import ViewShot from 'react-native-view-shot' +import * as Sharing from 'expo-sharing' import { Measurement } from '../types' type Props = { measurements: Measurement[] } @@ -16,6 +18,8 @@ const rows: { label: string; key: keyof Measurement; suffix: string }[] = [ ] export default function LatestMeasurementCard({ measurements }: Props) { + const viewShotRef = useRef(null) + if (measurements.length === 0) { return ( @@ -28,47 +32,70 @@ export default function LatestMeasurementCard({ measurements }: Props) { const previous = measurements[1] const diff = previous ? (latest.weight - previous.weight) : null + const handleShare = async () => { + try { + const uri = await viewShotRef.current?.capture?.() + if (uri) { + await Sharing.shareAsync(uri, { mimeType: 'image/png' }) + } + } catch {} + } + return ( - {previous && ( - - Voorlaatste meting - - {new Date(previous.measuredAt).toLocaleDateString('nl-NL')} — {previous.weight.toFixed(1)} kg - - - Verschil {diff !== null && (diff > 0 ? '+' : '')}{diff?.toFixed(1)} kg - - - - )} + + + + ↗ + + - Laatste meting - {new Date(latest.measuredAt).toLocaleDateString('nl-NL')} - {rows.map(r => ( - - {r.label} - - {typeof latest[r.key] === 'number' - ? (latest[r.key] as number).toFixed(1) - : latest[r.key]}{' '} - {r.suffix} - + + + {previous && ( + + Voorlaatste meting + + {new Date(previous.measuredAt).toLocaleDateString('nl-NL')} — {previous.weight.toFixed(1)} kg + + + Verschil {diff !== null && (diff > 0 ? '+' : '')}{diff?.toFixed(1)} kg + + + + )} + + Laatste meting + {new Date(latest.measuredAt).toLocaleDateString('nl-NL')} + {rows.map(r => ( + + {r.label} + + {typeof latest[r.key] === 'number' + ? (latest[r.key] as number).toFixed(1) + : latest[r.key]}{' '} + {r.suffix} + + + ))} - ))} + ) } const styles = StyleSheet.create({ card: { backgroundColor: '#fff', borderRadius: 12, padding: 16, margin: 16, shadowColor: '#000', shadowOpacity: 0.1, shadowRadius: 8, elevation: 3 }, + header: { flexDirection: 'row', alignItems: 'center', marginBottom: 8 }, + shareIcon: { fontSize: 22, color: '#2196F3' }, + shotContent: { backgroundColor: '#fff', padding: 16 }, title: { fontSize: 18, fontWeight: '700', marginBottom: 4 }, date: { fontSize: 14, color: '#666', marginBottom: 12 }, row: { flexDirection: 'row', paddingVertical: 4 }, rowLabel: { fontSize: 14, color: '#555', flex: 1 }, rowValue: { fontSize: 14, fontWeight: '600' }, emptyText: { fontSize: 16, color: '#999', textAlign: 'center', padding: 20 }, - previous: { marginTop: 4 }, + previous: { marginBottom: 4 }, divider: { height: 1, backgroundColor: '#eee', marginVertical: 12 }, previousTitle: { fontSize: 18, fontWeight: '700', marginBottom: 4 }, previousDate: { fontSize: 14, color: '#666', marginBottom: 4 }, From e9a17d32a23a4dfd50e4d64874d2464ce1e33129 Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 19:23:48 +0200 Subject: [PATCH 17/29] ui: vervang share icoon door MaterialIcons standaard share icon --- src/components/LatestMeasurementCard.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/LatestMeasurementCard.tsx b/src/components/LatestMeasurementCard.tsx index 1926c58..0d4f494 100644 --- a/src/components/LatestMeasurementCard.tsx +++ b/src/components/LatestMeasurementCard.tsx @@ -2,6 +2,7 @@ import React, { useRef } from 'react' import { View, Text, StyleSheet, TouchableOpacity } from 'react-native' import ViewShot from 'react-native-view-shot' import * as Sharing from 'expo-sharing' +import { MaterialIcons } from '@expo/vector-icons' import { Measurement } from '../types' type Props = { measurements: Measurement[] } @@ -46,7 +47,7 @@ export default function LatestMeasurementCard({ measurements }: Props) { - ↗ + @@ -87,7 +88,6 @@ export default function LatestMeasurementCard({ measurements }: Props) { const styles = StyleSheet.create({ card: { backgroundColor: '#fff', borderRadius: 12, padding: 16, margin: 16, shadowColor: '#000', shadowOpacity: 0.1, shadowRadius: 8, elevation: 3 }, header: { flexDirection: 'row', alignItems: 'center', marginBottom: 8 }, - shareIcon: { fontSize: 22, color: '#2196F3' }, shotContent: { backgroundColor: '#fff', padding: 16 }, title: { fontSize: 18, fontWeight: '700', marginBottom: 4 }, date: { fontSize: 14, color: '#666', marginBottom: 12 }, From 2e6c3fd588b225f0130447bc3a55bb0a883d99c3 Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 19:34:40 +0200 Subject: [PATCH 18/29] assets: nieuw app icoon van weegschaal-app.jpeg --- assets/icon.png | Bin 393493 -> 223267 bytes weegschaal-app.jpeg | Bin 0 -> 50867 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 weegschaal-app.jpeg diff --git a/assets/icon.png b/assets/icon.png index 7165a53c7475d846df195bc570482459d61bad67..ee2e6e7f17884f064725bc8e82f440e52e8900b6 100644 GIT binary patch literal 223267 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≺&G zotu_A;4i!mTsl2OTFrKt5vGhDz3XES^;iJX;dAe^#A4e__wvZ}_jqXL)7F*0qx5$> zQd%NdaF&>mC{PK`DLS+)`~Dks&Z$<=$&K3gwBY4xa^ABb22W-PTtwhoq#X^uYg?)bJ#W~#AOn0@nzsk8& zQw~b)sMKUZwUlkef#-9>cr~_TGx^Pah$G=v+97Y?n>ImydcM`JQ1s#B3n%T_o*VU_ ziT(B#Wt$E1)-VUv@vvZ)cX~BQuD$vv4X=(`Mnmca&Ca=p3&nnZ5QH%8wQwityFGUx z%(;r>X`c4U{^!oC%_DTk`&=pQ&dX5O%Hgu*FuwK4eAu(4Rehm59GBQ{Ui3TKQ85(< z^Gj`iEnHjeMUo}QQ%EO6o_~^U*F6ZZ4?Z@ui-}D3kl?5+DXs`x~ z98K6}X?^QJqH-=Ze2{>flKv&DRfBeNc9xlS_p@LFY5ks+CKng|Y{9(Kj3V9BhK+^q z4D7LSlK=FM+xOd@LqCp%3U*)}HXzXAJ|qs}Im1XGh29f{t=2S15rrl7YPz z-I;DPbi}NVIU{zz-|F0raT+L1)8a5_mTu%~Cq01i*xmS1aRA+mmV`4PJw&pReno++MZiDF|mz?1ccWuP7Mt*xT8H$XvHYUP>gE{z~ZK1J1 zZ<@~VLPWw9{}@HyZ~$<2@W%dHCv$p{hjjM9q;BVi5dCwCqo{JfKiE6v{OxjtHd(4L zP5E%y(tN^mTfRe!=(ks+G;t1hJApOd1S!7^YDZILVQba#v}B2NmFw}5+SCsTaY>DR zFwrr!XScuhIc}}ox8ZaU4|t#H3*~s6sUl_`S(u!viKY+(-cI?|8s}C0s@n}rV8sCx zy4^Uo2_uU+@%5SV;z~!d@<1%L+)XdoQItQX4Y&I=5tF5m**1TS))A*8ZLzz2zfKC! z^>izecX7^I_|tBh(0=!qdte5YK)!}d$7z$n0}@Z z^e&CtN3DIUlt$eek^AOW$$;C|*noclaCP)!07nhi!nY3otub)FG4Rg*HLXnbB0o*} zmUv$J{bl(FI0j>w3feXL7tlO5rG@6!g030cU|vv&S^W$<2v0bMW_U>rf3NIqrf1#% zFZ9BW!?BqI>3em(Cq%3yW(CvI0E@o%_CqS7k9gD;?BdEBA5}Ev7Xz4`|k?XqqkuUifY;c*cF|PU&L>X4vsK;fYX%UB#Fm1^Rkr zw9zo$!ZZ?WOgPx(Yi$da3|xcQWi-!_Aro)h7b%@!WzEgmye7@>rmWc|jVln(YadgC z;WXj5eUuY)&QdF32im6nHa5l3h$Lr*vSyWr$g9d|k^cz}>&73f-2d?1Tri=I!y$F5 zc84t~I!3^WjG?Z*0p&6-!mp{hPsM5>nx{Qw%1rFbg~f^mkSL8}Clq2}H2#iAR_bP= zur&+25g$)7|J-?1JVg;dv$;2VS#f6P)vBY)xZI@q#mk{72Zl0R2Qit+EL41weA|xd z(LapnEc47qXm0TX-E~q$@JkSD@W=h=ZEKf1Sw<#N!)wsdYR3{Iw~jn}Vn^%D80C+C zKxxZz>r6?_JlW1b@&0k)#G=c$h&M#0*q+T z0U>wWzyWFKWysifr@o)Z;~i42H5mtf?Unas=S@CUjb=h=wz%;LEV?)Sa$S5q-PWgL zWYFjc&IS_;jkUr_JcVsYIer9u<*cFcJ|pNn3BY3TlzS!vF@flzhUs!8U55Ca{3qSx zmi|r8n$*ylJbf)ousNYgqQud>)>`a2I&*=3#Mo5%3b|&iSjyMfy#!`*ra~gk zM!^Zk84b;!WRxe5%gpvMORJsE6r_KPpAdy}nanY?v=DB%l7^61)ViA+ed*u+=+1aC z%v%?8vz(Crlak|3C4|w_p}8PQgw(z+MGJ)z{KcAzn)4*Xk!h8_Ozlvf6c>t#NGteA zp&9A#)pbz$)6>B4jc85;;V=k(9Ey4QX#LN5^wbNNpZ8Q>PW6pTLcdd5&Iw?m%)nsN z_sLqyrIq%uj(t(>Kc9YV()zy0#oa>)IMF>BM+nYIdG}5DNqSvDSMk{B!l>FCsDx6w zp>h0gGjNfn4?-PBGgbaQo_e&d{cCXAQun)on(_uF=f&@;b)?3z08xU*JAMuEv$W0f#)d(?7MHM+6hz7n!*mJWU?3;H|; zY$^kO12kx3>gqcZuL)&brdM1va>G36$`lM;;Qe{d!_S<%pI4p7?ZqD2L<~GHL$4^G zhR}n`37z~WAB+FR)?2-q#*1b8*oz+%n_%(z%&y#FW@>s9HDjmYtprJy21Vi_pZ8aa zXZtYg>`tv4^yKj^`we(-WZp+Z= zdQR9iovCS-vest1z#d}zThYS9s!Giyxv-e70JlNTK*g_5Ile;W32kr*T6YDnM0W7A zNbzF9w@sQ7Ce0|~NJL5|xF)uDst&iLf-CyDBeNj&uA)fZQ?AHSS5KqHvVO}trUmiQ z^mW5GuH6MPn^xzMFq5e4rQvKZ2=zcNrj^Vwj3%kQtW*7Uj@0O%wkQJ}e*461H~SmA zSNYa?oY5n8+0dsg^LMp}khHKYcSJu=g14X)A%~lr;w86VstPu{+gVuixcHdXtU>MV z+cBIzBoekh@Wxhe%EE1w(Jr;BXLuS*c^y(sNKQ;i-Y4=^a8cK4vWQZ~C69y{zQsBd z`ysT;^;;<|gqDP;^rM2*L&8;Cz=nGcI{diXP>K3igO@(`9Df!p9l)<7J?aQP+Ey^oz1!$A}?IXEd9q!+iv^r zx1{ENNQRZD)PG7tc*1d_@($t5I&+dosWxqE;{=Tpd#L9GLP=O3)EM%hXP7nkGt9{F z?ox6()G@bXYv!Q?_K!P)_Apq8!b{S4N8bs5LKP zkw=p@Ho2We$AF4}KQi-*Lw+Y<+mbQi_jd*$dj3fr7ziWe5CgJ}H?2ekw*eOw?rR4~ z!PAsOC({URcT;k>i0Agp+^73KT*HzOHM~fju*{)X)RD{6;({4aF~d|PmK_J%TgWk~ zdv?t|30#C_M*{0dGVa7mO4{?s@mF7;p>1Cnh`ptbbQ~Cs8Ts;3?AS3=mqp@Bg)9cW z=C;yXE1HhQzYpZX6NsZJr*8n@k+6*BJ`n>hA)E%J-ui?gUn%*sr5Pb&E3{eEU~>A% z&{U68>{UY#4fm4TL7jUQ;g&fz+^qfIhM%PpDlrfG9P5>&5(Uu zjl)tzdX}s=JrPAW)$eVZnbAmjtapgf-yE1O->pbtr=h3p5dE6Xa%*e;B(@8X_09)q z;7QSopr0vvuWOoJX(FN7@PwD}zm81waJ$@6a6G|H`nOe@?Hq65MgSNx{P!9|i0HoW zwlzTTv1kpsh|F8}fabmDP%a{t>EM?yp!`o^{7Imfo{tNPtvne}hfL1Vkxp~?Z)=r} z5kl!IG0=Y}V50l&ha1z*yI!Hs9Sj7V=_=yQ2sP{!j3CJ_P}RP5!zR8zZt2vqzCc|z zk+-o?Ibjan%>;WmMgePWdOhsomII}=KQ@=YF6vOIlW8P4&Rz?e{OD&xZgwe$$)@^@ zAsP6N_=x&&rFi6FlIQL*&zyREeSSJ+ z*H@S?yi%CQ-<(F~VCXnM83~i#EP2@#%OSk!)pGRiPy{VklYOSsUl>r{y7 zn$m*b7H*0Lrz_;o6&#Wgl=yq5+s;0iG3B$AAFOffhgL^KtcU;%;{HV=z#8k}4zv1~3N3ll z_db;UL%-4Rg7&IllY2dcPWU(%NYcro{h1sFYvAS%)sO)H!(?K`0Nc z3fex8_3w5p(_3bmf#ojRwW>`M;jCdsT){{LQdEGHHUWe6D4&El^zu0;&mpx8a!`^m z;c5P0c(E-8Gx(wEr{%?#9sWC?a43QuY4PUtG zl1SJZO<%-d_PCf$HrUnZ{AOY-=q#4#t|;(+Dqaw1;bgGW5gcLJ$&{U}v==Vgk=$vn z^1BnduYcSIC(dx1{6R?DG>DfbbVTzmP7?49r;7<7?|;z`{8>gDKX){`;cJk+4oauc zknR@wmfj5dH1pJu1|8sSg8fM(l?9ag7vLiR4Xg0nT36zxiPU2TF_EaWe0_ftIg-BF zz|oB2nzQwZw@4&?%iX2vZN2G3w0GxYq%m%{Ut|`zUgJ&Qe1tX?8r}u3Y`wr_&;^ZH zI#E{8Vswc#1gtQSyPH}4@iGSW#oKpSIw%lCp~caHBmpa0v4P{}7Yb>=&C-oh%J)2H zahdI;pk)Wg8(O~DkKtmP>MEDjQW+$SkjDC3s1oJdS^>7#YS5EtVJ~%KR35D21aa_2 zD11tm4nu{yTfZ{ouqUZ`KB%%niuk0pB~g~h6e^0qsY#e8K?V1xCMMRi4(ZljoDz&u zZ%E<2C<9eD7|1*QWF^kp++8I8pVq!S8tV4{`!mLtk&ta@5`|HW7^3W=1$RV3wox&Z zU3O+fMTnwoVW?1&-Prf73^TfweOE?VMj12481o!`@B4hu?|J@to^zhpzt?BEuIv4J zFQ0R+&-<0Me6#k=WQ~}W&Uaj`9f6(1MjS(yvIbJ>kk|Fb#!8(#ZDo2rHV{jr*dXYJSBvRh7%TgR&= zoUm9n6iPks*M2lqB8SIE;ibRYQkiZrb^hXd8=7^T!ac*G0K5yZ66!AVC)Ro&5x8Eu z-S@l{vnUWE*t$e{533J+K1;R9y!YYI{TR&zF~@f)n?*2Hsk=bW=~wGl%teY_(8 zT(S}a;wz`ueYpm2-<<;&px@A2DJ=H)jJ-*P^=(f0gSnVt!wtp4H_>H2uPclsJ_M!l zUhX*5`Rs04{m!F~{({dPrw%zsu_orCdRK)()u(*H!INj~ z^yRPLLLEP4+xpXr{0S1TEcX~9AnM&DD=73nRT!L>_gjTNv{nv|RUYIdIh49oe3;xj zstb;-fMVw^9e(*t^5Nx<%;j-Z5UNOD@f<4aY{o;IYA_&h^-5~;zzMl_uRP&7Bc5a8 zr@*cVLuWgm2vfs~r>SG9U%qcOn>@YBJGJn7eEb7n=g6R&!A1L(zDBO<66I4A@v{Kx z%JZ}QBVAfr3P8Wk3qzBd<90{8Un(FkK2)3ibm=DRk%w_j1@BneOEgj`LWo zQC@ajulGXW;!(onOQNY&-}9Ba1aGNNTNzZ|L0vNtOvz8xaow1+xq2f`5p_p1MSqtO zF(Tcdl5CL^`mKQWj3@skpvZZElh6EQ&bhy*o)Rs3Z!w!A$stjrqnNeP>w2LU1Est( ze{uQQz#kNF2%VKXCLAy)&4G9TPP-02u4Ko+ zEsar_R%GaD$6rC;y9D2B6!Oj8PI2Ju%P#F6;oNZYA;=jO2%7|6<&N!GS}LN?Z0j^U zF8wRn-bv<57VTDd-qepX!#8$BGImSi?c@w*QlUz^R+s>y+`8IYAAiy6BdDr;-NEas zzwcE%;`W{#34-0K3GU3|xJ|Cz@&v1hnLO<-C_CYwT&w-Y5pyR&yAhxS(UG+6_%l1>y2wh5LOa4_n1f>;%EC44pEGqjL8iAa}u>wn>D>;lzCR~>)iz|0fV9v(mgdXAyBRPN4!s}oqsT5l=$#JAQG0(vzTWu74|u4)A7wg?6vZts z1qi+2dSbva1@c^j2^WtE7i@OqJrU%n4)!*V5pP*GQNjF5#IaVxK{-$ZZ)mS75RK3Ea!5ZZ>&^|m94?=R>XyCOJ>Y%#c=5cS zmIOZ@k3Wjpp08{EuG~g7YkMpI^*}{cRjT54DTisvNBN$QCpzbJDh%*DLwpF>HJ*+` z$2j?j>PsdD>NW-a-6>Ozmj$DzcAE#pUo2666+T)@RoU@cphSxAFzHO`t#L+E1EE+W zsR)#9Uwb6;>f$F-_b#ovc8al0z^lAu7sgD5@@afrU{&b~A)#OZ7*3ejVrlrIFgf-I z6;~w3)kbZp=cfsIr#OME{;2+UWc?rMft;XALY#oG7mP~~;I?k&00{zI90q;@XM^9y z#6MUXxec@&Ry|GVcN!8Xl%xyI2`k`CIV){(KSAfB+q?xaN&7H#L zN%7^<+ipb^ig{hRjuaBtH2q*#MHBoUg+q~je-mhxO8as#dOgIyV%FO1X=vBjinFnp zpAxr&EiugI9FG}g+{c;J$ zH_QT^UlsWXI)|huS#lI%+CH=j7>K>*9_DhojX|h730(uFKShZt)jje4+zMYxl8NlM zk2etA3E>k8-af0^M#TPjZdpve1$IOI9D{8Yc;gvz{+)W?eWEzw_-( z79V!oWm#ujH_&N{x~d~_%_PYF!I-i8lJ*ybH6cs*#L}y!iW6!rUJXhM7!2lHaN4Oc zmR`$U!^B)|zv62$O7=c0?B%1x+HTO8>&!LLYxZwuf1!RrGoClPzbL>=3vg&<;`cOS zwR_>R@^;TXy%_dt1g1@S_}9a@?e6_%{*R=5?CkA5v)$FQk}e!Su9szy9yPU!%sfcP zXw5cLTQf;XFL1C}2ETzbk+3(Q<3*qvK=_FI3E+ykiA1oaWreTmF!=5aXh`m3az~P3 zTWR2iFyGL<#1}&7!zZLq5a`Vsl3%ULvN+GFa~{F7n8Ns=+h@)gYb7NlE4I> zE4rkFGt&^A;P#@zcW5%*^T!Fq)0BZ-3L|4+#$m`m-Obf}+`2;T`mF~JiXTJ?2&K19 z*Yj!u<0z32vgEBHW6*Q# zziZ+IowrJCb=eG3+mE7`YSYBqcUtJ)liAb0xb9tAD?{(rAi9K<1b&*qC~Te9U*sOp zq@BFaj$tJ+$~y?VpZ@q6=AxJqiLLwL&`=1l!yPqJjQa#o>*$IGVifce-W&NuAx>cu zU#q!v<#KFCyLsH;;9$gh19`oP(n@J%Cd0IYDJ}Gw2ucfm7Ryc=(?Np&`k{Z!y1)0i zv+D)X9HYuHR$XnbaZsJ=7S#0F6B%p$^!0`Zpqc^a+;!x|IQt7XW1Lc?!>7{Rsw?R{ zzQ6p%k_~A_#OyXiCl`94Yi1sOXB_4jTBbW_q35YLp=LC!*f)FLiHmxW)qxsPe-gN! z?%)$PwRkjSd8i^>r1z*($n@5zi;67Gzk0%dk?!zOzt;m{c!s)Gh%vp>`oz}x zN858ngH42?08M3;Q5)NX&6>31VjeWX%Kb-F=HOBqz;Z5zOh-fcECm=O>Os2;p#E0| z!yL0~rqO%iZ-0q-CAtZlWBj#_$le?c8fdPp{H#70sxvb&F)=o#h1uPHd{{v~?Gss_ z9cBhg>RT-GRGXAZyR*{}|L*C6tP;{V-ote&#NPO#{{V~mAOp@wufpS${Qqg#xtEWAm!piJ4HVt`C*?2O}^Fz!VI+e zL%E9!fx+g_Wp%SV{a)YQ`drT7E;Oh@no3F<%T^j`GtzpI+aI4Dw{`UIxew+MfSps9 ze8L^u;h}!R$qB~KZ68;%(x~+Mw#Dm~+b5)%D9OscE4RTjGT@;UDjf-=Lo>-cXr9*; zZY8gEhns9JE^$Z#*e~nV#ysMJ(mf!3i^tAmh`#TT`$y@EcH-kdWyJ|9$)HS+%iDMg z^*5GH;%n<}S1W3Euf6;+sdqqG{rJFY=8vEXaFct%ctM0MDEolGTIAoQMh&L+gL$1Q%QX|x7y`pO`r5C;8EneKVPEgI>M46x6EPP)gnbJpW=s=-zUsU_! z9PD3e-gMNC0IHln1eTSpF!<(%#XuyUJ*INIduph*xfw%45k9tmqT4ND0dP#p3;_a8 z2gqCHojr?$Mz^-_Mv~{kd^;BCVv;qeHrA+865e~zR3fEM-c$eh>nsAl5wBvQ*A&&< zBD?%}%_3bTtg%(w@K>5-em$Ao?DDSRP>2^3B>?_2N}E`aDtE*mzH2t>^_-3_;TghCGOPn_UtwL2y#xIo!Z^>8Q7AJ}=e_fP{EPg&cH z4B$q|PvVhZi+8g{L{`xvJo$5KJw2B=b2KULCqci%&s^V$>R5Vb2uX|)oHVE&g>S!>V&`3~yWI{4 zHecarDff1KBeZ4LjBU=b{ffgdOZs`mw}r*HKcnk4#}_Er2gn|uUQi|l98IXK2n|6O zkleZuaQGPekJOz>?86IK{cp3gt~_}2+3U+vRQosj){oRa_h=nJ9_*|#x15D8kDgdH zFwJTdBQDe@Zh|*0Z8!`bWXXNz5Mcc%t!x?G&7-;8c+d#B!hT1da2SXR{0_{TtjiWO_8 zaeSG!^3z!yZ%ParHAmuBjX#H}dr=tkYkN+RWN^ei0Hr8;+gG4H>x8bD^G4no3N*1? zJi;`4xR;ceF?m0*j=C+LFkxC861wB39&rG2SwmZ5897P*8X@KmEPapujU|)R^zqZX zb@}`17Jsz74!frU5G1fkoeEpgk)lSKwYc=3RXL@;nf@@-HzfP+bLK_j3QIEDDT|_g z4iW`y)q#>jNmz}}`_d*{Tg*AOXlFRCw}!mXsU=UJ96gnA#otwB`e81}z+Nm|PTQfdsqJT>9X0Y*l(0B1 z;FoK>n8V-Nr?Kt}EaWR)Bs4lqCSQ-sW9HdMflmmAe$S2yygu~mk!XU52{(12hrb1# z$E9AqS;eM7f|-tN==cycD4(HZ*v5a%7gr8mZ~Gz@iwKhx7wwVVu<~Io%$P$K-=p(6 z?qzFNT?9*t@@60oSk{exPm0Xk3tRIj8fc5?(oAt3-xdm~<@^jQySE+=JASMlX3ow! z<4Tb9%`HmlcpVI+>&n-B3sz=IAPB&10;X5YWeK330;T)2st-M_qaLaqS{a)^i70bP z*#C0Y^RLwL-7jA2>s5WJq`(D>Q@C034w@>Ju%+n^qqcHBl_BJiv;cX9#-vX56gQE? z!kwL(8kmx7o?c#a%e|(VK(v~^&@q%-h4gnU(eWW^^#BZWN$?Dld zOU5Y=@Ke(OR4|Db(WlvyCB`YVFgtf$m2V8C(w*A1s45H=2fe~J zzk+%s`NaaZ>Q|QQ)*XzsfDrZjDcd~{Awg}X-1+%)sht8WP&zA}^l^*&M3}%ozzHMw zVBLiUkYBq9=}^cwLwYK7%=63+w{&hK)04kry0?xbnI4or?Rr!Y5Zo~vj@4glAZmd( z;omJoHl0Hzbb}wuf!J=NwYDce=lM@*lq>QVvl%^m`ll_GM$a1E!exMJj}KT!|E9SK z7+~XI6}IOaD81A=%A=E;aNmx+-nP-rybp_xH|@rJUZqrjpHuGggyp%7uywdR3c%5c zrxzvms~P_Yv2#F^D@asC#BudcR4#1dx3^DjVXBB~>ZdxD?EIaJlYr)&1S`W4J zZ(;4DI-4KUmM24%yF0rc35u;ZkMeirT?u#B03s$@nekg$S3e+V*{`ZilqbLM6%PX6 zl(hrzyPMO(cz}#sd&kZmu7AnjzSj`K#l?jd|Kl*vRcFOeSqUC&WmYCDvV0bL9$R!Q zG(*5(mNgay+j#xvP7aEO^)Q z@Y6Fk@XiLb(DsBMv^R@*`Yhe5Ln-8RYBI1(!u!AFlTsI z<0dGhXD{PwwAcu+YA!gzFlOmmIMg_`K7|AuFko%wpBYGQI+< zUqP82KEHto4OhD44}Ayu-_8g7TFxDf&?S0)`bFj`t_2fo!G3t|$lg8|cN=|E9@GVS zk0qzgQ&H=)o&>CTu;e}|$Na~)Kw1vZ@M?PjPH1{UaBJB`Y5VaO06VL>e6gR&w7XRf zRgtAbGxeQ{4h-TJN(Z|3$Wu6zoco6O(O+~jIg*BTy093g{`)ogFd>0R7qOr1h$P+7 zM-m*TbT)fiXV{%E_vAJ+<^1YoGYS(+hBPntVuMxKRk?AjN2&X9&b$)r2KRNeJAK;a z%2V5bxH-2HL)IeY1J_vc*vg@S9wQ$;<-%`QiCs{%Fkf(QQX1Y*PyFQOs!}I%xczQ{ zp+1R;!~Up|BD5gj_22x*&jRAijENq-y%=QI_={pkk71GsugY2+JlpWBlv4a#ubB=} z@yj|wj(mf)-`ePu$)y#xSP_Y0h!zSvS7qas6t+X|@t@5G>ZA1mLMIzp$%dKVhjHU< zVs|b_!({t6^>-nOB1qZ|&gRiDg#Li`;x37Vxhsc923vDBE2I;v4E7Ld072)ilRGy; zi#8d`$A^&nQyK+y8`0QRBPit9{1ZY#w0J9BIDW`QFo(y!*DcxpzN=<+k2cG7kPxke_Yqx|AsVboTx34j}#h$#ti9%c(j=;lXCf2vgWuT3lk(l_Om^F`L+5s91gcja1x8k zOCN6=UHF{amJ!VU5QN_WbatNQKoKX)!JVh<1J+| zF)@kaa$rkK%MFjpr{2xQ7p_E{OpTzLYKbSh*39-+&z9Y7gQ3g&X1|Bg-^{vLT3S{} zJ?A$tH0-d-!MjnaSRvTmT(=9Pk;k;~mZt8oe8B1Hrn6GL-4Yu5VugQ!-qcVtyk0%K zRGgnbxBL1wz{kgTCBMM7qMhOJa(*<2@u^B-gg{jt(N@Pq!x*8d*{O{Jq_Vq&TvnbjU9 z7e+aWGi^j1!{HY0h8+zTKK+k9*boojpHPMX;%oeLVYt(umuD#aVe3DbQ~M(v^Dhv` z_ruA*m{T))_m73fF4kYODdywjqaFI+ZvU}Qu>Y>|k3ao`|Kn-?0K(ew`j>KK{aD~R z{fw{Qa8A$Por1&b-(GF)CQ7*dBq9>{hQ33XN=_41!YND41;+tWD{HSY{@O+2kH83_ z!Snmfd>F-KVTI-cDjbMXv|O-Xmb412`(YHYjAh>paFurCP4!PclSYpyA#}9zD07*z31Nd zz4dyn{ijR1s=B(mySjFSl7bWp5wE7FPiPU;r;40u%rMIPq)#2><|qPAXEO zfbvnoUjP6A(Oz292>?LGdij8WvfHrL*AQB>&a@-&7j^hW~q*e|G*ifuf_Osjai&Z@F0i66>FR|G*6BqTRxld}|8K?r2k5^^#q6x@998WNjZI%h`pxYhUH^@(YHVt2DrRW! z?BZyu=3#Ft2>y%ae*pfQQo`NROx@J+w|HPSw!g>vXZL@Th}qfL+u54hIy;Hk*_v6J zyEy)_$iMOab}v;^hyU#T8(?kuqScGXSzG?E7;OJ12K)bs0sjAE{OSEq@&0Ay|4X|+ zb1P|W=wzW}>HaU{v4a0L`hSD|ZJ2+!h35b67XJYKMfykHf2`KufIqz|;*x?${4D>9 zD}qQ}uqRsp*ar?7aS=85`GZHx1j>QWln87>81MKN1^AEpu~MZMzd-kY#;%~8HRb=>>Kuxzt$^h7I@#!|!1|+@i02UhU<6{lv@Ab~|y#Favh0 zfG^L>%Ug$_sH2IzkVHa3dEYg$;zyw81;eAos_(x`o;c(~+duvG<;#~ZFgbZI*gT;C zlxH-BXV`iMb2r59(}AyD25Zhg%B4zQz?l9YU)s)VLSn`#Ap{hCT+3~86mWv(aUSe< z;+hxOTLAq_%hC@2*$t=GEljR<1yw~F)CD7}p!wxLxugOPh5-oB@cvCr&;`iM;NaO> z<}bum|Kzg2=T~|gHlKxFh&~K5vk!nvmOa~hR#jG3Rz?*5V~CheAoB^7O#CV;k0_XS z=)Si!2B7xRpp;(FPWi ztuf0?!Wam5=BVYn>IeWS4#x96Q0`)H6pW(%+fG=FXxa*Nw_xgqruC8exr3QzP zBAd5dhZEOd#S^K&O!(i9aUKzUiY9!M2ycKR8m^mN)lco&?GS7I1vBSGQK89u3Hjf) za|e><9YDd*kd6aYfWj&(HS%vS;M(eao;n`;8m?Jdp3bb2%f8CAzo_l!`-ShfPp}}s z0toHLMM!l0Dcczf7}58MkC%MCn`=Kqd~eeiT;P7MroWd9p2Ur!Je>hl`#PM-7GjBY ziy4ub71}!}wSS7M^Arhq(+xx?<@Q1Oet^+EOwG>A@JHjn*5+*pAO#zM1!Bvo_mBBx z;EzzuGa_S7^dBC;11AetDclaW_y5K6qX(N-dJ4AYAFjUB@IdnIUgUuyrdAjr{<%m9 zyd9it`ycD2*~wo%qV3%ZTCi~IuN&ldz<)~VqyV544TkPP{Mn(hn|!Ru-dQ@I{SU{< z=@2{b+{n+;G5f&Pb6GT)MSoTX4|pXt8X3Ff*YtU-B-Y*g=TLIPBn>sVnG9qMoGbyT zSpfVM(P2-%>!D?PPLf>O3GH!vFK!6=>OEbYbHz3m{d?|jh^8pxIyeN+#>B&tJ#W{c z9UIflor?K%ogKWNG)Crc3}p7m!}^khVmb4OzH%J@>O6sV`?heFVeSA@_URuW%%h8< z48i_n3Vxjc?VP`huh}tO5@NmoU0Ygq?8Z~)B6DWAxW2QUo1-PUjO)uUecpN=(%{J+ zegW5*XX%*1E*McGM_F4LIV0b_AGv!OzeC;cIl7Ss37pAO>7*^F$Jd;c_Bzs4$fpa@ zL2YV${m2&u#6@0RN=sF2LkC@+Yxu_6IN7@kKt9wU!&p>(ZPG_FL>3{%#U;z{l4!T~ zdTVfk=tKRc(+t_zywlwqs9mw+M!ZzK%vgseJx)CUF!n&+h|TQp-WEYxJ&}X%T=k?3 ziX!=e@!R>8ncGM*Ha)RlBxA;j^fYs6rPB&fxrkNF?zL;UomtSwsw`t&WI|K0dHtX` z)yD^W7y1R{SN(NCwn0(T8DQ^3^A=F4Jh#MDO8x{nUKE<*CuMv*I9_h$bX&QNCK(66 zX2rRK6u>Rsp!jrmOsR98UO6lsjjOtz(pW!f;ltyHt}rB}KnrY$rTfm^ASQAZy@h)b z#=jBzB_6X*Me)gR#~u+|m9%Hj&qY^k<4~d3&R=&G36Gy)r#_`j^V#C-SnD1;FZSt% zjQ6x1P{@6|p17|&HRb;J1rAC_Wt^0U@>6i?4aoDniGK6f(&0REbOpRBjh}2&n+MAz z0U^oc_$*;UNAATheO}*tC_09=1;Qe-bL;aC6cYKen}2wdz^kJkyTd`h&6HlbRFr`@ zP-;J1ogp=@*y+)hmq-`%B;m>%&E`dF$%ZaDYv6 zwn$s`V~p$bz-;+Sv&UdI?+tF4XSORQ=90~MoTXQosoPP`DD=xNVf{mT5A?FD!AdF) zL~Hmox&D-t%hTW=u0&$1ef>Y}YcwG?dHpL1ahiiA# zHna1rqOLkT_hp{6jhYJ$h@EeVzjf>5LLZ61L*!wse;1j=h|tSUA-wc^vCYyovGiNI zavVccz8~)fiK86dLzp=lEPc>Mubaf6I!E0q4|ypM918)c068%`n&c#PRinwq*Zqiz7A{}yCNfc ziqPkFX5^#TkmB(URAPE~aiH3YTo?G?Q}=To^>w?l9`kD{DrDG+g713Nzy_KaTED`t z#`37oIJi$p{f=WANZY5k=|ijyTevXsak7FB9P&aal!XC-_0ax!I{k7v1lB3^u1U%( z8TYjj{r$c0M1t=2I2J6r>BsOKaG2#H%4&LIc-YkN@G2CP^_z=?8AQvK@8a#e2)3e8 z&3Alk+V(Aj{OvbQ3Q|!vCE{y7(;E;{L{Ui(o^+5qbIs2#$>8(&m~`=B(qsJILVs^4 zM&HB-l+vD|3{>TR#hVlys%Ha+IbHVDIMS8R&V1amk=|E>Ei5E2pM+r~ZQhcRE%1Ie zc&)c~QfE9M=&h{x9tRx&)w%$oX};OyGthu{#-pwQ2Ao6%$j-LEUF2H6$3&Q=Z5>D} z0@m(5ok9%t4JdF$iJz;Rw`4jwG@<0}-o+2(zse_Xq(mstq~-qxjyvVn&ZRNyLeBCX z#*xAmq?nPI%zN2e{yJ0E?un5sjPy9S!aO-zY$m5U?%fq16r{>GUa2_K56OmTrHvN4 zhFFA)y=$QgatMISe*175$;O!u>vn-iM{$2qOaqzwTzJ4t)>OPXNL@Ts-K59|cQIUk zJVVBZ$7=G`)vBXf!MLXY2I6w-tjSV`C?%raUz8z<7p@xD423;huHx-(Q#}L?j+KU zeHX@@yYDoZrE=tS6knXE@^;Q)**scATW>KWG~15Z9ghbN$PH81ACeJMN(L20YPjr# zvV|9vF%XE{&!bT}Rv!sN1<`b5XSmBfOM*jG_*D=6HZz)yOqjFz{!9zz^D)S7-oK?N z+5~~DcUIC$G@KRJp>joBi~ysHdiyoNX5tvFyB#EHQ6Lo$-QybpL%w03Bm3EItBu1) zvc`c$yo(d{9o|2V%o~?u99IXj)qX>xeekBJ@AlNJktPk_&V)Ys;8cCwqE?Yit~{zd za(v4x1kufID%W<)^t!#J9%HPB`_&TaUy8Z(inH<70Y@XaiG8-<>nHIbGE$5j_DGdf z7^TxeIeE}Q^SYmN=8)i_5uup_huYGd2{RT_rD+j&#-F62tx z&RPe2{OrFj8h_5~VsyHpDsSZL;5y^ZHoGGt(CX2lswh6|J>i#>>zCcTWJ6|r94`jE z++O?Kqy`vn8{vU)OQu-U+-@$#ntX2FF{5UfsM;sQnV3PF;(oA&MIMHs8p;FYOS{pT z7g2NWB3RuQ2@El7V2#X}M`{)%-k~0KFyf-b?R)~JgeLitiPf4SaqwQ-KPc+amWMqA zoub(0g-OXkZfYhzyT#fE73h4C#F`V2EZQ=f=H#?Xzb&;)N8v&cJm{3}+U%xZNMntV>{BA0@M}b8AEf0zc;cLRK)ednl zeukzdufZ(cxlfDL3|osk87iZ5PG^*4;$hK)g@#UDuv#aEsv)bZw_>FIJPKkKAe~x~ z_plVCxEO&U=xP2fNs*efE9opd78FnzgYMrc@X1+kG6pp>h5xnh-~4nS>-lQZVau@B zm*wCvNchNcIZXL=L~-eXN2}S1%lo4um5Plx{Y7LlzkKg!)qPKj$!p~!C~{=o&R-4c z`xl#=HHum;mPG9Lsse@}H&NUarkA7H_FBDm7_l7&9xEi6pP8}O{y8y-4 zs2WUU3IxPyf8?PI*cK5kp0XCy&+H(0C_WbQjZYCZu!ryZ;Gs4JX zrhr;M%jFdBY5H`}Xv1DqXLHh)fsXp|d}7Ow@1tmT_L(i0E_L7f(DQ-pQ_(Zv;KB?w zRN-h#^1qgbSvm%y3vdP4qy02m9^I+l@@~}$?E!fqi$k*qq64w4L4E{t^C!&g&0>B1 zY(7f8u_!neSxbycaR!8rm{nC2lVHYpW#%7z?);eZhAVv`@rdTs1h3~3E#NQ&o4GN- z#qWM^881nXo*j7dj1Yi7X$wL_7_STZnDOvjVKOy;-=6;KeZ2ssPu2Zi8_ps53C@nKg4!-S`s%;txsh(mZr!USV5-Q(xW{;S}v=*ca0$*E%D_TeSokMe1% z!?|uy%i+TPh%kpOO*aE}Bo#JUAVh((74xUaeXdq_WIX?p++hJ;*!}2HdFkUX=g%Cr z{0mM^8zTMS*bCNm1Ke`y{+M&r64c_7%iC|-ZeM9*sv=pFbYMxW!{9>A#N@QMspp5G zoe1LTj+tJ=5A{^pFf*k;^3Za?b&-;!Wu!}M1SNVk0AM8J?cGP^u>|ZySBetNX2GjE zu5^Gws*Yh-p7cT2IJAI)T14e#GsJvBYf?bqz~1jn&+mYkU0gCSHlFONoib1Vi$(%H z?ATU5@#rI%y3c2$pB#qj^X>a;5kHkuVjueBu+sNjSJS<0omcCIWj0sOB5bVRYdF9^uPJ|}R1h(Y&a!QmX%_^UTRXLJSi zT}-cdgYd9}A_taa?8E8fHtF67b2ynMr;oRw6$L#?U|IW(6CQEhI}MBCJxEe?6FcZs znfB&$C%F0)bp*1ap9x;(1WMEc)u~@)X$^O)8V)Qd;zJS#)LaVyxDrk|T_<0Cp#GH` zdN_TLMTUgkt->7(1!qvr1P%}6expr;l*3eZ4#S=g#+OaPWs(+4PU@=g57+TNMX7R7 zpK`c>F*oPt)g{WVn4a@un`BFs(uU-|VPNSh;{1fLWni6NX^~ESX749x_dUaSnKaZ; zZyIbN4W?fDfYgE{rt+DZlcRpjI~3p6!D2Su!jU}Ex!bXne|_fqbVGmT^lG*AdQ2Qj z1ZkN|%jfbk-ELXD9}Ec)>>r26Kz`Fe?(>Zgpg5kzW>_f^HXIs(B$m~SDVfJDr;AL< zHfEmT!mVw*w6V#bS#kd^dz$WYz%rnK4{9N?s(-AT5;AB8z?Oq6zC*AJI%F|VzDk0x zcDEuSgZBU4jMGn+WAh2Kij59AadC@kmnpG~j#Rb>!-b(aYQtc-GK)q4;#_5**7vHM zJ8q8^ME)LD>F+dQc16j6x|EY_M>CyU?}wr&cu@51l7+fJkUF*@myA|6HZ)T^(F8az zjd0p1(_wm}v}*uK%6usyVe?Mt+~OzhgG4L6tUCyK-1e4@}#Wfr8`W@gF9Q>$dFm zyYJ}=%cM%LsFoH_qk2Pq`jB&3*XI7{7$oh_(*X?46G_!ezxc(OUF;^H{xC^+az%!p zZHUY7 zIh;msvkhv}c~{W3LBJ#4HinI`76opgO+$UvN$+^A%Z*89_fc3AyJBf5Xk8+$6jt-sdJ40vlGltEBUmE${EEjsYG)y%_a) z157Ah6q~7m(PW04;p%Ww&$;s(8Z+ZMdi2wXf`n*0v^Jf^%s_f&lS0#S!Yu%nJQ$ON zU*q{&e`O?+fkvRyI!l!#K!D?`kfMX>uM0o#{mW$3&SsHp&sZ4r=98Le*R9FU$>U^I zsQGd`Y(RhU!J5ju*Lb)#2t?`Y9}TG!A0q>#(St%TB49H3uptHS+Q4XIJnR zH>3aq6gsUzoYjf1hM_XEKSN)|`L;Sv$c?RAM1R z6-b{v&qQik%08BZr7n<_akG)1uu(n5I~3_GA+{woOG@#nkCeW{$saO&wR709>}@x# z(}11sk6RQ0g8(K&;*`U*s$tvey>=kn@8JInr-zy=_*Ey`!zSGT_7-n%A1mwGq>Rq;CQ@4KvEF^qw8{m-ON zo4YNoe8)`=+bqoiJr;hu*XHEV<~!VikZY1`!fZEl-D7YsbyvI?cnoewqCtil!}j9w zan5m^@Q4L1NrS^8T%!Mbb@U%_Fln!pxC{m$X&9Di-6;%9)C#01ObfSuq2M&x${Ss zT2;^X9=sVCDWyFZ3uoTS80j2SaZ6?hRXPY_%yA317h}nAb$fXu`0shKpAkX=)dF(eN<>@(&^6fSeJpP-^*~ z&W=h(e{w-Dsf=|eShpREJ+_~0m;;F_QR5%+ki9SX4Bzr-a8#3T&8UwbchBLYWvzB3 zBqUV3WPgG+CLIabL}h1B(8=2R$~p}FI+|!WUDhkItEE1Lq8p`el{5xEtVY)%VZSEg zBrPvFiyS-&b6_FKZi0AlvtehgS2WF8doyOP*@_}AmJp$Uxdkp35u-f9J0WRvbL^Ge zE>nMAsH>(n)Rs7z zQhXDd-YsDwm{o;7p$XN~5X!N}hLQCN8izPX~iL9q%L5asbrIf)@QKM(Csdehb_i3*#XCz6<(_88-2wv9K+!1KrzQ6E|oP{PZ@iLQ|)yiSil3 z0O)uMV_XfPeFyKDjaOM286?@|>bgkZb9)3$5o-)aN);pCc9`^E_>Rwa=m`QpNSxHy7ilbMzi&(rg;tt71YIwqFT9{qi9=oN)BLoj9AAxH3!O zQWB-?0Z4Ss@IP3P^L%PC*v0`utNaUYhN0Nr**m>x_`&@l8mTWYHI`U zKG2c)fq?~F*ggE+3xNPRoF1n&lGf{+?rokMxjw(^t1{CgsRTR#NU)n8nO3HKtGb45 z_hAkbAozIh=ho14sxkj#b|o(Oa0C}1mlM0dTRW$m(mMY@_v#g7^GvOGTK2(7JlVdn zbDWNtD4Qs|{Eo7&-gU6F;C;O};r%F(hn8u&|bJ;WvKoY*aPTFQLs^q0pmCV{40 z5NHt)%!V4r8^p3R(&6aq;pb5q_6VB>FiWAp?=-03`PLmtA%~&vzP`Gp%0awXMg*^X zSpacGMFqbm)MQ2ozTiXaw7qRpE{J0Ol0C->(1iwCgr&mu+em-T!+kXx;&-#$g_XXO zlN$5<$_LXmM@&}DtlTKz%guvO@FG1U%d>MPzU-q}AdzZR`G zP+(_=AZ9_oS`Gb)d!1bUDB-ogXGATB2kq-Ce)f^>G3}b)vepZ#yp;7 z&L>VP`hE+ZQc&wOx91_TP6#eS@P#oM%2CZ3#vKjzyLoz49e%}qp3vrZKh5Sg4g@FY z!6ml+I*Bay#;U=?+5Yg^#blbJT|K>dP5MW06MEo@9E+>2W^Z zI5;$4h!AMjAs266cz|PkJG13c2zC<@bb_pb50*?bt#tQ$?j!%M@o1m$n?(5To{ zrrbShI^7x^pA~LT5aXbb8^##qEILt-Fd87VNahHNL23T|oZCYa1~f=rza%FNz-qDg z4y7sHhgVdHf!w(rZePaX?&kHhq4TwNXub^p zqS|H^r$x0$dD;XZO%_Q^=-&{cx=PaKb_{X?4?kWUFSmXl=0QTQGE@^r!F!iSt*k)D zFSIcOiCmy*(zohzDyp!a$x2kj@Xu^x=jvi#l;g_QVqM>?w81nuSrgmgpb>6VGjkFH z$1x{oP)Z<^A-8lPauH^(bzm)eIXf@k(>E}JIoO6AO*Pd4pwvC>b6Kw!Z%DpQZ-FK6 zQwsngn1ure|0MEW@&l(Hq7J4Q!$2;|)f+-L;>&B2?5y$xc5VvB`Zy}!r^;p|>1acq z*f6j2mu=&~cp1tg(E?!VIU8=#1HByCis0WgYyqT`C2$&$`67?Brp zH?Ar#Q>#9UVq(4Jq-w85dh07*{7_xKBxg^KN1INCzAJ{~6vrb<;{Ntw^7^QZgQl|+ z@_b!a!Nd+1sTic{f$tV)P4msw3Tu?o=KzGJlj(vH)Nbj{-b)C%zmILks z?*nb+*7&zK080toBC;mgb!;4wnbl2w&JG=a6r)_h4fl}y*rxkf1%>yzNpu`@^E#nZ zR1A9*ROdBZk?&cUY;`nsmb;okKS~Y?zyB+YpYG_|pa0UbY!YnxVn6$RGy5q6&bT-Y zUJ)4#R#?}gy)LF@{L+1a*|M=qx#H#ia5AvhY%WP*)xFD{yuh6zOHbbBc(`gmr^maR zC$TwpTBi2=!R3b=$3J`0un9Jv57Th67hx@AfBCM7wcR8PUDus`R(1u@nlMzC+G`=Xiat!b z9hY%%b%$i5z_bI~%jzpoW2B4XOLEGF*^gTLR-Bw}#Wc{eU4f1E{B=o3G56+knXA=; z(MyJFhnJPgKXo|ViSVY-nc=`1-|q;`H{cL+ zb>oqSqxdx8*)RKcS%Y!V1c_Y4$r#Erh(LjlpZ8LKrFDkKNpckKP0v!daAUfP_y?wA zmi5m;JyS#Hk5uaxrPZe8Jfm|*HFMeJ8@FDOJGwoCutM3zRs_Dz5l_}omAW2&k}!}4 z_GZQdaR+%U*!+gCi}$!jN3$GcRIu@=xR_qW7N;;*u`6v}-z2(R*Jz#>7G{#>(ygKH z{N=*IWEDOQmCPc`kUSatRO4{0l=YH&)}JdxMX#QPp-xzjG$D66LVI@EEo?VUdb6C9 zv&%v^?)x_Tx=vvXj_WIvNTZ?5tEZN}H@lms<9pW8g78x5uc|0|;f|D$sNHA8`DU$b z_4M`lYD}RoEFyM=ML{PA9Gxkjh*BlTs*w?Tl~g8k@@f~p-oZ~Gv#eav>3Cq7iyXDq z5lQL@$T0jVf4ND(0&x2bJ)1P$^^KyoV{?eljE!bTK{^K5ifTMZgiRm=s*~aaWH4}D z=w%aK|IW!VKiJCq;x4wbPy=iF?-}Fz0U=TfBuCLs{uZ(!U)?C!=k4 zzGCI}s+`}Gp8I2;p~DjEmQ0~=xk08~qfj6KNG5^$^>S$pKqqvq>IXIKZ)#`I7kgeNYPp zf$v3i{(WEHhci8^=OcoOH+Zb%#n!}){?F%LZlhgnlW9-8LJx;Skr^Y<04|oZO7W*5 zv=t$F9j{i$O80xK8SOBhC`S;VG`1U+pmqad*AqaB?ERy+5RzHXm@7Uf7dL-UxLiB^ z#wpzqKfjN6quyofks|>PW;J1fL=dLq%tQt8u$^9m^Lf<>Xc*j%Kp_{mD1l){xtjG! z6~uXGG>&n`&8tTKM#&Y%HU7jG9{45O?yt%`zxnfPOKnM;U?ER>$%up_zvi!KP0u`D zl?Lin(y#-3xX@ve#k?8l40uUkTaP25qYIED1_EWIV-nc;1+`XM-F`M) z8kyZDfPhN=KPz^CTxi$&4V*$cId8;)GUEoH04g|er#OYIs~WG1O6t5*+{wt+^4~t+ z-Kzg7B|I$_@XOAMAe4P#>Lakx%&=g5;5rh3GU$2dgz135Ou4p(cqGKr=I87)#k6e8Mg**AK%{2J)eSs z&Fe|kOdGQ!ddbqGym63^Boen^UyIc3(?)*vW=SbAFqh8UHaJgZ)`AvEq+PknTp=>6UZ~x&(dB&)cJKolde$>TpMXBM{7>Rt0 z>s5z`8fr?rLpZ$TMiydX1cIHSnhWtjGpofbm^M zdUEU;aRUl%F7ViDkfZJo{~KMx9B~Icj;r}FB0wrf;VN(Hz>hU9w3F%;{^1l;eU_c2 zy4JIaGCU(mm6(pWMGQxAw2K(rG2Tv%h%~kUQNS`^N9>Bvg~bRbr@Y(Ud%Gp?4PMbe zlx+H1U6qjN#{&tsoVNg98Xq*=35K)XAC2-6D3liT!-_K9QMUatpp5H!pXZ0GpnL_x z!{I1Vp0=gcPvPB+t9PG+(%)}%K%sO*3F9J@kL>$R2L_3{xZu=h8~=e(a3XqaQ$ED2zJB`EKCteEmG>Jx%eMNRHX!kHZb@O8e4He)7DcCI29Ayq=1e2Qw=YHK6 zBhY{;WzWL*eK@)c>eF?!+Ja|&Zfa{>G~w{4vr7)qhVj?7QYsb$T6u+e zS%C64K-L^+gxIT9hc!$#pTl3jC9(eY@uQ+R;O*vjskAD9R*iymw;f5*@#7uFf=?;r z%INNj%T{+K$b~Lm07dx1+WuppDJn&G59~)rRk~xw1oLj5Q$L>_1yrx26wRkWhUDe? zjxpnL(qa%P+z=14Y0|6wOzTv5VnM&$dGV)m#TiZtKGSf~^c#Qq*4M>F_pS$Gmh-U( zC@mWUzvKAH<^w+~nc0|#aEFC`VfmZIM$eOpAGd2z>|)*E1r$?Jj{Qk@0lHsiA@yk4 zmL4Kz;0ekGzLDQGn7=cDiu%NzQOwDqqnVqMX>*=SA?WF|n~ZKD22d(^xKrrU&dVD? z_m5s~B;~IX0vY>3j@RPu!DgWZ$t*3-Edm+_lEEF){X;cij$xLhmjt?PAbc(k>uli3tY^ zJuyhfr0CY-j$Ae|Jxan^;iUjM+pp5|dCen?Q#d*8=&(Xx03jTe!f}ul9W$EFT&vxc zan=kz2h)GW>B)#I!t*`@kEb16E=Ja0+{|ke&dCPTD`%2}m6fq}6?8P(MT0c*O_8~K zRx7+8k4Iu#_S}Adup@fNVVu*O z*gqv^SuD}_LeX`l=M2@oI}%obnG`%Rkdw8RbNE;YFKk^(CK(JlL&eBUWKx*d%k{H_ zEBRA692Qils9^>yk%0c&C|VtVG#M2_;!5Nn(bTPt z<&zGd$D0|F(haHx=8(&}HrI_o;*`67(&7Z{JnY1vs_^Au3=N&!6hLZcBI|blhcp_2 zCqJQjry>cso#{4@^NAV#SY9ctutg2`7_x$l0k9-rxN$AEKhezBkH}PlpKONIe^5F^ z(G6|fzOhC&a9TFN|1w7ff?4y222)D0c-yymIW~GaHu4^Cayp5BZh$_fXn7;FXrxx+lWYre!YK&37kbz2&0C$ zW4!^>kw8aK{=><@>8WNizXm(J*kA)<(a%)3Ft3ral6$U--Yt-G4bZ;-%@;oZH7-X- zM3Qe<%Km7NmUxm-?PZus#;@2vg^deTty6sHRw1&Lb5*O#-fD=j$&M3#!|mjKtWP4y z10m8nznC6*tZ3%6LQ#`cuiVAQ-q}F)_hctabev2@Pzor7M9FOqrx@J~*v%aCbL*Q* zoo5=l!YEup)s!}O1p0My6=q{nMjl8QU^j2F+29xkcByG1f3 zI!%c5GZOIj4e${2|2h`r<>5W_;)r5mtmjLFUTRL4SZsE^{h>Ybna3N&lmnxK6rPHr zki!Hz4($2;)q1t4^xqZwH>Hr3JY?3uK&yJONa;WEfQtI!m4VU$EVkN?5>z5 z%7rj(`FAW#E(_!Ud{j=|VcT$ir-!R7-`kEBV&KG7%dLLvcR%hRV8Gd?nc*I-Dv~2$ zKu#DP*dQZ(LI*z@y=+Q18sqself8Uw?b^DxeNoZu{j2P~nSBk$GQ-#>r>G91d^)Bd zYXA~UQhinj|Hz$Q^-g@2qbyde9^f>m*aBc!gk|zE7wi&N)n2+w*!SGh{V{XN&(U+j zG^ByuWIRfJv8B1``^s{or~M;RIycP6kWaHBg$>{%aclwfeQdwK4w%o>JN9&UMDfF* zP)15pEMoiRjV`a-t|qk6rsesqIju@KHRJH2aA$Dr3^S8{%eXih0yT^n$ezsn4a#D* z_*f_+gt0%!FzpO`xGrA2Z@iny55n{rvZ>Vlf$WJDvHc4g9-=UuI2#`!1`2V;nwL#s+ zG?Er~4EL?Y_m5AI!GVh3=Yp3q-6jM%J z9Htta-H1JN7X9iz>RW*I0gk@<%rW`IH%dZXYRQS;^aoj$D z96!0D)BpM#=BHRi0LKwP8k5OvPRo7A_U`r`ZQ`L_KsWPp#d~A^2V5Bi+@>DuL^Xjx zx+i<_X9Xd6g24lEJD{+03S}c{iYZMuw!P@X&hhe*4WvNR?V{&>dCS!qIY8M0>Z4Xh z<+^1Aoo@^eBI9rcrXmFSgi4@<=!0wx7VLiX3LtY@4NRWf7)aVK-s~J zDHKMm;>lBHwU^>(llABEa?bZSd)Y|C3fhWbQn@CAP2#I3C$s&gbnIM4k@kN zfNvZD(gSaF_obXaZX43J>>4po3&&7n6eB)w!IPBREVHszw4Tm)BWZ^{glP`n3iJ7#L#!?iawTOIWGDY^|-k z<`#tWltE`Zq6LPG1Vh(pBe?Y$r~F?cKa;*dt$+6FXviUa|G5#wnSqkg_7IS1{c%k zONQze92@8@kzKoB{)9zp+;(;wM6Lo;)gKnczPDezE~lvh8ppp#+#c(-^BA|2@XdG@ zd6jrN(&j9CAyhxXa8S%+l`!Ccag>}Fep3;9v`uXO5N5uK!z zSa3~?zS^p~qRB7Nm>UZ?%&*-G-JLL=5@w8~y{{nlKK#);t$|D4Jd6h#cU(=m=2y#q zMG^_?{ZsQiDjKLjs5Q$=!IGs3q0cEE4G3mM$cuA*&ATeq#^dR{T+sxQd>@ytspRV3 zCS+%;qqp4nAxyRg&PiDyQ5v5DZ|RpNM{s+_B)YBoY&aAQSHW0>EwP*fChAA@>Rsd4 z9o*a#s6}-y5r3Z5PMa|RNx!5W>q}4s>1ZYK#h~r66`@hXIzs8c-PrY$r4=SJipM*0 zfpKRv)6N%9S6Kz??{C(WXBY;z15-mX8rv7ahmeEM1j%+fV#wXWsXQ_)#_1Bvs{1vN zH$Z~~GwiAkdE3k!>f!eSSr<1uBrC`3r4UQYr_b*zS{h5P&eCt14W$;%%lvOM?e;1ZE zI5M}<+1cbMmUk(X32wFp@Uuk9zXj>GzqldEqK|vkRn#;F5vU_B;ns6*y?5|?&dtYVF0bM46Op|7iU#Y{}O6q6T+xnchV%>6Z?Z1Ejg2~BS zZ{Y9fcZOv{WcGS@Ij?h6nryBx<-B&_AZCc=WBQp!kzwhp7+lXyEegde)Z=~ zba4jc1689aUCsBQl-@gib;o5HWWh%lEX$sUmnAmHU>Z7hn3XwToJhvRFZ!&=OE?O6 zkw+EvuO^K!*}$z%M%Vfa&Ww#!4MMgk-CJ znpp+(rg|yX`Sc{A;^-Jpmv6s+T3zQUd9qXh*xC=$<9FGPazRwawn2KW4qHF8t6Oli&=6ateGrmFNFMGr zOoYT@%W*zrOF;o>XeDVvteMR;LvfqsNAHVo)>xK@x zKIw9lSv=olqBT`I(_i)ZUDs7WmLeAe2||+njVK|43>*%b==jZEb@y9gXfwK6lF!@P z75XdY{U4nvsx~Elshe2Q%hpo^h4g0_QZhJ-%ZP|`!u!l`PM+p6!=!Z0k|HobR1D06 zX!xzJ=M&LZ7SO}va4CsR<(6iE!Aph2U6Y1ZSOmRtcQLm%#*`}fH!fnm$~(MbD!>1S z>~V4z`(ZRi)+sL-Wfy1=@z9;)MAR*c&FBG!9)W-4Xi411*eABI-*&%_S@yH985Fl@ zav=$#yDqA+t`~~sDnD3h#L)`k0fkE_Gh{bY3=z5QJ9pO3Wbwlx=colu{c z=b%~`W6&F6;4x2^AD_IJbhWyZ%ZIhdMT>^lx!9uuo$z5vN(MjfnDyZ4s32g}Fv}Ex z5O;%{Vo#o0`eGr|nNUXi2$*JON%tPZTr4d5t-O3Xc|>`em6~wrks0G+mf_(?7x8@W zH$QQ5-nB%*q=+!_F3B^;IgafDda$Ts}wx#OFR4svHz@L0(}sAX6{T;5VBOF2}UQU7PiHA$x7 zS~nxnW82gA_Cz7m%p93klD#6Obit=xJ|I_wiz+~VQ1WpEXueJ;_? zmIsU@I%`Ld8VtJW3!~*#h?h24kJ2LseEItT>h7ypU1nHoh@TP!B%w+Gv55#nv7;1# zS~kWJ1?&A>?@whQy=5|UC?9CIZT)cUbmyKY7|M90aiyGm39hiE>tDY=F(e^}qxJaO zU$iU)aI2utfiQR<{8Ft^Sxh&`5;NZUT20*uklF_ZTC2T-9vx5*0n5&neP>_IZau%@ zhRkvx3*Fw^>FU+T3Xv=nm5ZmYet!KbE#$yn%KGC{v-Ci9>Q-Xln~WqL2B5oOGJcK$ z9fN;I4kJ{@7nweU{y0Q0rV5)d!0M zI1%;NFm1OdyK6Et6yzKOPLuzShOgj?16Z0}U~vfUL6+bUT!Swz!Gi`19^73QcMb0D z?(V)=fZ*=#4)5H1zxNZSPxZ`HS9NJBp}2dq_A@TBY;*{$SYmy4nfc@;=TU3T!MPk* z-}YO8C-$H#tQVdDD~~_1lQf*&)v@?9rxunRFCu>_b{p^;7oDScxB%SyQF{!u2G_c3 zr`z}CxNojxjmMg=HnLqM{SI!rJ_K_J>367K1g9bjs1K%x63`M~fX%6KU`YHjFE?p0 zui-;wgE#~obw+n!!Tdj4O#f{K3>eG>Dm1KcH2|m=o{%t>V^vU+gTl->2cyL`^1+6D zL-?Cmy_03zE)}ff^z&Gq``P|hlo+QUA2IBpPH1}91z{Iw<867|x?{Un4*MXeM<$pz zRyHIGC}O1PI0BPHaHoj1&0#c`z~j%F1@m#68Dge6W_3>M`@o}du&&6Drb^0<@4HML zn`a=I-2PJ%z)U!4F6kzDZ|I2X6z`0<*-8oEhpeb>Ki&>L&L~WA62AZuDoDwNdfFez zNS(7PCpld)f^#OEeB75h-e>R9LsF#ZK!DzyQ;|=-RK=;NxYQ}Zbja}*b_(VH%YWE* zZ_7pb10#b#Yl4sfpa&M6qNyh~vO5teLa)kKiWQ;HOnu-*T9Nu5Kc_o``{hYUdPpcN z`!WDlcTtBPWq4h<@T@Ir?yUV)!}?v=303w{k!DRGjge*F{KLyMDz81jg^$`J)xF_kj1; zCo5h_NYaL2mHvLgo5F%2ERJW@en6A6Pr;@2=9w1IeA%e6M10)zqHP z=g>afOU~7WVly=Xa-biL@l?1tYe)kAz^W%g6a0N6>fVVUsk;veB7M6WbJ}~W?gt&x>xU&^Hg_uP2!8&iGxddI6irQ zOa?e6TOS1f$Ako{q;N{=u;$6TJlH5i^uP$-BI~`vSD^3W%6@M8JDXI@X zNe_uwwE5XphsFUh0rmj+Ita~xfc_jZ+25y{pKQ+mQ4X?YhXt%Mz_?W*0q7{Oh#Yu> z0Kv2Fq&P(p(2#$;&~s_Oh99+fu$OBuW}0Z&InA~cg2~Th#-OO_p%fDa1jKjEZw*vE z0*@is2rPZvJxKWopD6r)z}^Z}@{%B%*gF#Mv<-EWRa1#c@@-PV)+Gvt7yzh=Dh{7x zG~6Db$B+;yOYU{3=akY0f~NLG^ZmXYk6v3}DyT&BXVkTH_#jlBU172Q|JZUC0jytc z^mXqWIX(piYUkx4(#3}R<70!|f=gW^;}BsYaY4GqgMN1-Z$>^famce!4R1ICv3N@? z^#~-6#4#7d@A9pkk1+br0g^M~CLhy?vAo2J7$&P!Pfn%1gKB}TOpDfO;pV0|fI;!!jB6@zdxtz^hLysCB=@+fm{M$uiF-~gkf3H zUp~DL=vW#N;*npk_fU(<)D+=gs@wlp!3kk^LW3Jq_Sw>aHy?OZJ z>$f|xs(2qfh<+)9`I~{&oOkPzn_XJk@5wutkikExF(~t;%m~P+*(6 zY1D##3;Ro7<=fjHF9TwaVWL2gQU}|r#H_RHnmX%R_krNNu}z`8?! zg_i!nqQGLx7?*I9=|4L7;d5Pn1jSmo8WMj<0k1o*7ukkeLqXZ^A+~FpiTjpBD{DoS zJAZyyz$L$b5T5-etPlkmW)4Ubfc>y!^E^3;Qy5pg^cG2lo>kZ$0fx8a!D3m+K?Z=j z_Q7cr4J1nT9=`sJbJ_ahVnBZ{Z~sb>59<>U^DZ-x)w4_0uq3&$YKSoQH*r4Nn6M-w?F*{Lko z*l-KeAPz+P641**p=t3pyOt1YnAd|$h^{4s2kBoPKlEWY1wFMyZhunm=hut4WELeK(~qZ z7_-sp8r+)x_4QQP>tu*s5!I93Y`DReRoX8+$IPuXl0B07;{aI^`b_?@o&56R$+Fhr zvUBZVg9J;uR1X_b1Zm&PZ}J(3Z_~cA^0};ZT%G7t8525n*lf{G)?} ztX1In>?H%jdf@NytnPNbpc^&jASn1eIXPvkr`6@LGn*thfd=Xa(#7attC~NzDDm*8 z!f9nft2ZQmHm!f}MEjq@YwNc2CibsPiaYCB?2a=0cz$>~1q~S{VUTjcf^=mlhzCY|K4pA`e= z2Dg5!9iEP)WvoSC*;-5(13m66{+Vboq4L@tGg9y^urj0i2s!m9TsSXZKccIGtuU|7 z!Dg;AdtsOLbdBfJa^a%w!~>O=a#A0gj=%@sz|KJhth?ISL4?+e0yvXLNr_o3oNc^7~@Y zr{~+0ELPm#rqaj`gtd{8M;&)}?0TAf1m(SF-3*@6Y?8!sFY|N&-QaDsdO5{~>C;(H zSB+E=BzkxE@@0k*X0`AySNr=q&i?N@)f2T%ABQKSs>!6*Wa%cHXcRKs6WEM&7eTAH zYlaZpj@pO&McWRa8w0F(cj4@*`U=&T^R*q{r%x4|i0nXO+f|6R~oY9%Y|KLq>L&7q(?qOYh_c>`2&UmK` z_b>oX5*}bc3554QxA}e;=NYK~{=Bs&Mca9Meb;a6v*oZuzF58yW|fD@L5%4Ta}~Cu z;rf!j!FPmb`X_neO>v{e8FTvEE}s+urT{)15vC3Gq9&8-XyKkBA0k11*`%BQR%`a8 zDXcp3QY<=#qTRvP^BX@#ztxgi<-&>93L#9PMwPzLj)$i^GM-sp2KsNXS^&C#$ly+7 zfVk|neg9Tp&0GsFXa5KJw|b{7mKvjf+@{YTX#*T<7q6((h~_;ITZMPsh)23H_UAS3(w;} zk~N1*++DrpkHR#TQ7plh@W;WI;_jzQ`Ha1)?mF`K>+xikNzA103PHsUGmt}aqfdbF z3VEB}=M1JM-JzMV_=6LTUn5B5{1tM>ut*a0(y`;q&OOR~zHe9kcxj1_)5qo2y6@YQ zPcVK3R>*$z4!C)(=+-OjME%O6`~7;Nx*sf;+h$ab*`!cHB0gX)QjFpy^aUdZ>e)=g zXR?p2;_E!K-qP`K%vg(#)W<|oEjSV^f){`=Z1)C4&kuDl!?f&&;f!v@_@nh7N9}+7 zw8#M8=64Yz_VQgJ6H*z;eEH~YZ@2TuO|13KhsUiYZ9~)CA7jd;5^WukwjEx3L!ekp zbbrL zr7f45G?$Ag)RMj4esk%zw?sUk<>HpT9NLL*+u`suMBUIs30ukwkFHC^;t$-14Pw1h zVwO+F*g-c^qs+Fs`M=NOfdnAf)8AWssoVW`m^5jmw`}`tq&U7v1vXjsW~V3ZLyQKg zku8D}{UjX5!PUIwOSRr`fKmuePg1z?ACRB=m``hXqtctE-ZX3|4brg~zG!OLj3^8O zZTv2SUO0`E?cf()t+a5fA$L7QWMjY9q)0sm)todFlMhv-1(ftIpVk&NNBqcv<;=V%oA7Wy_5`tLF4Iiz0u$<8m_VPUQ zn;i<2IXDXZPCfh=+3TK8>-osvR}K=dJ(hyu-}cHwST-WZ5ss%-Zls@La})g&rF4Az zNd37U_k(Bv3d-K6q^v=kXt40bpNSJOltOE#+}wgcp66a#wWir`o|5%Dp9gg&E2Nmx z6^-p5ibZgVMZ+ji1*eCgnb>)?igt9Iz_?Wy@ympYX7+rhdiik9@bjgaT|fPGsPNM! z9arV_S2q>DzL@sr7nBP+v}5t&YduX zhfe>eKIY}m2ZJ_oO`Q2a-jq@ZLfM2k_OPV@?_hVAW4mgDXt-@oKsBs5-C^z*yk zu-IfXG#$qS0oW93Gm8?2|zKy z^ikT9mLwEu{h1r4t3tD6kW}OHdi-{SD0N_#$^V537Uh`a*0$5*ZCS6SE`)*t0+2(} zg&H+>k0Pe1%+_upD6RqjXYP5tDSM}#3!NdzTV+z&m^7{2JtqSPelcq%=&8WL8hWumSCOYEO z9cyvpeXP(oscKeVCNd>3ZMUI^$kZ9mn|6K9B^N0jP3~OZ1O@p*rW^zC*6T>;UhT~`7 z4X6SC#n3Asw%_;KUi%7H3P3$~)nX=9nha|MRXY{u>1P`^x4?~cpVv+EMspMouI1F+_jKA<++waf5FPeK6c?lQA!9PuzUqu$7gb?MNcc#lBMUk2QO zR>r$^=&yqjEaBJrQN$Px(q!2;#^k<5y^Zb;K)e*(&qTcb&sgr#9?YFn0DIQ*<#<5q z3=SaBk7LPYw1n?zAl>s+{gkgduBP=7YzpB?1f?(y@=o}n-1MKH};i5Gj=l?5}n52(_ zIU)|s6iq?8X(24#E+=CSD4*cA*a%l0k0Gf#4vK&1cOiw}jpsX6#ls$ z9TqRKFH=DVx$K@vJ-)MC6!I$mNmcwfsP6Kx_8;nD5({U$rI$lO`z(o%uz$wX6SYh+AM5u8M)Bd zg_m8mT+#G5SWua8%F4J#G7rmS)#(>rhij#675Et$@_YOuksk^w=#eI|LofQ3zIx`c ztdCAMsqu57E#e3qS+oUy*`4jrXONu9q z#jSooG+p8j;A9OVH06uHjMB^$`L2^JDuH4 zMZo=5*pm+T*u}bu_Fwp#t_l}8HYGaO%aBNiWxcjNJ200EYjKQBb(5C~A-O012*t?V zoy{H}TccX07x-Yc<1Y@7*TF?Sk2m}dF&tLZ5mK~uLcs^qVEa#Q%P@o{+0LCm{yQ!@ z(1=BEmCKLJ^=kLpFtm}5mZ#g?GJ1VpLyS>)adEHFb}a}9>+-l8Dr8v|;LXUz3V;ic zQy2yI?TTePIarXtVK&bmw(jZbIs)`Ai9-Rn2vb>KKYR$*DtJ}}hcJBXU9Bq%Qmeb3 z29xz$Bh`@{MzMa4@%@w5GclUn^^?yTGKU!_Ua2_eBP84;;*;Re7J;(8p6r&a5?eBiQy?0O1X=vhqUs%-ZwD&tS2NW_7(X?Y6WYR$JVGS+4TDOCK zzK%G>=A$`iiwu5tdOqaacVE&hED!Y*Z_}bA%iQiqG`m<60@wd64(yp`tyE;0O5@S* zbbn(f&il_=8S4m#+UI)KGr->yYYA#V5>kGrFhG8poG{*$IA-$F2Xr{n$B&W-Wc>*u@v{pxNn!q3Wl_-6eEqaonc;8i48I}+6< z17b~4WLU-^F7R%d{*3mtc*VB{bYkxSs?9o^Ven)L>%79R@b44!cj28|{KCH1TlSJx zMnav=Esx72$;^#Nf+gZA0anZIB#N%8AoJIc$UvH#%<~8*tKt3<3||mOesUnZbWh%?!Gx zx>WA7+1i9-RS3RVFtsLEDT@p809q<8d<%>dqo)LOu$#gv|DdankE?aW1gq4?J;5ja zRuor^v0kmZX7>!saEy1MoHEmDfsbh!^qPk~qsfV#d$5c*k z*q^#Cdz;pBOx0u^qPs?4_Uo^{EZN#tvlFcdnYh`$9TC`^zMb*ddR-Mx|HkAN&s&ut zjP$2iU8}z-JtilaRD2Rv&{k9DI?nEGbCOOssa=9)S7L@Ozj1UwSX)}1ZG79`$8)1i z;EiM|8+fo$4oBsB{xqKPN1JsQE&hb;V%__;WhZqxyW8^xL(eYF2M&fJxJA$P``m6K zrM(Gx@`3qVMpv*(_jxBGvTF=TGu3aStfM8a|3}9mY4T**5?Z|c#=^p&POK+Qsw0%S z9*}cUh$dUpAeZL26))loko;J! zeGooJjbyQYF|FOh*8QKHeb6;PY)!=(hW1(h6QLpGdI&T+xp~ag2dgU$hW*wbb_sEX z`n;Y)R%m4>MNJbNwFAAp!#-B@*PfT<&J0D;v4Q}x@rnV_d9TI2EjtJGrE|gj+2K%U zH@ggva@RBhLfF+q+$|Uzy16YH&1?Y#_Jec{{N#hK;e>I4_c2B}M{x+AEpAFAdt~Rw zD6(2!u%YZfPH7>0P7)QRA*(5lMRWd%Zy4DXOL~$~TDQXL*NkJMf1bO-D%m54BH#R~ zS2J{N6@Ga*?KpU{iXoeGO(b*@TOR7yYWQk8e^NPkT!cJe5G$ z!1(4o%v8thq{%}i7Yu(i`Dl70k^~t@u!gR1Z#Y4jUKw^yIKeqS$Mc!I1lLwTgYy1> zf!}kNWm?U-2P(%5X06NXeYDTb7K97T5@2d~=Hf3Y_$6p z6*5h{?Ot?yTVGvKivTx`5-&K16aZ}6(AdrR9Lz}$g@rf!>%Ctt|8ig)T%_X=SYxup zaq}Ps2*ZX?Z8%C-qt!1ewuX3@>)yT>_x%Ys6}*U$U92Yq)9N(=uOoJR7%UO&q;#6L zgIzK(Zi-41CRk)~j}VP`$Wn7Cwzb|}=l`%|DTpEH6#bPd2{yE0`T&TEcAK%+nhRfl zs)BStw7xw<746r8kLy$6ayMSJ0N|}{^uABTUnspGDoP57fK5i*D5LuY3 zUztw$oUt^3DK>VQm_H*j@+16R6xFzd*&2`Ka~ZH?8=j$NNVt)jICy!laKf;FB&1Q9%*U7V}rMop|g%RS4cmkKCdZ#d22sTUE%tXzUy{W%lz}pB?ST4N zU4ZpaLL?&X<6b*P^pviB>+$M{dDq6XB@aud*Cam7=?tdfbdKzG=`$k5d^&h=ST~!p zblXihkTOhkM;ku1J^?WJyb08bRFs&N z%jDwJ*n`xT&Qo=S3+LsNd24$GO^EY8|Zqi4SK{4}*`oF(RalmDC71RY+l@DNeuhkNNg` z`!@gJAl(q|T@& zts^9kd_X-gSl}XdaYsl0-^+fZtp@{XaQoLo+ON`kO2nCF(gXLc-&5+*R@nD8!t`<1ZQ-fSiOeW;T7KVugYH}m|KnYTs0&2YsQp%8gq!&B&>}Hd}xL?9=ZD1r&U>F{O%^WboKnx+D$O1QME0q~Puj?uZ?Nj;Sk3sT& z#jt-+aZ|)VB=O;{t$pkbFX#Ito$+*3Cb9cd!Ihhuhx`Zf_hNEkw-3Vg0P7_$1{@}# zHC}+tno^nKkN@iZ*&D=`J0L+mSmm5SG#!4G9_2p8jT7JNbi^3w7WYL0Y-8m6apPWd zx5rLp@^X*?J>nGi9d)I7+8l?^7Yp^N{P375W$HE>0{K`5iSEb=K8*5Y`K-Gq&$p=x ze+Os~T01|0<4f!_P=?QJ>U>EM)qSLgEV9jbPR0YolApJofDNE8-mRM1(nm<;U$mII z+@BoO_c>Y~PbT1yyUnNzd3skS@VPyC5q57DmOTtrh=pgB?{LcS*l2D2zqwp%d9}&~ zrs2dGm_0$%&aDW?JK`bwa>MuPG1)ac!xBcP=ECggbtudGX7WVe*T{VutZOlb0OE}U z%^>s8M`C}9oc)-+cB+1##v?BmA8l=xrf=`yjZCm3kodAkHt{)@O&Mit4tuBtW4+O& z^iQ?$B#!NB@@R4w7_xcksJ@KsddT zLgU^%SH5q|Q&&+e=iWO}CmN=$XNq47g+lQDbho+QZus0^z8T$qjR(vmAi|E|Cklj7 zL?X>2H2jyzPSKmzBN#yGhmh)~KB1--;hXivZ18<-Ri6uJ@o!JS-<9{LbY0JG>36vw zEl>}jnW75`C+sGe#Q(E4V%Ju_LZsx(Jy}3&Ae4}!L}P`MMql_sObULRn*#)4$~u$v z6+M4c6k5WHt=ygm#qxk8Q5#a&)0QeuU}gYcbfw)lX`JKKUj3Pz{$1b=8*h#Fm~o@B ziO}oJmTNrSYgGH(C5@vBr%O44K%XBTulOH)uG8mJr?D1>gv1)EE|SObm1JAFJ^s7J z{kRG)RScZ^wL_oa4F>NweUi1Di_*bW$v z5N8xBl1h7j6|7R85H9@78QU~a6r7!izGRmbhyIE28%3l=>GI((A<~w1DhH1CYeXwp zuU7)KtOYsCR`#6SCz8cQEcp*$@8tY@&nc+Jp%{NPB&L}$pS)Hg>yf=sYBm&xn=QmN(X%OnU zB}3z#`_}TkUc%IY#KuY@(9~b&KNM@ig}vfp>f83hqmFzBtjJIiKZ(F$@J%JLG(YNh zIloP&BYyJ@_?sFO=oa7q;QO>m(EOI6$+v)PFbCBpn5{SMVPMGG@hIH~sC6ize$$jy zNW&SmJ3#iif6q@CP=GOzvvBtCu70{Es3K)%!>CDw14Z$mK^WWFzXJNvE=z2ngn4p| z4DUIxL9qjbZB!Vqd!7f)7lJN|Jk{sEH-A1FX!|HJ6vaj_IlkNMh`?0(ch0N$CI@i z=ww{TV7Hv@)jN1g=H&+?)C|~6C^SE5!gafKzsyvhXWUA&w@U5Cs@ryYot@eKY_E-h zH>4jn$U$~!m9qfrY350W>FSn&A|&EeSy3-HPOWLx)fN*uoY_GuYD z)gXI)Vzl6ie%|M5{|RSTgL5XJHq2iHhiG_g^?HCE=C$r%faseSNzU8-7CRQEOXtEvfOa?sY zv6#<^a&%2*fG~oxL>|Gn$jsPfsue@hL{U({sJ7$Rq)*e}DDlOHppcGOZyn4`Md|#H zLGtn1VUEgGba6~}MQW265HalH56X%qZL#8%dl2#reuJAOFCV2bUSgIvpDQe81r_r z>-B?=&&B!`1KSuE$K+DCi}O<@i@y6ALtZ|J($GMGVJK^Kp4OEA4deV6iqVTTNMV%Er+dZ( zY)uZWY_41P^E*f55)y;=vny!U_9HetqigjAg!%A}qT*1&Af%jrx#Y`xjjAr^6NjAx zbdDUWtCnHmkHdSHJ9Utf4!hdgyzTV#Zp|EjUtM(%3MLXFBona2&dQ;#4 zEMc%VK=z+QR%4-NjH{k@@%}oC4=h}v*Hfon8r63d7T#wwX=t}Ys#~<(f*)s{H!ii= z8pAC5Ss!;Ko-bHqexpY@n&QiV#>TI8e7H<1F{sIj;o4L3LH8UQg9|^ps0PI@(J%1F zqiC@%)&)N~rzvDcw_S4}D>qElT%_G|p zK>1c4L68kwcj%uL4c#$3U)jH;e&N0mC$~14m6=78ZYPK!1XK_wNF3EaxKzy|O`Tdh zQA9kt#WUk$ZqB*LWsud~hM&fL3GkPyrO ze7eN1VdA6G>yoAq#;mH#JAMz&zqf>0O>ABXXk?qpzXMsiIv$@%c)B02qYja?h(n*sDE6Y{utD7!vBLliD=Q!$WuchZdoe^`k z6}^IrTs+wJu<7(#?!#1OUXe!pc87lD|LT?J6Ei^ieQ6%$dVWhT#H-hCl4G6T@GTSZ zWA>z3uWLv>RN_|HL(Gahn62rNk>S0^p`Shtkz~@PZj>Iu4H|4vlfeOqXu^L9z4&;& z3Q_!4YwcG){&=r(ZzdreDDWy>E1wbLT;=<^xZ@Pw3+Hb|q;v_G-a=a7XfGE<3ubEh zQj=kxeRKuG4i5FhK7=`lzIfe!+_D&pJY1~S`@QkLTsV}w%Awi%S)|YpHmBC2tsbt1 zakjkV5%S2!W94wYj+gRz^0SoXs&}BiuiJ-!#aY8N>p|+%IM03eYtYlg42l!5r(Tsa zz&~}w?)!0mX)RqUrk7wwW?S%l}==b7((np6|av>4jPZ7y_oxOB{wQthjzaZ^x z6&`2{Cxr{!aiR8p<{rL)h{(Lt`IS#lx$ z^L<*9V)&a;`x;%3gewsfI~}8Ij=`&yYXhAUO&qnO2=z6=P3WR6sd&Yv_Z;+Gkk8XC zz&SXG_s$&Mpq1*7sEr?{f8&SRYwwBUbiBQBZ^nYPC9iPb?Bz4M*Gc&zhFOLo-hBGk zg)X;`_aj%I>r0ssyx7p)P}3;3SlmS2syc7o;3s&-e$xP8_PJ~N9I)i<<3C{sdXJXp zYHyAu?{ZSc8lLr7@O)_ICBf0Z7D_V&t2q{e_16b|KL$HJX$8}Q2$v1M>wV1YRKM-% zAR=P18A*zVJFHl}M~83cek&_^>_#ea zV5c2#aSttjiCZ_*s9UPG&2|OA!qlVQbo1kY+Xq$FI?5lN&ZSnX-qCY*X0hdwh&*9@ zZ|+X?efEyo3lh~MzgOR1@qIkey87N=9()pSi6xaezZ7Xeiwj;GZTgy;BYt*y+ZN5p z08{crur zueGl*7cY--KnxLUNXJ zd!FRxPtKQR=+ChN*_YkZ#MK|f2FoyZgrdq4&-qM>Suay3%$uj~@0vq=~o}mzZpIEZ$86tr`xQNFP;Lj{C%R1}g>c(=h%KtFt?Wv-ZI(nyY zY{QyIaiWH`(0F=onOxTZv?#9LKCPil)z^dURo{avcY^(lNpY^jE<3LG7=7UmXXG2e zcqlj)4gYIekV+n2ag!l|0qb3L@@BYjhld>{PU?jE!g)<8)s(-fF?2-X^<(L!UQcV* znjekC(MMn0xXSdwdcLYlVZQX+S!WwTN1aUEACrH6fIiMO(O~qK$(k)hl6QCnw7z?Y z2%JamxAb6ZtpaL)TnXhwnYgyLH^B$aAI@cK^QT?<-lmdXj-Q0Ruu@wW#u^{A+e>ww z8ELS8SXL(yr4nK34-nQ9iPfs^j8$?C8H(YGLNkS2tU{%Gh(V%98O0{SZ{!e|90`K6 zTf=05W-Aj~%>6I}U=rmq2Q7ed$x%dH9OzeuA`qUb9cC8&6%S>GmEFsIr`H8;+}fQo zgM1=cLLWz}D)x3}I7>cpD%fvE`vMC<$_%rwhbzs6Y9M3h1262e^B7TVRGJ{F!d7r)~2B7gGw zr1DRTcVEsJwUA;zp144q7$Wn}=5k*5{rKiZhprhNS&{@p>}Cj+cB8GKu0qMo&n#6D zuW|Rg5#@4QU>L|K5?|u>F*k-5#a3~lwJ0g$03SI#k(d_jKXhe4V!2WZ0xN00^|gx9 zE8S4iWy0b?t$_PAUt>D@mOmVAT0xQkJ4Zm?wn%3D&bq1wOd+p6w0?B+|TaIO^mA$17j862H!sl zTK923YDA@#jb?QA`?BK!5q^7I*yB$?hY*N{hnKCV={%~5Dim#J<2qSXD*%kN`A+#n z$OT~zcc#9=rC8K_=lBA?+J(XXfmdaKi4u7mEFKz2(+ff9?i#|Vs<77PQy@bP`<$&4 zxADH7dZEuGD}{*^9||+kBPA{&cK#(V*1DLheIe@I@AgWZ*0GqMcm7P-A4Qa>IEd0% z>q`6bO5;JPDpsu^;y{5ZSxL&zvyP&+Qp)-HVFKq^DmgRhY3N(3`m*L?5lk7F6|2gh znBM-Oqo@9#1T!pFZa+*JAt~i~;=nvCOEy2=zgY3w>!YN`FgO@&13!OeyXOkJy7JsS zT7b6z9)6EITT2tq4`5#9FFM^HYB`sjHV8fKEJGU}H@8Q4I2+R*o_q#p2jD2=V{&zej zt82a-9hj}6v!>)>_;IgTM}KwQp!O8WM5(e_U#R{ypGSd=rPp3phL$^vPjXR!^+Sx@ zTOd6_8_0kLp0`4+0JqKQva+q}iOv50>xT7X_HfVbm7j+55KEbIHNQ*T7OBTW+cy`Cv6bn+SKg<>K+kD#kY-4?xbD{56ev<57_D9 z?1PjCiR>UEm_(C8;xuDyFx{98SoI55_WD4!_x?ISKQ>4LHE^AkSojAuW?v} ziG{rXc-s`9x*D?!783Pz<_~P_J;y99-U8g`!%ijQKmX=tidi!wbK20<_%SvwaGz-Z z5~;tLUBW4c1B#-hO^Cx434T5EdTmJfU;~Iow1!nBkpWm!3orvp33ZjFd~Z;@W5F^nU7*Nc-`&s@RS3T!w{&>c%fmZFpwaAl-t`7dtXb6+L)e zo&l^eZ7BYl__(X>i&oawpAduUw8Fjaew8BoDX~d&vRl7|P-& z=-av=EVfp@9?qUdfo98&(|g}dmThP=7vuRQj4c4p9S*tLpY+0!aYj5J7F5AV=4n8s zAHT8;4)bG*eK69d22hKJdK}dpq5C=o4D&cgdic4R)qVsq5QZ zW{&CVsOMrs7TroPG}ja6cswd+B>2Nhv1w;6tCUoSLhrtKN8yM<>3+-b;QU(-ZojI{ z`}T?o2(Vjo<*!apocOAYq*?ZtZ;8(PV6T2SI6xL~(=Sx_&> zZYuZ{F)U|R(*b~$T)q0d{k&FfQ|bFW4}nCox(&GP{<7ujlBTXdvIw1}LQ;ld$HQvE?~Bmrl>GuYV9@B7@lhWLduAefL=1nx&ddf>vVtu2R+FZf{w$4}_pORUJ{ zy|n!q{MpWoJq=+V8zBuweL+;??c$N`yEre9S- z%C)ELImFDy@`FZ};2;RXie!UO_8S*IQ5PplgB$EubvAxC$hSG!dRq-B1KwtmJ+q>+ z5;QQLG$?@?dg5vU1XC3m+Q^Vt^$-Z^K{PswCZq&3j+DA|ZtbF9rQho&JFryAdDP{})S```$ajjq#!1ms zuBR%V%C=KD^D~jslLuy0w@`##HdEBga5APCr6WXFq-7k z9VFC@I^9j_J8ou6Im!(n3>1Y_B1l*wYk#rD^V8f7VxN3=h_)}P4%tagj$@?A67OvIe7xvW zgYPCqBr`=W4TCrp@Ej9`x+jC#kn*wG$K7b0AwhKT%J-zWIM_zf$Z#B7cYz6$C$42}nmfazL?X=qjV1!WGDAJN=hx#?n+)EoO@ zxh=h3_ZA3v$mI)Wf8~^jEqfiU){=L+AMaup7=p6Wv>~BoTI`nL>}9fbe@)*B{9ev^ z>O%2uXNGrRL)HI!#%K$QOF#lKIaf9$f5|A(07IzrJ(Uxkt=S}9_x=5K;kw(WHt1J< z#chOmmWS~;g_=2ukIzJK=dID=LTuMkrQ$_^ug{$w&adlI{H^V*HtY@2^& zDXFXolGeXI&Zh-qQvyz7UIm;X!{#ft0sM`@0>=QQN>Hin#Qr2d>=-l9O|Z16Ujm z=Wr}1=Zm8FL2ArjbhziR^de)qELZ2mOh~PZsICMCU?-l##^;{j3DsC(( z$-sa(Y${v?Q0>pn7Z&x4j2WD|89VmyJt`)B-|5%mgs65BR#7-oS}`R8Hjw~cQCD<3 zE>*aaz&58g*b%{iRBq!f7;Aonm&5;5QJ@-k>=xvRoW$Hosrutut5;8kg^~Ivt^#2% z1(V&A$6NW-xeYgQnF-<;9V4~Rb7!(1Uws4i3c@6j_2%k}>*9%2uK$};PK;32*pslZ zkTgu=WHNscF74NdNFxuFe9MRnasC7DK^wx&p8DII$o5dcU%riqr!uf4nrdg>Tgw~8 zz=s{pWvov@>EGwBAfC7FO0JgKq$*a6Ge0v1L-r5#IV`_*FXipe7~h7 zx|=BwICR1;Q|(vd011J*&&yh}0u!Ekj0Bfx^LOD#uQw>ZWbiLmD|reASPl$^GHsr) z6yYm!hoz-@=I8&O+-r>p7a1RdXJCh=>IO){)JT~w{H`@YW?+|4R8=mU&iMyPGLkg= zrv>xIzkd~Clbh-qgqb9q!tQU6qj*3G)qWh4Z(+SAYb^87{qie36OsT{znwoQZ1XY1&i zyo29H;)s!Iw6~;^qq`j{P%Jp`n^Gk$N8e8q`1RL%c}1yu ze*Ob;QDR{?sImM-1(#ZtpQKR~*;%uYYuWKSE$n#T{^zmEnrc+~3sK=9cC{xkQrMhn zoPR|ybqU85MFR!0636_~nvaemCiiLee%gNqCRyTY?mo^Q?QOWdJdUCqThEE3<)QGJ z2<@~8E6x_*y*z%a72%mUUwf62T-I$T;*X2Fx1G8N7Sc(S-n{kAVI*3FHfIwQBuv!@ z83-d{{=O_h^V=N@YiJ@ZXen=RvL@^#&?KJ%ed<~>=PtjA-oc^zYwtoN>|?z*?>G!A z#a08dtQ2bZ`RHdEPRC(IkalvNm4Fwq3skoWtvdhhhb*tt->bd>H3J(8qMrX3zuBmH zBVNh74H5BGDP!rbzP2PJu@mNc_>dvv`k^V|R^Po|;|jRB5_1GX-;bpFi;fO8PC`1^ zIx_}9%afCh!2-Kzsw44PevFx85eu5_m7s~jRP`4`D$%%75)HvRaYE0fw1_uYpXjmICA3GNh zlL~$*{zS_cnkw@r;nTOZEl1u~YT&JI0PPFU`{jmkt>{0|jo(FmPyvIlb6GSN>B*s0 zT_99pP2W!sSEnpEp1y{ruw~)kSdGk?czAdc7PRV2o%c}^g5-J1S*rOce9NfU?SvJc zg)L=E)V&(cdOkM{5ornLLuZ+WHzT(H1L&{`YxC}J8*kGbAb~xe=^pzYr!V5~tXvhg zAPFy@`ltU#!dY;|v28(kfB^<~3GVK}b%4R$A-Dt&?mAd-hmhbBJV8QmcXxMpcZauf z-%sd$x@*_@R#iXt^GW|{(Q8IvwYb_k+-zpg5&YPJU8M=+!^GCAsk26<1ZpL|@vist zMZ8<~w*8u+OwuGmtL>wi#De*<+VcH22;Fx}lnm<7ychP>187QCDXSm%{cU0va3_BE z$^`Ze2&Bn(@d^(5!HLaimM`}g%LbwpY&BZh$b|Cwoa|U-Kr|a8VJPa;m#|m~gw#JE zY%Ju@t0d9wb zG>InKBuZp(`sC>9%E*XdX|m{(*V6uVBGyk#4Q4g|1Y8`c-?B+c`;cWLPqCM~{cJj_ zri*F?sGV};@WNyC*y0aliV^jv^m5>UQeS2fPW+9RV6#uqoN7g?MI44R1(K~4t1Kp! zn;9(Y^%f=J%tsggvx0aLAVrRe9wn|@dSf$f@pBbZy0ZqLU;gD_^dozYp;RlWlr4&o zwx6@z>vs7q#8gT)eOFYfL>{k9b+F=vHl=Q`t{(XR_2M|NbJWO309F4JREmAbH22_IAn=@L(a#E`VV9d**r*OA*xQXeg8g*r?v0k=!OeEecQ4io=+km-~Ivt1$g zgK4eq6$-VbGK8lze)n|Tgq|j2lq(3cl(wIjk3N4m|4?S#@(nztMT@1+6Y#n_N3T=Q zCxeM+3S!G9fnKXpSjR`}sUSRg;cuR4z@bfOC7g#P5|zYag%M#N^dtMdhh6=4?GNWg zcSzxvaDKd7suVTW=R2YB!a_Ux#@dMmo2eW$tO?*de!24p``-X_tD{!u*nHI~IXIWaBTko7m!Go?5PHHX#;=&L zp%mi1q~AvQ^NBRF=wuXWh61`08ar>=F)9g#yHvorg}nB_8zA!9`@zxa?eB8WxwfY2 zZ>SDbQ+Kc))(4=KbIO;W#zg+Yr*=x^i;SnFN(`7@;>3h&K6x*l%*F9K3?a=X!CtNf zZ#D4_=a@q1z{!cYWA4~`KjF%%#-Qysf|CEZodJv%*?=9ZS6CA5#HuxHb&mn5H8hs! z+;FX-+NkD}+_xSNWv#ny9hG($rV6Hf4RJ@5OhD7u{6o}EN&l85&JiR0y!gtrSGxM0 zTnemt$Jq??axCe=`Ff9$Tx8E-MsFWxWH%c0s&yjXGiqK?=$pM-aU=zS$p|;9M9B&;n7c-O)n#sBZ=aFH9ItV>XP) z%pJL2`oeXuFV{qW_rZBv^N3ly_Yd36lNM{g>PGI%yX45B&I2A)8M> zA9`gx&mGMzWC3^xxT&@&2Ik}HMBYio@&6&0>oz*|uu~HwZP?LBvybF|mUL5?G*zA1IPN0KIcID)$1&`#Z!tZ%zpGCwv6uLDu8XMUSl;$l}OQj~g z>F1a8;hN~*UioYhM;uWjbu6G)lnWA>K#0;9ei-!}&oV&%B?C)Y_B%4*;jvZd_&bOW ziX`pslF+>LvV^L49`gSM7I$D=l;j5~)>p)`=1SE4Zl>tx+#m2ddrAt?3>mcW%^iK5 z-J*BQ6gD&kdu2&PupI^4Q~u(H5o+)5zIk-HJ1B^U>sXoYb=7nGNQ)B&Z_sYFjMf*6 zLOaD~XuyQ)AP1qyJ098$c)1wxhQ2nun;O&9qwrrvyNbjH%Vh;iZ18r1{h{0!mq|We z2ozrT<>(|Fx(i&Ip;O7lDH5uf><0Ws2$ZF}7h_KccSI}{?nC82?>SoID<88xAAHgD z&ux(jTX-IaYFr`*{i#az&>wz#su&A4a+y$nE9uo{CHD(B9$ps3@(NOwq5^fztW#GW zlRf`O3)((#pq%tfxUy12g!Xa5h_>=R?Hv6UOi^Munn9KHdF{ING}b2tQEe(|XictI zHT94DiTp^L{Md9P&I3%TdMbAqn3c}m-MfQcJIUd2XnJmnKp|deX>8VBJEi6 zU}$s{G9j=(?Xs(JT2aY`8>Hi~zRpPj)?7thC3G5xdGZRlZ)+VDyRI*;6Tv?f23y64 z=;8wkoG2!U#C*&TZ?EZ@W|Wc@qjAf}D^{EQ%!MhB{L<^Az|&vOw4aU&;`_I2=Iej0 zqxcJ-)v7eL$y(5=g2AIc5z9z9s|$@Df!$_2&PsjTT3*jDQ_NNpm=WSJoDq$md8G0{ zxF^_QHLTkmO?GUUBlPA^(PreXxmB~fUh?|Ofv+)A3$_=#aL+eSubc{4nk27x%>;4q zDGq7|z}S#{HA(qwTG*VIk0U6DBexfz1U_~)ZXOVBSty^jlooHKGj7xpjG3+kPHJ8I zYT$c7Mqqzfd*GCQB8Xy36_1P72U{+$L9BCJtVQHbUQ1%h=Xm#HWfrqSgBL6#D7x+% z^(>|JO_%)njHgHPQ}Dv8=aD|2QWDnRd{C*f@+1{6x{jaovRI?gCvqOn0Sb@mjh;i|A_JG6>U)lUpmv%_!Sz}DqMm=ETmjmH2e)d zgJ?YRuZXpcVo-NId$>}EFoGl^u$h<|^`wCDv2WxONPBH8 ztyxVu=aL8%ocNZwY7^9I00pcPN;j6FX|XBPhX}>P1ewvSJvY~quM#}`DlD75uJrkW zNMEmxem~>Le8G(U1M(9oD9UXcnCLg>>VHfwc^-_MX^6n*L^u%v|@SYd6B7ro2M`UgVP=-Lo$ZroGCvSmUz|WkKL`TG?na6!9;FM zh-*~1b(*lv(~N(tE}SS$54VNTZZPB(#Lga7WU#>^ARfs;0{ZVsI0I*E$@$=qi}IlWjKR{^pE^Ti?b)T?H=r`?$HD2=%HX@Fr|Ob=<4ou3_VQefBA_< zD@`!eVFx^3wmvV*mCvS3ad<^O(K}`daY70&5Y%!dY9dP-023ROd>}QGqqRbg8FxA) zKtY24Sbcos!T49vJLBd%KEk@yhwB;@f#lLMx1FFiiU9#>2RNilLMBF|tMoA6$h&~!9Sq{cf zp7B?#8Ab1M#fCi;UKh)YQ&w0o4^m4|n&x)D%0+#OPXW?4yR6s`js(zwt=}Gkr4w;I zplxT=WIxGox;N{q4rnP@=;do38k68#sEh;x1-+=LK)ba<$JCNv2AT<6_1+n&a+c}G zO&*@1>o*7QLf*{=4C~E-%3i$GRpZ@)?^AFsF2=9{S96Co{RsAbQfe{Swxyy?f1G_$ zs1f0kJ{D?*28$-|p03&Peyu9kE5)HXjXwI%jlorX*8Gec4|}RA247)80Y^y@%El4I zYycz+PMP56QiOG|-%3lHKRb0&cP%U{`+M6}eUZ$klJ!YigBm|?ebC=eBTozf14r07 zF=%631Ow}=z;wn9LbX7pYw)-FTl=}xA^)i=0mW*lB)9oMv&=CHhhtoyz-(H^li@UA zw(W804$idacI~kLQGP@?3e$u1KoEa#GmY68C#Iog zHU*^x$I*fbd`0EsbI$ro31crsgiFh7UzmoN-))aPlovEKhg}*k+UBiDK|gWdpn^H@ zrw(=k&8@f@lhP}~PCwxIuFgzO_V#Jza8^8$B1^RJq||v(JjYvQ?MY5xn0m+|D!lc8@fZFKrt9kIs{ZvbNnFmJ`H86)EYG<>c-_tJuww8rnvhs= zW>PPxVC8Q>P3j$KO#nS#UuWY>r`u z-$UTVS#)-o2xS?qeLz5m6qYh=((aMPlZ4`C_753W_z= z98T4*?O%y#Shq3}H{2y27Jfb`*ggXiZovBidWgLB3n(Imwuv~@q(z`(irW((wTfAzMtzm z0DPY?c*e4Y{bITH(fcy<9w@ar8N4M|z z1vY>2kbUqOlUBNO*=)HDgblMvv}u8Hk()=q<+j+wv%}DPTvMYYQ?=tzm!1~aMYEUO z2YEvKND`=qz);ebXP4W%!sOI=DqS=kI+nJU*2~M(zmnX@8V&rPhfZguex;&iTV)SbNF<;`Xz`vS>b*z6+-ZFyBL23Xzn4ZX{&R0Zz<(>hbmbay0s~$CI z-fq9V69S6sX3UM`#xOPIu$X4o0F$X>K{)1IEZ1>;e zcRc3=Wk-kUArxi-DZmI=U}A!JUB`Z-QjpT?#z?7|J5mV9Q9WgX zZn@dW_eaQXPup+uE}dgp?;GJ0nTPC2XkXG-Yt6KVWT(JzPu^CTOdlGgiIzb0cO(oV zJY9a-jnGcCG2Z8mp90vuKus?iw(ObI;6lPx$j(}8?Th!wNp6U*>hX-^k}p|XPBHt+ zcDU0|>SY=7=d?=N9^D`NU1|J=9S5j9>?GYnm0A40ED^C39KYL|S}*CzSJt>`r1B+T zGu_Jeo_Q<}0xLh7kpH(HU+IBTlzP|2r!ptFlOa(bV!@HMNNex5+iyM5n@3}F%B2Ce zg?`Vq$^D3nN6dCHZjG%KStaaZcb6@?J*GM9NHRk=?bBkGJ@gSU-Qt`jn*5^GL~NOc zY``^L&8)JwleYPxO|g+==s=@#4lf+TZ;FPV{1Oe9DDldbmiIS$Dl6kRV5C)Pq@6>MHH-8Du~q1vmiu#b`WA&? z?l}WR-OOmS*yB4Wan&M(kgB1GJZsHKy2(Hn*a#3#ZfV3FY&(_^DtZH+r*8L@kC`OaeM?essS5XAQv z4tV#lQ=L_mA+{V&R)~!sWZX^mcU{9bb0KoQBPOA8QTBC=ueH}smf$KR_c8C;EbAg8QS5>$`xftYVF`yu3?p#}Z-t)5+MUZY*T1 z54!$7r4O6;%IHvWfCe&Uf<}W_b8dC>`<+jZzpx!FhgHn&!RfeI;29aC;Ud$zNR|V# zoH7QM6o~){sER3q+Z_*?ZpNLdoT*V9dqdu)mk+WeE+U4>NT$5Ak98p~2%E4UNa@4? zU&i6;RZ{z6b?z@P31i4i{K^;j8`6vJS2?R1`=I0Ue z;g@mP0Kzcg!gSNgMt?mB?85o3iIhi^6`@#T+~ym!{o>QQmd_|)Eb8VmWGAq8RH134g+gAP*KatdcbYnOrI*4IvTS&Q;kxd;@+#@(SV9=HnN! zmZiN(pkOn?*4?m>_$PTzYgEb)Bc)QMQZ}q8pIT}~-bE(-PbSQV;{D>lTsXNxpMun3 zU~`pRz$;1{TS^wOMcPEx3t474c8FV|=uQ^=cYmGy#$lfLXS{^UMuqGcI!XoikEufzA`_HdN?0U)W8Evh}J-PqBsP~$%*Ref;;hpcoU zkJALob5n|Y*7th9ezueIAjFC`#bP7Xe|&p9n!ybE+hzCjjNF-T!8BPk}rIDV5!EFk#fe$PqL^NZu4uVfTs>1e`aHZ2X0J zm5Nr0g^O2|;rK$?%`o2b$XYK_E1Dn!w4j7IxxLe#XnsNxC@%5Pg$&czm_uj*pXVI{(d45+o9 zo*l_WU>+)Z6s6%@&6cMavjC0TAE-`qtdnHIOY(CC{~}2DREjp&FEU7$GX3&260Ug~ zV-87$P0y{$RSg0S<;%uOp`Ef;y5iF9HI+RdY^x<)MlN=lO+U+Y&KaD!SfCjcdr&j) z;i6#&!=0U3o^iXX(XOu6;4A%sI9oe(C01mATURN1Uwr>8FwdOK117ntfY$BjAiDpm zQg}%`yQ#p60IY~KYNR4}h)+{shfYUzw#fuEKaM+fWL%lXH_l_nS78q;A+OyUkJ^UQ z3^rAWN0r#-HdA@t5ce`x)iu)_&$zuKO#~##{7CaJ0DU1}-?bpI^vG15owUv;GK(pj z+B=Bpj;J@*_dZ7>IY;;eWn?_e7JKrkGkjH; zJ4sP*54e0_-bYY?t-b3@zf_uU96*0nd8cgdRe5SQArJ4B_We_a0psLrG++8eLTO;% zrS>6OH*J!7g|rWuN8|L@P~Ln|=$=O%#h`|AH4^-ZrGZOv#_r>fm|nCLim)hNB~o(` z_6Q4KWjV5V&hhxJW;9CfvK!(Eiz5=t8V2qcypBNu4GxONeiwe{EbEv3z&kmnZ}b(z z>2JH_E&Mm9aE=(hCIF0;JdMpP?U<5h0Y2)|ft%V#t1-T_g4fOtnu@Ycsg;l@YDd-v zHAs^^ERYBjQ0XtE{rL)8lLH=)FiKT-o06d?rc?`eRAe$P6DYD{;;^58S0dv2Gs6L+ z;)#D_=6lVNZL9xhhfAe*%B$Zkk&Oas9*p6mPZ>Qu&{H;J@z7VD| z*^iuPwo@R?4`J!&&qZfhp1DoRN^qcp1pl~)arYaUdm$&aPL@rvH1v=Wx8TmqJ6zmq z)ybW&xhzh;aOZ|?Vo2R)4P0cWs53_GUPn`hovN6i3E(tmlfzU+#@!d^_Zjt#<0B#i(7nrS%aNF+zWrtArvuHINoG6+@hrty^ty=i5nny#v;blr$ ztSDq$-1Pk{HVO*w9DZ?eHFTHRufe(bKc`q{iBe$co7Xa1wNYi{`q(cd0`7{P$=3%{ zNdMsUIbg-Ik#b~YoM(%%6vXyRcG~Snr;U*imt_>vB+eeOi!}yXp_rD+rWDyopyq$C zQ2kK`RAfcm>rb}q2E8^u?GusQ;X%dDWfsJ3&I=yt7|=Q1h4^-bdf+R7y5Qstn<{8? zhS&SF?=n6ivQHUztDnPRDoS@MKnc{i+c0iFfW~3)^pf07ryR?N42$X=C^b>62n96?$|f>!bd{ z3b0P!bs`5|+R;B|HmzHk#BrCGOeCr&b?7qKaA<@yL1Gc;3Y%r50qAhKZ1Pwgn{wD% zAUuR7WPrQYcUr(+ZizK6nld-Knr?Bpz!x|t82E4dNP7dL)NM;Efz6HNCHb6$8(8ya z8-1&ZHr{WVUZ<$?Y%5~Z!~Jh4LtFdj-jSeSK&brvV{^q%3QQ^{Tp*6k7b_~=-l-Mh z2FVb7Ch?Ulv>C`X{vT0iGOa0f#N;IrRlLG7K6gtyeAq||PVj*o$a>&)LZ)}!b$qjp z+^4uoG<$tjgkTsL+n@j)Sa8~{^LIY({8ow^*2QEKuzg#z{|yT##eUwZPAF)%6q-q} zLL0^+pawcb0{@EvKI=?55_>*^i*aJa@Gu4D&PBYJFxG6ra01)YTlK2!t z@^gJfN+o2!=~`162CKrh9{U_N*=Wh_?NNZjRMk6xO%c>|JqVOYNx4`wy?ccByv~lK z7`(@~qmy%YUd45Y$3kDn7NZu{hyEa9{#|$8GhI=BZP3%w3XMy*P;bEhN*IbqA2dom zIBR;h<_4i8*U*X`O72GpkM=~qbLs-8eu}A z>Czq_)ff$OTdJn$qQK=g(hQTC8SDEr{1FY8e+7t)@qzP7`Da~say}8^0y$u@iNU6o=;>7n<68#CUpn;=J-`IQIdpZ@OJX%cd zHxjPJZDs6Xk|%McY00 z$NCQD(<&8(PiSl~4Uy#&4N#e!H(XOJ2I;Ac0g{Mp6rGer!u*bnh@>mpS zdn3saAneE!*|SAbEfEIpho~YqtpKsc^ zV@A4k*H@|Qqs6OP*ZyztodfnZ$b;~ZF3NvL=8X+q5z6KXBqM(H45YP|Kv0vkmuRVp zjjvd5Z*8OP`H|Y$elgehS^NgcIu4A*Wh@5A;B8%>T57Y8Fe0T`V8co20Zb#`m^a>d z#Sm+BdA;kqv&h^~=Sm?%4xuZdjsVIIJQ1(m0!IVi;D|4q+uB+#gmw*)LG{9PiV;5~ zgRNnpiYlICj+NCqLWznK@MIg}!W}(yK}r{bR9U*DEl*P@=Pj>&cI+F!qX}tHBa=X9 z;)=kn3MhqdazQFWFvtK7GW&s7<6(N-(Q)RddG1@ry6+|=5+qX=jR}yez{ZVc0)!*( zq9Ao7Z$D(i-CTYLLIE`5popf3<|et4jEmmUtnqW@K9+-sq;Dv`_qEf-hzy;%kLloI zOiItUf?*^N5xAw#m`_4}{}e?V8|uMhSI(3hx|d?&`v|}rNFo~KqzX8HZBFK}&%7x@ z9cA9vS!<~J`>P18Hw+UAIfxjZEI9pMCtNfe1Lk{(((i&(^Y(2wknZLp%7SDq?bYGw zWqK<+@^zVjO zX1{0Uv^>r!=pup8m~x?b9HU8azyEMh(n&CkU|DcTys!uQ`%mXv>-k)tq0qCF#Si0| z)J8QlV@aub@S3W~0zCY0i(z+t(I@&Rk)YOl*Wx@KD_OC?GNA4xNVI9q&tp3%EUL_e z$o85bz{vrW5(SD9%0o{CxB^rgEI+!*D}#6THUo6-fw}RHj4)0x5<;)#Y_?f34Z)Ns z&?t(nPTsZVmyJ76uTyV&mV95Op@H}A%heyS1~M=g{ZtY8M{3y5am<^`6X*AW4WT9M zJ1loH0^QT}RH?+H6bbj{PWHBj#?J3a7#V{YMr~d;JZy}|KJ@sVQXM;^%6ff7PC%{+ zNz~b%&om48FHb}P@2&cQ7v=0{rwfq$Z{0icNTJwEbC^wY%PeO#%ZhLs@EzXYy)M8U zwaePYr}Le=!t?Wg3gcJ+dSv#S*?IuE)-clW&R>oBNm3d@rc|4M850u}>#wNi5f8q{ zq$#MyDWg9UtalaCDHw=eb^Zrn|)s1#zlEZ z`tshp?x#1JUxdkBNQVH!7{R}?F9zh^rxLw@K--F8{7Fvz2Gfv(P?QWhz)Z9}Mw+{E z+t>QZD(Anx_)av?Xp=`5kO!V`mD0+_s#8F=A(-@>Z zj(>xl?7yZ0OlLn7O9CK0BU0w9Pj9uO%y!E{DF89zS44J0VME!UjjH)`y!Zc(>T9^lN6*3kRWAj{&7xdJ*|@SM8-jtzU@e%;qc` zGS`jb zL6EcZsZw%=V`HbVW_aD#M$6_*ZsRjF0|}W#4e5q*{6|h)024(UJ;0yj(C^3C!)J6> zup0wySqwdXSrwe0m-)?X>u915)h9ETmMKqT5qC4__go5^;n%;coqFXaKJG{Q(0>iD zdO=C306ClL24)l}aaUP)Lp;{l&&889(k^ch!InKsKVY}Zi3j}0V9(bPfda}KoF=oaiw@AS~qpH2ftq``8QRY$l`l}YE%WA`i zjZw^fYXt-CUQ+5u@?E<3xt!HBq771qn;^xoKgny7%fU8JhJ*`M!Mly6ge5xU6a$xr ztB*msNH7ACPD(@0)l%SPZkhe1{C%r;UWGcY;ipn5Y&kWtt9fn8&rGj}t-Ze4TTAm5 z&9GmP=U6^=vdU1W&)7M*l<6qB*Fx8F{2d1HP!;&je~M7RCJkFOJ(+VBcODa_h+0&F zm*zN=v(_>%ORFwd7N7Q(e4Zt$CQizviI-mR8_AORa%4ct@|)>@l-yA-AeU!rvjnB{4!o_)TC0 z1!z){;YY?J5)2R~daCIiWwS5AkHTng3A{C0<?RLr>dWvzsj)ECL0nMcK@U_D7!rqbsZ|w(haFoCsxE+GWzD7dJYQwcj-65_ z&D8SuGU*H1J!0UY4EyVB;Nf$cG8H$!HpN_q6oizU68L+r|Egx(!TuxfP0&+0J;Hjk z8y9R40&yBAk&t(?lV z#xakM`c>fs3He5rjtUvM1gSj67hdp{YC?UO?BQpy@4r|1JD>#RYNisi>Wmi;I}DyI z=5md`exBYkFCpKe_4<`S*+5W4moW$-3=Hy=4Ry9f;ZmaE1;WGpGblFOZ{D*CC-@zU zN`Re`^V;0=KwDFk2-(<++&Qu5TOAyhNa;$x^?=)xux(v7l09y`4^vV=oK8U}zD@GC zwXDD=`t~;Ce(CU9MEOJ1e0T;%+6X()Ou~p6h}1GuX6In(Rv^3v-T(|huU^=@EE#E? zj{%&lp~pK(2^^Uc9E*M(Y16sS{%DodXr9OPGh}zol}ZOr)F3+f8r;+Hb)i68 zkg_Uc=-TdEvkm1P9`rx=M+XoPaU_Kqm?J~~0zBpk@P1sA{=(Logb{tQ^<(zjkmW0^ zdjvHy!~`9&6g`MzgqElVoOk!!7;gmukikmsyAFm2o_0@&EsxFPZdJB<7-jxsQ@Tr$6$LJCwa~Y26hQ z*^BBjYt{tEJ|Dxo8mkrIXJf#>om>U}L5YuY-NezynziysSwzDcn~v4_|pV{paqU%dMR3EC;CIw(!V z*_>!X^>CAJ*jg_jFBc5F+}3(H%qWh-10m2dj@gKqF15{%1O8=w9S<+@I$-7v)(X^T zc#wFp*PdOr$9m}4w6G*Zyq(=2vvj_OM1Ui39@QznBn6e}+2@ijna^P!X~8}{d_n@~ z`zs2_-oA4j1h&IDzb(=#67nX$Od`$;qpv3M7Ld33y!B4QamVr$h~v?*EgLDBJ?y4E z1ithKzAOsXwV-}p#6%L`?qD2Y2BDT&%7qA`iOY@;814O8(_pG9=jy01Y#YrTU%$av zv-z`p8sD6>`q7SKlWk^{+EDd|AzYndI_^ErLMia?&Xo@$kORUNVGSP~E`PCmpHg|-TJFXP&Wj1=kKWwX&&XLJQ~K%R!jPQP;&-%VJ2-Z=Hz^3WzBoFj*73oFd&TsoW zLf#hO3_vC>LCVtvm#j)9O*p*E)?0lZ!??X5G{hhJNJ=_)&z&1DV@%V$o3biWQvnuz z4DR@iB^5!bHztOgUjnb+6Fx6vyt-J$VeyCd;YZ=abbVafmp!On1v3#)wi5~2eF+6( z$|uu}?syaaue|R^3hXe%q3F!_NzeumR_qoPoNYyAo1{qfb3Kk4&4<+5h$ctjKfz;j+8(My>i;e?VKrFz}(Sj=3)V_DoAsw%1TFw&cAe@hFz&t(d5MQxk%gW{#NS{!Az=+t z!54J=l#|gLRHD7a*>>=Hp0Wa8KKpq^n~|?K91u6O{~kfR-U^6z+@T>fqruXot;fTC zI4B=Hja94uyT#32P{TaiT$#lb$pkeT7r-1PTlKI1&E;`#b4S(bFI;}@%lr0R<-IP` zrDF5hed*|jMWRqp#3yr!(&Mid5xpf2s(tJg>%Tt?m6ge4SjDkcqN{$}9gr|YbDVn! zeA_;LpAS55Z!o8?kN!xFPQ=%VayV~J4W=0D{Zq=^nvrDEhIYz%LS5`9{nyR8m` zN5+26p7u<0zwocl6bMu*r3qqi+Z*BnpT!3!i+dYVl_dvGEA^ z{1l!Zv>}0i+YFg?XA8J2+{x!N`||;vT86HbMmiA%;1R%NWG5V(afYA!bz2_p*I8LIokk zNvmA7XVLCe|4=0yK_Ay&ZK`m2|F*HV{&FAiK7GrNTZNziua&jycp<28eiq~QG7+rh#sdPl<&l3|!c%s&if>l4%c zeDT5qiP`N6%f+N2h5W(HrOKTAVVGZ%#Ail=8}ys}1O1EhtT{i#GOL`o1UPRkL_K)E zO=h*fs)#4@+albXu+X563^vw%lZvHUx%VBZ^6)nr z`fU1>*Hi2=ca2#2=!f9h;BFZ@#q zL#p54_j-2gD;pIVr0K3UZj|46zV5oI#5nXA1V@>2fD`d=ZT~39M_=o3RmRCO1Bsg% zVaZ~dL^WqT>-^nS1;t4)kfTJ5~Nu;!HD=B$R}jyP&kK@%EU_w*YU zi@vorQ*_HBU_jteu~D4dpX9d8R+=*Wb7V@7Uny9;<+*QAV;HWeuOwEJ+_=%-7l&@5 z;TfBy2JeS{41Bg!m#6XH=ZCvY>{rx|`sk`!JU&`eSe=Ll`HVn2prvM#A-vpUUK)U&;>{qns1{W9w^4%L>GqKs4d zNE!=K&^pP6Hrdj^T2(mG<)y&rfz>$fhF&lY-}JlTq;6C-6eSbc`I9(nX6R9mF3aF-^TW>3lBGIM;Vd(Jz)N50G@K?nt-&hK zaA350%2e6M65r)}@=sqvv`bt5%fq6A!1K;0umnDQzvvqAH@>{dcT&XB=(@gKB_rBV z%a)9!7g{?S3EwR}5)wfG$Wx3l;tSlcw}z>$qE8QkppG`Hp&Mfq(q?pc{46#OcbF(? z;1mGY@}rO|a;|Ctu`E)yh5b`UPk8Td)|b)tSD73~ZK0+l?)XK_d}UUNT^@5(9AZ1D z1V++|x4g*Z`rconoZzw!YT-O7jpVXFRXa@BW+XfXn5qcM(#g46y_btF*MYZ{uVFa` zT`tMmoNS|T%y>aFY-j(lMHukAgfI@k%|$#qwwp`>;6w<^aj!sjrg*?U>@R$1hK%gl z6ln|XT9ulG0u7quF)CJ;ony5QZx1vJ{{_M#VX;0U)vg4wfcNoiF%w`S^um791O9!7 zi>oTjvuW4ri%nluqi7ttOD4@&lH`hzGkD%Ey7d`ZVsSP|dTyqEq}Cg;AVN4m)~Dbg z6yXVYr_gM`jk9L%yVD9C)mfV{iO4|HgrzNy4X^DhdC~+5jx0%d3yNt zt+oqfn*D62)RP1z)QX!}?jUkrfUdG3$XLkJ#*$G$ws9yqhJt!%SNF=#O$3~$?A*o&g% z>6%Na0dP|V^^&N1z3dPJuixLAb>{rAwS~2Xw&g%Up&V}UEHCFv-q6v&G?}{zF{AL; z`O24Tnr?vcw&#cg5`uGGd>v^cQ@Gpjp~5V=q@#!adEU3V_x*dZMl?O6tlaePlpU$q zxCs)HWQzw)gjY9SYu|-$POfF1;DqyoCuPWu#V`f}j6NdbR3gtT-}TY@AD&bPeZs0u ztopH2P%-lmn0HIIX zxEjq8(%)9=y1J6Tn2feUaBNczCF<1enIQ5RC-LVYxPRJR?oVDb%R4WSrnju z9lbg#VIjn@-sC0_X66K!NhGnz9q9mbHj$<4{{jfyUVrUo&KRyXFtz1|gi>%$eE5Z` zz1NkVBrnUC_OugH6Hk)hAIE)OEjGA4_Te0dz-M5NJENePk&(0LMCA68NBsBZh;fBrGB*S^VJQOq(m2TX=YwrM z$_U=YwB5-GSfmKOnkEv7kn>j678jq|s-;Z)^5*5+eLfF5ARap5s)@1{FaBpBYzY7+ zL{|mS_L&~C4tw)O$ZSphK_Inr1P%8n1*ixe=A$!SGqh7xMXrA8)!5Z%|ILP&>wv)7 zMEv*T)pwr{azk{`E>ZT`ehumOY3(IP+w zH_h0^LinLgbu@iYRdcF7!Ff&ZSB&3>&dk05dKV91M1*#RJYIPx)9bO= z@dhsB;71l2ly%(48j$sV)>BrjRI@v-*6V(N`aIvL8U>oV7XsBk{-T1B zHCe{UDo1{FDAU-^5Pf=hTI@>19mg>L3u)*E5a?W5LpwzX#a4{aG7}~Nn`@Mq!jDVZpIVa{56VSgDgZbgI;q?l{Pbm{e*|K z_0SSLv=Q8kB_zp0yg&X@!-F47>;KAwBM~laBh4yLRvkU6R(Ct(_o4^e;y5Syq7G-k zyp2Ug%S#ZCS4x;*G3Cy{mD^CKZ3H~rIe}mv61&U(%vu#Ki%QqU!@vvKdZ{55Xj7AI zmk6fai+RaPt5N#f)eDHRKV%Q2PHqg*@$7vc`@cbX$IY??(Q_9jnmbo6qsfQEA1o6p*NHKx8zfkCh=~qvu zCKSjq9zkopq;40XIF!$_Mfx=i_8O&fUUKI63&jH7{djrV>k9^w1af(BW>;$t^2?z+nVDRf_z_dsHI+)-+apR+1Bb;;NMksDRQtduj zOw*bfQYBc-Y|OvCrX81SP`>%gAW6$;wb{oGy~ME#nkf*ruTAy*zV#n7dP*cHaGNXO z311#tAquVK@3+!E|H4QdO8<0~vPaSBwXY*7t1AClExCuD&c-3T1?vzp@{4d%hC&4w zo;(wY6#x0+8JGVIw#19eDqdU(SIsSl_aXTZ=P>CCgKnPq{rzI&5gB~D)QXv@I)6@# z{egpqu1>U$i#Q*RDZLye6C!Oq%AQf7l78?1c=}767uwjA{_VOC(e6LcS zM8MXRZC00b_D18nLmj8o0b?HT)T!);VE|mgDSnuw*NtMv$L?Cp1c9TF=T(dTy3^ClI0w$wV02jx9)N-x0FN)!yN@5y$xYQ+Yn<*b-p*gZ_fMV-l6Vr>CifDfxgl`uw0annMUzKQ<~!L! zj@pfh44O5^g>f}(A$;Jr3;QQp*?vN~vL0gmuA`6th4NKlY2a=Tjywprs3R24#$p^q zQLJ>++sL4~*TBNIGu8zky>c<$ur6<;U{Gs&`@xKn6jSYhs=E!O(JUQF1@;0+I+xaG z+gj-5`+;3klb}}R&egqIeG>HwDfjLEX++2S~CAN(qCk=;dE6{Lla zNP^J=;lVD79SZs|spVyvHt;2e*(F!Waz$10<%5)hex^(;Z@L9oR%p1~7Sa7EF z{le~LNy^dPYL)9bO-d^14fEr-gd@y}!#da*`SoCNqSVKTAS0Hz>f*t7u7WYX;oGF~ z2|1MfDqEI{3hq+5hJVEq3zr`6L&%un^y~_(>T6}kMdkTeh`|-hhHOxmO-q8<3qE0ZG--Ik{21HpGDzFlkjfPz#etA zvhgJ|4-4HRK6@3d&V<1~H2}ejk4Mmg($O1-^W4~xoc2q?hVqkwaBc^}zwvQ3%Iq7< zzltHURPI-jPv>?cQb7fOo(>;eC?+t^FT9r7>$%5(BF;s>{pwzRaqhFt=dK$wo-OW= z>fmEgXAsm~N|t8gQ*7wKE~{bh3?BYYZf0!g#0FoaKcZ88*J@6;!uzdLT*vcee|>}W zafl+N<}4DmZT)=6AuBG8!T-Au^GmR+`PSUe)=Iep>aI>lXKKO?_PJPwsud-k@ z#p4Fe&Kr@}k&Ty&_XVTxL~*G+a-ed1B&j8xe>hkXUh{2Sb^E^VMy(a&qX_9xJ}z=< zl-8HSyc)pml@dA+GU^Wj;b&XdyKW2#M8MrR$w6HE%`gC0BjB9AfXaH!6J%hLuLnO} z)zzYq&C1MwdnJhB*!dxc3!$*luZ7G3>9^nnJ7Tvz`ZvunLeuQohTcPFZF?T0wZFMV zcrn(}rK!76?bN7XMxmqg9g=`|3Jk4l>HVre%+*Ns-`}e$(-}3(&QJ>g;tmO}EN=*s zxI6&G91S`#UbWZT@yBKB$0!co`7CO=@_f|%Noqp0&n)syD0>JcZkPe@5B0Sd<+W!& z8z%JDlE^kXN#cm(-g-(u)BUZHh6`cMq_dtm_DZ`DgLSPYEV}S{hR^(1P7`JNS35a8 zX8T9FB7yv6;{9+Y&OUID(~CPyx=NR~3}srMQT`)AagWqB*agM*e(3=7VMZ6vh(Ye8 zFfOP7OH#td^PpjCD4+4f{Fd+ac>K9^f#ItpHC%+)SYE*)bJ6b+BG2z7DNpu5c_Wq+ zlr9evn8M1chyrkoEu9F>c-#UN>L~v?)RxozSIpH`8m}E0p@wm3>c15ZC?U>AAx?)@ zBV#|`nerZ!U2GRF{y&r=ht%xbUcYz+%&_3G!}yZ1O8L0#gStXuvcj%svPez@-*aI{ zd&rHpeNLDX)L({B2&>K*FET~<$8yLqgeb1N+bm>HZK-qfr87{R1>p~OoS3?&I22WK zzmK}>H-$+Nz`KVq`Eyhm);b5~@-U zpGNMQuj5&VkA|#lLpOF2^uxH2*Uc!Q!HxL|Dd(BwaZ<7n+@n1WO$NpI7}?lrh|qEo z{Z~XBKt3AoKkpbLKkv25IVAa-v_RP57}tP8@GLMBa{gve6laBah#B_{14lye7=LjL z&Poa#)RyPx`t^L2T1c3u^xG6AG3l~(vw&@Nb!nW#+3Gq{D1#l#AT?1`!R7de`#k$x zp{9PnLw9Y8p9@DAYj@kaDz7=do#*mSX8AbEBXsT}c!-2Xa_XL#jVl3R zwhO~bHP@dr18*JdP2&?t-*?9U949SC`(s!^wKk}WS2!1cz3q#ERmwQ@`OlY?D-RxB z0PFO*rLO`Qj;VvYqZ63zX8-9<7u&~6cuP<1MB3Tv6&UT@EF1i7yJ$@Wwg__9*LtQ2 zu_KGq*IQk;b$S!Uvn#|jxNlji;to_kV%&`UTcpM2PA|{$PBcHRwy#n(LmnwoSo)eR zD+&)N4kk+*@tE&iuFVCz2koh?HOmtf(PE1`%EUJtwOD{Ny+nF@SsBo=57Ds9#(}I7 zzM~WO9Dv^G@jP~4kk@2xiOM4}IVKFPO?V=j_H@~*t>bZZ9C~rL)JNn_5!<(tQD|il zAZ8h+2*=mQ-TDNqrTpern`Ey4>zx67J7k5)NwrEOZh=1gv8X#K9g){fJ+nDqXzwfk z_fcDc_e1_vzw-r89FN)@+S@BMi9Bq)ew}b16TZ&Kg>kkTyok%XFf!J5Sl@CGHemuN z7oAg0REj0%uO6B8GUY7$oUk|i<(jmti)m~2o8A1oNbwXPI-OAQYAB5agAT(^r1$ z{{8NV`$n*E{C&W?Fm?U3oJ8?ss<|?pbu}|QbR7GfI725-zP`DKlB}2@g1DdQSIpzn*i>Tx;`9%q-H!=Ui;Qj0Bo@o`vxTr6 z!0jP8^u3hsGgXz%FsS+8U)7Ju=+vLS5nesr?Ju`iNu$aV0y|vY@9sYAsfxPH#gont zJKV9k`}s;t!G106ZTd&pIM=@gj6&aT4Bj0XVsZckh$%=4oXjLe5iwC>TjR^y0}Eg5 ze+#vAHVkG z-z|pG9Tt54LBJ))5H^7w7U!Xe^v( zm&G*2rg`oue)AMa+^5d)P%tt&*~wDE#E3B1Z!1P*hB8N~C1Z(pSFnz%sjGkpLS~}z z1KHWo-QA_@^jqDnTxPVuPfKeNtXW#@@J^9pikm&-+a3i9Po=&#MfdkeNogvLyb|m#r@=*o*qN{=V-p|z7%#= z2?n!0%FC&M_w5EQM3|2uCgi+vcAx5oZ4w$R-Y1o`xlZ5lx8aMkli2R=_SN+Z2dRLN zBqe2{q&huddVc=JV0GY6*SU&EkPl$Hdxd}#@(n8kaT$d!xwe&EvVuBNVC=e|mCj+* zz&+8ho%j8;|1gO~F9yvvOhT!*kC6$}T|C;&rus!&+q+7xI;bN~7L>){8}M z$K-8aRQ8`*nXg~IxG?N!iCH3yZG=Ar6{i{QI->mdhoG@f!Ap8) z-|(Ph)$X|;sRK+QOxR_RBEHAIyD^bB<`^D&lm>-wY%2Xs1!X;=N=u%3_^R|Du#Pko zuP@~mlBHQIjL4t}f~GBFu;0AE!<`H%y^z8#4Mn{8Lmevrojcrt9?2go!M{?4n|;mx zglZ9zV8M$k?n`}hMICH&&h84xH1N9xZVEJXlpKmwnm3Skv4#+iLa9O10D7I3ZW$xN z#mvckF~Q~g2P0u8dqhHsrTvfXF8!x}|2_LiP)xwRi6F`8gqz)iN_V5dyrImyc<2=Z zY}l&Q@$!=LOP=wzcf)U2?Q)NYl`rJl`Ng4uAYD2}4{W6u#rxg-DYtuyU&?M_Du|=Zw%>gRLSEKzd~(TocgiwHBm~Gf6mB7 z8~h$_>kyVI+lJanDksN_Pg|F{Z(o652PmqD8vhdK6Sl~b(qp>e$mV}<{zsNsj8-e?~Z5;b4t$E?CN;qo3{h%{>IJB3`UX##`O{?L7*E7Nad1s)IeOa9F6Q)`6lnjN+$E-s%8k|2)B{&nE6bd;sd*xk)#OHx@ltjFdzj zBw}Yc<|?geURtL__NXvzoE^3~N0(ttDCSZ4_~UZiLYuhU$kI=c#}`JcGN@|fZ7KY_ z$;3bB^M>eODESC8tMdLW-Y6)B{kuS3LgZN0^Z9arP}LQ*ZoNYLeMaQK)L|I`iB)bP!09v^?bghM{GUF+Tqo`Oq|z5=UwZP{LbUjmk{4(?Dk`Y2ej*GkSwwaPWF4 zqkF#J4w;Pv?U`r-B}Hv|fDVy)YzR~HxPe$l`#pMJW=ouRO~OR?AVGa0+80a@D>Lx* z1IqtNe1eZ0qp+{r4wlLQ63ME4{x$g49N>ux|$4yz}F25L9%!Nk~sN~gj36V zZYMg+3LfD8d*G%(drvkNrQ-qz3O$N#vNSi7{pz2I>eXfCx_J|#o{Z0L{VM~*!6tAD z^UpYLf%(D8elmJ?0m9Fo)xb@vMwz%?@J;8f@`;Fq$k+4%{|0MP^q#V-Hq6FzL7ffa z1s;pQ+O3h?HB8v+L2j|LSE*REf;k8+!@sTB>d6Z;@q@!95g$}N&nURGMPbE%YIZD# z;5e|`2sHU|IG1$bCc~%>pR6r}hSc|#==a0PV*rB$17SlJn-YrXi@7o#4?(U$FlrfR zDQ{+52cAYgFnp4l;ZxOH6RfYvi2PSBYkwqO2+P0jrKABBGCd;v?_~tyS9r^T41JeDaRIf17Q5U8eAm!nO|&Qv(S%NWh|YO81DqQ)$|&Hixcd5QV`~OXI&~ z--x8d9g4qhN3);hDcx_B`88*HlByd(fJNT?Ti|9}+sn;mI>gE2r8EI!E*OII(0H{) z@Nn@%*|Y^XD0;@bF6dL1bRb&s>W+NjR@;dW>iKGidLagOaK9O zQ>qhz;cW1G9se=Dhud7y=%6TIrylEsvieozJrT(Ii)`Iq<8>u1Xyc%)@pZ2!ys z@+1UVaR~C&-{HmKY|a`y0Q_0Qun+vDL5RAz8LruulBy^?YfD*qBtLiWvMS5_Wzfor zQhG4mUA-;le=+89=y{R=*5cpc=JzP$=|=7zA8*}B{Ct%TbHyk6+XjO*+U$R#PNLH9 zzgxkpMlwW8V2KKSlaxY;Xtj}~#h)6p)+%ETmhQn#>YYrdWwPt7GjXYGaeC;6#*oQl z#TPW7NClG?>SHnpw>7*mbUxA^CEDpSMC?tH(YjSAQpLXp1g!poCbXYt8H@nzP;aGz z$u|GFno-{ndIhYG(Ky@xz9jd>^L+S)(q%G%MSjm}yTwY;k8WvL(AL#Hku%gn*4gIu zW0*AF7*d8@90+Na+Yv`FW30ND&$F?TbN7E)Bj|u#+bZ%R1tf+>2Ci#ZaON^jAMK1B zs6YjMeyB3d>dNBIg~Swlt7<8KDhv%&<@!JsUoBSja_RN_?}&WUoH7_E&r8SKHiug% z?fbx1Bd!@7_L)?`v!^tcg?)rFfvK=c$`S*nW8WG&7#4NnQ588C89QKwbj91**;<6v zM6L5%y4aCJb2&#eLb+A7_`hBD<9IbYQlR(;D14bjB5r&^zG66sL+OP5YE8qfGgHwS zMRtsXzK$kbM46+Rs*M|_#a30*e~L#xAf*0_-t4e(qrGd`X^4@+T;xE z@Rsk?y7HT4SyU1)NHvjY`&G7@Dy=LvVP!;6AEMmSN^tvqa!8=G?0zZhE8;d>xwKk?hc10x*20c9O~01?|=e0BM& ze|bCZjD1|D6>$uD4=c9kHN@hN#p}4sl&e^c_`F`P+n+C9uiwFUQ$J-)qGu!32&pQp zQ6fBkXHi?1!nab5w>N`DNOQj7KXl+7yzhZ*^^bTB$>L)4DhCcnJFtMf&Ct(-C#X$SB7s;sPcpF{*Y5>4MQN8K2-zR|I z^BoO?NHZd3s$0xeC9Mf^h_p6%NLG13T<*Y7os|lQ4WrJ^PfIqv^`9w0Qr6`dwc-1V zY7L)%jpux=)4+#2ADXX!-FT}KX&zILk#kN_r7H|(Y6FxFYo%>u?v5dYQO03 zk2vyrvx3f+L)h<|_F{qrxCFA3tB@fI8}dNHR>U7lm!iAhoi3$t;eFhKTcz{b9Tv&~ z0gkH4V$1w+t)8jLA7dLpd`am-`R*+wZP=B?G^y z;RVZL{>q}7=DZw@n2S14sjh~gg!~5K@wOs<(?slrQWsPJj&j1LRum^$=O%30`m$A% z0jlRBD4qHBwQ&w_Jm6T5@f#I@vTSu~WISgnP^?R8`AoSA7xxN1M?v29#Ki{X&$yH5!qkUKwP@f{@63%bkzE^6UM`r|EqS z{M_f4Gp!nlA4An&V4q2dU=8n%E|Oibc%gQ;1ijmkLE)RbT1EJ4&LOebFc!l5H%N@6 z(~a^Xj~ynHqpZ)m(J~_CI)UrkA?1a+ohHR`l_7!J)?yP$I0u#bHibTq7hs=c=6(Ub zT_J!i8+l93eEFe)uRvTO7c|AU*3s4|RL*-Mhc2ZPAT8zGgr#6d&yb45kt5{gEtg6Y z3KvkleH#it#0|lkBBUPE`@C#hRj(YsjE#>ybel&;F#Ztz|BJza=u!l@+R1ZMs_aI^ zJBq_6npJjFz@GQRH48s6ruM-?E+|BF^EhQ}HRcc_K>34mBRPQoCd;<2-T9mcuR9RoO-SQFU9S5p^4Mb z{$*0|`#<0Pm8D{?n+&;$zXZXQvRDL)q~uOkg&khto$h(hHfd8aHjoZ+niNnnbEqZd z@%kxgAhiPY!J2hW>30F^TINr!hn`E=EBM7K*Pe7E6_;8};v274vZn2^A^4!rL$x4 z$rS~CE{|lTQ14;>;^#a%d?Bs1DOEuT=l4HFf?(gLzCV==sZR7{}hdrzf< zZ_C&&bjdSn?B(M5awW*ijUX~pNKu?{4h9^hIYr9EKh@z)co=~ z>8V>79};Dg4a5s>wYaVMd7$!NWI;91IP#roevSUSm)p2BVO?9C1b|+Js&|#pRuaC^ z?nm_5@R<+Ijyse%GE|%=o&Q&ajjw6TSGVoOr6iUC`Miv9mB60SY&5D^hKA5wYnpS}v^>Cxa?;lR=9J5&u`7aylRAwE;rQF}zLYeT;YjgcsaP)j>C>2u_rT3I zf1o~(jwv=bk1X5+8u)eU>?a1J6t@8OTj%|FT_j^r)`GcejMrJYth}6NX;Z*|RrnVL z;-RYiJ5jj(BVXE=D}Dh96eskUBSv#bYRUTO5m&-`d0W_b_0NJfTKq?&92 zzaNYNSef25KTw@K6oRcCxn%0h`Wl8d9bTciel0?`wV!RUMy5wiqjS(G55=fj5HV>b zHAvwpPtPYa_FlL$*B0_bcuz;Xw(_2=&dE_c>w%NiozEt8K{=5g7lj$VYIcGgQd!P)l$} z=AM#Rtl~J>v_Zksn)(TldGa>sg+)nOqCwP3dzm;^=7jbIiYUcI8UVogr+`tmMC-8e zX9PF0rboEQyY8v`^}3FRrqGaG%%$FFH_@`%z2 zyxpZ%)l5W!irRJegPO>HtgbJv+gLM(Z(3S_j?pux>csfK`->S#ED9F!yWM2-)%k+M&{hfbiSFW?$hvC(jy@r}|M= zft&{0RvxFNsl)H>Jm^l&EMGC49d42`o|~!9P|)Rcy2Y$gLNchxTPN5YUqfnkR5Apf z3zMpT8v_Quf2Y+-WF5ij9dCb#D0}Z7?HJp)v=Qm&6d=m|L{*Lj@2Gc`t?{&Nh}2dh5k{O4#mmR$`e)I1D41-NJnxDfw#c6iP^ z(HfnAkoXLKXYap3DxF>(L|Ztj(G!@L1R~9j>_M^Im_^mSvkY(#z|9zXz)(sLPqXpH z)!e`B^?O4&3}dDN5kJ`V9nUVL^0Nxk{*Vv+WX%O7+@_+=$4}B-{PF+TG(*G3OhU~Q zs%`gU6?0A>3uB;nXVAKT64kVplIQ;@4M`1k#y9*{LA>n zFy4o3Jg|oZ;B|L#ZS9E%L0E)MBAqKjfnmu~-5_vD2Qsg&WuP zI2B+W%*jO;rgUTevqvpchNd(R2#T(|TfGp{1z-FAO8)fWPnj)iq@p!{+K3%X+IUsA zQ2--WR5a!8IkACy#5%M>gO=C5Ne2gUuN$A^ZR7oF4g9_|BR+0R$lO3|nF6!M(bgEw z9=5F`>Mq(9=eD9u|E|;dhH+W%6i*Q_TEbm3u*FrH!M$DRKd-XKaT`eScJv)#ZF9Yq zMl{MlVTSrM=fOpmGkWGB7+(oZ0Iqv2dse+}gDC~JmWZwb^h(?zfft2Wt#b)=hYi5S z$6$M%;4?vYgOSbT7DzK1-cq-6?5G^bmiStqFKSAGF1VJfXJ@RvD(K3PNM=g*GxjGg z=aHp}eb=|^r%D2Gz;EW&c0x1>q7U*CJ#!zZl~JSA-2vVhlQn4!udb(s$1m<<)J}5<0{%L<;*Ho#zvN18ESfP>ZHa!Ep6W^GZFgm2SBvj z&crBKxz|{w3;x4j*YKT38JO-^yGIQRo|HnFc=JOA`xm!pY+r`?ogGv z{w6MC*_>g}Vo;g#jxGLO^s;)o?0hzQ>(g86Rvm_8RR=I4l*e<`(E#8Jiq@&Hhe&^o zkK>^DnEfEbQ)zNFun`^*_{%a4Y|qIG?FKc}F*;K@X3hPOiq4`-Y6-BPj_4WFJ% zfDP`DU$oPZEAq$6DY2~l0al*WE>?f&hJU*sSX&c`h-xON^RYX{MFJ?FbRh(Hh|)z8 zRTn;I5{S@uVJ`%3r1&5)c=%%<{J!3I6U2Pp6g{q3!rXK2E(n*ml&IJFe7B4uI=!1t z#1#>qCB+lw*uN8w(+o5Bg$;SbF^d)Jej)ts%GQt2SZQZvuP@lvI0`pTuB3oXUz;J2 zow2schGUAV?o53LJe^$|{k1sL%gfdMzdKGo7d~PA@w0y?1R@>O-1mYsG5x(2 z=cm2u3o|y?ivM*v3g8-{k(BhTXyLCft#DJ^Gi9 zjmxCE6_v|RFMgip)R$_s>1yM%mWQtdD6J#C{c-clp$r`#g_xPxcX1~cB64pQ zF+3~)UX*!A1v%P0*bPf*%tdZ`;OH?g5$n3yY{k~x;pVQ4%4gJ}Ea+P3Db4?wo)F>8 ztM~DL3$o-Gu~NLH!Ir?6Q^cW8G^LCXY~0|8h(#hadNX(#UQTiH)iE|CeEQhpfX~C? za6is=uJ+%P&f2MWLzpw_?4;QzQ^fB7D};%#Xetawc%K~X)sf$MkqFtbfLqc$qnb#7 zB1M?Ni<7B!J(ja}S9S(!6k%`;`B4=z2_n*HqSw=X@f<}*?zaGdqso8KtRDwbx3fep z{ABs2iV(so@wX$@&(Vw@ITb-QQ-;JmKYUn%iN_gH6+gr7zjT+HPC9r|hzuQmnktTT z=vz2L7BXh8eVk_Y@822#ube(-QsBaPuGd4)wQVeO`Um3l&5Ak@HKZ-8tx`9WrX(4% zMcK?R9}edjvw1+%*02Y=tI2(RK3@m1$SXiN`5MwIL5%kKE;ZEkl?%}RE4Tnv-jk*m zDdbEu%X$xSwEcmGuh{!Ip)HYTG@vdItO>S?x0g?tdU=SMUp0FU{5`fGL}Wfo;!1xt z!`%(V)6mY6YiY;{%I0SZmKFQe-@VN#45N78oCd#B{B;Ys&yZ2Xm>|qne9;8#>)7TT zh%IWaB}b(5D|HDhcBkH2j3SXTclg%BZlCgdkha7 zpJy}^w*PClw6wbuA4F}!u+3{EyhaqIjud6}8FoXVuRjLY+@-pxmScm$Nu80fkTU$= z5h1F?O1X1!NG?(2xznYkb>xF$Q$vU^bmY|(!ulKQENF=&gp>giBiTp&4I>T)`>S>E zwW%2LfWgt#7!*tCOUVy7=FVXm0^!+n4+8-~b~ck&9q(M;(L?#l=|&}cTHU9#>8BT{&mx%!q)#-^&guQR z>j3xJi)7ny{4oU9L13-?g=U*99s2KX(%Sl(Bt=%;tnhv{%kYW>(2Km z%n9m3sAz(a>h)pGHjpt`HMJNJ5Hh`q8pWTzBt{(&zM8z2fyE?%x6I^tF}41D1O4VI z8_&8xh@j7!V?@5%{MUUi8;vezp-Tv7Vu^Olzwm3;II~@9l6~VkcYzUy3LqN_<-;Lz zkv?V|W32t;KJa*!Ho^N~fTUp20(O!D-(T%%N|({YO*W%6C}Cu6$YR{i!2cH=+?mgb z>@|&3+Da2GT7remOGl3|I~WlO>3n}Sb`j}!BK^#k|C$t6t*;-#7cSqmr8pi;`*zho z=r~o}AmaCM!gssj7GEVZyjJ=rIML8>OcH1h1SMo-5JiuzGN%`cZzK=Y5+> zI+*Y%qz-0{t5X#swd_cI*=v|1NgIa}bt!lTtJ3O-JIqPt1qK^}4g5?n7&wHGFbLZ` z!_SAg;X9VdVb|-28|&*&Z>^+@@j{=&`DpOxaAc2v)YmXe{$$)Jzipa@CAqI)r@Vi8 zcIYBhq$RobapOiCve`g_m7N+xO+dfE5-6d&;d|wjO#2B_-4^3lTFs zW&~0t0tfVRzD3L1X#Hd_vCSf!8stU`Q}*nL3sdpP`AI=4Df)X_5Z8oJPhW4m#;C*b zh}1bWecxnyMs~me>r+ey(4#p>hqMUE6sulZTm7X}CH7+BgMnl$vj(5+mLz$Fx@SSb zuEne`UFXBBNau~YQOI?%_{his68L%jx&@6Xrn7oOQHw*ra5_Kuz5&^4FlS;?)zri6RtlO`gUCXiCb@R3P3`0xA+n! z&@A^}u(Yk+`Fv*!0yLakcT)y}DwzTF)*95N^a`f7_{bSa^N@CP!S#R8u!$TI3S6X7 zh25e$tXM1Uz3b)aK9{EqeP{TTgn|QI{HjahZ4d0l=$OK`1R1rc#!-bnu`NmB-v^sU zt4oi*K96x=Cyzh+=>K>)WW)w%!a0>j9=y~xk#WZsA0Lyqb6Zp1nIOUfoVBtAYrVl^ zt%jso*FM7^Ztds*GKgVgG4x##D56!}MvsH#Q|n8e?!%n32eeV&V&2KBvMnBl92$p0 zxrbFr@fA8ovtyP5&;Qb`z>dI=RwKxl`w>Wl8WUC3tAD-kpAqA!K_JJN045N@j#G{mu@Wr+ zuMj5+H2b#|;PnT=1`h7>zYbQcf{CHC_j~_t=+AXf$@CJ}^Y+Rbauzaj>OgIB{_E7; zoCo_f7Nt@Jh+&^lbNa7YYb8A(*pO`&7jnVekuW6i27uyMz6O-<6|a2^UCVm%XPrb#yl7=qC#u zGYMr*zpZe{UCSKmp=hgQf~6x24|I+biUP++ywq7c7=}`l0$5ZKd`JkQ8@m_i;jvc! z?ZD+K{GcZs#$WHLCM11ou$-W1HkKqmII7R+Vx~L*ydt>&CF+Q`ecG4zCshp-yTkiC$KbLta*R{O0@!6LbzPt zyVs#{9g88Q39IL%ICevQB$h!_eDUbeh$R%dElZpwxP3pz|Ez*HKuB^z@9>b-_!iO! zDr+J#F%+}SG$Z>TaT-iCk2nLlZ=1tQXcF*t0!Jexi}M*&huWQne`VD(OuWMY8X;ZE zzX$;8*k2f2!s7)rgfgH(gaPuKOBm-uOUtWdQovHQ-pTYj^u=m@zMK2G;^83_&e$kr#enQMe*{DkZuiMJ#}Fh6&BXpJzy!eB?8 zF9!}BP?WGqAqF#)OH#^m)HH4=^}_nMByYjR=!|R=NmN1*j{YL#0J#}vez0`!zojNF zza#jepb&0luOTH%TYG|ohHnu^lh;yt=9;Q&R!PC~OQx^6fri~ZI9kbxaX6%N?(1y-x|jjh3TOO6G+2ky5DvlyXrRFct?{6pDK^YaIkZ6 zu3pfFvcp~k!eOqY#={D(_Pkw|0suC6NHu<$gcunXaa(Bo)Z$Q#I4RxU0GVFLt!-n94o>VVZLJL8V~G(o_6YWwxX(R1jYBUM zV>FBRB&{|0+T?n3oN>b<+AEr8!KBzzWZBy@I`vDakH3LU&%vIef3`*&1U?pa`MN^K z7H_N}Jubd=iT055c;=8xh>0g@_!s=PD#MGEFNy)`Ugf^hVt{vYqoglc*~!fT_&!{T z{BWj2z}_U66XzC>weoq~vx@ss`yJn+q;HJnK-kwq4h_Ni%g4mwqQL)Px(FlOWomyS zqXljEXfWxy<3T*rmg+YEW=Wr6Wc7hEdo zYdNZsyosXQm6JR?H}V^UGCIAdZmi<95Xt*>7PPa~3U++Mu;Xa2Z%WuJhP^$yZ?>-i zqg77BP$q~+jdlCu-#!Mnuk}FECVw0m_&ozKGt_P1H+5zG4tg7pkQBQ`CW04!;%R34 zSN>YGkNh^y86XE;FMX8IdlT^rJt~LjhHm02O!BK(Sgup!jIHCQI5xIs) zAM~HVvS5cBZ^*oUDPN%SmSWiAgHTp%2o0ZTC9c%&k)!NYtl@=RC>J7;jHD=+AjQ`E z%vsD?&@@tSOGTm`J0X&Oo8x}_i5I82C{j>)vEK-sWD?D?-O>arg5!U)Y)w3%sO0;{ z*2CmTfnIZ)m03))gSn zceZhFOm%n3GDaU4{W;2&?|JEfk-=AUQ!kxl-y3y}sEUENGeYNq%DA zbV|1%*JQLt$?rn*kmL#bYNO}8K@U*p&Qk&q3X;cRaTat}mG)UpTpGdVg4m2!;zp@< z%|A&?A(=Ed;S%XQ?Qpo(y@=<&OHwWWGX8q&VVRnzH+~Upp=`jWf^nnOj|(`BqS!PD-*``GsRN|69I$5m&<%9w7U9CQj+m4kW7_#F4bUBAwLN#j zdVsw`x4`cr-mw1Rj)66kR4=#^(H`aTs^;pYwH`K$41T&D-BkHsN#3Tw^fpK_RKN0lj07+>(JVqrI@ zpT)^2D!`ugNANVMcu0Y&ud|(>%P1XuR<-$K6h$rtVJhKi<|>IATZ#ePXCU&!TE%~T z4h4`9KuA6cs@909D?M_jBR+UMwfFKc1C#nO;@n=!@NyV-62b?Np@rG>ki@1QRQrek zS8KGt=Vx^6GCUf5F#Zlg0h;nKVxj20G{b%z9Nl~iP-Nl@&(9#RLb|?Bxp6QmVHGE} zHN%Ei2>}Uct3H7ta1*I zSD=hDGjSfD)d$)SlPyiq>ZMh{)K^HD8bBp^?wKE}m+81EP9}B$QL1e!B%j87bR>xP zsr@}fv}CyN>Z54CmS%prPilR3-7eeLWT%G)m-K>rPdWDKLX_$P@hN0;tp<2%HBWQJ zVcd5+>RjD(l(i(`d|ji1izDgX<4e!rD+<`H%6b9UUk;~a1$!i%>fx8QPY_)yU7lq2 zK>1fKbZ@ym%42FYRSm=>F8(~c{;ooFpUWRU4nK&IrUsRe;bX%b40OB>jx!o8!l^ie zjctFrzP6Anw_ z%X3n@#Z!4O9RC-C-!THDBo1bBVbI}DVr3Z?7bjO3fSjLgHZ}3yD+LaA^eEF{-2m@DM96E~o4A;MBF?)`cfqaEB@E!wHzJ`f05if&B?H z{uF;s{U`Y6sylHJnYUWM4T3fZ$J7n+0+uK7^Wb2()4-ekZcBQD0dvPn+8duB87%^{ z*uSCE9cx!ct5LAC8ggNxs?@*R$3#QU{3ellmB(ZYpmf z3qUhl=DZvDUv8Zfi_w{Ftq79i5P=lRun#TCJJ;gE&r^F-uyc{8B?}?aQ~@fWo7oV( zUL_q+KD+As`ZF*i%bJP zGqb4*2Q?t0oiT3R-Ezr8$k=ryr<+%EaWIq<`fnv5fvifY?_3wDH)`wGO98l9BbSsf zM^u(&N-br{NW$Sb${^!mRuJwyDS!FJYUweBY8~P9$WgKgoPwRM#yhH-2Qf>*dB+{f=HHJb3Hw8 zY8(?Wh>6m;L#_L-(zvL4SY3=~sz^d-VAmVrP(o~6V>+&c8&2@_b>n$4js6>!;S+W- zRU76yzP0gYqRC_{Cf`aKQd5ub-mu{QS8~Hk{K(YL^5nhp=B=x^lUICfIz^%NBkAkr zBcMh--`>^rTnEkNOKGNM@_Bjl_R_?Bqh??5MfxF zvxK?4XyJr(_1leL?9T4&2Dj?PksD2tAK6LFR|o9lGE;y5iu~-O^Y2|*T@4X&l;zoe zVV0eF^nCoQFP=TzcFhnOkl-XvfjD?O2EeNxNsFm9d#zvndPP;HNg1F%fmhWauzPU4 zcYS$DJQI|$3`?uG?`@9^3Xrgw#TZ3`JF8jt=hoDXZrpW+X&w%^&qWg0) zr|xZA`r2cML98jbg%Jr)c5wH}&c^P6OCDX!Jg@~XFRf%BzkA_K4jq-t!wlx*vKV9o zi)qZ)YC9UQeOauD98QQl)pTu=*y^+XE#6(`WKLsV`sBgZ7wi6ye))JSo>f{=gHUuf zW%3jmf+lgqT9a}<~`0dt0cnHe)V0ANb}UIwu{C#4y= z0bn+QgVWp#dm0z^!isE=!M!LWh1`X=4)AF6@ZS1v;lU}md(O^Qo?FU4e(&7*AqEUn zxFJiHSguqno)R8QMcI~mqrblN>xB`erF@I(d_f>2dt0wM1I{%iut=f-_c!qA-Sq;Q zIkS#GxO(=7@8(iqz<{fnf!I*Txw}&@gLrkT?*P2&Wgxg@q;4q|PXQA=-NF6!?b5I` z98ht1^U}FXtB@+*V(QA@!T{~7AED>J{dxuE8Jb3@<{k|sA%aUFGBm?(i7&q0{q3zM z>jzfSK%Ip=^YO(c{@DjtfBNBtGvot}X9wiPK`ah~uoH~USZ!kCkYqne#Z2VYq~l3& zWOw|x0w-hR{V4Y~Mh~{j=LLDTRB9A%ggv!tf~gtmt=kY@8%ldBx_9tdgYp|?L>K+1 z=bNqc&pN)>D2i$~n7Z3g^N^`>KIRtq>-*cq{^q+!+~_s$ofE!>_G@ncEzNh+{S2CJ z7j)mQ>J0=@%2ysiEMRc#-1($i)pysOVWvE|7t%`zDkrDf;t zZIr*dy?r1n$^*5Dr0wV(-t{aZhkG*v?3M8edDSMVhIGjs9g01uwSD=&U$3G@aB}qN zjuKbTPq(aesp2Tu);$s^teps;K(b++&pKh4ZX-A)~|lG&(1Xnt$d~G z;aYHXI5PqYLv*Zf?d!nJ^AOnG;7a7= z3T3OTUN2YNpa%UDtY3>pro<<$$$_?w52mI6vk&kYqfc*Bi|G<~>zB?yzkIi6 zH&2LqC)Bg6;Kxi)pljL#%ydh9+B2%TvlBQll^onnoS-IUqPzWIAZ3DCP=mWxVY$ z;tn!mqGS}Ugk1^E01N3{pU$4AiLq?npxiA!ty#k+oz4!T@C%a`hh-_v7mV0^Q!s?%W z|JsMwmzD_}m9%t?0D;&XW=?=GQf8#oQU8+`6W=@C9N>h%1ee7LcH zZ~bt4L3m7X<<(bsI|YQruI+uWo_!a4X>(|>k~WC zHj!v){in<1Omo&O?w@=Acdq_%T5b*P;H zjp+!8>Iu0uU{LerS|-Oyewp@digqC(85f1h;PGMj@BaG9VWh!uX@Pr{&+|2MN{56K zoE>D~CJ#6fWpX0-q^5I9O#yO+D$LnEz=?s3Y&jrT|K8ifKmXxdSI*?YMuLJF2a$Kn z@YTJipWZ&)9m52LAq;{wMsxk@*Q+}L)MU~d=%0@71ZJAC{MLyXVpwK;@8;#;CES$4 z&e-lej2-|cRRdre;SiQS2<#PqV0{PRRl+HPndVvMWpsy;#6b6+5y{Dhp{MvWMrX|G{c>f@Cd15OEY<1HAbh2 z8oQeVFqQ4a)T(gJGzTUXeVU|+wI4J28nvbG5hk9;q5R_?@LDT;3o9R|I4R9Mc;d&u z$PctLKj73h51sYg5vqy4LXCsbeQlq5r0QBpX;GfE2 zf}m8#0oOynX`@-~{+pb&U|y22lZ=4hKP!kSu*D&Y53dUwGIrI- z3H{H#!cNX#F&whBprVMfSXm1J7xKb66(gN#HGB5^_3SA247``bsG2N4G0 zAZ}$&=FWa6|x@;GmG@MYO0667$r}B?eKdeLInNlbguXp)|QONgyh< zTl3;8jsUB!ALg)Rk>wfzUtRlVd$c{au_8#YGG-xzRa7CV{HJ8}Q!@bRPUV&kuCO@16IzEPA!G zkEvaK2tNM}tOpDxvm8?&L6;phRKmG(ZEDX`dE0igavW;49wt2;cP21b^BmPvfdPmJ z6UuT#LLQc$m)Xz1e6kHQAN*M$C44Za>{tO__@-I*r0>e>td__#RC@=&N+paa4;8}{tLEL(=_ z5|=;y@bVHNxH3UOu`TSc#wDBRuWH=A;TZkL(XW{^sT)TXwFHDJMFH61rXox{ag}s{ zm|{6%GG+piI;mj9_-0*y{@LTldwxhu$^*Db+<$vb{^Ca$KfIQm8$cA|2$eY52ySMa zl>V*>mU-pE=~iP1RCUaRE{x#rIuWxu05_D1Xn-1Ea8+`JsmD@4uC7L>gp)~i} zrcAAOvUy_xqsl0`^CUEhc&k3LX4s>pJ3{kuSIyQL2+{T`1*y9Nm849Zf+2HKD zL|$nnf%tKMD7%b8@JVOH#FQ&28)2gx7_isz#U6uW{=Mz$@9*bv7z| zPJO<6X~fFPN>P^C(qLrRJiwg?&p2O-F^Y}fzI^uV5FAw!VIWR>m(tmP@|2yu-LHNf zwKtn`VgqEzoj}Afsu>7m=FA8}8jI!OlBp|jSfUhckMZj-w!eO~9c6i}L?We6B*BW}?TMTSH2KrhhQu!k*=ss=686ImjrgQFdtA z@4nvI7{NFrVj*FOP@w8OmJX@vJ?I?1b8=`WLZGSQR2!bQ6ycai!zcIGHD>B?jE>h$ z=Zg+zI$qXK^Ctvm4DvfO$BT;bui{4Ne%7;Hk)wwh7FP}{h(I(a_h6obP&3Khc4V3p zx?F#nbJ$TDQk+V6t{X?xL=AIF0!Xg`E@`+Vq48$cI4nIK=YRR>z75VO1t$CW_p(Ko>n>o2>ENOs;8PQOxlaPc^wMsh2F7*jw{hBVB&Y^|v z{$v}II{;<@2ykKdqCAt+&CBOl$1GfepFKZ#wgbwb&gKx|`J|&2m(pXVo&db!D(j>g zl^WDOt;p%_WLXle6QRn^wbHQr|2u^%Ln*_0`N!D6dz8II!-oFSOpBz9h9v42{ z?X;4fMKAl<*Ey?+KlWR*Z)SJ)IzjWP>22qZoTp)Kjv4J%=U<;}oAw{YRL8J%9$&eb zRsrr#AqI=a{3jn?di&CH?juqq&I=5;M)I56&p!WlysuCul8j8UNLgW-8$pdqWab%0S{QLM zajy~y`rxpBy$W!Zy0!{;W;0*T=;o#T(n=O= z{!FeqobkjIKfd{+ z57t%%ON7j!<4!r}#RfeWqkjj8AaH5M4~>$bfl^^pt%R$of(Ij6`8U7)=IQ1k^N=|= zV~1GF(Y*12L0g}b%DFrX_ouNq%`*kUw3qx$C&4Fn{b+fhOGmZtV`DrfJ0q+nbYt zB@DK9%fI^M{y40aE(!XZDO>?h#d`NNd0g3yVqON^yqV_dH|kjEk1B%AwX~d&8P*2) z!8>QZfAh-PfLRMBE)6B+cOGs2?yF~;hZqx(i7N$ANP(6f)uX|QC55+khba1jYrkF= zUBMtkYG&?%Gcv3OeDKz}A;trNIqw|kw~v$tC@fh?)3nCN+ZO56B?JBH3BXHLSSMH? z?b;9~@jX0|pH<1G2-rHroyS`qmd$7Yee2xPwQ~pxXkAUBbY1ZN4BD?(KvC5|{&)72`T|1Zmz3*Rm`#e^F+<+ox3~uYv zUMPR@2v5)I2s4HenGsA0%9YHBh}6``qHB-wxRb(>cH`+R}L%K-h?z70=63{D_n zn)BdAoM8c}@OB@d`(a_SC1%)NcgPz}S{zjY?ZlY-L8sC8piU$?veke6n|oUY4x&gl zP;+KBi*Rd?xmS6_PBt-4KjHCm>Z4B>urh;X>Pv?AFVjyyJbUxvG8enUKxJtjmbb_J zn_EwBJ+&PL4~Rsfsk>z&0!D<8)ZQ&{GH<+GdXUwxm*)Tgn9RXUtl$!Fox}C>%b6Dh zDLlLP^!fT8Bu}%LluU&h-<4)kD4nFMvQl4L?Fqmu!&kFv|B8C1xt7N777kM2Q1Q*9 zgOO#?SO{kZ^!~Ngfg>jf!D_r>8o57z_Uolq6MU3rN|=ngh&> zX}Ztc&6vQFoYAwAvw!}pJ6mztco_(46>Mf^>e#n8$j_;({Xjd?tF99_`tnLF-qpCb z{yQTUn(|s&oKV|U)SL*pcO*uwMJHH)TR{J`ukFahgN`<7>dl{hx4GN5naX|Z{zzjB zJDJu1+L6Q4(yyu=;BDydHPuXaF-uT`8bumDJCJ|<+l?3oC9)!Fni4jRZg5X-RbJ2b z0z`9MxCG7wVrA`3f%cd}fA#9u%b!nR=0cJxR?J|x;P~LJ)n(Se6pi+kZ{6D|tJ(j? z5i6BQyb~TsZ6D#D0`vsnwb0dyh9*CXWJUqF6B%Fuk2bKm8;yp-JP3aM;>y_}NFe}K zGcpP?VTSj6v|ler07xxW62b7mE^J_jYh-p3L?8w!0vd`R6p=~p0BQBBY;KE=2=Id|Q?ZEN~GMKx%YwA>`SzZ9{W!U+WZ zCn4Um|CJER7@b%oxJHU`=$;k0aSng);|uRxSjnvrB80(#W#4QZ{OBw zjn8)hZCrKx4cZfcSAhE$8S;3Y&|X~wl&~|#-N)O91w=Avap~;v`sHB&1aOBsz%Vy= zOA_sV_3KrT(qt6d2pCL+)U-6X$X8LEmhP74*&nQelB~x)nVNdaK_xQNG7@D^C(yi42Lj{Yt3vA{^$+hru`*vWUSMW;p!+NlEkLN(GUW1qj{w-+ZfKs$s1&AU2z zx6vu&bE_NB_yR3DZ?}g88}I+lCtm$K$%`OPiAI)a0N~8Y& z^YVZr;+UBuW$PpV^3n4x*PaXa03BW7bsqL@Lln7=K3$!6 z?wWeMyQfi@NM6F&J-CyTJIXTV`LK*s((=7M{MDBa4n5~=;DEUixoRnb2K{rLWZH6j zuZy;hc2&3$(@Zh}x)tcgQ@>>ZT2BJhIlhY&>dgcx*ZgB{nfquxPlp`gL^%N8)f=$5 z>2VT+AZBjAnX}K+ab>Ma>clO^(PXqu`PDXBqh>QCIa&HQ^%lrGhOl*#S3P@Je=B_z zO^v7omtp1Ke0ul64n{PH5Dr026&hX5!4L-35ym!E)So(zX4j%Vz|=jBPL08EcbKz# zAZ1b~2U)4XeKo@eZ{a5&T)J{rLfi}RLi0mg{rcg~FFxH|KSUWYCNpvMl9>bq1-nc+ zCiSadFHv2sPoWG4G|iW*X2APzudb~Kv;@f**;n@u3kL#9g95~4t|F`&=b8RY%%J<# z6M&a2Ql{NBp#dVIs#%^zHDfUb0v>Pr_Q6<52*x^k=jyqY3{W%|iTW8B&dJ-ke{cKs zQU|bbR4YpZz(NX(DFbY2sbGBjxcJTIPq+8fWk4Y?;@T2_bp68jZZ2O~21l@ICU8{% zmOy!>^lji99b1O<7eCK>8tHO|xxs2GqL45sO(HKJ0RQb@-QJh88irbxd4VdE$Uv6T zqX2Jf5@^O3sHq3Hh8O2l{aX{m-U9UXnDIpUgSNQ8HH0t?RcA`M$EW#rW(Eka#HHtT zOMn(VoEPL0EdIk6{tBK9Z%n^S=%y|-xT0}`ZOsyR_jB=?dDc$Pq2?Zq;fSM2XY0I} z>M}tgj3MLf{6GE0w}%u8$`yf_4QY0kQlJ^&aHZFF{-34?t(fTajXaY;ZsTZUzq*E> zezf-CTWd=w20_%wW$F3YetT>E>!;(f@S!sgmWm=;^kE1>h*3)|tsZ{sSHE7ovf3m} zpoxYd5hlml3f{W7G9a~BMxtjs`En!*f_)|-yD2-e>aA+;|Q1zX?!*t{qUW0H!twn3+V?dVCm z=%2cdlTBvu+;D()5^XDzX~9@<8;>1fx_@jG;On;Ue08${r|THZMh$e{$>{`QbjN=i zS07LAJTrgDGzVxvJYljunvZ}R{y@#Y)WR%jU;v%WIQB@g=S#o*>hb6I4#u=%GK@y; zjHG(@r3%%ah3x+7DwjrNV5FNjuA^QQ1;Mkx0mcz4jQ1~RfB%P_++W z(euwA9PASvM1*`8IK;vfb)zIEW}5G9U#Jhcr7jrQhpUPXJyOX6anC+Zra)$z3g^zVY3(CnMDC^~J1Q#Bt%C!e?>lic)eX2Oy&odYn( z|7Z5!5%nowew2J9-*8 z9cEscY%w{L6T1@(u30ATrcs#?;HaKB!f0#xOHa_9P>;2?kpLgx7B?en>pOb+7porA|)u_Q!?)=hxQ zQmfDX>IuN>*qv~mzSD__V`(ILX>i8g7~ecxHy$#Gt-OA5^~yOQR=YXiv323cwD*I9h3-oc1H`KGxg!pKl!iVHwOqG5FyR-n;zqjipOV@Sq%0u=lGnc} zyRxfzN-Is%j@1ajslfeQXwsesn8Lyog2BllAahqUGcykBhw;wl=-xixULSclPb`H{qb2f`CK%=paVeMy3Iyf zwx?S8Z`JPeRS}QV<^vp&pRj;aRd%l2ig9R(b3nCgb4$(D(t}NDfoA+hE2n=Dh`s)r z(l)C)08G_vZ@t-xkqyhR{Kfs9TaRpP1Mm=*UQ??1lY27-;3qtS7JchTLS6?YIRV5@ z>|hu{V=Rau5*TdiFefXijOPdV{>|YBZ=G49v5gNi8Gu)wAMmd~-?+bleaD!f0t(eA zO@9jR*UOwvn!J-b!K<0K0RS?i=$Fso`lYk11rb38cOP%;7dR+^fT-@E5VHDAFfS&! zUp)bMafH>{Nt2;65S&DU6UpMRCsDbafzaUtOUHHZb5RWxi^`Qbh?;_B^C# zt^Il#dg`h|%z;&~J;Ln=#n%tEw)c%V*H|tEyKqMS?1z_bT*NX%M@3+`nVAA$;Sd6d zRgJ*p)bdZ86Qq7Z_E~=qVOlQP)`W#Kwe&H4`6u@B#IJ;VZ_3GD4Ps*BJpig@l|2FI3BXJ4&ZZt%qyJjv>keX4g8}QC z{&ami8=i@ZjO@mh^JkLre=TZuH*#kuPQ^!3RP(_79_`ml)lYH?T?#KWF86h&1-Pn(zr;9-U zNg<2FqLQPs)p7_)bbme?eY^4e{?_QulRXP(oB}fs^MMePQ!@xm#0+l0SwjEqP%w~z zCRxA0Y_@I%>uG`-r_-QjE7McJbP-6MhyMMD2frAAo@EfP`SyxC5_64@Fwjdr2g!0Kp%}{;6-ELPRUF2vtN4o_ zuKnQcwM-8PItItV>KBhTe*XE^c7ZTNjFxfeMc4g$8T6kH8}h2-Ob&t(ER#S^c@``} z7=du}>ZJgv5$8)!o^9>yp@_-wi({#iD(%GjnfoR{PXJ!}3`*`*<(?+ZDu4vz(m6m0 z51wq67SxGMmxH}?g}g)-zywugW;bn|LQ>tf*Q@nw&IyrF`-P*@rPq~=ls?+FS0uo} z1+fpq!!3OJ_2$#(W21o+72 zF9*W{1BX;Gz-DlFynYJ^_tt>2RUriFNO!n<8DmkDW-1~g0idWc%Q$DJu@4mQUkM++ zb$&&3Ag*r6mbS6>IuM0ZBV7?WaPxo>~L4Wz$hcK zA?+4;@GNfaMWqa`IT!!VkFI1Ta!URt&dhGcEDkbCQ@~Z>r=b}AyWFq(bm+#WY);M& zF^Cfzv6DNDVCiz}PCy`5!gImzo)o{myRkJ2PD=tAqFklJfAEvbH!pFn7{JM#nVi(w zK#5>E07!C>5v&Sor6dJGU8YTT^3(*rGLbN+NrihuU+iIL_hcc)QH`#G~3ouP@Zg38#EX3;&Qs z{GlSg)zm7CXWrh{joNOlwF(H6#D+#0(7b>;D}XAMmvfcdKuz)kPh>@tED5e}omhZI zRaTo0MMMsiMVAs3@?9Ey`mFrL-MEWkNf{HwRon^CG4f7KKPBbxG zr|cPAtE{B-zB##(o1`NnonG9HJW3q9#o&37eR6m6 z(?@YH!+|S;JIquo>i{RACMdx?g}2rPj2`~?s|9`<(SH-Gk(vPvz|6BjfIGS8Kvv?% zAFgS+AM!9(-W%iIlTjp;fRjW`t>MO_83yZJ7JCBlvP)=s)G4L7Q^5WhM)>yOI_Jy8 z0vo?|`CJBMP_F#le9E4Dvi0j$SHD5~)jA;(oXJz~(mTm>FgVQI!C*1w0@zpl{{F$8 zr#oX03KFtlhu7BfKl|a8At3`oqi^Yo&8QV}l#)#`e=GWY^pAzn*o$0BW)7lii7*jj z5s4TqDub^cY#z|+{q^xd5uC!r%AJTLVYWJxtMO+<_up1gpQ{Y7uFbsHjgD@b>{RW) z&J6Y$R^W}DS6e=GB8mr0*%Qqb8ofA3cg&qFekC{fi@&fL9nlf_22-&Be%$*xy~pOb zKeeU;xb@%m@9cc;^;k*z9gQm}*O7C?AO^@&Byc)-nV4AIT^K>)zJAY&mj1zgSQGA#EPqhCjC-qy*vDGX3+7hB5n z61NOGAiQ_|vKAu}i6l>-@9m5LfdU~*oFP%>>OA9az0jg3054UNB_pUisf!tbhzUX< zb0FZ({ln72cw7Xw)d5|Yt-bXi9fAH?oxgi1>L9MF)5g<@u3#XNyy^ams4K`(WA~u7K zjh`Rd)&cH5e!jJP5Zy(jYBf~2#HY0Qv;XpBak+goG4bKcuUBiFOciaS4rDJRf*pNP+dLe#^C zP04a93fdvgFjp}XvuKRGu)&uP)<5}X&+;W;K+a~-T>)scBX+`U5A9R~HudAD?NH_> zdDjI9X3NMjKop1sV+Se2mIXh2clCp-O9S0r&7IxMvM1}s&wu@FuRsCXFQEiQq+nnL zlCMB2XH=m#eKc#oPI@Wq(%=*do-y9LnlH04$HL>@SnobMEUh{$4esd&>##kd9^du^ z;N>c^lp3hy&hC^<+sFYIZ13UG`i@I3LLLv_y?$YJI9=@Tjnevcs{O_WHUR8I$}n;x z2bl;LFv)3d*+9{J4#}A1lTwBXLg385($xmAmlkb#Q4$m zm7jh5cBcDF0j{nV4&vZ%zIeVf267xm=RAw1Qv|OSq})p~`t^cL06+j%81G-ZBq+h| zVen{UcVh<>5FKV(75*zZ8&$3?{ptz8ivuzzAt8b_2!vq3Nb&Xk4dY=EoyjhpTfVx6 zLH~yK>t(lGb-~2o0bUB9pJ{oq_9~U&=a5``s!Kv^Dnmw%FO}hG>t37-ff4qzdnLUAIr3lKD!)o*s_CD>4410 zj2vKcqEgS~VF|5KY4cRUPMkx9HTRY(~BZYA+NRnMUVdb z^@8OjcPB#@@$MBqzmf}kgcLOR_Q~#kgfmFEKGN&i;(ojJ1mGn%Uefs1p+L^UB#6M{ zO>FO%(U}Q>%J*)Z%?S-WIYRy1uYN5CMBcH^a3Uvmf-{9onfDd99v$3%@bu6al8;B@ zC9%t^*-yWJ@$3-dC9Dj@OhPW?3~ThhS_M%bhyGhwVNMx$3ZN_kA14GQ$>zu%(NR$N z=E?Ktaq#8+O$}$F2L*^pM2KLfFqh={!!%{?*#N;t*53|!?T`Tm8Vkr7v^P=bchUa@ zhq_~dVq{+I7n%tKrn-det<@wOPc>$};O(8S z0&3+3_^fEBmG10Q(GYFZr#2hGygoo<4$DnvsmlQ{$s%<#3mjljGb0d7^nBM=|MGX= zK95vzUI~-U(ir{`xc`Kd`&4~^Bc7+u0C$1`3QEI2)nJm2Bb(;r%K?A-!^<}>uPz65 zM1)}3(!HlUU)>!aD#Bo(E>)qdu@*=UjeR+`UoTX5s0aWcj?D1xTWeH~iO3~;wtIMg zT@@f^fXvL9NT}zVJpp(H%aC0B8OlsdjIm*7jQh`aRhG>?u-&+Pc5Mkc!Q(VUNPD+` z8~b%K0)Q0Bo5Fj>r?-#I_{lMj|w0>qt}K{6_; zdBzm48&U-i2B_1iht3xbw9J(&9KF@svd-qgiXu&WxLYey(dg)EZoD zp3vP0o^cN2XwjfVaLz_py}RYVxV5p1VFXj{2TJf43)?>8I6cYZk2(n@^CdTSo8SXx z^WYv}K4h#0eE(+t_Qfp29x#feBZNDT4?p|5+&+Y+d}>io?tk-YB*K(uQfxAu>&@CGfD3Cu=uHIJW3378rfJ>lHyq!L^? zfK7_ci-bedF$2pYwF;Q09Mr60e4^-QkNLIDd)Pj-q=Ztv_Ah{Q$# zAa>{O5!kPOz1YcznH)aM!3BQ!?zzmyLdto*Q|QJXMhXbP>>x8&w#>U=Vzn9Z6^w>oX0N)=$7G`$P85BofvJu@c! zw|8sd?vvhTXPl35E1H^W=!PQH|F-;^e3q7Awj0pWa2YDm5phSu18Pl@wEaCh?4p)( zNo^{`pz7D9SDAn=8MBia)L4Xq#8@b05B3KC;&)H>O|1Tjq%55r5A^|p8O#4;IrgkP zZ^2>SxTMV6h=79~g7k?Im^E#}I-Zc3n9MS0rvCO>{Mm<>F0Eu*9!AlT@RO1K`u5I~ zJ$N91tt^9!Si)lFJs|7X=`WP&;8pWNqXU^?h49{$a|0@4j2?zxeDm-SC;?)21%pK- zTI_dQPXJzG^AVz|y5%{=5+TDV;>l(ldw?)dE(N`DaljF5#%Wr!U;R2+J!6&`l4B_! z6r(W{fhmfV8Sbo?pM0~u?|JD#h$N1$tmHqudG^W*Xj}<)D?@zeR{2@$fED&CPwWUs zgm%^cm@4BdZD$dMa8TOg=i{9?xczX;!g6U|r^9r$94&+Ynef*MOrPh^*rWthQ@pjh zqoeqrF?E@sf10cNuaqYfmH$-Le=hl-MXS`QLi?Og=5#p#ule?pSz`6yctq2HrwsdN zW(F!n{_#`BPUu**PNfahdLEyc{M053%{AfC@=>G)WB=rU7qH^m`TX2~ zNJ|H)48OX!R{}emT5z>J+AL6J-5ut@r%=vCf-ne5$;qfL zf+zIZGV({)ma!%7Z)-?eg74PMz_ioAPkgq=7qrd#*!H%CP5F`tJGHN~B3V220((YIeD$^bVImA7{ z13(OCBtDZof(YQ0yv>FoaF+3-cUHcC<9x6~^}_Oeqx3HxZr^$AV}m-uG0cKT?Mr0+ zda0VM!wG5@7;8hkdwFe%Ox%sb46I8L%0TvzjyP( z$8Tq=j3q_@VwvjyUKK7qp^XMyk%Nuid$lfFs<c97TkP^r!uPz08WyD8;b5iR0S&?DCl<(ZU=EgZoc+4;5+XM6DkEWVg=li5Cvn4Ft1F^U*+lnq0{1%40p*no>CVMRDTMkmA@x(%E}z$itBb z+1axXwhnhnMi_#Fs=+NCdmtsaK*-sd64jZE?Y3ck7u6-fdJBh5&}Y};9kb{kO?AJ8 zK09#9omo@}C*+D(#Up6;k_z!9;;Q_Oj; z8EEyG$wyGR_fQKPbd6%`SCYmLd?sYN+tuM(v(!As$iPY1B}Q-tlQY~w#6r+Q{n=su z*T3HxiHwcBJ8W~r;0@-*>MbG$C!gEtlK&(fj1#{ACkF#O=@m>qECwjLJCHGRSuVSM zbS3-2jf*R+<>=5^bhv!$$>taL#)m+xG<-cM>(`4fVRAPfNTH=WGQ!)J&MdRCMUbpN zKiu5M*bxDdVA@w>djjxsS38fIi5OuFeDin%!<9ly_IUlmxpM>L1XDOeVUk7w`z_b6 z7X{WS<#$B*;_kuSr+cLjioyp(=W_bVdl#>*Q3lOK0UH%#5irvPK>=xau(I(ZH*zOS zEFd{3*X@8=M0Zlr{}CdDBTPaUjWa5!ps;m_hnu@4GDsey1qqY{OUVk!jhq+)VrK>e z^YUD$+!&`LU^~JO)J5NEK}ZWeVhUe2^7O`0bT)2m>QxbS75qMv`87YL%4b#bv+(yj zyQW^`q8HryOXqY0j{cLIJKOZH<^a=uo9-8r21}cnv^hYBy>v4r&`|+R{dM)_w2GNy za`q~E!-?Q(@vJs#@`z)P)+2nGav`*^gkI8-IF<(zI_9)yUT zq3RS^p>8gHd81#aI-_-6_M>Cp@bk|$p6r&Itwsw&&enqe?A>!W&*5A^ARHE@2jO9U zFgnaaO75)fM2HkHh7y#`I66flB{z1k1vXhwCZ-colw%>tv23RkdI~-$@r&PnxpP=X z7b0;-kQ_+)U`9|OuoECgoQ9ldefQhyf1VBSs$|@l#iK0_fVL%QJ?hxa5=K?~pDIbu z#pu)eejJh2H5G;XcYaHsWYBZ|@b3(;KK55oJqdj5@2#Ger$$GJ<}{I}-HIBq(A30v zmweXDlAJsh|JkXE-y4QNs;ZY zDmLxzc}wc(fGePkoe>^y?v*ZPJ``L!yR^HCCFDD{o zM@vhalrF@PcuX<^e)HwCedU9w?#5P}8`4icICp6U7=u*d9KM(@%~sawkv22LK#yo&13$bx(GHTq4^n>90P&f1rW0 zd|VWREK`jsO{tykRYCLmX&RkL%Id}(DM)7;m|9+qGaf;0ug?j+m^c4AQU1^Zlb_a~ zS!wzw0Rydf;AF5EM5ja5e=vN%NR~5y?BPVy0`uk{PC%X~);)9lf;wRWlUK!QL!d() zC;0%~#?FF9!6aR{oetLOAW>_EzyWtlPp+z*(G8t25lw>wZ+iW!xNRvHD zR+NGXPHHjn0_1#hq)%RZ8X2nkGtH>PRKdW_MYxO#W@2&EfgnU&Ucpa3IJX*%wIIS+ zeP8)+zI=K}C|H!Ztt_&7!eHtk>4`$Wy4%yi06ddWjxEnPmJr9eWn4P5ET$~tS$_Z7 z#>hYc(X0}`rZa&vc@@Fl^tGI(E^}{I4fjnW03KPR7zpHG16$HXfJ}v)h}29|_0HAZ z4hf?SUq2r09#TM-MLVC#`&X94p@uMky0M#7HKU$!_N%kwN-vF!h+xD{>{Ys)xfz^@ z+^ICgfX#@Xf3dkWrsyKj%=fRJ#gE=!IllrZM5^Ev@9>EWyA!O^Ps8SvD&5^+01iO$zl9f(l$}@sRf8!k!lN48i*f`u zbv2?=F+%9)WoEdcqATqiW+nTJfqp9p>*#9tcShj@oHVhx zJJ>M)HuF|bZagvdpL1)t-%Q@{Br%{K*G}BG3GYn}v&lz4FNC3bJfo{3>$D5Joe-Qp zLM9k1L>VT4fQV?UB?TrjxP_4KmDwg=|3^Q6vWJ0&P(}!4WSX&?Y2_PaaECdJVJVp) zk?Fb90`AS>$!U5aZT?n&=_KjhK2Z`@o>EEe!v<1F-PTf=k{O$mxpU=p`MrzZb^Rh;rTNIuptuw=Ixl&s*=$NP3qEP!uj5a zbSJ(YO?C0qC*5u>ZtgQoARteiPudS=W@27i8kk0Aa&Rfjk9TnE@%~PkE9YuP@F0|k zH&r9dT$ybm4KYt7AKWd6woG8qe^b$&nHiH~qx#`yW39>UMADvQ_6KfGp1p#tbIXsF30FGXK@BCy)1SuVj)e#>gx&DyL*StGP<$dE!7f z)L>rE>BznG0u6yl;WasoF^Ig~vhh@5o&1XGd}Db)JoNL+_`$p9udFR+WI_~;#yfXG6oT*bY7%hBh;^>w{mrKr#=cyeDS6mLXf(+QZqbIxrL;vmn|qq?s%o>t%`Ai< zA?%OzU;Xly4$im;pi#*wH-~CWP$!MRvxD6g7ON`2!lQEb*gV!v=(M}B`}itcq5ik| zINU7e8L?w^h>zYqcjMAI(ZkHt3hW)&Z@+r>^bj$JGGg?M@|06(sYgj5^kUk6&D(u0 z1Wrx7c7KQ&moJ7hL(ZUXc39}crw640$lTZ+&dJ}(EH#5Yxndw)0G#N}l$^b31ORDt z3AJ9?sL36z9N7Sv8XO>2U~i148+&FhWNhObSJ#F)Vo`gHOjskes+0ZdSG^S!NdoTz zC$sb)0~`h!1MBkg_r8W7?NJUaOV5(tz^JTj?rEjI4N~HI}MmN)H|V5=Mi_F z+(KmW?;>_)r+OG5HPMLcF$j&3h|Jk|`R*2e{ncX`tT1x|{mCZW-KU^-8?R5a*DYAs z5%YL^8rY{jf*jpCuD6*6(hmZ#}XC z0TK+NMzM@c1agBW84#HhDoZTK%O2)0To;%(>5f{LO?3uc^=UAW;5<9d4)M;l!8=#h zmc#^PCcCBm?(2sehbS0YH|N|8?)7{|@2TCdxdedW>`gjMZRur-r5rb}tPRO>3FiD{ zb9ZYm;W{yQLz2?DGdqZ#*dVFT462&*Z=Pq+8%6*?;>^xKD*UHg1t?lR>g3MOC>-BD zEXGmPAkZ^Ix_%jCDI7)HatnZ_#+drmFC;w)F(d;CRLL}<6*cex>m&U7*0X)hA_5UI z()X@k{P^a|06+nhIJ1;#Q3PhH2YD0ToLJQynId%Zb!>L;(La@5138f;14J0y+|50W zUZou0JkQ2uR2q&Y|7X9xw}Ug0@)*_KtB|0?z|Gpmj+l1op?2z1+nv1y(P~ggPMk0W zO=`fk*khs?nH~$K1s?xC)p}W^j6dR?p31L%vD=j9{SS6~nb&-hKjB#JG5>v@mnX1@ z44^e2&Ru(-dM2R_@x8sBxMi2g)7_^!9E%t&W1{p(VNSJwbFc&lsaj!S4{QJQ7q<>9 z8ygj7B%Dd+>IyS*a%XdZ&Ee!m3-SHY;{MZ~A5L!SRo7uVvi+oef@{VI4wP71!h2T- zH?OSaq(Rs?+t>V8Up;xU56V#$+&}_ncQ-Of6{y@_Li*J`cOrEFnqz?gAc%|m&C9&D zBpIWOcBpdq@j?(*Y&0>RuoTroP5^^g zP&l^t@o0UA!qOnm1@Y}`7lVU=Oe*PPO&QQ!e0ud_zdGluWGLwbBXVM}2suLop6=q) zJ6ngI7tUt36zH8R7v8y&4G5WGzz|ng4Z>zxo#!TQI;WU6Ic;5V(OB>zYr>AAAYJ`a ziKYq|ur!{iQ56&^FT$C-8~Dxbr)7RFx)70wxVy%fS^?=VYMy77xk$)m0WOSa*A1@1rFkCYi0u4k7A*Dp(wW5!t49wgj!qP!mf z?$`7t^GK#JG8ZNGAS~`aig>h-U)|o=El4S_@G$3_7teh3R+c-&kTC*0FvX&U~dMES#MRNL>H`Y)qDniZq3h37o)%av9F7kMVCld${LIW6vN#L=q}W zPsL0k%oANlE4*n6sn_TYlx!3yh;3?epj*)G_$e+BHgxqN_4M&fUhj(pb@j)^vH1Ro z_jBt0Swo?k3;K*gY--Hcy99D(o6Vp3?mQ0@O>HFVq(&qr;7s6p5kXbWjF_Ax(s0j~ z{@HK7*;1B#P>c`CvSbN~JTsgfjaIo0Q07|toZ{5&Or0CNe(oaz6%B+))N+(9fNl7N?xvm2rh1s}XUc>Chn5XWTZl!m|Ru{dRMA>>y^?kjsy*o%!fmSQU^0 zn#KmmK_qM-b9b;$u!XnKzb`^mO@(h#t~>#5m_k>x_+TzoXn!3ovap%Cxo}8t0g;!c zC1qbe*#5)o8E*S5|U&k zT#tfKCC-628Zht1F|-vytqkcl!D|~}ru5=g_`~d<&y_65m??+=Ftg^sjIrdw$}XMx zC%^o1OcE&@X+Z*4xRN_*@&Gl5&B+3rP1nW?sen#+TAT9>?kTnp6QhD!TR~)1nYQYv z2)T}RiShAu{@(R-11jB0;&5o;7hgWzQbdND6SKj~am+(+3EHm?`Ue!y1iezsc6G?R z`nVB|O@&y}}|%2*f&i=lZgjU^n695X#d2MZSH8UqdG?n4<*2wNX*L%6lq%JU!(u_Sn%AEeA5~BsW)`a z`Jhu0_QnS$mHaVjL>xtvuvka*k`?sHY{SWJc+Gu)*ZO)+rH?wgGtjbr^6sZuedwtp zmoz+6bHmN9z$7}rCpp3Gz=0IwN9`=R>6b^7V|Jn}n*2sWo@a+eap;3@H^!fSyK959 zrKK&$@G5u9tFSq$i%q8h?x$)=o&HqNoQ@{ZAI%;yuyv6YIhJ$LLtP@gcU9iGw6e^l zYoU-bEdS=KttUIMAW_MU@TTzfs_X*iMh0-xL+<&@Wl7LxkeD(aw`Bemh z0I@7X2%e5JR>opA$A=e}Ke{02Gl;@r zPU^4*L0Jb%%~qXXt~Id$`X6!UwA_DAY;a=KW>BLPw+MGP;t{gjPj)xs%BOd?w+oIG zLYBKlnp@>*W2AY5xox38Q^&@Kr{vo0@y*VY)T$ouI=**H{=7hxvM3+m`0D-(VeU8T zAUfguv?ya?ZpJdTQoWkF-i8CTv%S*Z;AS|iWf#lSzs=kE0P|=}-NI^MN~>Fy9-vl) zJV5gOnEiLZ`0_b83|7jbOg81_c3@Ts=?cR|46X zL)a_q!P6}TqJcP=ff{WcVKT+?M#8s#%D&n|$*M%1mGF4W_r~fZ3=G)by}INDG6umb z7Y3THBDM!K`}KxyqnUAA2dSZSs9<}9-`#q)AK4{?Yfi;`*UrCxb$OLQg|jJKNhVf? zsfS*TD=n5O9u1X_Km*5OtkZ`8RA$~pWH5CjVt~!bc<^+$yuV%C--=K7-Ls_#Dm7Lb zp{BUsHD#||)tze%PlN0y=P#nl+`TgPX@D0^ySQ|xIV;#Vh5l)7A^DgBe>Z@(bK^-G z@rzXSUo4!4Ufb;jG5wLZ*(u(s`{(|5?(3PI4VZJPuTwPI9AJ7LV0vhHYT5*I^8s2N z0H1PAty%|!?k{q{%~Lv9=3(Xb`uLN3VR1s!YaX+t5)=cT z?%{X0pNvhSIY9?pet7N7%?q-e!OevrOkNG7PuJ4A=Rc=3R#4a2UKrmWeX&2eMyUJ9 z6jfxCA7oa_MwWl`^ze|@et&PnvK5ygSx`+3p@YsREaNe314#% zd;`2H@%Ie+pM{SzIC4hQe`I}n7BKPOl0g6Db@XE%f12kx)eOKQ;C{r^FB2Ux6>!v{ z(asKYEaCt&o5yED#4w!?(A|FRc0oEwx(BVN3~VdakRQm}Kl$bDBIF~@6=ZHnVee3o zRTdL72jx;*4l~{BVvh^ee-BX10o)BzH|qzH)rm|8r0-ri|L&FHY6ep{nX@~C zL8jg+On9p+*|GmierA=OnZNkUTZHpYq5_)xNOvcKMI~o~sFe7Tbqb zLdG$&@E~6*OQod8ZdLTF|IN#vYQJEv=X@$qs?krz^!@1c8Row~(_j>} zdHLcJKBM!1*V`dH?q$s0PW^bChA{Z)+8wjM{j@U%N0_>{UT4(@sI~j4elu4mHs5uM zyP7fXgwSDXBD`Yt)bbVeY7!u=5Hcc)#$znqezg1511))I4)SO)gIg7;m*N3VJ-2hL zh4beAczp-Ta7S|2rFKP!{M5F3 zJpuT;NC6T7NNk`A1Fp~%%y3ZP!P9LIgTgEjUAuVx+%kee+{vApqbf_nWd`bc{et93+lXT6N-ko;&6r@qqxB$T zTV9qfv*t&Zpic=4UJdi9I%AdZzr&1uZyX=4@9mX?FTZ()Fmz!K9Ak7x;0%*!)f!)- zl6nx&ujMDqU77AK2B1kDG+nPu|2n3;BS8y4%2pUzhX(M>FYaCcU&jG;#7qTu`waDW z=ak{+AF5prkhEmeA3ZwHKX=%my)Ea;kccQ5OmQ6=+5F!0$S@d02g?$&GymwH|6(_> zAS)BHsT=^RJh5Xc`X@>2J8dY~2?}dKtEDn=Vr?asB#1=>b5p>X748mU3<)1y3GZDx zvpj%OSq9p3`t0`3_8!d98v*rea!5G?WP~awyE?7Ar;@&d!2k&ntDRfIwTqX?sdO$m z+yLT!q;_HI`BY?&W^!=Y!Ae{}3gFXQo6is9xKx5=D6d~weZO}6 zOdWm*v9JMf1m;%6d3{xNZ-)SP0?TG^w)&=OOODr8vby`nl>dM0ArWz%PQ`kPV zr@QgN=6F8_rOfMbO4Ue$1zH;K<#Q{cXXmEhp+$1Sgw&dPrbFut04z-x%z-qr1E_1@4vaC%2*i zsOv4;ye6(4s21f(SNC%>sRD-^EV{aDp65|9()|7|{mt$Df(8z;+QcZS>N;Hp_v4RK zpFZ|a2J~NG283prHcjR35FB8FnG$gb89=I$3>mP*_~5N@`)}AXIp#4&HDS$jt$E7gT8g4#3{jF47ydgN)S3($%az^%2V=3)QKmbVSBZ#4kSIcs_RHAml^D z53Zg6=z2C}K*0bfS8^j#h!c~UsS`ZK+Ip)KfW#KyAR=b8yiG92Ons5|mx#OigciVc zhj~X|Q5WAV{c=L{uff$VebN5f0d+MtMGg`1SGg{@Rz{FiDX?23n2kfr1Uq)c8`J*% z-44TI4V6u*4Xu&T7q~6X6FA-D|6sS5`C}Kq{-dfZwBRG4)`yrRG%a8Xo}l*0&Y7^g zYUI`lPK>T$s5ePfow8E%x3^qnCuE=w1FWMahzZ0{fr^0?S~A#pxfovmZ~pC9+Zr@m zbrUGe7!=$qjy;?2QQg~0IGaFxtNjFK9E2A11jsw#9Mlao>vmvj9#!=-5>aWth}OGf z)%)r~%i|4*aKXNb`1aW)B8J&n7Zx;H$&^?u!F7A^!5zk z&46%DaB;AcgB{`!0w=dAVN!QuHg^!iu_Sos%3uIM^RgU%bAN9PM3EBa0x-`Z!HGrNj8hsn! z4O^8`XSg&xI2eV%U^rv!`1H>6-N+nrG93n7zr6O&l{^?o5vUnpqAE_VdLHlCW_J^a zI+tOy>UR8on?Rb@<=z$)3%jL3KV3+0>Z?UncQZFd_T>3!M+aX&+dZVbAaPXjdF)A` zV?;hRC`s*!-Zc1CAc-ET&CXbgw6?_`GNE=jyQZed$!dGnizmOx1y)p1L!RV zIOh+i)^oNtz_Gay>GFXHIq>|s4*&Yg&FwgF%CnHGI>3QN%aUfAc(WjW`dbU8qfhu@ zr5N%BY{5Bcdwecw^GO{34n3ZAqm!Cg9G$;Xt zJc!1!dF3f+Z1Su6^~a9iCW`$@f455WC7<4J1X~LF_SIFykpQ4M&Q~(w! z2D4Nf3z%8N^nuEsm|HPN%Q?cHT$Jt2~ zz$f$oosJoH5*}!YJmf`b1qOH54>rqi=h;p{qVUSZfruReBu?DY($A{8=R!}Kr^yD6 zGXJ4z2}o1#pZkCl$j2x692mX5|Q@v3zl7Z)AuHI0kth zW0`1Q6qKB*!Y%6EuYT26R(4(;;H}GN2_uCT=J%dFR|betIXI&7u!8p;fIt2XQQgv~ zp9TR~obhA}+lM7_V6qJ3x33JTHz4TO^!_1s=BhZ@D82|FHC6c7U4z_tc=&j8w{#9! zmLZHF`khE(4pkSR~gm?;SePC_b|Zqg!zes`UOe6N zd)wvup+yQr#O{oV`)*UfnJuqQy!^@MqWN~6wLQ*DU5GPhe3R$o100QzChub^IZxRg zP8rkmrO4MnIVNxHoOj!S$~LG&q8FzT&+Lkc*zTw?U(9V5p{=HyYb-l8@|#{969g1o z#F!k!L_%ONlW}-_DF5n{r-dvT2f&N*p_zsdrrbYI=<<0gWRD|#z+Se5Ta|04+h;+z zI4lMktiVw4(aq&6XP0u1!Gl@$Y6>w+~=Z5m9KfDqQ143}HY2ajcQ~P~V zJ45KDY7h&q&?ij_I~w0F`Ylr<#W5OjRz@pLzIn2{RSa%D**m0V;|u^3q|($Shmhp? z>0Ou4c01oE_{lMQIJTwOP23W23UJ@4PA>2-N0U(2eYJD~ANtqi$N$}g=`a6+kNewa zM-Dol0(E13(GHnwHVI8{gGCj6Op{4aw^6_}!!|*Tj?Ao`7%(+M%tQhfa3vnC#suJ$ zkHXr|fB$%6j04S_5Cmvh03C7I&dmpSF(xp#)-ZeL$v^Z79c!i~>Z91z23aT%i=iN$ zEr0O-+J%*zqq2)qes5#v&PFj3n1P+0V3eG=-3Z1#`tR4A4aY_qu$tlGnILSXx$^MN zgRRoQOyo>XjXd@Z^qYDEgTQL@AFlqVz~(NVA4ZoQd+%Nz5Y7xy92A3qEO0D~wr}_($?yc%uM-P@ zTShgD?f;I32&Ys3w~&DW%Gs0c{fz@W*eW&;V6p@fCK3?4*N%V{ESktVT4}!RP%zZ9 z&NP|D^m_Jps`fvr#d77}GG)oqf#}ojqOIK7))eGqgrIr;V?oc+L07L&)BoLJ0xv&f zaPq%vwo5SS26$!W(+Ojqn-AcaN}6jA3QujbnGqD9_|Z^@158qfYtY}YfNEnWXPf#6 zB8P*=mhY7Lzxv(7!?3K*A+W)sskQL^sq%nljlWL*&b7>!2E)JX$8@;H5+uKzCy$Xchn_BoI^xful^hI;8k!TDwU@ZFV_ z5JM(~^O%>ve6ab=Gb;t;EJmEdJX1l2sGkJx*UT0-R~s-cot2AchJjs;Ook8E_xB>S zw%(`$HMvg$eiHy3kiY>EMPOuj`uxyH+-(?ed2PUooEdI5YnIZlHyZudwoufBV8V%% z@caN@-`^ftPT7*X57>VC@udqxPziPm>RIHqF zfMOyjnq!7PVW%x7NllHv8u^`sjkdN>T|;0Z2MlUt4kUYD0TYOs&CF%6i!=ZFlTFLc zLI!F_RR><-VScK{!iyDUJLf&XL2AkIg2tvm0C~;vG-+SlWQg9+b1_vtNZtSk_ z!vOM-$Qpa?)Ys?k^{cy2S(wQY8B&)>iV%=O6~x+N0Lr*phaj?d;wLptE2U3!gv@xdKp?d^e+mSSzwQ9iH?p4I9B&R_xH{}rF3$Fz4b1O zIq3h--kjoYk=6BD07!2?*4;WN;RdrP_Rh5-n zW#-MiOT>*m7~JV@rYdJXs4Z&d?%aYALGrr65MYo_qq~_dM?{XCqaIRgAq(gPR`Jmt z{PN2?n~qjh;>X)F{`xOlJ4Y}9%sHxMIf z4x)Vf>Tm{#7e9CoO2|-dZPrx-V|F0GtIBdA8jnh!W zG*~v)&XSo}oclj_#_pJw-}x{A5bujJ;>P{EfBODiC^pO$0G%TB>QTiKfhV<53%YcB z4(n^Eu;BCbIousDKXHB%ZqN+Uq2Kq3zDi?C(`ql$=kd3F$Wvcb4d_A$e(dv81ppuL zL-i;wsO{8rs?|H%^CO>#mU*Ii!ziqk>l9 z(GC3k(VaC7jFlAQgQ&m%W_xc2^aSFAruB!J=bzV~hv4;A?;;(UN2IY96hQ zECf(StB$6n7KORui1@ef4z~^&#TQQe?C=*4Z~f#hHWUhob{L~E4qo7y)5ZW7H`dP6 zPmCpUp9?dK3$JNJ6@_kNdx|Ho_Gc^tQ523WsW25&p(epYNp1j|$+mP}yegV8swMBu z?GRo^@ozal^8znA&RgN9ffmWtd95G$CuvE`5NshdlK?z zmJ4y^k5d;&f@al#Ixvs{?(Y{65{(V1I@7;q62(et6IwgmC6Nl1GFE{!k&?y#`qQg7 zGX$)I9+dgY+lhid%Vd1dx;|XU!jz%^eq4|(lFgdQ3ekH`3_rgwzj%Cm%qe1w;@{5r zZ%+;mOZbsOeOU#wxZ18)$NV%mQbbinBOczuy&Ge-%7DXQ-@iVjhd5Nh#$z91_@OP? zKfIcm(aZu-0ozA-v9%|zaDa=`A3eI`3_dk=3e2dwswu9H;lAjLk^0fJ!VLJ!v%_aw zd*(-^AxwYv_|8x6OA#! zxhxWx_jwhWe_SW%fv%4CivgDQ253g|IR*!GPcw0|>IW*hXYe8$IL>*8aZoGJEK&vX zCiO1<)SlmP7NFK4B|AG)0R`fmsB_NgXzlfp{@?%jWH+e!b%WxhME*y}gP-P4EDXbV z%<|RT0<^so0zfQO6ScA7C->dY9^DDkJyogTU+>NS{A@Ng%%V77NJ<;5=H2SZ*7;OH zq=@sd7z)AX_cpwhjM4eg%dOpm5~hGES2Cd2e?Sl;=PX8g%mm-PnpP-6h$F@A_2RR8 z4gm^45fdK~x^e`sEjH(_su_h<;R5)=%54C!=0-Cp2?kT3`~~5H@s?vg8tIvcSV@0n1+&zG1Ag{^!WdovY<; z@eP+g5g&^rMEft`G1Z=4z|a-wxO^;SjpK8{VOCq1A0eV}4$cV#Mp)YxV-buLV;L-r zZv4-$zJGCqeT<^``M`Tw^qxEQp17)<#bNOLK>|fgB<24*_G7j%c674jom7%PjaP~iSe+#LInP@!dX zPhV9t13YGB^xpl@hR+Wy000=`xEReMO2M1mBf2po)v7P<-<~K&9yE%;24Wwy)9)@8Aa{htiZBPW0RtFKDkh&m~QIdvmfC?&~&Hky3^1)`kG+4s~Hd+5K%2tuE# z(K0LMINTh(e!;y{894Y3fg^f%zl;Q{J(D3@~@L>Rd7(q%Dwk zO_8$be0VUASCNl8pl2yCClAGJ055W(9)4461`tfeL~BAkObRVV>b)q$&EU#n^KX9j z&AW&oZa$JfQP+R)qYD{tr_U7RcQX_0&)2U`T^TJOk`w{~UVK>w@0|zM9e(lU=DizZ z6`RF4mC;{bzI(NU3J4LhQUO{WgCjzr>b0^;96*c&Up%;@p+YpHd--UVay151gNK}EvXf&NpM}-%fHgI2Bm@>>apBBC!`_qfx)VaiYbeR@VfIfYPfBx#} zL3HBRydSGLp)k-C%1uy9RI&=1aU%Um! zdr>X*2^K8uPdx_|{-ApNpXxd%UjIy1UxRDpcsiQ^#86LmJ`CtZo7%LV&qtVpLDkcq z>bIoNe-Q1fMK!9R9WMwF!a*B`I*-qrujQrye{D;=MW= zOpf7@8E^pn=FeMuQyWb-5yHCiXOC|`*n|ca4oPynGOn+!#ZYBdUu>_}NB@}L4o|tW z&gcG5m+v3;8!!Ds0)WX4Bf}hRBVRku)Zl{nQYL@0FaB@BPhCelKR|1SRY4f~Fc%H)YJX3gjA~XXEr=S|hMeb)B>R z(ewXeFR{!)t!B{^tUZG}mw=WwmTCD9j466wqw$kLueCoPjm>y#!p^$GrK=LOacPQ4 z8sQ*XjD>Ro2_cRr>xY$;qdWhfzx~&#jw&fEX;oypRY_bptzhgX=7Lb++~$Du;!mA? z?wR9A$#e+@!{Ik1bjeyblL%4tW)2k^kGmTC1PTFvw zXSY}{<&+CbnXHaW9Ra|3P*Bch-W6#UdcoM?@!gG)MCW{<|L*x)^O%-!&Oxk6{?>Rh z8!&y@vo1}%3IIMGgfodIR=X||?K6onFr|4CYzbiGzlGwv1dPoi1xffRfXXmTZ-)gQYoBhb|{T zh(V(uxLBeh%sVYaozWY8g&*C-FCN^PAee=j=yufKJ~^C?q=dNwF$9TqPn9tehBn$0 zF#&6q(JBVG&WDMW5~IY4n@Fi@UMUJX;ztjQbzfCs3O_!qMz6OK1wpK`3d+=(rvM<9 z%?hC;Ix7H*T?2f0^(jDY?xll6LO`8URal360GfcVm=SNb4xDgW%g&8#n@u!6x;^>nWA8$jk)za3 zw`rF@^%ldL^NO>U+U2Ytc;UD{p;jO;8k=7x4L}IdJ4c9#3vRs6wZHjaf11f=&^4&5 zH}UkTq(=Yj3#+%8{?-Vrkx*p6W0HAdH8<<+OR@|wsUbjc0JKLw_cY z%EjX8L~-I>yWq368q|d#;X2^M zs~-SRTIt{{SqBkGc8O9a4pRZv)5*?0cK7xLbckz(`|Q!WcfAyBD-XCT5?=2^AWA1x zf>fg#C8j}@<~$NqoM#DO)RFg8&#=7MQ8YR z{;~Z&B2=e=U&liMp@?~*Ph}8eG9ZlBqzhR zNDewR^Y5dRRPR(5`!=hKGsm*H0f5WIK!+DZ-F|RBRC*y{z$Ka*$JQdwQ3`m^lEN{~ z17~;x$z=+1Oka2o?$I@ebn$09()yzj{fl*jR(r#b^CKC#hd_OOX>I89H)%5Zy|4xV{U6Qk4QRlSqjP`vYo*(a2R*ROdnjJhqPT^|N=uMova+ z9&4`p55Kry018B_Ol!#~sUuS1hpaH4uZ?dR8~B*-r(WGU*VmBjh-fgVM)4SJ9&q$# ziogHu_q(sn~^JO8)lfg}2YkEa2b$LGk8Pg#siktH?UAGG&h|X48r+_ zfx%$TUB>$FeE3=F3EPSXgN9-%xBu>6zTFR~pb-ofR8#rE$Vf)gC@|0jMs}sNW7~hv z%_gYV1)-d8gJ~?akO(ph z1^!Mn{+$2Ldx&@tq)=f(Q==G3F(A&$nG|cUcf;4OXMg|Ox4(P7f9N(NyZ}p$wDRxQ zI^SIjz|_@6?N=01dy}Wv5Sj>apkG<}8~rr;GtkA6yNH=gS7(Tu8}9-6?ag?CJc>*9w{@ z95yas`EVR)5J`{EW+-Ov_MczP{_yOmDmH`BJB|JCQNnt659(axd#;k*4KAUIH!q*KQTfR=iUQdx!z z+=y4lbv(3z>u4monb@h0_|fAVV+V+t=-a*7L6xHRg!`dNGmVcf&Rb2NA3zL{NZ<8zug!em6lGOW z1s+Ec-#iO%52`2yXrASl4{trVr3ItL;2;8*T846Kn-5fCJ`MUmX1iVXqh(=6Vo$@E zdUOd;)CjXk$kf~)pT7Omi=)5)?UQ{@DmP}|JiD>Z&6O6r^`cO|fv>o&5#d%w~iB3`M z+UURi_S*wUpi5?q_g%}seAkows*+}P}_hmpi>~?{w-{d zor(pcxyiHFjD)HeQFg7rkZvL|ADY*IA#$|?fO$RPPDy~)oCF{ak(gC@vokdr8>xt2 zJh(kk6m_d+tw4;7F}8{VuKU3x_W>m0mj_%O3#bvX5}66Udu2~w?ZB-=)ywS5N1LBN z7(2oNYAVsUF1|t&T7At0jyGr6@y?C@-*YqW8~4y8GRbCGodq!y&@saK@#~%Gnp zo3Ez@#~YSJwAw5+0kZ9(YHXL-!2OQjFN1d8=KI?90Cdw)QnREs#Qlu@-$Tjy5|Lv& z)|Cf^3}_ok*Cm%39jMR@{<{!vUXDW9qmemT%#-UL=)b*%+Cg&> zW}cGoz1v|7(0WbusXpB}=_?D(`+~Iru=I?pvr(!*=OQdcp*qje}w{bn5zG` z=Li4#%`9LN0wCTjIf*F@q#2B2f*kJROmP3)@cp8xL9|+_*#Ih`rjAgP!n>*p<53~3 zoZ<6(^2Pm4wId2ptbO-l`^A<`ONhEy(IJVQSt4q(v3yvy1z-Q|9SsXiGC&U~=?G_d zcz4r@K_$rO*{hv{8Dg_-q)ANL@^yPf0s7Prc(H~{o`6xIN<#m;2RN8UxWYRfIX=9D z0?z-e@dO9SuOKLGfAv;I-?!{J+q6*O=ZWQsyk0&?QpolQ276LGK z4J56;IKkAD_p#^1h3>(v{Gl|#l0X3G{bUyOtM6YQ=-Qv2ZI^DNG|B&R4t?5We~0Ef z>IM56K5f%v2cD3*HEFBwopfF1v-_<@z})iOqPpeTbPRI91AMCIBzbAGJoS3Em zpe2A0@p%_YbDqL?nWw)|IsVQpep?-?1$VxV8Jb?Qxi)~FJ{9ITqfH>%#Q=jo;C$qx zle_JA4%7o%2vTW9v5$@a@=sq?ZW3eyaU@$6Q_0^s(DGkD3_$Zy>UR(D;SQ;2ueEt2~y(vtS0E__!VXnX2Zyj14*K~VNqrRDU?Gv{c z3I~n&{DCVZI+a-&XHoVKQ3g=am{fMcx67@2Rsq1LeZ;kPJM-@_nyQ8n)VoLo03Kg` z^TOarST%cm@774*2pB|iCh#f%_yHYNsGM`46F9AHt7wQJT4lO7!|(s{?udnnE5s&J z{vZG0{<=r3>Mn631aOH1L`tr6E!LJ7-XF)Os{H_oo`#0IklS;7H*ni{U`8{j`YHq< zfq45&h#YO5*Ukah&At)Z1>&oaq_wn%Axd3*bF&2P{) zh2NS7qX**#1Pm4J3I@%YUv_Y32HDvQq^z8^R&dPgkG&2ui`)-!%0k=Y4`*O}GDJLy zg0(Eh8wR;qH6T&*8)MnlAD|tUU59Q~DFTq%QJB>$>X4=_WNB79z+8KPOZ~h}m8>4a zsvsB*G!aJ5;B_jKZ{E!Q@wcx_y=hb@Fjx(9K~kb6qmKsr%*6oAj)jZExyu3<+6<7k zXUo$ynofwo8#NkKMToKB|M8z5dOI9DR8fv9|A%k3_bLPhRiXs|3KdZ^I)@PBDg?Ox z=%2&!)a*`F!Wl-u=MU}{LUrEYo;-V9j8O(qP=yFURg=wL9ZPiGHNdI~_|jDb8jzvt z%*=T|tAcn0VEX{2i7N^V)ufQm?yorlkzSK<``~G=mWCh1F`i7S5G|4s76Czo(K#KB zsrc@BxwTtT3erYW{_OFcF;Rd@YkWlOStO)3V&4rwecx)*GA3^FEq( zHL(O1+M*#N1m+#3b1Z)@U>psx^#abxJf<8NmR+hf@I#)La?PJ33oQ%-<{$SwC#N?6 z0zm!0Lb9RNQ~)|s*+SM?gYwa5uTguxzjZf@Wcw$8S^2__) zrfZ{#VYD-~ufCs^iW$Tg6Gk#n3GbzfbcMH7w(puB%)0VA2VX$E_awcb5InwDs8tGs zXc_VBHFbmtsB=jPv=L%!y9t>06s!V(PyL9OJ_8}dC{a)WFWw%ORMNcKgWH>%Blx7n zknw(4I|@tIA+%Z|u5*qc7>web0}W!Lh_E0sBffoJK6|yV#U{x@!sqwbfAr9e1x2#? zsx$maMaUGX<*sKn{~^$M|26Nm`W%z$t05AhP>V)&0SYKcfmIfs?Hs(G$v1DNTZf1S zB@1;@w;|R{9?AN8TPs#bQr#6W6F$$g*M0O~UxD2R7N8H*I-<68(v5Xb#$0nS2k2+s zTL34i&abA;rI@-WwP+t-QNd!(pT0(|&N&D7%2U0eC8!%q8cC}z2B-&QZ*Vr0Hq`c3 ziVmMhW`zOdhQ5GF;YK8LVrvQAhN(dd|6@e;y3M6 zUO5@BngU`XCWvAbgG5b2{}f5G{-A>uz>gpJ&u^`H1^_{e=iB?=y_vC)VCr>TsIxMt zz-T67D|4{xzf5$jj=X3a%}8@fG29s8?&id?0^&6C`&V005$d|LJF%pL*UTyE2IJ3%2_4&PZR8T;~l1Na_4$PdzR_Om)=LdioOx3BtDO6#w zC~8jjX87*;Hg#-9iRJo;zxeU`SdwCF!mlEr3I$Ol0tVC$z>Q|UoZgA&EE%{alX1qe zdE%c~0tL*>j4%qRMiK9KXVurQclKrd&(C+vZxT)b?;NcqQuiik+s~R|nl`U5y_faX z69QmbYx40Sn{~24_0uf|c|y_vU-{Q%@~Rx)9DD^SlO+ zc=ee-hb%>e?yrc_I#I;o=BLK~sgalN+qy2p>wm4-X1zUT;4_|e0gg+_rz==M>$ zdk82(govs*nl0QQxM~9a^iQ`_d1}B%n}el5926#avmK8rnmFfdy}->0);xraX6zM; zIw`^x`u`#12b@z9p^72^V~j@U4kLd3r?)eXW@WWLc5ANsPrtak<{;5>K{~0EbB2@{ z7s+)$CHVpKeeHOcyx>$z&*^pj2F&2@Yec{-QmCLKiW!QRd*ya4zIk)FUlo;&oFA)b zh*1)oE(85b{FQn-{gO31=DO^)=sX7sKRtV$06ugbptXAwNQ~y3RuQv+S8un?jUq%C zzI=So8^#JSdhaN(p31ABTW(gOK-YbZNS@G&VdcDPdxyPxzza)YnJhz%3;5p) z;66`@jE5lQ!<=V(8)pR2AC1m*A)og&k=5y5FsJo&+)x?*`oMX5f$ryAR582=dx7gB z;#u#4+Bskd02m7OW)$`2ipsD5!|$KIEfHb?Q$i`AL_=kWl+=8Go|We`Mk4Ry8*tht zqu#rI&;_d27m~-yMdp6cE_`{Xr`05yVbYPD|)~Qg@BQ!0_Rrw|7%|W zs0FDTDv%HYL8OT~5wU2A*8Aw*4aU--0sht7?J_`JlA42x4s5@OYry}%MghR0)m~eP z$F1#nFrC2_gpRyEx{pF&RRkzbV~g8RM|x5_KO`xW)hxQs3q*`DIewd&ii?Is&xx0!6bAJd$*y;#DwXVPIA z2-;wgG1JgdcnW3&`5RT|o+?1blu^fBf+7 zSTzJ^Zu9A@o!7gdL$Hd70>a>M9fVv~$MH$COqj1`c@R?bzf@xgj?jp^H?cM;C}QHK zRe1A`P(;g9Z_-2m*W%Et{&X9du4(a<#KlONOQ&T76|c7sOh-m2;=LOaA2ISssgbg( z68{^$?9eLfe`OK<;s)HsE=B;ncLK&3BNc_)KEjh%yGKE^7>%54j`;a~zviH3Bd3G;zv-{k#+srO2==VxWlQHF@*>}d(uelYqStpQNxAnR;Kr)&+rxT9}@bk|{6A6XF zh)RmzfAe}T!2HNWRaIy)FfSu~2;=tE@#$*-Sg;a}iXw)Xgd)|!3Dz7Q+*%hJRpG}k zw|1*oI|L=pSSIqJOx)Btv+Y#?@X;TyL<%FsnkGP{31YAi1yQj#!}G19%8Ei{Y_q@q za${_W5maYTr(TR|Y_%H!n84cYV6`M%DfHh2gbOGIP5W+NGBB0`6LC`b-GFc3mamVZ z6=N$8HeC51e|GoI1PDQ4G*gkp?3a4mNDG5NG-dCU(3<+MmYYj2+CERT^=)6%=#CG6 zQA9GwYg=~ZJoK5rc#rWfh_pyE(7;HGpccNWqPTI1(O1vj9?JT+Zw_}V32tPBlazH! zb#-=XKbb3c{ZMF4uC$S5?CrdbW+)TImyKqBR_E_2{kI~a8J247*qTO6Hs~+`r59P^+DgQOlgbw<9H{O^#x zHb#>@8|hZ?3eAvCiuE;FUC_|#+M$^IF=|WT1s`)DBucdyOGg%>UNu4wIC{s)|Mfq< zIU29cqEjhYiKB<9MKi1Cavfo)K!t+#n}$JiFxcleEOHFU-4zzOMW3#z;AGYoTWU{F z%CY^jZV_PP*Py9S!n{DEttCYORl%u>`aqT>6h*+7_tw;=s&W`)Yd^d@09;!4qoCFKP=gSn zpgY!SdldkDqyTR&-AaJoJ0sxn^kpfdb*NXyTkE3{P#`w6|61p%ITJ$4R)ZD#zwSp- z6d^>Y3xe-n*{hu+E!NE9#K$im+_*7zTb&?uuH=s7n*C<^BNZl>RYq&f3-u65#2Rsu#=oqc01wRGMbd*B@gKyC9XJ53N?T z_#$Va66L)aAG#=^nGNtV$AFH0#&#Iya{jeagbK1{AvdsNJAm8le(rpiRmLROzgk$! z%4Z4%K+?cbfiv}$uKoJkw=WM6WMmYhI2~D}%ylFTp#1U6!a~iTxsCU`6&Ap~4gBQctpb%V{LEypl&7z)0?I&juFf=I1@o_W3{daa z^*T=q;Y5>YH35T(V5GJ=!tKp57z3q(f4659L4m5&QXlO=sRz!L?-9M~0YJS1Yx7B3 z9zT(6QSf?en-BwD?JAE(i`!5uidEb;|+oWnDa0Er)IElhqI6S_0TjR`$80F3O z?ld46M4e@t-d)A%>ibAsg9?CxqBO0GthG9eQH*%Ijafh>9c<+6;k{u}e`V`)-6nRY zCfO4GrN>FgP6ENCB&NVO&$o^Oj2H>mJ%93OW4(YFv@VN_sPf~EmW5_LXM^>p6Z%-% zF-%x6r$q?1cQ|{ob+}vkCvWyytf!t|X_z(wE?ig}z4Ka;ziR_n2*QA-8K6s@&H-^q z&tEBrP?*S9F749H_9@X`sv7$LEoHi}m}(jiz~BW!_E> z>~w)NvjSM~CYvNhTT*K;-fwwNQa@&54Q+{p+W7WA{o(r;J2B{l>Z(|&szqC<_KW47 zU-P}f^WPbK|2;Di7aL2MQPp+pQNX6hPadyrju5M(2$&oH+h4Y#1HG0piNGx;N%nV; z)p4zkoL-y$8)FpW!EIUdD4ZIxcUbKnrjF9CX|N_0!C0e%t9@Mk3IG)lg(+hy1e(AS z@zUYRi@hiX07ZO!?}lGZCPRM`X-7qa@CBT;eI>zugR&;NAb20%hpV>F1q-90?S`d2UZ_M=C!o;b^_DG$^{ ze-fR`gAQ75kAvg29BXDAmTRH3Pjz6|TJ!$fuy1J0blSKv&-ERX*uG{N@yiU>KZKtE zaDM-uUe7L(RkXU2RPPhjJ;7NNkx7X!RveNAqdmKi~6 zvP9B0Zd9E6d&K+>asg7ctK$*}003av@VI|tT^RwX;Ge%eq9Qg{-Ass+QD~G}`fn8g zT!I~hEu^biKmnKrZ12wuUP-m`i^ppWt$52BT9H=A6$Ae4qsm30LEG=e0&n;5?aS>- zM$sq?kM3;z=%F}+CkrRE0GLz62#8+D(sS;_*fQDv(`@JSiM>Al9lngL#d#P_wD4;; z_htRb)|7s|ijCzjln{ZbSff`ybT7)&s5Rj>^W{Y=%fnpEhu{JzpKCbw*+f`atCu;Y z_Mzi!XP$)S?VkWrKQgHOA%Oe$p6zE~YSi5-nGl%tdmb>z&<~hqncjcjIgYv9C+3Jl zxh~LLk|1{faMVlfV7V%fmP#d@}M|DE4(B!2JR*b%95qQRsl8)*&?@Do{lH zho9b`2)$|$E#2t%U+>Oh@)hoEo*F{qF+0oZxLygvEC3L|8SZT0_QqHl37tlL_PUB~ zkl5%^$#n?_uY3id;be3ch>RK&+mH)gazok{n_)kh=7S0l8?|C z_mkCey&?e%QE4N=z0HY7j7A+zp1$5HlLBaK{&Rj7;VJ;QV4#<%0*HjDH=|QcO3QC| zaTvs?PEasBx&udmaoMi0ngG`b{Vzz?#2D16nL%72Oi%%PGyM7K>lxKK^$3seZalh; zWcy`CQ3ny$ivP_Ta1nt17({Xg*Pc@p?gweV?!O62WG-1{Svu!PCgy;drIch0m8jpR z{>}gT%hbFUqZmpr$u!7N%jgQUktx?qc{Aflw`>Z`k#IEQQUjfHaFvmOb#&lzy9_&Gq)L} zFk!Tqs@x4DXxI#}u(fxga8SPBwC{i6%g!e^^!^b-{ak7{5=0uA6x$6}xrop1;L)x1 zkys4D-1zHfZ*~q51*V`%q>xnC85$ysy;jF{U0B+&ttu9S7d*P-HVS~zpi^^i_E1KM zI+_892B?cMUW4WT>US|GF&A;cprXl{H3Bc*9#y8!xiC9=boXWfI9>Jd{9pqDjz%Lh zQ|Ch@oCKgGzWVm9jMgJX5jG0`^s~uCA<(2~B7rneFiWpOu&rDl5$YgFFiF5V2n1?u|*I7GtCvz1%uSDyk@ z7jD6XS_ldbOT2owZ=z1AR(^JW!`B~mHK~6PN9O5RLxB(~5its!1|SGtY{fS_hasX+ zEjazj<6C#uASE=3e6;qn5G1C1(wDmE0N}&zlndK}=k4xm3t$m5Q&j*}RRK^{(PA21 zRjmL0@1DMzYEi6>1OiKb2rA;l1V(XGF9LxjkkN?wG+K(yRMnn>XRgrS<^F5`)E52A zVkQ2(2^fpyLDBXHxAts``Nwx6xO`9K`kq|*A98c>c|RtXJ=S^h&-`vuSBGj!Tg%aJ zf1T)HdM@2BKr(Oc>Bvj=FFHHnZn$P&w;@EXG}>8GCQ;GGuGlG@kPbD0ouI+MNb%cY z?Z5u|$pMOKbcAcNo0_x^%`C=v`n70bZvL41!27Iq@3|NXp{$LFEy*u6hA^{G7GtNx ztqFed*}aifF;ph{>fQdcH^CfAgLqWIoO4YDpeqWkQingBlmiJ5Jifazk|+!m_jdbW zTA_?!-F@RMHUIQI=~e;2CqR0} zY_5ep0LOQONY~m9&1zZM@RR1?5jGaUT`e>cIpP~p*=WR^H8uC=D`xj$yFlYGeHXhwt zFC>yIq2ImO+C2gtf`L#`XJ)-3(h4~IU=9OCU;%e;V#C8Dl9)xjdPh1$w86Lvz!+Cf zz?UM?OH!L9r!>6Y-WNXtP2%+Ny&EpA0!9&Ch4MelxZW2Kj}Kn;D^_36%g1LyNxnoeRg(S`KU{~+(HBJ*f$ z9^bcokM``yLUTV_e&Y0}kY_kQ!o=W5IC+lqwD&V>De3xmPkKxF<6agM_P!o+ia2ap zX)Gz)7&ve69Y!Est8vO8Qu{Un*{IIr%ydm9YDpkP6cY5L6DQ(GnmWHA5QAfEakH36%TK(k5JJfT=DG9ws}xstfyznmtFObe8npO_2h1r zT>!-HA>Qpz4H7~*DRBR`M=j- z#k;fh+E2O^}xq=rP2bC=QAGFRzqo)CGS7(=m6^wa#5CjRP+wGTUekFo2S zvmTpMbP*hzS6-ThIKzr{MMN|&vD#%ofb?3HA^8B#3SS&3+X5gQ!~q70DNIWBNv86gFwk@~s&w?H=lg$pW^`j! zHM0-`vX;krVSw|Y`3nyTE+UFx9UIovtEMYS9Z6X5ij5JzxPRNj0tLnT%dMT)@1O-D z5J^>s1wdhi9Ikzy5D+o4C?r<+?EZMH21Y`5r`7%p(B5_|>aO~zxbi&!6c|kev?v4w zuiur^Km!DJ_vXgh2r5Y+OlY5JZH)!6BZ#d|gH{9f|t8H`l*-0I5(2 zEHYT2B!zF$CS0tkpoE-jzFfH7{qY;;G5Q`0BZ@pbn7-Na1on=q|Mr`&kNnL@R}^C@ zCUj#n1rvTp3aT_S0?U(^op`^rDfz{O{vIl-r}dzQAngTn)IQJqZ{7tLT|awcS(fh@ zipZzml2-ct@3|5zCwg_8K9{zF^oLe2QU!*#UphCoTP>j6aA5x5#jo$R8Kek9DFxL* zO(i;rz?&#V87=)zU>r}1Srret{y%>6&B0NXQkCtLPaMBvaQ|5`{rM`8AM&Y7levLi&B^t-#>r5e~1v_oNqn_Gv{Vm)d7AGA%JwgZ<`a` z+88U%hyeHObx5O2At386fGhrauR{~C!BmA5gP7pm-Vw!%$jIrP8*7g64m60Yx&VFv z0YFOKlLLbY=Zio@#gmu&hXHgxma~G@FMf2>8P-P#m8pvN-nrI9GoRn*bpCsfL|QVX zIZfv2q@78+n-gIsv|fia0Y+mq#u%f~wBYFGPF(-})4e}@zdeWL#OPFM)-d~P zox`@hw(a7TY>%`4|pFkNFnA9Z2Ku5QskI>8nQ26_D~wLkni&-yP>lwa^G zXLX;w2vl=L&&v=4%*(>^jCU11$e?Tky?eHAJHba3B1&OoV9IbOhmU-zIac^)Zh?|huS@gi zvB2y7dk@kDoAo;VHwG(wk$Rj2wz&o=@mF7NPMk4TZZz3BtiFGJM4zZf{JyQdKGb<(qdAFhCrPR1w&fmx{XbO~4^eM`K?GQZ*`GZ)5MU zR97I<(H`CLV+BHV8qFxGt08{9(SNk)y($Q^dhJ)CNLfW4;q4Sp-W?uFL6wQje)0I` z?J)`>1~?~18fjK{wX(tBnhF5&0lR>g=Uf-=nyKx@mo6_c!_@R0OrkF$iNV z8xm4$bQvm9=e-Y+K__pk@%DJ*|NTFnPTftD0_s#%5WGfOr8RwDEO~F&n$f*<izxaT9#pZ@#- z!~pC!ANRiBy-%~n4F>bogKYQ>226ha2JW}hFwx|oy;xKLib9i-27qMI(ZtVEPpG!( zg@WM3lp@r$JUKB3V>E?&sDnB`3X~vz>ev6D|M>fZ&D)2e5NfazY9uWHQG^ZaEiMdVh;wMGyWBZE^)qz68KxaL45Vnwoey^TsyDNIyI zz4{5|D<1$jr&U#|iUAd{wKt{u5TXMg-Mv)^#7tmjp}zsFj_Y}-Y6vmL=$v{7i)KcM z`ib8!@%z7Q&FCrKVz{&6zr61~p=|X%xul{{LnVH|g@^OmwfuX>m*!8Y!Pl0y>$GOw zL@xlwkrOE)AO6(@OXP+QkI%+TLPAbQe61`m0JG~P0kE6=@;~(We!m>)yvPfPSc|#%1x{v1^gM&kAdm@9P+)0pc3dz_j?C{1H~iwOB47ij?sYgBLuwbIZ}3`e5>IZ)%EJ1$4S|D;1zm z`n*&;BNNNNG`!v2H&F;Z!sB}*uc?XO83b}kl2WVV!=+1;3XQ@Eg=R^%S4kWOyxz5g zS)hnoED*nZba!ohnR5}x?2dBEaANR<5QU+L;!=kLJ?LRhsIjV?cjiX#rt!PC2X9OL z{gdZYb=Gv&W>aTqx!PFy_S8Jlr#KG*88eTtIhUncP$f$-&R?Ogv^Yfh$Fy}yU)6gV z_x%UYp}#Ef{rKB^)(3HV`-O%79cXmU56EFN388gca8I!+?`ctytRY?eWJX=iv2 zN_+enV?B372tTdX|L%YM@m+;dJ)$3B5>JBFaZsa z3jXUC?{;kRWP7$xA6x-d=_LR;;5z3j=^3#B11fXIfo2{)WSP_+qgpeOpMg~>P7?KB z2*|qc;8ez29|*ag8?asj)P8|+l=PD5=cgns)Q6o5Tsg1#gRJdDI@b%xa0CK96M&|b zr8Bpd%qg3h1I9oRsOxxXV}`5`fvvnxzCaK@VB^&;{^^g;4=@2nUVI1@1QF2?E%|5m z?u?w$IpoA2Eo=_vW$MFIz!CRv;oi1{i-5$J8(}k-h;7^YB1SU?s5p;OIH7&(QqcGmPwKkH*C6Toc z;wpT<{t>(i&7x7X=6zBS72my@y*so3=Tz66{p_>x!~xMR=M+A1zdVQUCP|@)LD}LO zM|xW7dSj&R&FuTF=}uVt-FI6vw?3n@uKvv){ObHoF{lZ&e^7f`>4|aFwgPu+ZkHAv z%?`xZ9$6ZMqd?xfym|{?fV?xMw1Unh4}8j)TAR_rH1m zb|$6iY&P|NTm{Q)&H)gqCkTu0&uKz}bGZC|@?b!~iNcQXvoF>Qsl3x*Qpx1c-_K@A zT0}GnNQ-FJ3$!|}>5&TKCZZY%Cg3e(%Q3 z2_(Xcd~##Bh3x+ej2sr01&lP%2&;2-AORgcd$U)%8&BTM4s9*!1mbgL&nD&B&t)!7 zTKANHn%-X-IR0vf?+2;VF4@+%6sWJPnKHUA1ZT`ZbH6=!AOI)))54s|wQThjLy5 zsQ>m_843=pT-ocLQCaLvreeut||7M#mOF5XsU8B=I!-9Qi(L1@}^H>VH) zR5#k*E5Cnzc*Kn-uMeYcRHZ0pMU3Iv?l$&yR{FVa!0}C+kOV z%L_KV}l27`gu4ea{gPIrinA`n{V?53F3TL`otgf}!KwrDjRl!cCk1?ZCkFkq}J0Cg4aqO$duKH{ZQ@d{M<$!FuS21TT}3dNH*dwUh4 z2%)vBKuRF4j_aMZfGAwD)gw({4!F62&9P$)CT?cBwF^2Ju7j`a)tAL22n50F?LGLB zhrlc zy}alu13ev2=_{iT+Icb8F)2 zHz$P{8O6Wc+N*%;p$U8C1Aq`sJq|0p-94&|DsWbP{$N84u2~y3t(79g$_L<@PvB@I z;T2}6h!XhA^Q}_GMmScV-QD=&o}Z{OmSzUUhYR8BE#uS~&4qjIDL3Hx^nWe;Q%@6}*uhf@2ai{cOKi{627Ndz(!Hc$O$hwPHwFcrq-pkvi>ibIk z8M2v^NvV-a!cHmG*3133zojbkS^q&oH_3ae>Kq=$vJA8=z=EhXkA#q(^7-*Z^V6Sw zO8O7?ypWrzie(|mvIbyT9u3Zy25HyQHRn5y0{6GBR)ze)ZMu=Lds*x+aD2!%iW~7)QMoWJ; znIX>ma}BzU7ut&FPQweoK7NVo`FDI+E|3`Ey|-#s0QWZW`JHuEM-Z*t~i>xw;*Z62{YqX`qr3q%ZcWYh3R6tSxZhv+ZQgnUghl5`62PVGI((rZ{GZW{$ zGTxZ@jS(`B2BPLUNVA@=j%yqOI8|?{1n%(UW!Ntf#g7VgHv93zwJ~7j%&9u(qJ1Pv z*oRmtmeKu>e?0*+E1WU}6{7_ciGKX;>;0*_@!i|Qy$bLn1D$iQ*dPz)8N$}eS27jO zjMCF>;Qc&3bG~vWh~5w+$W}^JGR{LLyWZ3LpA&(>BAFKq$^z2)7}N{CN)vl@U6sRA zmM5Ffc3#uofD4oNIm-#2?N`wCuP->;VUT|ZSSTaJj29%irf2{CbYrslktEfBZF2wG zF?_I~LneRQ1LNVY0Mbm8T(hWwt0P~KX0TX{cWm=-{^e;LtyfS{Da&b$QR?tPL8S>! zA`_l+wOOG2dno~*IE~TP#v@d-3Gl^(jm?Rwn7HvlB~MBCv|;P%GYEy4m^`FLOZ*((r7 zMHwPIc8>7$_0BAM5wCIj<3~4dP2d?-okgg_=~Y4Avkvh7iHSkK(V0O1;9Fw!qGIM% zj6^Ycdl;YXh1XMk^7i1+9Gx>p)fO%{xy&B^?lBzZbM09pW2blCd4Y9(0zI$a{DL`9 zln%-dAw?2L}y&kn{L|Um`nZd z4~72fuHR%3zNm{}&L4oee5d4ft^RbV6>=q06qO;>ZBVJuu74(*3w_5u2UUs!COY*S zzy9{^vmHBPA%#%NB#l8+&}LL>z)4x5Dn&Bba?Xe@UWz)SK7u%e)8EE zl{rwwMMIs<`CtR$9NhioxwjgQ976}1SNmD;bwj?e5CpJj6n7Ne*DtpBxb~M<`@5CU zk6E+(sZKLUG!QLGk|RCFg7lDF##)x1i)sscvc|{W^;@m<`L2isS^q^hQ|7{tUi302 zx0JV0ez*!in@?Ju7n0GJb5tZwY8B`aexw(gW`xfr0Ij$%Isn6nH6 zB-g^~H`r)%*IF}yo&z_!k7IDbPxd(a$KQT8)%BSH4p4*`NfGfDdrY1Id+?0w)fs|^ zPYfXlQB-B{PQ@xEKD+NWM&dv~_ov~TXGbMK?~SmPjnFkuAm&O>A{_&e2zY#Nt&pf< zRNX$9mJvp*Dgd9j0$>hXdnh9nDzUn?Hr^P6mSn_h^lu^*C~{uV>bSOt0XmkgeZ1P< zgDaev#_3NU-x&+M5`Yov3o|=~ir{Ek^^WAEz zbl+_qM7IX z&%(3>14toPT|C!3h6kW14NqPk%uESUt2RgY?5?@ zpMU2#7SO^5yZr0a#b-uQB_Muu6!3iOu++_OU+?c#LMhDPMZJiMm>K(uncCy?bQVPo z_dpcA)O&|TGMCeV@(KEo=ooQ#nd3a5i8}gV2!nhrj?Edr4};|#$n=w(AGES@j=#I? z{HWXgNg-S_c9?tD&HWZT)37CSqB3XZH5hwYk8iG%+jIL8@}>U=OTQ1U@vBc&B~>=UCivP7OwU6l9z z_zk$1jiY}RU4cJl7|=zevY`Jnj|#N!D%cFv#i3>&rq9(JWd6CJi`Ft{fJHZ(n#}@3 z6bAv6>cp!X$I<4m|NQ*>m!)x?>Z@2%q9K@->Im?Z6@Y=@&%y=g^sT_>ur|M-_1Xjs zAyS0uLX1u@R{Zp{J7Z;42Gh~IgYwNT2w03*9oIa8Xn-Z~n9{~AX_FCmZ+RysLPGYB z%A?sT0JzxOFE9an?S@IaQ`47}BwU>6JVL?Newa~33l$kVtdB8Lh@p-GgcNHoB&+oQ z6`PI%6E>Fh+MLT1x`F`Ai0@zTPNSN^fj39;ePadLm>ay3YoI4`5YC;WtXwXC43j8-Fsm;fp3kVFw_Yy+soJ);i&N(Mwg)i=5!^0~fGBtevX1657J9evFeg~4yK)vp+>;kSb zI*c3A#qUa?_9E;flC$u08!1vlyD7* zua`GcgcOTt0KJMSp1$7ZXrl~J;KALEiNcO-%>x8QqL5+&Q?`rw>bOGjI88085q-l= z(5li4gisMnEo-q7m6^k{U3+^}!LPwEhW*E%-*pv=W;2c!y%So%g{nF)D{as7VvkkU ztL3-brKgeJ*7S9~?~*Xq1uh9Dk%$0cfI&Yn$Z3@;vdCS!{6DzM{=p`%D zx|z6-oEm4bR_|PEBaeo-!eN58180kLlio8!znYAfI7_fp({pgnXV#B@`mKI{(_Gu2 za2*(R4V8rkeY*L;ZuO?>H<|E7s-LwWzO&!X^hp~L+r|L6`|QmNnhRzzun8l~Db%VF zDn}EyK6SVL%O9VAdx-s+j*GSG@Th>8DYOU-R7;iss;ZDgeosVNww}hKgsWY0iPkH3 z-V*=-Y0bIVG~k%*$zZ{}Xn`P$HuD8w2121`P+}yI8UEdm?u;dXWd&>XV9wwSX)nBN2vjfUaxS3uf-odTvN&m>QZ!5}?9W0O;Z(ig?yZReUJ)zH zQiAnUS&i>2oS*C2Y?5G66f~+d2oq3sfvA9QpTD7ws!)x*+`qL^0BgP-=xrdF%0VA| zI-UYM_VV4wvk?|$zGaYzV}^pQPjX7Y!Yqnv6%2mO{KlWZe_hJh;A>40)XP`{cRH~` zwD3I>@kGW+$QjIeqEtGbG(?6Kjea;WRP5-t4SdSX?gtJGR)NID=H{0j zS&#V1&cw1{^2li>XKv%rI$+P4^$vzyEB=FgNH=wWf$~)*hFfogKxVH|2NhaZ$-0Jt zJnG11SvFr%R?-AfQldm$rK32x`*;8Povg1_^v-#Uu_#7WjI8lGNz$yzI3#q=uEZy8 zhGMCU@LY0_i*D-Dbjim}Jm#N(3XBvtCb+#Z@e|I!1~TI2?R!B?;wOg5Ke6Dxw(NDDNflaj|fGmbx46#ZSLyfex;~&m9vEYDWGaF z5@Kemi4W$Wc=4*5m86+iC^UTe*<>#HbdPl~~IE8I4TI2s-g0L=%&u@WlUCg7U3L0 zS)f=z`IVl&=a91BXF|8iCw;-6dY$Td4Cf*(11NSHsC`kO{6ll@KUNg_Y2f=u?;_x$ z0QywVYaZV(i~&-G3QG)qb&h+69LJ|iHvE3=`-0_vUAyQz6AW#y)+hoAMd=j|N-8Ky zC?txI9RJ~~7vH=NM{XR&k%-aiXoU_GM$n{@&`$Cw-6}*H7^PV#PNN69DCL0<+TeSd z{Y9uk#||FUEN}tF9zXx`wvUx3LGB&Qp1%P+Dic6d)nEp*#;HLFCA15UR{8&{2>+WH zym8vAIb8}PRb*pQtd9#P2C%H+{(dkjJ0Hx%M`$Z!8DosNgahJo1ptEVmeqxPW>$zw zLPbazL5H{72cjc|s#P~P$Atp4^t9N{aL5qMtd6S^01!e|YMc8{DqSY1%&3lph?k>ykbWO;uK&|a%o?xMe?|u0sBLyL z+wyz90n+)TVxd4vzY~BN%c4%H)+#7m#yq}6fcQfL=w;ybJ@NE19Q>)9fO+0u;qmu* z*&V1+Lc{4tW`La;Qw+M;`@^z7=Cv=}*<$+6Mj(HD7(C5fHK?0$+6dsPh)X30O$jxH zs3-vha}_54^js@_p(uxJnkQiRpzeA|1qI<8W} zQ6NIejOAB zYSD`|TeseuHI+-yL_g7}>b(|ag;$68x9{IZ9b40ynD&2#D3L@>8a{Ckd}JMmHS%fH zcxr}2MuTo?3@Lg*j{f^P=!;x_Yo-=@qU^1$uR^t@BrL_73K^VrFF{gy%g-+3^FhvY zYU6*>tp76He-^-fw(~5v^vpYI^N8CX6-r;uUuxQKlSJ=-Qf>UU(y7fjtPS>B$ACrM zW?irFAjBP31BPm$xe`|%3Ag{wc?;CDPoWN~P=ip#YHFWAl6Ozt>uD(NHW)QKCL?o#!Z#Cw)bXn+2Rsm>wr`hx#X1qfY(R!|eCfGT|;S8V?>h}AVUr-?|65RYlZ_pf&%y{KoLJ-oNMIfg`xy`#m9 z82?`R!*fRn{Y`P8b91t&|FSJMZ8$_y=PHATBUOMowI4JZDY;)*W9-FF6CFeE z*m>ltCked|Mf%UeDL)6a{W$3Vbc68YC0alJEjqp;(d$uJ9xMqLgi_tuOQCNz8hf2) zgEp1EdX@IobqD4cT|r-#nS>cm`*z z?Z!xE%|>a^G${ZFK={AyZl0ZR|BtU{WfHrT_Q17qmejZbA-otZxsRq zqq^sB_x4Lr5hA0Rb1EXy2Aj)?M%An1k|GXCY8OJFb$v66iF0OfkdffV7#m}!f@nA@ zv3FGGsheb2X7ye37Qo99?_P-t0EFnesgstm)VWekGVdZLc=7hgP^fqZ+_^DvOs`^{ z+o>nD2v_R=S33sC^24phB>==&>*AOo0I#-f=O}0~R-sz?^Dl3BLSm$uQ{P@j`Ym7Y zztx;C{eS#|Fhu#wtiC{snM9L7i9{4oL5c7bZ>pwZEv-(BFe1<$+2re&`@j0?dz;*( z8#`Bs_HIUl&PAm!os#A0GhuQJl>XDZ%Y1*EXUM!C0F7blyvwgh3zB4M{hAxE<1a z+HPiTrcv7sob!t`Q@d(A0WwDp^gDB)b=z@+=7kBLm>_Bqi#vaMw)gv|JBJuY!X>mr z)}lR#t?Njp`+3|-b^4KZK3}j8kaEmKdukHD3dK1eV@y&)0JU3dJPr;sIVskzNeNsmMQ^M9oD3%{!?0vK= z@UmHnExKScFm%p>T28oBI}WwislwbIcre-%v~NOb_6&yWJJvP^u!{k51+A=-);Vx@ zMY(>9bJ7XzAyE^hIH$$rutcRd{`>Eq9$<`OEz+7u*vM#>0szZme_6)efB&67zvf4a z3fKX6Dv=n-LQTpEDonm$_it~Gy;fmn>R-IwsR#1?N3a^1nYF*p(_H=)vEwB z`aku4T2E)AF_}+A6u`Zk6R}EFO^Y|%`vEYKXcW<`n#5dq{t`9-;4-QJwJnQ7AwVVp zbmuezyN5WOMZ$^MNOA9$^J<78agkLWR;2%H0RI8j=(eo@sF*4x%tGOkCN}nGc(>1; zX{bbEoZj5YzzJLErv*tzg2u1V2v4{Q_+6FI#i+y~*0E1qJ^=)vr5vp_#vJty# z4Wv%jW3Y_8w2;?y%JaQA`n2rh;KcLOt~beCI`bUq?whLgUF{Y}dO&Ih=tTeWwv&u% z##A6ky*h2gt8M&{DFXH2e(Qmqh1SBJ19$f_6%jfymvj$A1rV5u#TY~6cx`hQi@&^_ z{qfoK$b1wD79j{RP>hHWGsX}~vuK@`|3Kz{aV~$MX8$6S;30YHH1qUAN(TwDC-%R9 zN;(rU75ZrKg%1{0;1yp!8jU239LgA{5l>!BsR$8ZGCoPcTw@EBo;x8cSm__H*ELyB$ z3}g&OKe=&4{D1%Pce}QZVguqV#_`BEehO_7uJifIc+y$QKg&>dkiF9(=^7UEbY@B< zYV$98eT^LS3=B&IeTLF8`To8o(-qi)=e3VApkqxx_lF?Rf4nw^E26x#z|eQ@X zB5z;mM))AqZ=J%LNDn~nywS>SY38#rD6nLm40*b-4b@Bmho+xbk{p4Fw>KqBZM3weLusDbKCiKk}!M)1d#e;hA9(APHGBGC(;CB~&61 zD1mNj#Xj)2|MI7x8xi9Q4o#6;}&J7&T8b6#Hq+T=3{o(NXN9!n%o)dLf4V#YvvfkXB{olT( zH?!)*^PFiwf6V7GfDC%>wK4z7H@*5InzM$|98o~M6N{Buq&V|yd!hJ;-+p%>zQU*s zGzvtcC5B;M`DqD14R2`?MqkK#JQ2|Mr4de5WVnzBK{9@JM{#Rh&k_X)5o-=#KD?u> zoQi4j{hRHh2zWpwhL8c3rsrw}HLl0%MM;wsSv#T<_ipOg8xc)(@2EN|(M{*PSkM~< zmu^s8wg7;&RC{Bi&=|7`X;6|7hn;=Qf)Ju&Ya^@`VB&a)6F3J^4j^P|#^Oqr_X>vK zs?^&0xzVSr6V={Tz|&XdQIH5XF1%y-(Zd^SiUM!|U?vP~hj~)O*L-XF$Rpx38`d%6 zKXd&6)@}LC_Cq#3h=O3DA}cr?{w%>@79XH4WMDqMYsq4nqSc#fa84D|1^r9r+GvdtJL|P*!O&B z=EI%mKTO0E z{rDB&xLSZCL+x!lswN?gghGrYMTi>{+?aSWm>|G!?*RfcI8_?!Vb$%Dayhflmy80G z%s3kVv{vx3#%`&DiP+wqQ45Hu@Xn1jCv}f78>Ixv+AnwkS{ke4(*@uugUqDfV>PW+ z5G;zKG(3N^Q${CRh{XrDZ{FSjDlkw$gF$JC%@h=YkjmC~_TomxLcEggXL3sPfBGy} z^L?{cyQA)EGtdBwF}T7i?>r_t*2b(-|n0N2a>aW7v5 z0Lilm4Q+AIN`_g9?Y#qtPd=#k?{3!eF0~&L6#`nLqcFejua2uT8Jn)GI`peG??Hh$ zHw$?ArkVv%i)c{VPd^`P0Fr_QU^J5`j+ELHt4ovDjL#1@j_3C_Ipr@dO!hBZttdu` zOduYnh+Xy zAOaZsHKCT_h#CMM&8+k{Uhc(T|Nfi9ql)lmBI2VlMl)lRz+meq0BN0)E+!d&Oda3@ z4hMF9h9*fw%_v5i3RE<`zyV&MhA$r#BkuxHLHDNR&JiLRqGk6QwP9f^3A#G2SP6hK zh(Xa4vZ#MxxO;m|l?Ef+?%q+TpaNK`{dMxPa*6vwE~817G}22wZ@uIVCOE3FKMMv` znp$=12E=NwlR;fl+K6Hmh+oy&$X1F=sBJu+%)iXx*_)lik|Kp#{QTbLW&s9xC+bvH z(mOQXP(@wGJ3gT?}TFAfu;SM{laNKfE|N#cnX8pczo{`9FxGM?^%wow zJjmU?FA7|CkC(+cmu-RUD%AbAXDx-YNl8lM2n_(#bfzuIdYV21j!)xVU+-SBoIoj8 z$8Lp-zB81IT|DC0cz!Jn>xa%2Sq#8>X3fbcHKt#6A8PBKp>-%e=;$4)6pFM=y=LaJ z6_(9P98G-Dex$OjRGq4TQANj-_0oLlHvjh5-+jL?fd#EDU_^t8Px2b+Pg`~ydF*Q1 zcl=$<+c|b&yfCWI()r%ql)g#?vz~0#7!5Qvtb07XwdNQ_lz#m6_uDd-$_8tF;+n3G ztBC)59$w8pl<9r9`=eoV4P!M&GwQ)K<_@JAICxaPs9mF5NKIx>-{Uh)K3U03b$l z&dm&O_N(9u6BMW(-db~n6RJ^36__A`Y``CSH3VHv%PSWER0wbo7Od34IZ?()U}o4l z#7>Fe#tN)S{HxDK6TmxA7-^9r;*_dUT=KY-1|HQI={z-nW!-GY)~Oe$-Opbq{kPRP zk|o<@TZ}i*+FTh4vs9*xWB|(82>ejKdir8d*1y{G&#U$5$01bCdl7*IVBU^N$t>g$=CD6X2e2*-F0VI-+3zUi0xA{>bT~>fxo=Eyw zN>l1>(U~Z^bqmOn*EHtioc9P$YVPyrnL-6-$FkzU;7DDV&Do4t3Y*8DUo*m@hNzK{ z+7FH<2qG0E0uVT%2OObM5rt`iZG(k2SCx6dp}i$05<#OiC)@Yalg>V40G8jq6W>IsE;S_80wO8Zul?5cPSUCo z)M^TD&81*H?*&P2DNG+h#k!`1#z}wj4?X@ayQHrF-^?67Sz$$W#t2K^2R{v@{iI@PJm8*G(^Gn{xq0S zpseoQ+|X>{M!);MpKe(lSMU&stG#Kw_ZAFh&bbJnz|&U;K?+eH%cIBlZj1nrnDp#3 z=it1Pq~~PxVHXe%-9Jvd8L*T1Jk^Y8swC3<5vJZlb!A`_zk67{+L<27+Ba{HW_~lm zv8k}tzz?Ebejj~mLC+1U!5p<9Z*;uw0EOI=MpD z*3@2!T#oq|5Kp{+>Fz`|rAzs*(lRh@(;L2A3u&Bl=fT%>E z4A|X2O!^`YynSoM?799S09q+eNKLR)>>T3FyFH;g+DOA^4@b^j&hdP<4eWSXy+w@y zDlMI(?v+47^%XIr|L*n9k&Rxw-QPQyrkA&Ugbi@%cI?czYnXx4T->aKAdA&G=QT`v zeURuhf10SH>p2+w=~gdAdMt<`GS;3S@%eCMA4-3K5HW9fSfC=m5Dn*v=YDuLUwcr> zC={dMMM89C&=^F?HI3^o7D|Cs)ET5w+9=96=qP9r)sfoTm{P?Y;0YhaMG*=G^v1&I zFp$PSXVkRp>0Bzd)x76)_E2P5JkxIl?s!3xJKv#4;uq!$wiFpOyZ71#1WV1ZF(=8@ zICY@yT+U1kSo;t+F&@AW!a*7T+wZ^Lm66I=f<>!LBB(SqaaOk~oDI956~P~GpgtdW zeJtMqfjAL-@p#R%EFdC&YxiL15T<}8?H>?`?KoM*0M{9u;O=b|3#v-U-r-RhQWBbr z;^50@41Fm96I=FF5^W*KXlB6PA%cmjQ(%2kjQz@L``QQLR8=D*;ngWL0#Weo%Yz^V z35nJHTaz1WY5D!wVfI4YHc#w%pAGN$G?=7}uC!i*5Q0Q7lVbd0`|#y%b;!xr&$i$S zh&H+ZJj>W}S+dT>=D%~uKI;Ys2I`!xn`sAnvYy4xF(4za=e@!U(0{HkB**8)F9v{~ zHC-bo$rSegO72>)_)RZ)SI0OXcLPQMrAkflm#7j&Ow>dpB!V@8ClQJaFg2>B0;**O zPm+GI)<|=`vZ80Ts5=F>pmJeh%-7xpne;@ z^!^0&^6yD&hqDZgM?wzE&w1ucI4l@*YV)?#KWBWX_Qwx(~#axy1NP^Vbm2ox!wT)G4Z&uHU^`SRm9!_ zqJhw^kXSbk$>kKGzkC5e;{w1=!k+?|h$&vZJAf-lDDCde4KJ%1cFiYPTJsGCPze<^ zV86tR?R^##MvlZjySF()(?|E|0~TJ$YmN^Ca`Hc^#-=5}k`gEaaAflJtKB1aJn+7KDcZxN8eBId$Dfm zao-VL#&zjo!Q)#F($~@%oXmsx<2fpexufYxla}W`O%RkpK^9;EIulebl)fsRRVoqA z=!_aDrN~rerc#Oq_(&g2D`F-#l^B#!Q)pQ~)Jjt2&EEOE&WJxVIi|4Y^2{mq*eo6KhNR_Sl1%0Rv)^4(HvlE+;CY z^y{z7@jw3IdF94cgsN(C1STTYAPoy**rLA-vY#@Sar$+V*&2cmNDx~59FsBdj~?CD zSTZu|=*7GJ{TWQ4;h1vK3e_ z-z{zHW=#te>kMHSu~~HUZ33E zR85Vu^0C`Ja`?3{*?$_<>eGB@d6K%31gabCOh6;0n7nv*uv596Fn;pph{Y!1bJb2{ z8U4Z61No7<$FXMr=P&M82D+%A?eT3>`%PTYq&bmGA_5Cjyj`2Yz-Vc%g;Xyh5x5vQ z%2EWm9KLfIWW<8*hz00>STkT}GTM>#m!R#`HziP*iY43@0%H&aXhQ$V+|?ivs833S zMrv$>$;1y~l9iIoA(cy_m6Iy~C**5;X5VM#^q|9XeW zhcUohoG`cuHPiUd&IY>^S>b_g?q74#fA;>g?|jgR-DCqx;6|hUX{n=|J7w`Vzxwl@ zu2oSbCf_fDCbU}W1~76Nz+G-${=T8YJjLka5`hS#V;n0U-@P?$oG*ghzOu~1nr7C)?m=(#N?&$30G<*(FojZKEQ)~yTB zt-aay5w>Ug{nlZLQE3qMGA~;?I+EX;V- z((j>C0nMB`GlRfHE9zHIUI%~kFWsiuplz^RHrRg>sHI*srKF(fLs zs){;Qr`pPZW;UfsXR!N@W*UX_azL3NNw?b)aGH8f-Yr4mJqQAA9OcVX>sfAigT<%5jMz`}d6O02XHR9%{UW;R&C7OrOK zXYS`KnVdTYE9CLZ?EG~;5a26k)50qw3&q&ui-)&8qKHHtefwg&6wnDxoN9=Ku0(*Y zJ3=v2;{L4-k4Q37Uv2GC5v?1vQcJ{M#<6he0)PSE7mf3g3HFXEs3++d?%e_-WR?EE z{s&1|jNa>v*gnER#Yi{t&c)f|dt)V3Uun01R{^TTzHt*g+pE^A+ZNeGsQjD!1uy&xZ z@2%Tnphh4FT}BfNNRmlHfxR}zX?)N)zbFS7sqb6{^i9n2zJ_B)q#}+jrf;!}0Xd`0&B_;PKk@;pFh1+qt9fZsXkz z?5^>!uyR~DC(^imA%YR0str-sc})*4DC@s49+P8Yk~95PIh9;#8rR*(WU8leZi>l# zr$;ssC>`Cuc>(J>Kni!k+EH6D*d;mNa*)O9(5zO_5GrfWvbIM*#nR)VuozUJetck~ zZ{AFQ_hf74H>H?Nr!&Mj_8vftVIfR^pTztzVoH~1nI4ZkX{xTOFjCyRC1W*&O5FIM z}IZpUMv3$c?*3qbgmiN=4zWgG?OvxY?w}jWf!>Mieg^RaapqY zYyrk1C|nb4GB=_|PNMg!WFbpPO3WJ>Vo1ea{+IY|o$y!A`sj~u8a|O-CUf?8wd-)7+}}>FoGFykgld9Z z(_~)@|2MU%M#hJE*KgYi&?o|Nfsj?!T`WD{?#x6l`3GAZB^z8(6zgvf;{W{9%Xd*r z_~e8eDua@W7~|qv-FervtC8^qEk;pI%{DhCcyMDJ?3lLS*S|EyFE|~LR5HbeWV7bUD{=J zT-OL2Fp}zI7I9>Fy>n#Zy>lANFCW}SfRmJjhMB4RAmjNQyVQxoKJ#oJoVr6Uw;49V z`+`aOGnz^9;@#1k1AB8|ulK9K0^*#wVkgm@E_mni3@;y$Kcs>_4?GuW4j3DVb z-ax;bc8>Pbrj=!Jj-*EajWEA4(NCO4@gZ#5;p5`y=Nq%X+AMFyorz6D6<+Pk{`h?N zSKn;?%h%ig`t{B~fA#8Lzux-&)9GJch8J6L|6n$XyLV*kukXiS+^Qars|_o)EG5E= zX!3wylbUHC+}ZE*IdnOf#0G<=iuydh$Kwp|v;D=n>*s%{X^7y7F${Wy{$UKIa~61L zowKEIsPpQ4i~)obdf@gt){_jK^LwQ|-$JaNqUl!2$!njUOcT&> z|JEjB0BGvo?e0SWaczR8mNDci065L8W~*reh!{{t92}J)BF(y6H^zm+tQNjo4a94F zq*Ap3QSkKDw#k?TWBJ*G+XXQ4U^H#=(#G>(k@wj}&f#ct)_rSP>u~M*1ud)K9AYR% z-PZ2m_Mshw(ernQm5iVTp+a#gw3xx}4lT4q{JtZYWT8T*+~4CWWWhsQQs`kd=3+I} zo}noQ>Y|t@@UZjE?F+6Smkj~W)1r|ei@gXk^k0tzBS5iW z1z5zR8#w&&9rvT#vMC2H?Cov8dj8`1H&35EeZBSWu$rPMF`luY+bC_kJCj$t)%S1q zzJK-R#mnbgub<-R%}qV{{02Y2DYr*)WJeNa3L}jILt_Pd%-dh4&~`fh&uKd@KGyPo z`~Yk1f#+Y=3idCI0dn?T=F&yX)fwtBGYCj~!Fes6t;jDOx;@ox4W0uX+Pw)$tB!WazL<{d}R23C?;PVG} z6fs1jUwgT|ABbR3)n>_E9oINR2_r^|JDY_Q0tm$ZvkwN3r)tFZF7~D|iZ_ds!ri-Fz>p|E+60Rbch#LC zmg#3N{0<BR!l zi%5BJZ*=sN+u?q(KaM*`hr8cAfAQVc_N$}mA!yF2idYn@JWOMBq*F>Em6zRUuMWer zcl%FXJm21WK8kN2tsj1VV|J%F9NSc?O4zc1>IQ&T?3{BbUx3!Cc!2)ToxVLj@H_Dl zzb_4J(REH3035~u{RGGS)Zn~vSgv?G_bG;s-OXjuI*6s{Tzj1W(kJq@GfPB7Ng;hP zF}UblrNys)|8#$*m7t8JpimS5%t9ItNegIRuIC&k00WJn{H|VxhJk2^M(0492xxG` z;|Jq$;Yfpy_NQ@s9~21qp=GI8$0v^fQUTTh>tjsDg^^U9g?KoHvG#&!s z?IHYx(2?@qjq!Q`2ULMj7%b@l4peJCYAPT**(&Uxec!U$KwJP7s?_&|MytiQAq@wE zM4VMq3d<@uKQhXVJ9qu&gJ)Y)`VI9H0i34&+*mu4x7^=Osk71Vuak({xS;l}05G7R z=p6cQWg*)JVnI)de8Br(iqf*&{}3%@H+t~j!CC)wF+&7Pg&&C%&)f`4-=p!AgAugk zHSFBc6X`_QXu|_ywJB4w>xvR~@2-VMo4hry9H(3F-adW#W@~>|xx%~?2QR@{V*gLq zFr8pJ#!+EMo>M24I+%KMlig`}y|exH-D`&ZJ8SX5y4~{A5f34Ok~)rs1_L3jC#--9 z>cWrH*i|0~@lU*eL-dc69@8nF<_YI{3k8D@FMUOz-s=~5gtgPKW5G4~d$gVR+A|A7 z?iben#lFxgx>t5FK--5vf>LM|OQ-NEVkAY}q>}YNzc~1Qhli#*9vdZus47rK1VaQw zs7i%3k!hVbXeEf!%75CGaFFI$a()UQ0PlLq6+ozW zuG#OjIVIf(O0I(2ZjLLAaJBN2iKGHV6u^zOu_6|QkH-B&R+h9fnu*8DC|aYJ?1rLZ zrG<*Y17&4Yn8)jP`!qoeh1jjlb+2GFuh7mvWp!MQDPw9BQ$kIYLcoM3h7|K<5GQF& zh8Rs{Kj6jobQVAhBTj$vaAQPxNwW8#7{wIQwFF#5CjLZj>)cNl>{6u7=Wge7UFi!0 zqcSR(Y&xkz6)=53N=m0DGJjf9V#HKDjYubxfaEt53{6i{W12o+1`RGP$m zi!G&%2QtrPZ9oQ^?%sMQ&p=57>(Ou&v$FCYEqU*7va|F_S6`S`|P-P?FD!8*$V79vVN+2#1fe)#i~7qf%iJCpGFO}jNZ zjB%ez2h}J7C26q~wWbo_NoOP*4Gi>baT7G`oyb0WoAhlPUI%Rc;jNaX@DLf5^xP-< zq@HCZnqGlxFcPG*v1?)yYGg zUsnZSYr!F{VyPlXg@TbmEPBSVc*aSphrz%SGmfM!7zAVggt#fez- z5kI+qqXb7RnB=a6RU3DsB6zEkOm5^ zjw=!|r?W@Z&oIz}qZmyp;`KI4(_%Dou$yCdV+>`z53tsa<)@xo$K?BYoO#pWby7ni zP+(n;U2}_Csc|HDG#+`g;Jlwz#?j3`J)J#&cNnCAIDx28V69hIs|=_;)saqmromL5 zdC;6jVW%%%i~1uc`LNxwo2(WZd!z0iV91Og0^iOIWbTRTsR1ZbU2wiPH@&e{_4ai9Gx6x$#$@KltUBkG{Bf^XAx1G>%ZMX)J7Zcg=r(XY=2E`QYFG`0>Nd^>y!@cvq~I z(I1xf`qe9xN4H1u(G6Yqm4qWiQ}JmXhG?ow3BXpGIlWC;x(2i`lnWxCQ{LZGz69r2 z`&nLpSgiST!Xp>24^h+bDQ8YFgTO0Bf%FnQ3ih-N0GP&74Pv_O(Il z_HLSjDoP#2@y$Oy-}&ZMImHC3WN=PH490pCq)(Pe(W!jjPHw52#`_6So&eJqe&;NY z{ezWy+Z8T(wSfvexP@D5eq3lYJE-D|Ew}=NgUo+kF4YEFq5rFPIHyRNFW|;HBvvXA z(P?Q%B_aX9snSeU?eZzZUakN@ASy2P4w6s@GfXQS%_@qhlX2lTCbjoa@>W<4!7FsM zNwvB4v@x+yTNmr(E+G*v5U;m(LyXGk5g*>aQ~0!^N<&(?q-wA=D`{!PVE+CjoNodH zBg9B!jieM%idc=h#XuMkL;_=+mf$}0?|${QNg+y6gEP|rF=ygUrAhBg&$72qDel>_ z_APsRg5|@+=YThz3z95sD(F6Prt7~ zN`QkAG>8Lj!ox=s-W9G@eEsZ|MW-@y&?3YK>3BM|7vH~dv)SDO4@Plfhh~wgpuuS3D++1C zC^dzx7QB0ZbEx-!E*JY~21aAUe&2=P(cUcRMs?GzI~eW#wiz~BSgE|wr~CH;1JSuo zfPuI% z!w=WQHCN&B6f%-w%QM#t4|fl9vn!6+f|(6o!7Eth5ED;Kk;zyp;AeeW0|2AAY%kQ? z{=qkCy58Wouez4i*%Wpuo#D}gbF^!9(-6LWavzO1_z!#H>1RqROQ~uJoiskgPG&b2jI3% z8SdzDPW&+jzYID6X%e0-@%(Bn8jzZr>Fo!B*8LXalG^P6Z!)+){N(=f)uFwLJrafk zUZPhzv>`w8@e=}rCx}+5TKwH_FaPzcs|fAE?+HwRsY5%N?^1pQg(`^e38uZMM3zb> z#RL*^?$I3mwZjNbyFjylubPT@#3N33%uZ(kfkHdct5r+ z7iHnz8ls73Ah@Lp@j;01p2%GAwXv|WEcO{pUHDSCXu<-Q* z8D1i+_nVG~n-L6lon*$q?PLt^N{^?Labg=>`U7k?2e_HBPrb%4K{O3KoXP8ht3osT z&S^jbThg?y)?WSY>-EQ9;i{#C${Ye=3NST?!4i|vdh|aBd8*v{B1o6A(YtT(UmN8g zqm%af_AgFjm3+?w@uPQV5*u|h$J5Kzx6jacma*7U`|?e}U*0tUZs%b!!I6t0mEzv% zf`owye0JHfalEf+^Ns|3{qk%O()u1b6_1}iH&G*FY#!b}73;N|D)IK=X}t*0>AKnf(_bM0;050DV)f36GKNz;OZ5N)N`$@K zZ4Rot(rUM@A|_?kpne*w|Mbs)ScUtMHAts95^_M+RVjoNx^GB^V+TFado{ok#qCoT z?hOml!@G2Dv&3z7Ak=)@P?hO+9p`>{Xze>JPhjq;WQqk~zq`F7o0z`Y8v_WoS{?N8smH}{&cQkP1pDqsNBC5Rfq zDrluzRg@|wpH(so=`^%I`{=EAAI;sCt);8hzIk?awOqY5mvWVUFYsYz&_RNTKZ%S9bY)4^Uv~3GN3e48vdAbTzsmE1?2hD&V00#st0YbJ@PGOH-!^)7)sUhVOFKYYunIlg{wq-l@gtps{*(xf-Gp5xU)}039{QGO05cPT;`vt5t%Cs-^b+ zDJz12ne~*QyW>_x|I@9wD2EKs3)$CC z6I)(FUC2Js^6cpWlR9FjPf}?A4;;4cLs+<+ZU*IJ#Dfj5v5Ef|h7X^XSC5GQjt%1X zsXpG+QTT9R`Vyfkx5|Q@Z^oA186O75X@!THJT&wuis zaP77fCc+$+EV`ShCY3eCs#z3`ZZSm%D1apMmH2ul>FtLnC-YF%m4~nf|Mx5{Nr_evGUe^z?dX|4JdI6#tF}ARC&YeU^^C4LIQNGQT}@+(C01;H0FOs@cg3 z^Iv`T^mpI1O}N)Ys7Q}WbkCuGKXf@*#?iA}5vMipYdfObqM|ReT)&!(V(jpY>rsAA zfeQGu5AJD-s@gigeEj^Xg-z!3pjon0@#l^JeEW`|>h5MP0&(0sQCK2rl*?7yBxLtQ z5qX1ss#}`?5TsM`SqYrDTw$F&IYFP-;baCa7puGD_NL8~m5~KQv}=+&XuwyGv5G>i zQ%a|`ynP?)prt?6y1BD*d7~}r@Z0+Y*s~3?xeazB^iC=Vp3A`QfYjARsN6oHTeF^Cg+X0cEV?A*HqEL1@;Vfs$d2qiaQqzI3Y;)z$+@csJiqK|&O zH1@)Va0&{LG`5s^wpjuDYX2`;zkiv+|Et2Cvx6LroM?w67jrQ)xFs`1d{nm|oO7Y+ z`SYjiHc2%z2R!}cqjyzWNaGq^lGAFHSrw{TXvF_;@$?@){p6qi@abodpCN?VJcPEgFLhXx(|I^?8=5dlWg41b9+=k%43;D;`*hvl` z#vT{+BK_5u59nV}__bNW>bEOX$Ac5h74QTNtHg`-hLl0q(A^e;-A*{~j$2awcM-Z9 z0R>KK%>1BjAZLE~{PiMhFODYrBfLAz~U;bT3($x0)`&vh2$o1XH z7U2n&n2|pOAV$4Pi1q2ed}^OOG1FNxtLs_Ns@GB#X6l`oVh8-il$;&vVjQ%GyME8kA4>yPb9lAQx17r`7X5&vxbGVd-@cjF?pr>@a*g)@U&J-O{kdC9BGUp26H{Y!P`IFXW zXRFo#BO-?04+Po0q!+ewx|81%f5ul3fo-d~cemKoF%!K1)&p1s5TU>S>@pF#`r^YT zw?nV)j>>pDgBieLQW20TL4bL{*n!5{J@$J)# z*g>DugY%Qrpi+{E7XAB5tiC%AME`xo-+lU|nTu#283+UhT(0otw@)?9;U*q`{6WV5 zY-_)EuA?tGyAFpG`)XGc+NtlT?UdT&9hAj^`^~N@p2HVen+;W~przE-<$U zx`W9XSv7icDfplN%dcbgzzh`$b4x~pxR3#qY$E`69L-+5KkNEqQk(B=m9rjE>3HQ6 ze&GA)9-s!NqBd*y#Etk%+q(* zyKY7r=G46l7+p1bCJcrG{y3z4$a_)d0G;RZWOee)r5TDT-9|nY2pXGaeW7JnTW^vB z24j!n9?3^zfL*hp4nwLof_Jr!5#jlv~{-ard(cP#|E|$wRAh4eHmQo6;d3~QG z72uy<$olTMc{V5zI=z>;634yMIgvm{=i{fB5I`i0mHQnB;M(~mqA5BB1|;IDNf|;| z2~Ot-k~c;p@7OZ8HEGU%C}r87fU3qAMa0YvNRC82y);N2lU0JVxh`sWa+Pd)x=U5< zl}@l%6823##E-l}y-yE27gzvw6)eSU{gces$vrHVR$s9G+h1RNv+|{>y9yapI>pdF z%P9OlM~_|^wSY)Wh-tDVJ>I=$2u*xQ1Nz{j$O`)R`bPBM2R9hwqyjB1J#d_p$P616 z0lVtQel7TW=Z`mqj=b7@V59b*)gm`WaCh@4S<$IW8{G*HN?SjFShw%Y(}}i7>&w;3 zwE|T|PG?m>ti%*15JJz+?zgQAtGb$#fvCtCQP=f(o5T=AYlFBmC8*RYm4fP4(`NMZ zc^xRERqFDkhi(k6GjynCD>;@d4NbEVKk^Le= z&J315*3)i4!3sd(6jsWNx(~(vfe$dz_#YRViKB4ADe+R9awtr&S0TvK=Gll)yzAPT zB^5EqT4s+M`J11An`Y;xRg+?ts;ae0t-&A=>214)Z|TI40360l-jdj_*w6Y9UV&M_ z{gau%3{2GTo?CQy_H_h82yGj=d!xFG{%_x*B4*Y%+gyOtnFJ;h$#K=Bb?Vya_Prd~ z-@6WgQq0WZ5ojD2t2Xz$=gNEYQU0YPRoo50+m|$FA%syrA@4xh%rYxxIng>=;H&SR zxde9)9^ZX%KFewoJ>-sC75`T_9**4Uk1t^!Ti5L1@cCDLgkWYV!c7Q+N09aDS5Mc! z{_N>5K3o0uFaEHCGE`u26HgX|nhSd*g$e)$K>5GX4E>ibAm~g|S@3bQAMoIFGx`LL zLG~Dw(1#-ChWdD6FN$5!KQ~ef^eBJssIHAriXr;Xt%*{N@fwAeLwwK|k07t@E$quT z4wj;2>$hD}lz`aLL7;H;q@Jp@dVkTrcamn3%>DUtWfDXx0q@;gh(=b))j+DunuhSX z$Z4|5We%;g-ix;+YN<|BHIJe4*$ma3GE>%ype8k>qCLEK8U&=cglCsahb@A?RW(04 zr>3jG6yTZWmX#wd=a|RMi+w5CHe4PDRbpQvOuunTaFbVh8H>vZ=^2?Y8)IWI!!F1( z{q!uPLVG^IAm&^0^-F8v&S`qE`kEqzAO#~xG7MJ$QVe&TqW)?zdW28t1maZb6T&xTvtVa96 zTM9#lhh=8XM%n+(4}}|{|BwBg-W1uhuWC;NbxR^NxIrSTwO7CU{JTGXv-;a#eev1T zh%f^QDye3cDZ)VJQG1tCWCz*4>0bs4gM>(lVHjY+WdRbKRs8N7NN+OMy}pnpoGOR< zpms7$_AL`7jN$&KEYDOywy&|ihLZei`GkWn;GVIOIb@bR=bzDfgSnd#8&aNf?17Bp8y+tUhbQ=@N^z%$KGTDgkL;SM#;$l~+rdU7=cg9Z^97 z38e>mCF%ThMiSI@@?{%iN|kukKKtlFb-zj>Eo;O8C*i_O2z?!k^R5hGqd{~GKIav5 zat?#aww~GZ34?af1m$0h?NJw~DCeWl?a33WK)#hZ^Y&csI*Vg!F%bIuCLvrg%svrh zvYjV0QE|_0J-W`myp;d-AAbMb=8eovDg!J5--%kRlX=AE3i z^}Uqr`GrdH*168aU?~AlFIHC#j7ScUDVeJF6W#|GO#c&YVRy$XN(kX@necvEK&wDmcacY!+%MSyFx{nR|<~fWb;Jho=KtpmzbF;_*{7 z(E+NbdviIT0oDuSQ@Fia@=v^g9_jRSNCTU0Ztm7sd%Ld;AcWvVV=0P6)_?r^`8Sui z;`ztlG%?(ZMl&-fMOD>uCePqg0R@B4R+>SdsKk95s^DK4FP;=P+EwS zOl^86O6OC_p#FTOc4K=LIDI33*pYD_{g9jM^uJ`%czA3$08t0clDk0&Iz5H7KI7_x zbGa8@;Cqb`+xlS4~-{P zt81*=_0NCv`@j3;AO8L~pZ%9#ee$bMzWws)RTR3Ih^e$hGoOd#NC*gZo4l&$sa?+{ zEwK9Fo}T!X#uZYVPubj4ZsSf(>s~|5H;$GgqJNYQOt0`!s#G1*C784~{Mi{H*$zJF-EkYj{{qp`foyQ{UFe)@RzbgdT7%q6Iz z?=ol4SQjTuJ#{;JruG$T_ocibCUrr|G}7ioyuXwopF}Df75$A8Ng46%d*x0gpRHJ` z$XjF+Ps`(uH<<(;yzeF9c{?*CDAolA26$HgteM_D;oA$Z&Vsfa2Z0#iES6jHR) zX(Ix?M*H>&-Z^E32uoe-$&*>M>4ZFx1Nci-gl#i#CVm%N>i{Us5>7e#H;88|K@q0ZqNgz=;~I-gKl$5Vd~z8>i^@QU znYSW{mb`NTfcMrV`2z4jy8F_~o?8k5uRBl3WC@3lBq};;;;nn9K>*SueEr?C)OQM0 z)hrivNMJ4I(xaqRtW&b&M*9{L&7n12NQa`;IZZ>g80zUql#)Qk&I(4Ksdw501%upP_GxSoR-45z-LmQJhoZ33SetP+IW#29F@#jxk)X`LBCZZG?ESXW&ln_@~$g+H- zKO7+8#B^gqcKrX@^n1v*}44#!-&@iWKX#cRaQ9vKL}>d=sT zl14;>JLpl_RZj(eI+J%#c`hqK>XaIlmIHJqVH6n2q#=b_40Y15YFmJn%si@~1}lde zr8Rd3txl+Oh*otiRRs;Em9a9+;dP(}Sdc`t1{2j3+qw$Ty$U?R)d%;&Nk!%0Se)o7 z8_8xU$o5dbQIz)b;TreX=3hV~=-T4&_8{4isonUTqU1m1$sDYFQAz-9rRdUoarBh& z!S1)1I1>}^&X;4m#h0!36jY};DCRU1HL4Kwj@+RTGBjSL`rdCodGeb-K8*;idz%_n zI4xQ9t{KH1^yz#()$JGd5`Iz6z~;&`_#hgQdmdtV=fOM(vb@v9a{ct8|MK3M-t^5_ z-!pdZj@xv&Th@BYe!%xmYsoz?$g|63>L=!%55N%>5=C@3gk*>@n+%#Dot>a>p*R3f z-V2%B&6(RXPvB1Lx?x^e$P(5IP2^Ge^uk(%2ngDFu*Dpzu!Kt0qscBk<=3sTyUjH{ zdIa)Xd{PhjaPM$Vq)X4HHPTd-T1AAlSAY2W$@3JxdLGx9Gt84Yz-HZwQdP{7NFOC& zqy9JY2ulx9bV8pfg*!V8K#x40DxgzFVj{QW`;Gl_L@)FO$^9~m*VhN8=D@G^fdc@N zLPlxIOP-$5;qcHi$HT#19Ih99gpG`tYzYmcM~mjx2f|6LS;+c9)jX(UZ7YS7B0#0u zrEnTuQzBg}hvp)Qiv9VIKRi*)y`6hgc{3BQC@`;PA$g;0YqX)cs?zGT!h3Ju7aF_Z zO(B&-dzUtdiV8b;heu6U_pA7zYEQWi76slpI6K^tGD4zrr6{TUoh<=953*f4`Mx!a zb~!^I9klt42m{xmiS`en!yN$MVCa_bDrw-^R2Wl0UC9vO#6Nf(nFBv+bobl5nm$DX zdbvatug!`;d7*Vx>EzeQx|)HqN_=ATzyIx*S5Y8yqZ-l17*v(eL0~9j5M4&V{1`aD z%#wZVYW(Wbb@!g5)!oT{Vd(ANvKkD|PcUN&NC}7xPo6b-t4lG4P!=w;#Q7bZ`L-TL zm^&bW3bWjhp4X7~aO`2Dj*x0b<(Bu-_x zBLLsVs=v{kE-q>!P5?$GGPw<Y z_yRq)eQM&q=jejazBXU{yF1KmcqK_UbXCz}{%3YvSL!FMv*Ut$HUOY_pex|cmS}`A zrD!H5r+@tV^6RBPN!901(kji(T*XBgLhzK3Vigo->Mrh1T4%9Kijy{^0a@yMF#pLw ztgbXD6K-WTBJRXPeDEzAWJ!GBZpc)%QvgBtR|c2gX?<=q1=|RQM(f|nu0GKP8s6f) z>(Gs2xb2v}e^~$6d{=fGDE{au-`!bJxE}}t9iA8y6F|w8RR=P@pE*!cM^<5^bGOy z@Bml0Ok{U}bP<=_cyfXDGpPu6B}b|o&d?ivY1rd2yoqpw6Q0==?zZRF-)#KsNg#L7 z1NONJYyj}O7*cvJPM0vcbm{=U?GaW^Vd>31q@ScHrs@V0pmY}=)`Tp-;rR!UjsVl1 zeWie#Igu<@j8s0BlV3iLzyEx-T8E^It7xH`SxjgnV+1WBwrCSfTofT!I7*SAZ8wZQ z{dMeV0hM+cJruNaNPn?zz|rvuj4-T3ME!-#3w>DcnpVZ`%}RAel1duMBvQw4X`5M92zY`%QD zO4YqTeD(b4GPzbHa~(Ac{d7gQj?CAE^APDhy?jHav#;@Ysn^uKXpArlagst|a8ga2 z)Dio%VIppkRsV+(4L~5u@zg_DoBZdh=zKxPToeZLKVnaP-e##p;@vR z1Ji<6@88q8U7e`AC5L2ITx=n9 zjIFl5k3=u)`lT*V$$%%yenL66N)@k7-Op)9V#53H*40rUCE{OsEm z|Mr)ktXx|U)H+!*%kC5O%mk)eu9Fr`+YKA9$*SnPTR_)#P~Qw3AU9ch6so`lKnR*r z5}_z!LQp(7(M5m+X`M~Pa+wi9PC-A>dx%tb$L}hdw=SOP67=9z zba$nnpPek~pfawPrH8;P+{mwi_U^*$-n7+l#Pfs)cP2K*h6bdNTp}d781;)MPoAvP zvrByUq)C9&AY~-#``k>sa332|n;4aUu!|iyjmUc|)6(9{Id%IQZglR2v-p#}%dbyM zp_^BjqjeDv-+}`G{TEIKwyVoG2{f-C06h|B=ry>HL%QET%raJv2AIG#CJXecy?pO9 zJUk65X39iS(OeIq_`Q=^ZKBOQv}adOV&Ec1N;NYHZN?W_ss%HJ(4sXh+61JPa#fx1 zq;eHYmKx9`s6!~VB@wAo@~hP8$*@MMmP^AeJh&oA4=cjz{Jk0H?qNNleOy)2$ z?|$AHQRfKLM%Z+Bap)tI;?@P8>MqF_TEsF;{2r(PGH zvosUfV)+)FU$FXpW*yup>(soPO9^b;f^ zJYB`lzPm`($?re^uCYq0+F+$uS5Y9Ge4}os$L?zS2A5X~$IvpK7$bOhZsPun^q|A- zkXj-4M z`O$;fTq3+Rx)GuxA`$|H_fBSWp?V4A+)X8NP?c1l%!fa-iX7Gn6Cn1F7a6<@{XaF7FR?>X%V0KR%O-n%{ zX*tI4klz_JW&OhKeK#tL#&=(xH$=+bl%jpWF8W5|Q3q|Oui*?#nIscgtudS!=9F+d zRTyCX8xFx6r^+6b&a!x2aE?o*AWqhS%`AG;j-xLq1W?2LNvi+TKYzTm3OY}21~b5% zp3!VB@T`|<`O^O8ioX+s1*2UVdo(_sp|Dt zrZo4JBAhSci6XceLXFPGej|dP{G*6_Hf#UguY8heOu!E)I;T_M^36$>I6kmD=9O~8 zwBVSLkP*W<0#3+*K!!(jTnk4AsrP(C6C|tA&f?{dAI$D)6MRi?Nf)8?@|+@aJ`492 zRXwXBkW@ea_Ax>o9aIUGiXumdPLZIZS_j7UmBrnQ>VbGB8CXqWV`+etc?R4wL0HyDZ z+;qwui2ga%zJG6O+A> zSW(C?qkoda-7RbXf>N4rJCO35MrNVHs@dbq^_Nec%WM%-f~U71oYyo3RVq889m;)FSb&jUOS+Mo9 z{_3B8|IJbm7GNeDc?a{d%w@6ze61rr0d6`ZUa=uSCqKoV2~tc6Ku~dWOHg1@;ohPa zm{YG>`{tRO@=gipw&no6G&E3Dvm^pvKE5)k5+F$LKD?)Z_Bw(2UFOc0 z9=0306E7AWZg&ih4-NP5gRLVrXVfgBA-S_P{o~h9mt1^%$uAzSQxXVc|GrWC=U^t>*Z#4k;jbISE|Ep&lRH zo6Tme%-S`YM)i|#o?Jyb6z-ZslMJ3qJ|q9){YU@tFFyG1{_>rV-dl(-h34)`tu+Kt zMWb<<vbA^un7~9y zVCqBCOkbLy3O(I@;< zRL>;aA5?t@;WZ4<7G`)f4pchZ<^SH*}8i@H~~9+ zm!!|DME<bcgGUVK zUx(&30da`od@-XNK$GhEGH>a33BdJ>teWF$-6Rq~AWrACX36NgWci1ZG-ImXlZDZ< z*5~7AmkgCz#{VcH1g@P$fOk>y>zqjY6lq@h#Vg83T!k!`{+S+ zPuGDhJOvGKh*^#!D5|0Yz|&$TKl$*jS`rA?>UrZ|Jicmurq!vrh-fmvISWBjTgBDf zS7*}9uwq)zf@YXDUEI|<^KkO}FCH(Gy40Wq#1G!SKd%Wyp_`c#R0%3HqhS_mSPI^p zOY_l#O510(M4>yFfCxCmyw3r=S4}Nebbmb)c^bgI;A7`l+IVv3YmQk=woZGZ2-KN; z4XHa(lJ84|<`3ivBWH_!*r*M%g0ojJh1%Qcyyt#uklp)GGA>9hbA%pyEuFsCULgp>4Wp?pQ*Y6tlUj)JFyp|lXP%l?0Ig)+va)9q$2Ot?iT&&g*p)$qh z{IoN{L{Ut1-tlK{@2nZZpni!aVlpbfeTszOAYt<$_ZHARM%@c9suCw~EWGE6T z;&!g_ofCX;PqlrX+9j3It#u?yGQve5ZcgioJdQyx5?jLX*piGq{^D;olW)KH8H_$R)@NRjQVh8 z40$(OZrjnvfxhkXsZ}B#KW(CC$(r=m{WGz_A*HAhax36th8k3fNf00IoeoiI8d!+xs04}vv zy@>N&hD+3U5;mg$F36Y&6pj#NOyy0s%bW*lwEek(uexx%?}0t4jz^aKkGcCkO>l;` zjfkYIpW?I({P2c$d0wsGyT_9%A}s|jB9<&jKrWC_1(Lmp00{i73U8mCJUpGxR8=eJ z{F{sB7r*=57x!1Jm&T-(gc+#j0)~2aB4JLcT&l!6%4~_*^Avvl={KJ}ey+2HnazVN zXz$-YUC<;8c8Woa%xDn-s2bc6B#65=SLY$Ucdlo$nn`PM1%j$=bcc|dn+L<7%9qUs zZ@pJnxZSDS^TNa91xD9!r=+(Yhx!2?=v^)Dh*SF?|Aby-v z-eZ1|JF_(Les8eY*nZtPKl6b zSIdU_c!|%xUAoR3%ub&oG_wMygECy`>_j;*fcwkiF1?#V@ATybNnn^)Q`PWdjq8a7 zy$R8P``^?oAOBy*7SrX@w}Z0|7~d6BU)xZ8A=>eFjqXJwj6UKTu~O2;>~<}1S0?e* z3|Bw8FK;cp3egZnRH=kh;8bT2gg_CR&`2S)SuWo?Kl$-H5AM}uToZ^=KZ)}H{)b=u z`s*hbQmu8iM78ED%30L&r?GnO^-AWkK5MGeZyWj7ub=&DEfIOH6H}LIA32I{W-NfBSXQ%EDQJ(zLCSqQT5~U1Wcx zGr$Y02EDSBpxntupF?tVI_q$p0eJ7xjMfOTZC9zCmCOuDiidfe}dnzuBr>4cpJ z|9BNDaWbF54L|}eS6L7Ft^;r|t&WbXl~Y7j={BELD)63d-BW>ky^6c8+3lMvJF)$bh7j_<%*?5Y0o6R| z;^Qx#He5I>Qi6(m5)$SzQhp0bZ%{VbdV?YmdnnFC0-Oc5m?(`x$H0BG0UA|7`pAA% z8Z9G_9X0jBW5_v?7ex7^@U?>_Upb}tCUJjJCMFCXEu~KQm!!-KD)vqojhDsr;peE`>&t=;tyZ^@{eDB{`Bh7sEhf!U7jxF-kksK&ptYQvDC%$M2kv9E#Nbk^Kx z{=OzQ`L#ttDO+U4P~S*~xf_qSkpmPa8}2e`AV7Ag*-qX4`UJknG|DQ%q_)l7>q(Xb z@GN#21eRPx-IHrr%E>?c?(3&b9pxlJ44zU7A(-`qk3Fp4eYgAjX92b)?b_3LP)aTV z+2HbYj#>;JC4^;Tmrciq!L~o$T`+SytD0Leh`YHGXN!3*)j9C|va#z* ztiQVU>0yl^9H;oc^O*x^=Dq_Edy52JM_WaE_|E;Li?5!qeRgK93d!=?o>CG0W90t& zruMmv(jOS3{3+nLQ0+vq=T8*MQN}U-TDJkK*cSj50rwCB7nX2d7XA+hcDUAPY5J?9 zJf1gRwo@2t`x_lUmP*}^ERmSOqvmdIMvI&m~r=p_zzg9=xh{ zJor9>%eCDM50BP{3LY=d>hvFe_Q9Wj@E~9*INww@p1SPqDC&=|8QAt?y}xww&Y43|@|O)L;K;2S*gN~j`9%0$NpV-u%|z&) zjNY*N{nr;Cf7L8;-WcjSxTV-Ox%Y5PeE$NOz%i|ZSC~j-F|E-BYO*kNl59DK5l2Pb zKVQ%zK%;#3+_NEeFAD50*893Uz9+e0udLf?f#wJ`kASnqTwtI%ak*SOzjtBl_pSp# z#pQDC4!0!qd*^C^!HB-fh|XQG3;OPkTR3BeiavWofJ8ibc4baWDTu%I;Jmkd+j!q@ z!>^r?%$JY;j|}l|ng;CubF8YFh&Hi-Kvb!-%QgPxH=ic0TSzpBD3VvA?k1sNkrf)= zB?(bR43ATK$j(MFeuxH8QhPUFSzvg4lfpQWHs5g{%3`N*2ROUrJ01wrfgKFZkzBI* zxEZ74+En2sM^rBOdzSBWICw(}n4rp(d$F zAvN!xFaGU^@BGDkZ=H$-G{UGAok<9R2m(=c#pH|x5;`mcP25ccwRlL&_s*+#&%(?b zYgR&vh!Y8(UEO4QVd+wHhFRH%>#HqHQ+4tMS-2h+%5wyeIWFrUYlJJoMy!rNV zg7nFGX%w*0OgCad9IF}!?r3iOU#Jl7B-v%g* zfVxSsZt(nSl?){3Rk(Ks1rErgy_ss?F*d-*TNmx~4Jd^!)~mLSCV`OTu;lvBzk2%h z)3sE=5upmHm@?$sovHWPngk*2v(l;!`6}I;=}*&!8`BG>$*uHQKd?dC@xi? zhYGcL1%oxsjPd=m`rp2L|3Cit{h!`DJGCTjGpmBp)>yHIhzC%;7E}&G9dr?DUZRy$ zI9!E6MXa6s>PL@G&u4#ghygcfHFUNAgF#`D3y6Cl9-Oh#9KFc1 zi)GXHY9{WlNdx!pcrzQt^j||d*O5a`=TOqzoW5GO$^QSZ1JH}R(2SA<8(nfh=`2VQ0QlimE{qIg3s6*Hlx}QFY{(JX;DUe`DC&rTe^dF-WA`gbq z`y;0pnCyPj`u!B8jU(748P0AS=jS$Mtayje>cuWIkd4WaoaQt$xCO*HSC8iLtp!6| z%__BIo~#NXsB|YNGD+YDKt2h2RfS3`aVj7dLt33``smTwzyHYx|MB1a^e;br=bh8) zJfsu0bF62+s?+jJ;``@|fA^F3|NEc)^xysXy+3>R{s|-7rMFG30hUxKD#=q9FJ>+O zJcdL_aYsG@5fKqHGqWlP~I^mcmqz5Y<4 zj^CR;ZZ!pu>#T0C+t+9{-5|%iN#)4_g9&j`VNMS!PF+P`w%sP^EXd(^!NDyIXMDVo zoY27mI_3ejx)2UoCvPmzH}B&g4iU0XfwXT7+QQE+(rb?X6F{-5cT6y&Io%ReD^H$b z$L@)OCG-!^@blk)v$lnL`{8~2k3V}rpZ(L~kg=9a&rC4k<(kX$WBn1wf0VxWVz3RW0;G(hvAoOj>GR8}Zjkn~u`DlZr z8|MJ~ZvMVeF%8<$6Bk*2loxL=YC3ewYJTqM&@2Vcf$k0>!5m}~KoUH{yXrXw(dB*Kz!CGhA~iMrK(uclRFtJ^@(B zLHPc5)PDTU}`?zZ^gAp6wL-q-68oH?0I? z5Vz_syHSEUe)Y-aFCWLH>q70L`}KeSqxosTs%7UG{IA1JgO>Cr^JzJ&~>%aTer%TSG)XpFj zabvbjLNDr9Z~$aN?d_zyOAs(nasxWP;PA4c^xhS6z`2Yn<3PeZ8rF7EE?+_Y3b?E<~}hjbhYlns#W?@#W2MtVh{u8LlC z|BC+GfY$5rem(MJU;qz=e-?eb2^I*$z?-0eAaGbNYX%o_0maCu;dzw*Q{Q9xmAw0&QIxyq*0$;tsxz@ znbNJ+erE@K8#@4fM|WIiT)MgJP~xOkagb`%tHvQTOYTMFO<3P7e)C%SK9 zKicwuInc==U@sL0H>X2EL3UJ@d(?H_A9kG zN7#Tvu#>RpS&+S;4o}zuvVj=x#Y3?JqrX>gXaDoN0<~9-_}|AOIFem({K;%cmu&qb zBP>V*oem~A+>jD;bv0o|hWP9!?<^jk1zHP$q1sexJ$!UwdJfz=H-{X#rDz01q^c?i zT@;~aeZnw@)SxCer%_ykh7dX%XpEXqkiP0Nuu*#?((sRM2}*PlpYh(Qe)O;k>+dQ! zEQhLQu;iKkuoq(Ig=X-}2!kFN8;5=0UjDBfGv2z;oLkNqBf)o5Idqf3PiAL;1LFfb zNIM%0dv2W4Mnh&Y0Kfn$=xj}*AplC4!h(?1{Ey$oU;OdP^`vQ1u5-H)Cb_ZDx!%zn zk)440fc!y+pgDRqezAdZ;Eudf)gYXmp~}ru_p9ZqNoW&DadUSQ#n7|5J8oG>GZFWh z{6OO5 z|M^gHyBmAAvk5TVdN+_Re0rH;j$BiFI?Lvg_NR*YkK6+ezhwyfdVOe2R|xjeKLrA_ z{^7z(>(iBlOOgNdUw;?F!w5we({+=jgZj{A>e@4C{cRBSWE$uU6LJIaQ^qHq*!xiU z@2vxdJ2>sVc_AjarBt}#in^tJ{+dGn8)X77lLH*ldMXQznG8VdV<5PTJ5xJjyszs& zdwY)NnbJg*REi!@o7oCvMW6!dbjJHLBSl3;6mI4zCQFpH$yMu@Yj>#`s_4n-$y3`l zJ%UWS+sb`e-|k?#JRdiyv~p|Jmml8OM^#(fTHOFQ_hiZ34BlUmK2dV)$)k#E?yqH# z9N+nQv5(zJGUmk3Yr;ao#5UV8mD5Gf2N*2^Mnt)9$L=!iY-~A%And#?pYW1d z!SOl93+ybaV&*D1Kb@I*3~n8^sg)yjj^A3vIxC>EibQD zARN*whHi(#Z@Q-aW>kQyWiV zA`xFdy)+2`)YGH$6F741=goxvFE1Z)fFzKyHUlEuF_3J9P=SbNz;trAWF8Z*S~k_a zzx&O%pFiiC=LXH3J;?|QkTk%ABl)jKgM-sHy=Ej7Tw@?1%H-G%iAHMwbi^uDf zpp-yWQbaZM)B-6?A!J`WV*e>Igc_8f2);Vw)xUZFY@RM=Xpvpd2zSd=_&%zqbphtV zspmWPm7}Y%JG>*NFtcs;?Tss5haa*_lc%o;vY0ZM((5NFdN17RMVSo61jXd}^7J^+ zgeEi|87FMv46wPF3@<~bax1;>5xLW{F_sxyudXov!_)YmfAzT0x=nzmjPCCRaAEX> zt_c87ZgA`MpWU%b7V1W_Y&+j_fCBy+a5&kP!Qps#wg@niCgH0m7asDC=p@{Y#2pIg zmWBVt7C;ord+Z?Y1ZFjqSrI~3>zFLJ-D#8BmrPf-Hy7K=>%T-hk&UI^g9D(@9IFP& z00`V>b*Ms4lC~G+F6Oz*0&d^oPSQMizil**rXjCu z11n&tSZs)aO3~RbWyK3au!0^?h9G0)fznQ>j5(x_RE99?a25GBZ3DTbTSi?)KGoGZ zIuK)ihGyO|GC>E$;w)Xfe~S0cWM<1+%`HmD;oihu>hNGXeLYq8=AmzcsV> z&m^?Z=rK3J49H|?>$#_Sc-jUdW6+K%cH9@O#NUh-a!em-GbT8M!rA@e@m&QLznD8c z#%~K9)V*cu;RWBRz&rH@#+Wd4greS=Z^+eA>h2ZVV*MGSgFw5G;xtIUXaq#V+`>t$ z&j0EcpM3HRUY%ObfX!f?@>wp7bQy7m0CfcAK2bgh`nvY{7t?Ecb?XlWV#zYu{r)K` zx{%TE>}uUQK&WWeLXbNE(CrImwxsC2|F7rUSBhB`+>Ml&eAU4ER(dy=%qI!J53U0+ z<^U6k+@idZB|)QO)tW;|A?##Ut8@i0?@D1d*>#CE-O({1uNqvn?jnFK zD!n&H5M+7G+mOy2ZVPmJ9n7K{9JD%MW}dB(vTzC|Ij)*?Y2jIvfBKz$`8-@1BCQAe zWR{qVi-a`E#JvJ$v?^WxKwnN%$;m< zJNibj`O8KBucmQy4Hx6O&)LsCD5eQY+u+ghcf+rDwAP+>`Em}B6Yt*Yt5EmP1^yiO z3v!2X#QVvB1u9wikU>14Qwzw$gI&5P?u=dFOEGhISzGmGQ~llVpI`c{Mdj}BNRN`m z9}Mnv>#L`O=0E|Q+-K{1qbPs732;pB_a#g6nO+5R!j(9mW2S&RM6aS;~aYr2m}y0Zg7O7BM5nZgRCuIm0w zTvZ`q9g$c|bqbw9HDyC#LEA*{Sh?Nb$mp%@V0t^~-_;6m6$n^|DmBg7Ozu_d_wTXx ztKe<6MzXvb_>ePm;{xuivcK-2e;0A(wS^E{n}|7cA7;k{T;v0aZ!-tL z1j0A@K#rCm?1g|Z1rYWSJ|B7mn^IctMp7Uybz7bP_0K>4)#uL}IZG7x1Q5y3 zpsSAvytgubg){e00TlhS1B<___|)|##guYbVG8@NC_jDC985qA@jn34kwcz(IeUa(3(KdEvm zWoCmUBr&OR-VMK7cUVe6#mq#-2r54R`pOyFww+b-&ZGMZr07b0F;dh`y(EvU9_?g_ z?R@XFXYIMdRoD_`&o6J9CIq!?{sf5#4eMY0{>vwJ^6}&5!cHz*fw(XsnNnGZa*Via z4Y|ap!f9oWL+xLL+N(uQ{eVl2e;+)**du;qs7K1+FE;*_Qu-1DJYf1wC(fqar|9Q9 zH9+@4GI-NRpE<||?O`ia-C66+u;6{g!W^)cS;p{UbMpy`J>Ph5Q|tL74WdkKP#Qw?-lvY;e=JG2%NRV_>JJI-GPUCzkt(zR}ydR`|_qT-%qLaPW}MS}!$ zfK(MT3n7e`M>b7lWf#t8=f&CJg}bAwW**xGmp^`M_Gq5wT&HHO5>oP%y3u0Ybt)#E zWQ^5bk)>;;fp&t;unTfF=|}ZJbg#Iz`ym}8zwg8y{m2TKx$X{bjLH4cFUP%a#Qyby z!b42o)%Imb&c_^pgLhaz{iW9w?%vT+FuJZi3*YWy7tWuiKme6uWFjF@y2BDZDVzpj zm85zW^?&>4KR!v-%7v9!YLv8SmCjP@a2d&ubnm*NUC9I!uXI09&flJ=nOr-XBp)<# z*&ba}M+kp`6vEwAnLG)BgtzXW1tKMjknf&1P?#fII>walGJsoI|1Sbv7708%h%fG+ z&6S%{h&KKJIyXEHCOUb&ul9JC$eu($bfA*$A`Iyb> z<#H*iF_~-CApG&`=g)2aIL^Pgz@-JLX8;6NiF#Kx$hvqF$zYZaTRqNaDBTUyjD1f) z3Q_POn2=3ubhj>ac%eZjbRtSPmaK}(Vul5bHN}#%c+lVX*vH}Y;4pw2FQf#2#E{@t zL8vR4ml~kGNt36Paz?gZt&UR$SGAI{zjntoyz+X5VPs_v5t#wIsvr@~hhv`Yg-y*izAD zLGQ_>$84!4Q^}wK+28m2hT7WrDeETf_lp#Yr;Owyr;LB$}IG6>+t0%}}YRr+X)$ z<$Wjvr2WOzUN;b;`xfq<1)*yhvGyGopvRc~xPT(uOYH@#Ikj%_d&Z%e~ zXwp9ai--Eb!j#d3BATtWvT~=0;2^+e=Y{I!V6#nAZv>!Bme||mmh9SSabRN#B}e}q zUqw1grh)!F0DdMTWRDMk<}c8f%5!2PkP7i(z5eI{rM;-=NaoRUmTcYZ>vDied2G)t z+Zpp6_;Ii2*D-@2)@ON{z1JvZ| zJ_f>F8SVop+j=tf0~x?S=tYNRvx_JYLbA4D{#&A;!U;1*hXp6R`tp*0`@63nx7z5U zb(*_?o=i2A!9dX=@uB>G;GVv)Ps`z#m5cn#q?9VKlti?n0i2+sD?!TDYTYDc{cFh- zuRBuX?K`})1Doz|4w`3n92PYcCV)HEO)@X3ur9re;zkYW4HabHT-ZPPdfYN~M@(qi zZ2Vy=Sk$0(#o!`m*eLGZ0fBB^0)T;9=z`}+?Q!5^PC z9FqgQ*x%hAKhuH1%?`j2+Pb@?fHdd&OjbX6SkL`ZVV#WYSX&i<#~6W?4Vm5@y621b z{nliO%4iYrO4VZ0ejMb9CLP~O`XIzW>r2$KJ&6vA5tWIe2s1!!e6hl`dHR#L=J%_1 zW=p2VJB%!QCcrpY${gT8K=!g6-y4>eUy5C@IWoO;+nBz_i#D27;h3kJiS;sNVv!5t@~$L9>3Gae4QlV{gCcs-*~(} zo#n94dMJ=}`YIU(+$4LtY(IZ|)m9IF_xZES#+`vG4igE0ni<7~Bj-0md^*FO4P^fq z1Qubs^ezE11nw-N_OW(YYW@t!qNz*Kn9+<>!osS1XNgp%5yl25_%=#^9v&4tdrCQQ z6$vRB#Ke~;@!7w5_q6t_fHnX^F(OHi9&r@1tGjE=J0L(=MO``Kb zx9?IXbn+p6D``;g82g7XdM|1KBT_y`a~g7Iz|26YT^1K@^tFJDZ!dYt>7Hu)L zhGd<@G4ql(@E2|xdB2!1*z3zBER%rU9WXZ%=cjXc1OSmI&z1~*=0o_DICOX1f|bA5 z{|5m`@4wjLR_Jg;rKoFhH;~D&ZpMyRCl$VN+uvYp`^FN0At~~0`2u%9uv}&NpPVSy zLclUn7^NWe@Y7uea4RQ_`QS7a9nUVW@^&NehxcnsT?wjd{=T}^a3{y>#qxy1pTF^z zLe5;^(lraci~b#yF#F{5Z&p@)duiWXv|7#0%*;dsBpAi}xK4{0-(lHNv+T%kseSh` zcTwRiU%4Rx#AzrXlTfd$`jeYNB0ch$J7T5{y~0Voa}SX3HYNjm8$nZCnR&)$C$X#d z&*l9ysnJw)%>t~_CwL>`8rN0*i~naRb#J1V3-8jqcqLC%$@;Sb3XGmCwJOLi)buP? z(SMY9W~xoH4&PlR-P-^_hbhWns2to0Q4t}o-aEmE_XBO|p3Gb%05YX>PVql}v(W!A zGx(K9|Hoj}uI&jF@%qLI42ECaIqx=TIhzo^O(7{S8+QYrn2vpCKK!jx`<$bc5A$*) z$P5-jB!@-`h!D|P!u3MF@wt$ zY+AtPpH9tE{>0a=vxR~KS659};-oL;HLXV!bSPSGdXL^6xA5pH*`zsI!_{(?Crzbt zy6DRP`JQLu)XN0=J2%}o%M9*OyOvo%l1p4}o|5Gv(B*3V^>@#b%s%<*Y4jjMp~J;p z6JP{X(1WKXSK=gZx-J;E@D9H#JI-K-{*UYk`lp_wWknE}iusJ6j6o}Kq93}eDttX9 zW9u|tf!_c28wWqBSDJXR2dhki65ohaz~mwl#NxdgKY3?f+w-{yEMK>zS$9apn6cDT z#PtzJ_7)p(V!eeNvgww&i3rTa{bW8DI+12|$niNrHxto8{@;OtEHcO_?QtNJoxTJa zNHVaBDai3+YSUaePZvLaG+Wdj(^@3BNtYXEr?l*$Hc72ZjL<8a)OV>zCcaIpXH71c27CPDmi&Gx3>Z3$QF+4U(`I zpBy_8oCQ;p*mRQKe&)u}|7Jys4(8aOxwM(HS%N{u%w1+5fBsz?&Yw2&)w9*w7*h%= zK|)qTBz>b&o_(1H8;wz;umBpDt^@G`v{HZ7{p}wih~KBfRwfMnZ(ysy!g?B+5IY>hU6)B!8%Fg zRsc2&t^3)fW$@P*PT^gqT?Uk{lC?N%5mDOP=d)93?$zo3Lgqn*nr*qtD`!sXtiN!r>SSI4X zBUvbuJJ8hvhQZeLePEue7hv|2&{h_|{p$Izzj)qOr>g{zDu_+fbwoP}-QGUC088H} z;omL^y;#!t@-m}EwNX!)kStzLi9$qhCSi9{qraspI0C_v)rs%f=~=0SNj*NR{V1~o?_ zZHV~QDAvIb?*`%RI-;8>J(&PseTS&0Nh;7Dp3Q# z;$t7y9>M`0!(uumfo|bbNH^x(9uM@93We9LOZR-5^4{^J8Xzs#~j#_Ge>5EWH2}-I!D@X+dKK%(# zHZnStehcn4`Y;Ggva)2S>1lMMktT#PSaf#}h=2Ls`TyAN}pJC2<)m%-;;Hs{Q09S`5vw9XRUY%F%pWWk!^ETKs zt>W4mQ@Tmpx-nKMB1kR^6@LQEaNJ^anRzSX(UJ&4!o9juc!I4QPgji)0Z0Y|UCbqsDT4%9WEOA0 z2|(V|Wh(#C$(eWRcv%6!5FH7*Zs4^-iiz2&RTM=~@j?FJZXDjG@;^HhYyw!Wt#xq{ z@Uuk~08i*FLDA7(UsvWn`Nvdd>d3X;cbAbipK)_Hvy{6_=x6&8e0R4dyba%^4*&H z+$?`=i|&tc$pKaVHv;s(-XGxFBJmNdLC=ZKPy-@dMa-NMGMGg}NbVw>OO)oxpTB#y z@TIRWt01D1%rGGSy^p;L>BnoM?V0KrEBHpb<9NE37yTC9=^ErfBfAut4^a=K`V<9mN_Cw zop>@guKuBA*=l*ZWFFwjoYD1i9bJ&SgK~!gy5-rxFgNoKm^}>@ zm??w~!bDqh8>p?M!_8A4<(5%s&09{K|Y4yP+CiGGJY+&o8?lzxjRy<+U1WQ zo;^INE1HVCCk^TyMSSR$2q6lQ2^pK$nj{b+y{fY z;KBKIul~;-;J65aKna1sX)XroY>`ESIfSUiA1=a&59TvlX)*#}gqWLq%F4M$BzQ8= zpl+bk`<&R{2#WRvD*Zd#Tt^PPee-?ihe)T-Gg|eP=3g5u{{u~oJv?rf0HN_^jtzFu zwKBE&B+X@&`19X>^5s)oV_^*5OAJ}=Lpo?MFirdcUYhB#r}uKBH{SFdhCV~igUy}9 z+1UxPa6N~$(3_P2$IQE0=%fkWq+Ru8Fvd^gKa)8 zHmH768`n}Tq*Mqg42FHDQej!#n#6)H7vJ9;-t)?GfMXVwEyQ_;t}?n2?t>U&OqQtH z#+02NEj9tBX?;JWKY!l6k0WcT`mskb*5gykEbw zptLJ-Gf&Z4rP2^%D+E2uMvC=5bsaxuI&-hvO8Elg=cdE&+PwWnqk1a|ckG{cg9{kp zGBkvWOhEc1fm?b0#=PEQBm=#H!1$*f8~C^mgS6>h(f7$niylHPv(vAhHUIFhU#w-e zHl>8V@M$>@$o}J2-~bNWfxW;^aST!jugDX?duzq~kCO!|C1E75maF6)+3hX?xRoKz zuAkk@^bb`)rIKAcV@z#A);G@a?FQfLO`2QD8^1sUH@Z_lb-D|djrZytRt3qtc;`NZ z&t2L7c2Ak)Sgz5=L_%QmN-FK{I7fe?8{FjsFwK1eoi|M?wm;{v6L9}>g$ufJu;+a_ zf?qvbesz`B_5I&`@igj5YZ5|*&X9E!UhI8#Aid{Ksnsng4SgY#dYkvJ>8DKZ?Nw;G zltIQwHRl6&_3 z&7?_BDcJfH&7VCwUBrtMZIx|GtyaO^hs3VG7Q$ZiX=evuUoVBEcIFT{k8loJ3Y1b1 zasZVPCLK;ETU1z|BFe~O>zOe!HE-UXgiKw)Xp$`l&_(}UE)lBGwoyY(2UEL1dycE0 zKAN4fQEQU5-UE-^Jy`(<=im@NsBZHn8_^BQz{iLFQz_mZ4|m)7IP#B`j4=io9RBFw`q6eiGI(ud?KeyQ8i!uPcF(Xk%P8edc`^ z*W9i+rbOFu#|Wf~vlFap{ac_*J+pnD6&o>#FD?{R3l$wzeh{Rc9Htx6Sp z5HtXHOWDP4)y6-5{dCF2mrvuDPu8Y07X_u#AmheaQ1q}FsZaI$$7cp(&aQFqgIgzM ztM)(qi2^G!k@6f~FPkcmJ3>I2B7zPCG}B;$+$GG!{c24&jm(Zu4-OZJr{(|Q#ks=+ z!t(ZRU~-y!8>0qscQdbunXleElMl{A6)!4APwT1<<}RYr-_N3_)9JxZOx`x{;Pw|` zVfJJND1VH7`_07*P4~_LcwmKM#GYr@xzVh014b-(!s%zfMpZ&>LhL_ zvwGw|vnx&wVnRbP@b0*chr3Y_f#=JWf$lCy_s$k9LMsPEauyVN-H_}^qZ@QMQcu#wrw|ZB}^rB3TGb-biIMPR|Jr~9S;Um&q;i+ zVJTYF^SZCHVLvN91CXQmH%q&sL1FOPsy~kxTYZIVH2IR_XA1z(g;lu@oy!??7evAg zA+buN!Q2h*fCTuX+J1aLEd1)Ma@v~W8q~~HLRK{>s<3^iCldjeeYDYC@=DfKQ)m;@ zH?W|HB%dhG4!7ftn!LUYH0Va1t36p3itKQlaWn{q_Qt*j5LDCor7ZsW4_|-vw2ho4I1p*Z!T|!E z)YaxRJTeD3uEfLFy}!8Svx0f2qf5uV)0xuTjjB(cU!}VQ;0F-faBK!JQ=Pi~6mXo* zXN18`M3(DjOupTFw*X$JQt(4a0LDOSKp7jbZj*y>7h+arJ$9+0&fv#_9P(=rW#1w^4Pnwo*&F$?I zXj}$K6szj0i7`|)JjdSHus-$P0dZ%2eV;3EMo*CN%(dzD^z+y2;2GUe$-B-7^dI!u zINi^%1Bs3UrUVlLDUqQ%B;gcj1}S-R5fN2$7hwnjYbsyAed2G;ZRRc8Mg&fe=FVVH z%lryY!_Hv7_XZs^Uw5LtUsYE50)hU~1+?*oZqC*%D{jFCp}$lFDw#zr1bo@|g-VaV z0^Hv_j$>>ejaC0nEZB!X~}$hJ%~uYsii2tFwoT-(}6W z>c}BZ8)3wgXP1^Yk<>mogLDu`swm)YcI57O`^0u(=|)J?{Q4N15J-WUIjn74 zh2A@Vi?e&b|Kdrs5W)>UK~W+xG%!Uxe?~_XdG*ZeW3A5`AIH4d~)O>8rkj zduzcfn3Mq7TlkG1B~ps$mtJGz?3}uW_0)x49kLJqJ7CEXIwU*m2ke^<qL^3xvru` z8xq$nBjjD0v?b-<-7Gt_6l}LscIwR!zjTW4)<%2Y@N`t!}oGswuv$Q zGdXF?C2iq7`X{m*$!XL~JsPZ3Js}GZBwicCZwEuS+2pry4 zNWv^P^vsdXSRR~%7DedJt96??ozS}&;kJb|AkjN879%O8B&z0yEbk92Y9J*zV)CnX z(uDGIa*HMQkZCXqwmxU!qjJhJ8VsFR&6cP zhux1!d%<7!_U&st>?m?%@Ml+(CLkeHDVe*^f}e5u)3;_bzp5DlgNO~-8_Ezx4TOlC zg;9#?{Qf{>^B1C`d?x=PRk}rYQz0p>>(@*Fmrq*MXVIle)+DRzx@p!qN8C4OkLk_6 z5PW~b8Rk_MhzDAj0JUOKDa@03YqD(a0-PUEGr$K}Y;Ju*h)NMUg={v_qaiQ3y}?xx z{c|%Zz0C>04xB)S9*Ua_Xh7>|qGgI`AZmql@QI;Acb6LfP%>uHfr~37mmKq)&S%Hzr%YZhKfl46RO_s=sj!~RKLTNK^-kG;Qx-Swh1I%NB0Wd>~?&bo^ zMvxu2uGl7Uq+IXuF7<6bz-HpjwY15kg6Yhyxa5g*db4KYFMSXI9y&7SIx528-@-gxL6I zf7y?n@~@UX@=}=ogT07-XS;EE2dOSjChU06WGV(wD1eo2ahoc@MGlaa0EQ@bpapMI zj7r#{OuYrhRSTAlDiqW(YdHV->&u^i{9O$9BWjAaF#<>_Zg?aeuH_#@`TOyGgW&>S zdtZ*+TsF~H8TVy4J(&Xl)fq095#Jl>(!1jYb|oKKTL4%hWpfj=64a_fI@l(UDU-sH zk&rtZ32&hA{e}_%-6)DKy?~3=rNMuNKU-70lu9%0IpW8F_?qE z*PJ`LLHMs!=qtrNCoZ1l3pOUzfr9#`-pKxK633~a9J`iu zMdiInpz*iZ{atSE53o1jaJO7UHApfs*DPo#78guse)(r_&CjZ)mWHqpsw{z$<1x*w zRyxF8yjS3tEdPUpqMy5kfV#0jbS_x}&+?vKAVr}O1}5s`=c_Nie)h#TPriG;Gzl(h zy+z~3#@7D%buUpBpJ{WZ>%VyWFh=1=e9v9D{8OXsIK#D#Gt(AzlT0)uH}_sL z=Q`7_^4=YW2oAaSAVRQR*?A>fz~rVl$^tI|x)C^?&+>AXsF%yeUW2N^-SLL2+hxtG zqY!0jXom{wD!3a(lCwz|{7zM5Y9{bQApvh}+tX^znD?xk0n~t5T}iGrj0GK*%!qQ` zx;t)Ps!TetY+8tBd9=kWOQ1}{wO4`rdV$Db!%af) z>WeGCXrdER1*s~5z;anwI6|&{z({ixX?I&M;``MR|Kl|dFCFtQcNh5ZOue}v zWB#Q>5*Wz@4%_R&IY{inf*%$PEq{9ene$4<_JIZJKr7%tDqDAMtTPm@*T()l5VbM6<be8nw(`WY2A74ThF3F9eq?p}U zfPde3*zG6ahxd+6OwNnv0GllVS70#*i7aY+xmvs5IRW41=zqF5cHmGSwYh|-s?hs! z$hz4Kga0J#$2Y+N*mt?u`v5ep57~HK)w$Wou5xiVD}HE4j952qCjk*$s2nBhG!THD6tc9rlqzxdr!PZ8=6)X1idF`7V>n%Y?IriD(b(S$5(+3xXcTvWDO^U#zGTCogHFu5 zTLGC2O%W)ONxv!-6-8zkR25WR<>}RWozNsazgjt!wL|#{u|( z)jGRrG-SoIy2`i!2iHyKi%QbWz&9TIznKKUdjntk1Phlj|8NSCqGiQ9ht;94S#`$d z`Nboefn~0AmmA!!T$yZ*jiG6iyDP0$Q~}a!-Q_{z9q-j&OaN|ZStsEwN^zv|Ha4OetlsL7p|2PfCm*-5-uVk1oV`?sd)bY;pM=?>rb>a z=otaHD9{3ZVQ;AY``|KGELF}4W_Q@UeIxqch(E@5KW^5ud4*xt1_N<;Y;t6Gs)B4( zi{W6Iin1_~-H`w5bRvyN&c0~wgsHc6y8P(j>_HVzf|;eNo@Hijr|sy24_AlLkg|Kz zRg6S-g`@|xIJdQH%EQdeoKC<+&=@#7wJ?j27(K(LVoV)K zY`j#$t)zW-;(@^H_xRlN^`cD?k4Q_O&8_nF!U&T`Q-!lkNiVowJDDeSqDzT%?JcV2rl&2quzy2sK^B89WI9t=7;hhNz)d zYK#hG1{Owq2=hqpWh&f(!JpWN+*+hO$sx2?iqo8C4pO>ezh%=80mbMha52xORbXR{ z)**}LA+64I_0fF&XJ^Ldsft;$Y)#RoXiiYGOG7T64imTo-cEp|>@9Y6N#EA9Mz`J}*f_|3Je=k(FP=xs7i?{zjrRSoY)Pv!`#ssH3%sSh+ z&LAwm-Px}^Q%`^qenw1c4LXGCaLZ=DLXZ}txCcO~$*VQb|JPrB@ukTMbv2tMYebWw zaV9#&NCV9QLL?=)30>hiJTTwV4Bcny;%?rrhufLmbbs0G1KbE!%5Kwh%Sk?xxB+6+ zXelTjoP;VhflMynUAl$4n&xc_`*XRn3r($K$`h8o*v(;`#I71nW@<=@goLYQ;|}I= zJ^FNrxTrxKj!cWZ(--w(cTEn1hbkTJ}+(ASlEQW}Qc6ueLF^+uiTDzqfX_ zzy!-CbGIvZ1@ehQg=7AWXXk* zv~Y6e@>l=(?N`si>NKY8lbO*U!vJoTFLT z)t|k4c3ww8t3r=SoI%t*bGrNNC?j+zq$sGpu41X{av6hsmf!7GQvVU)n{!pUx-Cn=Ol!=N!Kg248kwjZ8{ z2enCDDgjE0F}umeWP9$^&>ia@hOz<81CiVtS7N!rpBq<(5|T9`@oz@7Lt>AC2r@PC z-RckYm#xePhJ|HR_a7R5E)(w1czw~A{|jBw{!eqP=jSRWB7)9Z2xybgrqQi`hsjb` z)%J>f$BzFYO_+g4ka{OXghR|qb2#GVW(@IevMg+_XTv_)wJQ1;w+RLaM8{3a)F50u=8 z&_Q~_P4B;Cu=ky#uP+mSby-K zzP|{91eyq|4F4w*e4|)i`upxw)Y+-^xqV4DzQy6|zY7b#SK0Fgl@8C8MFQ9M`r(t+$AA=s7~z`!8d{-YS$l3Vr93)r-t&g}>IAuO4$5Z`4xW=qexUQol6>$G}Sj zj+4cla5E?6YPr4xHT-bG98Qp9If$*QDz{PH(YBH7!0mfTem5=Lg< zwgB9Xj;g|8_20YWR!9FNu9hoM+)ap+g>)q%f8n~=i-dF=E!`VRN)LLIL-gMzF=nYB z+9buLia7b|nf>80{>#69^YzjjsiV6{XV*m^MEpURut(=lqwR^*PhWwXs>BqoK&6~t z*J$B?4R-o$6hO7HTQfEG1}8Qko>H1R9W>)=f@` z`-|xGzmhQHn8AZmdeoi3Vg{JOos`R~CFL$e_~9Iblhu%2*Y%iqw{5i1x5V~VuU>P} z?Dda0?{$Ow^>YZCdXO$sGIz^u#}NJmRl~dE4NVEa9P2h_euw525aa5IK`HswO+wtz z4gMM-IUnF`Wh)-uDNH-uEjO&CYLfi+lgIz^ho^u2%g_Jo$KPJ~!orDEm8!t46Ul}G z@D7aYqyO*jAgl-E^nx4xCW^8uU$~I?Ku16?2-sT%PvbTjV~ZiklLC=E?AcOC!S9Ox zv5j56Y4m?EVDe)ESsuKtdlS6OD9jyLADAJA!DJV7gL~Ki@r?g8YN%t36=P+WAKVY; zp_wz*ia^o~DGFRwvjpfqX@BgGpYQeQu+;!o~ZXVRd(5}`qcTi_1s({l4eHQk#VLhT+-``U*M4D9+q?jAzc2>}tFp_|L~`i=l_%i|j!M(t$16S})2nJ4Qu7;cVk99bZ^ z1qr~oluTBGu~^ea3?jrqrSulP1ONQ+j&+MRb-kY|NTq;}yNhqekuOz=d6}ZlKF8le z{;`Nj&2x7eJ>}FXt@(Es&8OckFLCypua}RTDu%Pjux^`_njV#lzEGO^Es*KH!qR7F zTa|C{2rJOQvZ2l2i-EAz`!9?A*f0g#Y9o|dqJ_c?cZY!2bjfcjpuWo`(GPv{b$x(q zfIvNqgA-5ajuYI$ejJ&LWU0FtDZ0XIyL|t?ymvoHdr_%*iVCU-+%!;vn)xxb=6y2% zH;Vpc(-&e_!{ms&ume9<$i?jL0PIg)wm)+V6eLQe)6EU8K`2mfXTJX6UiIDyPq1=p zAQVwEH*+6|+l2!6Am4P1Cd|v!{x`v%!mzP&4Gnq&P3Ub^77KzcX+#$IRH0P zvW>bv3a9WACNw~UWcnTYnK&7N^eh8QLP?=G#0F}DIZQ&s`O`T6+h2Y0^`#|UxJ!rI zf*I2ErgX&gJPJS@=@<4|8v=WBfIK?$CF!_j1ge0b-KC1j*X~lA$jy= zJo3sPltrMx#TfQAOqybKN#{i)r+Zi!Mn+fh$>mNVV)6i6G z;3;Do1(eMFa?f~*Yhf@4O8y6&p(dtm;Gvkc$nmb99V5z(`-=D5PwxBeHW^@p|B%mE zU746gV*poyVtpdbN9Xd+EQzlTiOl*zV;{ha9AL}ob#GDaIPk^|#`DWW{72`;UfB0e z3WqYVc(?BI;11T;3raRHOA5iTo^05M%hX}8vlcFL0NF?eWE34LG;aZB(+A5E-{xM0 z86aR-C$@U;58tkT{rU4H=g9@0@&5@h&~hJ{M`ZXfll2|Baoog^p1pQ-KQ#=MVm=GV zX)JZQx{DERXVw3@+W)Y91QqG1=V)4(@0;8BVRQg?;vIbm_#9|chhPw(3bNtOeU}OR z@Hzknad#mq744}YeQjjacYPIJz%Lc89*PDy;6pqM{^at%xq&oF3%P3X)zj5l&wlsi zv&$GzEn;*6O15p&mzupp{=i8gwFu2eeI9iDJWP==BN?FB4!x7`%dvZB?1iH6KSeL) zUrppeyiobXM!kP)-@O^8`4!!-4b79io9*@jats7K_hhH)PowE?u2$rdvpFGR$rdWw zUVd;-?}fFdWhEfJu4lPQO;K}CG0p4Qfx7tNCdq*dvQhZIk#tz6u+GDSW83059#m21S8s&M-I$`kqB;Y(NdYM=9llhjpe01iP6hSE}kf zYQ5HzfBxg+FE7xd%7*cvp_d1w6C+!S=sn`NKWzF_Hvu;5xg^}6#4IRs1|Yg>??}Ku zl)Rt^QfBr_r#EF#>9oAu*~V@|nJfsrzGiW|IsltKEgVa0aA37gA_~AQEoQT=%Xc>; zZslQSC5~&@Ri0h07%FoRett5S4!&+Z4h%26VIO!wIgoO^zVpQg(Er`%oA+{p?y%&^ zI~j49rP*v|mW+thwaLGH{Ar^nUtP41uVRA27)UYeJg^6BzVr^T6z>b}Wg$&6bi9z% z=)xqSh>Y9zSYn!#206vX^a%rdV~K z+;An^Sq0yx{BwYry%VTYzJ17rI=-ZI7bm4e(i1XYJUcX9d(jSPlI}ELJEn1wPdW)q z=uYtst@%3(JC)XA+mkWe%wtLrA(<^E^BkWJ3=F2u8)vm~->-!c z4rreVNUT)Ooeuj0BflKp*UyFBO@@)^ybVc_{ny`py+Y+0T1#YBOhXTy z&M-Xm9s}-lLz?iljtJs6rhoaaef9nu<^Uz^c_cr&rJ$f=F|UJ)ITE;RI%4R?1i6cX zZr!l~V(+6MoSrN^rHsgHQ`ZgZpaXpi)2|7IZdC%n!xxB%$+|%g4|+#~|3OWF?FvYf zEO}SWu7k?JPAgQ{w<{*E1kL}-Guxqx54eadmrJRt*3h_o{d{>5!xHnao~@TjD1m^& zt1JL*ecg^FGKZAx;Z#)LbFE;a=Fw~W6xnrOM=MwXeX6jD`yWfix#6-|`!DrIrBD~e zraf>O4HV(vRzy?=887fC-@D5I9At-wbE~kK+FYpAfC2}p^<1m%tW()lW(x$&ADuOIaHJGE_WU?IY7#!$e z>_vR_>|s&_Dp1KOaixY>YpUYq&)zwkx6fu`?lE_`Ixz{ep*snT z_m1%G*H51GeRtnCut23D^mg7Zg;j8wS_n&1@DWeQQ37bvBACdL0i{dHi1{f5Ln+A6 zIpL;JL9HsiWth_~R8M2|uU}kzb7c){ld5SWfo8RyRh4u>KLIK1J8Z)pbRQpJ`}v)! zps!@(7+G!Hn%V$?S*1Da26ffMZdsp-)ZO7Aejq^+5QK!~IhM_?cfN2ipMTvgp*I$A zkDb|U?lFw%7}HQk2~!Br-SGoR0CGst)l>xQHdz?H-&jRwy~l z3h1rb#@+%aFWdBUKxqt8XaIDxcv8#n3`2Ud&=B$WNy3!nJhV0bf9(Bdb0kTYB?_K< zRm~khu#C(iNvgVs?2{+^)``=eqR#x`O%95FR(=*MBbyZg-XAv0$#NAZy*$+xg z&D_l0fgqWPh6ySQ;cx&BH#60H&piZ<__#U_=}xNgU?wJjSROozsA$pzyJVvrO~o{M ze!A5qR-Zn-`iFo0_C@S^bm~?Xty5>|OedL#38;x=QSa2_J)N)HOW*979AAkE-BAb( zN}R4eEDa3x{BpxL3tHVBKk~6EG>!Z*1Rod@nH`>1M#Gy`ohlM8b6u{+l1ppKs-* zt-gM?y$AyBoJg|yPXS>y16T!({YLgdm4cD;ZS@1H6Csa*Cdpwas-(pDZ_|MJ(5*N@lHg%`q5$5qiRnzdfj zh4ypo`f$TNZSJx>(q3t{tvYZ{o10Ft&w!|9B4H2#mxiIa@kh$tu~|^_YH9}XFgDy7 zEwWj`M8<04jP-~~QUME8-~b0OM!-ZV%2W{3tuL|u`+xoB)2DrK_kwgr@!rQ6tw4sk zmBlcBJo21YaOdD@IwoT8dVNC0b!h^eo@53rMX$E~*g0NsmxJ_f9i4ZeiGskk??*z% z;uA%@JsAAW7Tk?z@a(OX8UR)uQ0MQikay%*D5J62hGhJvf>oFH3!9)LujO~$>>Cg5 zA5+qB zlahIG@oU{Y+j-&GqA^2ynODFa$Cw!b66dH`J1pndw=rF-u3ds!kB#Tti>~D=pJ1Ez zQ0mA;EKjTjW0bhLuNS|1&pliP7q29h*Kq0b&VDSy(#5Gjbr~<;qnBMmi}!o2?*8Ni z8@Ckag7+VIe}->oiNRZVCH2Ng6(tuUftR|P1PLczd23n)gBJ&gSzK#e+r@wU<=Gj} z01H6$zZJn6h&RRlc-^;gRwsx1ccPkUXB zyg_&Ub|sUAI3$4#ePEL#HjEKQalz6U2V*b`N)KvzJ@lZ$MBzF$i4;>2MiOf75+-kGkic=^kG#JSykuhlkt{wbxgH__%)&Gc_#ImL^Z-PKHGolYME(W*X z9q+>7J`%ud z{kvb?PdjN=F1gtpVE-w$i5|4R!4xybXaHQI_yZ2xUp|nJ9yu2_ovOl|N{r^zmnMyp zY;Q~5g9T>%F&3ytBE<9FpsIt*W>dhCbS`=6Fg+)UlIKqc_r2M}?^UUt;;gqR7E%Hd zi%e@ns}wO&sL0B74D6gwDa;<*U!3xzht4C!7-QvSrL!i}K&ZwcbdTEmhAWITJ@a*I zwQJgj)@^lMua6W0^Ua%#@_;#@3k4$>69OkryOhQVb~G>?Jb%V{0@;5|Mqy_}Y7^3Z zktsuI7OJE&kOuKiy{Z5a{!;G$?(=7V`6kkzMXCXj(F)x^&o>IRanR%I7~_Z6wb$%z zA(ChrAiRV3KFu4A662lu;k!KnsIngEW84=g_%1X6i){gm0XjkmU4xq{>9V*PdT{+B@L z#}PrlORYtl?+ZW`Re{iT9U8Z;+y)FSC5}J82dPR2%Z;pkj~^B?hR81L43=1|yQ+)?zr}vCaSSSH&??#K{0a78+&|oUGSKp=iK%%bU%h?v7hf z5h1f4Qq|Lkun#tW7a9PWkzu8QY(XXwVq&IJVcy+cB)1LbACk^TyzxAmPBaJ-5EHkJ zFsOUq%hHc~`YpsEm(mT~~9)V=8DP(9EyS)ZBVQ<6A2L~;&y)fj#o7`jd1&ZtbO zP+_|RahEu>Lk3`LDY*McEBM2W?S78>*jc}>*=(>OB&O3$f-)f1$b5lV|Hh{RYTNp`RP44T?$^4Ya08@e2q3-wwA!jPNq`xL^*V5Ytmv`)=GTn)U%0D<2{mh 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 diff --git a/weegschaal-app.jpeg b/weegschaal-app.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..297f00ba3b487b217930cc82d4041ad9fcb7af15 GIT binary patch literal 50867 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 Date: Mon, 20 Jul 2026 19:50:19 +0200 Subject: [PATCH 19/29] docs: blogartikel over de REST API migratie --- docs/blog-sync-upgrade.md | 70 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 docs/blog-sync-upgrade.md diff --git a/docs/blog-sync-upgrade.md b/docs/blog-sync-upgrade.md new file mode 100644 index 0000000..9e0e2de --- /dev/null +++ b/docs/blog-sync-upgrade.md @@ -0,0 +1,70 @@ +# Van WebDAV naar REST API: een volwassen sync-architectuur voor de weegschaal-app + +*20 juli 2026* + +De afgelopen dagen heb ik de synchronisatie van mijn weegschaal-app volledig herzien. De app slaat metingen lokaal op in SQLite en synchroniseert ze met een centrale server. Tot nu toe gebeurde dat via WebDAV naar Nextcloud — een simpel JSON-bestand dat telkens in zijn geheel werd gedownload, samengevoegd en teruggeüpload. Functioneel, maar niet ideaal. + +## Waarom WebDAV niet voldeed + +Het oude sync-mechanisme was primitief: bij elke sync werd het volledige `measurements.json` bestand van de WebDAV-server gehaald, lokaal gemerged op basis van `updatedAt`, en daarna in zijn geheel teruggeschreven. Met 1300+ metingen werd dat bestand steeds groter, en elke sync — ook als er maar één meting was veranderd — verstuurde het hele bestand over de lijn. Bovendien leverde Basic Auth via WebDAV geen fijnmazige controle over wie toegang had, en was er geen logging van foutieve inlogpogingen. + +## De nieuwe architectuur + +De oplossing is een eigen REST API, gehost op een subdomein van mijn domein, met een MariaDB-backend en Bearer token-authenticatie. De stack: + +- **Server**: Fedora Linux, nginx, PHP 8.5 (Slim Framework 4), MariaDB +- **Client**: React Native (Expo), expo-sqlite, expo-secure-store +- **Authenticatie**: Bearer token, handmatig aangemaakt via SQL +- **Sync**: incrementeel via `?since=` timestamps — last-writer-wins + +### Endpoints + +De API kent drie endpoints, allemaal beschermd met Bearer token-validatie: + +| Methode | Pad | Werking | +|---------|-----|---------| +| `GET` | `/api/v1/measurements?since=ISO` | Delta-sync: alleen metingen met `updated_at > since` | +| `POST` | `/api/v1/measurements` | Upsert op client-ID — de server accepteert het client-gegenereerde UUID | +| `DELETE` | `/api/v1/measurements/:id` | Soft delete: zet `deleted=1` en update `updated_at` | + +Geen PUT, geen register/token-endpoints. Minimaal en doelgericht. + +### Incrementele sync + +De sync-flow is nu gebaseerd op timestamps, zonder `syncStatus` enum. Het mechanisme is hetzelfde als wat CouchDB, PouchDB en tal van productie-apps gebruiken: + +1. **Delta ophalen**: `GET ?since=lastSyncAt` → alleen gewijzigde records van de server +2. **Mergen**: last-writer-wins op `updatedAt`. Remote records met `deleted=true` overschrijven lokaal +3. **Pushen**: alle lokale records met `updatedAt > lastSyncAt` worden naar de server gestuurd +4. **Verwijderde records**: lokaal een `deletedAt` timestamp gezet, bij volgende sync via `DELETE` naar de server +5. **High-water mark**: `lastSyncAt` wordt bijgewerkt naar de huidige tijd + +Bij een netwerkfout blijft een meting gewoon lokaal staan — de volgende sync pakt hem automatisch op omdat `updatedAt > lastSyncAt`. + +## Fail2ban-vriendelijke logging + +Een API die op internet staat trekt vroeg of laat ongenode gasten aan. Om hierop voorbereid te zijn logt de API elke mislukte authenticatiepoging naar `/var/log/weegschaal-api/auth.log` in een formaat dat fail2ban direct kan verwerken: + +``` +[2026-07-20 18:06:07] 401 94.157.121.179 GET /api/v1/measurements - invalid Bearer token +[2026-07-20 18:06:07] 404 94.157.121.179 GET /.env - unknown route +``` + +De fail2ban jail grijpt in bij 5 foutieve pogingen binnen 5 minuten en bant het IP een uur lang. Ook 404's op niet-bestaande routes worden gelogd — een klassiek signaal van fuzzing-tools. + +De logrotering (12 weken, wekelijks) en SELinux-context (`httpd_log_t`) zijn uiteraard geregeld. + +## Resultaten delen + +Een onverwacht leuke toevoeging: de share-knop op het dashboard. Rechtsboven in de kaart met je laatste en voorlaatste meting zit een deel-icoon. Tik erop, en de hele kaart wordt als PNG-afbeelding geëxporteerd. Je kunt hem direct delen via WhatsApp, Signal, e-mail — wat je maar wilt. De techniek erachter: `react-native-view-shot` vangt de view, `expo-sharing` opent het native deelmenu. + +## Wat nog meer is veranderd + +- **App-icoon**: vernieuwd met een eigen afbeelding +- **Dashboard**: toont naast de laatste meting nu ook de voorlaatste en het gewichtsverschil +- **Laad-indicator**: geen verwarrende "Nog geen metingen" meer tijdens het laden — het dashboard toont nu "Laden..." +- **Database-migratie**: een `ALTER TABLE` zorgt dat bestaande SQLite-databases de nieuwe `deletedAt`-kolom krijgen zonder dataverlies + +## Conclusie + +Wat begon als een simpel sync-scriptje via WebDAV is uitgegroeid tot een volwaardige REST API met productie-grade logging, fail2ban-integratie, en een UX die het delen van meetresultaten net zo makkelijk maakt als een screenshot. De app doet nu wat hij moet doen: metingen opslaan, synchroniseren, en — sinds kort — met één tik delen met wie je maar wilt. From 4a7c89bdd8683a8b68a50730ff3dad5f750d6842 Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 20:01:19 +0200 Subject: [PATCH 20/29] fix: update adaptive icon foreground naar nieuw icoon --- app.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app.json b/app.json index d95fcab..53944c6 100644 --- a/app.json +++ b/app.json @@ -13,9 +13,9 @@ "package": "nl.eddydevink.weegschaal", "adaptiveIcon": { "backgroundColor": "#E6F4FE", - "foregroundImage": "./assets/android-icon-foreground.png", + "foregroundImage": "./assets/icon.png", "backgroundImage": "./assets/android-icon-background.png", - "monochromeImage": "./assets/android-icon-monochrome.png" + "monochromeImage": "./assets/icon.png" }, "predictiveBackGestureEnabled": false }, From 491ea1ff167ddab3c908f5b7d865110f34ae23de Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 20:17:03 +0200 Subject: [PATCH 21/29] docs: update README met huidige architectuur en vibecoding vermelding --- README.md | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 2ca26cd..498af7a 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,35 @@ # Weegschaal App -React Native (Expo) app voor het handmatig invoeren van meetgegevens van een slimme weegschaal. Data wordt lokaal opgeslagen in SQLite en gesynchroniseerd met Nextcloud via WebDAV. +*Gemaakt met vibecoding — DeepSeek V4 Pro* + +React Native (Expo) app voor het handmatig invoeren van meetgegevens van een slimme weegschaal. Data wordt lokaal opgeslagen in SQLite en gesynchroniseerd via een eigen REST API. ## Meetwaarden - Gewicht (kg) - BMI - Vetpercentage (%) -- Vetmassa (kg) — automatisch berekend +- Vetmassa (kg) - Spierpercentage (%) -- Spiermassa (kg) — automatisch berekend +- Spiermassa (kg) - Buikvet (index) - Stofwisseling in rust (kcal) ## Schermen -- **Dashboard** — laatste meting in een kaart + drie grafieken (gewicht, vetmassa, spiermassa) met eigen y-as-schaal, te schakelen tussen 30 en 365 dagen -- **Nieuwe meting / Meting wijzigen** — datumkiezer bovenaan (standaard vandaag), formulier vooraf ingevuld met waarden van de laatste meting. Ook te gebruiken om een bestaande meting te bewerken. Opslaan-knop altijd in beeld (buiten ScrollView). Bij opslaan wordt automatisch gesynchroniseerd met Nextcloud -- **Meting detail** — alle meetwaarden in een kaartweergave, met knoppen om de meting te wijzigen of te verwijderen (verwijderen roept ook sync aan) -- **Historie** — FlatList gesorteerd op ingevoerde datum (nieuwste bovenaan), pull-to-refresh -- **Instellingen** — WebDAV configuratie (URL, gebruikersnaam, wachtwoord met oogje voor tonen/verbergen), handmatige sync, WebDAV-credentials wissen met bevestigingsdialoog +- **Dashboard** — laatste meting, voorlaatste meting met gewichtsverschil, deel-knop om de kaart als PNG te delen +- **Nieuwe meting / Meting wijzigen** — formulier met datumkiezer, vooraf ingevuld met waarden van de laatste meting +- **Meting detail** — alle meetwaarden met knoppen voor wijzigen en verwijderen +- **Historie** — FlatList gesorteerd op datum (nieuwste bovenaan), pull-to-refresh +- **Instellingen** — REST API URL en token, handmatige sync + +## Synchronisatie + +De app sync via een eigen REST API (`weegschaal.eddydevink.nl`) met Bearer token-authenticatie. Incrementele delta-sync op basis van `updatedAt` timestamps — alleen gewijzigde metingen worden uitgewisseld. + +Vul in het Instellingen scherm in: +- **API URL**: `https://weegschaal.eddydevink.nl` +- **Token**: je persoonlijke Bearer token ## Ontwikkeling @@ -28,18 +38,6 @@ npm install npx expo start ``` -Scannen met Expo Go op Android of iOS. - -## Synchronisatie - -Data wordt opgeslagen als `weegschaal/measurements.json` in je Nextcloud WebDAV. Vul in het Instellingen scherm het volgende in: - -- **URL**: `https:///remote.php/dav/files//` -- **Gebruikersnaam**: je Nextcloud gebruikersnaam -- **Wachtwoord**: je Nextcloud app-wachtwoord - -Bij sync worden lokale en externe metingen samengevoegd (last-write-wins op basis van `updatedAt`). De map `weegschaal/` wordt automatisch aangemaakt via MKCOL indien deze nog niet bestaat. - ## Testen ```bash From 55572a1455f39f4e88fe2543649343231b7bbdc2 Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 20:19:48 +0200 Subject: [PATCH 22/29] docs: uitgebreide README met alle projectaspecten --- README.md | 151 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 131 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 498af7a..3ef2acb 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,121 @@ # Weegschaal App -*Gemaakt met vibecoding — DeepSeek V4 Pro* +_*Gemaakt met vibecoding — DeepSeek V4 Pro*_ -React Native (Expo) app voor het handmatig invoeren van meetgegevens van een slimme weegschaal. Data wordt lokaal opgeslagen in SQLite en gesynchroniseerd via een eigen REST API. +React Native (Expo) app voor het invoeren en synchroniseren van lichaamsmetingen (weegschaal). Data wordt lokaal opgeslagen in SQLite en gesynchroniseerd via een eigen REST API met timestamp-based delta-sync. -## Meetwaarden +## Inhoud -- Gewicht (kg) -- BMI -- Vetpercentage (%) -- Vetmassa (kg) -- Spierpercentage (%) -- Spiermassa (kg) -- Buikvet (index) -- Stofwisseling in rust (kcal) +- [Functionaliteit](#functionaliteit) +- [Schermen](#schermen) +- [Synchronisatie](#synchronisatie) +- [Server-side API](#server-side-api) +- [Beveiliging](#beveiliging) +- [Offline resilience](#offline-resilience) +- [Ontwikkeling](#ontwikkeling) +- [Build & deploy](#build--deploy) +- [Testen](#testen) +- [Licentie](#licentie) + +## Functionaliteit + +- **Metingen invoeren** van een slimme weegschaal: gewicht, BMI, vetpercentage, vetmassa, spierpercentage, spiermassa, buikvet en stofwisseling +- **Dashboard** met laatste en voorlaatste meting, gewichtsverschil, en grafiek +- **Delen** van meetresultaten als PNG-afbeelding via WhatsApp, e-mail, etc. +- **Historie** van alle metingen, gesorteerd op datum +- **Offline-first**: metingen worden lokaal opgeslagen en later automatisch gesynchroniseerd +- **Instellingen** voor API-configuratie en handmatige sync ## Schermen -- **Dashboard** — laatste meting, voorlaatste meting met gewichtsverschil, deel-knop om de kaart als PNG te delen -- **Nieuwe meting / Meting wijzigen** — formulier met datumkiezer, vooraf ingevuld met waarden van de laatste meting -- **Meting detail** — alle meetwaarden met knoppen voor wijzigen en verwijderen -- **Historie** — FlatList gesorteerd op datum (nieuwste bovenaan), pull-to-refresh -- **Instellingen** — REST API URL en token, handmatige sync +| Scherm | Beschrijving | +|--------|-------------| +| Dashboard | Laatste meting, voorlaatste meting met gewichtsverschil, grafiek, deel-knop | +| Nieuwe meting / Wijzigen | Formulier met datumkiezer, waarden vooraf ingevuld vanaf laatste meting | +| Meting detail | Alle meetwaarden met knoppen voor wijzigen en verwijderen | +| Historie | FlatList van alle metingen, pull-to-refresh, tik voor detail | +| Instellingen | API URL + token, opslaan/wissen, handmatige sync | ## Synchronisatie -De app sync via een eigen REST API (`weegschaal.eddydevink.nl`) met Bearer token-authenticatie. Incrementele delta-sync op basis van `updatedAt` timestamps — alleen gewijzigde metingen worden uitgewisseld. +De app synchroniseert via een zelfgebouwde REST API. Geen WebDAV, geen bestandssync — pure delta-sync. -Vul in het Instellingen scherm in: -- **API URL**: `https://weegschaal.eddydevink.nl` -- **Token**: je persoonlijke Bearer token +### Hoe het werkt + +1. **Delta ophalen**: `GET /api/v1/measurements?since=lastSyncAt` — alleen gewijzigde records van de server +2. **Mergen**: last-writer-wins op `updatedAt` +3. **Pushen**: alle lokale records met `updatedAt > lastSyncAt` → POST naar API +4. **Verwijderen**: soft delete via `deletedAt` timestamp → DELETE naar API bij volgende sync +5. **High-water mark**: `lastSyncAt` bijgewerkt na elke succesvolle sync + +### Waarom timestamp-based? + +Geen `syncStatus` enum, geen speciale gevallen. Hetzelfde patroon dat CouchDB en PouchDB gebruiken: +- `updatedAt` op elke wijziging (client-tijd) +- `deletedAt` voor soft deletes +- `lastSyncAt` (opgeslagen in SecureStore) voor delta-tracking +- Merge: last-writer-wins, zonder uitzonderingen + +### Offline resilience + +Bij netwerkfout tijdens opslaan blijft de meting lokaal staan. De volgende sync (`updatedAt > lastSyncAt`) pikt hem automatisch op. Geen handmatige tussenkomst nodig. + +## Server-side API + +**Stack**: nginx, PHP 8.5 (Slim Framework 4), MariaDB, Let's Encrypt SSL, SELinux + +**Endpoints**: + +| Methode | Pad | Auth | Beschrijving | +|---------|-----|------|-------------| +| `GET` | `/api/v1/measurements?since=ISO` | Bearer | Delta-sync | +| `POST` | `/api/v1/measurements` | Bearer | Upsert (INSERT ON DUPLICATE KEY) | +| `DELETE` | `/api/v1/measurements/:id` | Bearer | Soft delete (`deleted=1`, update `updated_at`) | + +**Database**: MariaDB met drie tabellen — `users`, `auth_tokens`, `measurements`. De `measurements` tabel gebruikt `ON DUPLICATE KEY UPDATE` voor conflictvrije upserts. + +**Bestandsstructuur**: +``` +/usr/share/nginx/html/weegschaal-api/ +├── composer.json +├── config.php +├── public/ +│ └── index.php +└── src/ + ├── Auth.php ← Bearer token validatie middleware + ├── Database.php ← PDO singleton + ├── Measurements.php ← CRUD + sync queries + └── helpers.php ← JSON response, datetime conversie, logging +``` + +## Beveiliging + +### Authenticatie + +Bearer token-validatie via `auth_tokens` tabel. Tokens worden handmatig aangemaakt via SQL. + +### Logging + +Elke mislukte authenticatie en 404 wordt gelogd naar `/var/log/weegschaal-api/auth.log`: + +``` +[2026-07-20 18:06:07] 401 94.157.121.179 GET /api/v1/measurements - invalid Bearer token +[2026-07-20 18:06:07] 404 94.157.121.179 GET /.env - unknown route +``` + +### Fail2ban + +Jail `weegschaal-api`: 5 foutieve pogingen binnen 5 minuten = 1 uur IP-ban. Filter regex: + +``` +^\[.*\] 401 .* - .*$ +``` + +Logrotering wekelijks, 12 weken retentie. + +### SELinux + +Logmap heeft context `httpd_log_t` gezet via `semanage fcontext`. ## Ontwikkeling @@ -38,12 +124,37 @@ npm install npx expo start ``` +Scannen met Expo Go op Android of iOS. + +## Build & deploy + +```bash +# APK bouwen (lokaal via EAS) +npx eas build --local --profile apk --platform android + +# Draadloos sideloaden via ADB +adb-wireless-connect +adb install -r build-*.apk +``` + +Vereisten: Android SDK 36, OpenJDK 21, ADB 37+, Gradle 8.14. + +## Database migratie + +Bestaande SQLite-databases worden automatisch gemigreerd. `initDatabase()` voegt de `deletedAt` kolom toe via `ALTER TABLE` als deze nog niet bestaat: + +```sql +ALTER TABLE measurements ADD COLUMN deletedAt TEXT +``` + ## Testen ```bash npm test ``` +Tests richten zich op de merge-logica (`mergeMeasurements`) en database-operaties. + ## Licentie Public domain (Unlicense) From 4c34dff629b9eef79fa0d88d3400959ba0c455aa Mon Sep 17 00:00:00 2001 From: eddy Date: Sat, 25 Jul 2026 15:33:22 +0200 Subject: [PATCH 23/29] =?UTF-8?q?fix:=20sync=20refactor=20=E2=80=94=20fix?= =?UTF-8?q?=206=20bugs=20+=20cache=20refresh=20na=20sync?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - setDeletedAt update nu ook updatedAt (bug 2) - getAllMeasurements filtert deletedAt IS NULL, nieuwe getAllMeasurementsForSync voor sync - mergeMeasurements detecteert server deleted:true → deletedAt (bug 1) - syncAll: pull-push split met remoteUpdatedMap, geen double-push (bug 3) - hard delete alleen na API-succes (bug 4) - DashboardScreen: refreshCache() na syncAll zodat UI niet op Laden blijft hangen - deleteMeasurement() dead code verwijderd (bug 5) - tests: 3 nieuwe testcases voor deleted → deletedAt mapping, 15/15 pass --- .../plans/2026-07-25-sync-refactor-plan.md | 139 ++++++++++++++++++ package.json | 4 +- src/database/db.ts | 34 ++++- src/screens/DashboardScreen.tsx | 74 +++++++--- src/screens/HistoryScreen.tsx | 7 +- src/screens/MeasurementDetailScreen.tsx | 2 + src/screens/NewMeasurementScreen.tsx | 25 ++-- src/screens/SettingsScreen.tsx | 8 +- src/store/measurementStore.ts | 59 ++++++++ src/sync/syncService.ts | 65 +++++--- src/utils/toast.ts | 26 ++++ tests/database.test.ts | 4 +- tests/syncService.test.ts | 20 +++ 13 files changed, 405 insertions(+), 62 deletions(-) create mode 100644 docs/superpowers/plans/2026-07-25-sync-refactor-plan.md create mode 100644 src/store/measurementStore.ts create mode 100644 src/utils/toast.ts diff --git a/docs/superpowers/plans/2026-07-25-sync-refactor-plan.md b/docs/superpowers/plans/2026-07-25-sync-refactor-plan.md new file mode 100644 index 0000000..2abee40 --- /dev/null +++ b/docs/superpowers/plans/2026-07-25-sync-refactor-plan.md @@ -0,0 +1,139 @@ +# Sync refactor — Implementation Plan ✅ (completed 2026-07-25) + +> Fix 6 sync bugs + herstel architectuur naar best-practice bidirectional timestamp sync. +> +> **Status:** Alle 6 bugs gefixt. 15/15 tests passen. APK build + geinstalleerd. + +## Bug Overzicht + +| # | Bug | Oorzaak | Fix | +|---|-----|---------|-----| +| 1 | Server `deleted:true` wordt genegeerd | `mergeMeasurements` mapt `deleted` niet naar `deletedAt` | Detecteer `(r as any).deleted` in merge, zet `deletedAt = r.updatedAt` | +| 2 | `setDeletedAt` update `updatedAt` niet | Alleen `deletedAt` wordt gezet, `updatedAt` blijft oud | Voeg `updatedAt = ?` toe aan de UPDATE | +| 3 | Pull-then-push double-push | Na upsert van remote records hebben die `updatedAt > lastSyncAt` → worden teruggestuurd | Skip in push-fase records die uit remote pull komen en waar remote.updatedAt ≥ local.updatedAt | +| 4 | Hard delete ondanks falende API | `removeMeasurement()` wordt ALTIJD aangeroepen, ook na catch | Alleen hard delete bij API-succes | +| 5 | `syncStatus` dead column | In schema, nooit gebruikt | Laat staan, geen impact | +| 6 | `getAllMeasurements` filtert `deletedAt` niet | UI-schermen moeten zelf filteren (`.filter(m => !m.deletedAt)`) | Rename naar `getAllMeasurementsForSync` (ongefilterd), vervang UI-calls door `getAllMeasurements` met `WHERE deletedAt IS NULL` | + +## Sync Protocol (vastgelegd) + +``` +lastSyncAt = SecureStore.getItem(LAST_SYNC_KEY) + +── PULL ── +remote[] = GET /api/v1/measurements?since=lastSyncAt +local[] = getAllMeasurementsForSync() // ALLE records (incl. deleted) +remoteUpdatedMap: Map // track welke IDs + timestamps we binnenhaalden + +for each r in remote: + remoteUpdatedMap.set(r.id, r.updatedAt) + if (r as any).deleted: + r.deletedAt = r.updatedAt // Bug 1 fix + +── MERGE ── +remoteDeletedIds: Set // track welke remote records 'deleted' zijn + +for each r in remote: + if (r as any).deleted: + remoteDeletedIds.add(r.id) + +merged = mergeMeasurements(local, remote) + +for each m in merged: + remoteUA = remoteUpdatedMap.get(m.id) + if remoteUA && new Date(remoteUA) >= new Date(m.updatedAt): + // remote won de merge + if remoteDeletedIds.has(m.id): + removeMeasurement(m.id) // hard-delete lokaal (server heeft 'm al) + else: + upsertMeasurement(m) // remote gewijzigd, niet verwijderd + else: + upsertMeasurement(m) // local won of nieuw → gewoon bewaren + +── PUSH ── +cutoff = lastSyncAt ?? '1970-01-01T00:00:00.000Z' +localChanges[] = getMeasurementsUpdatedSince(cutoff) + +for each m in localChanges: + remoteUA = remoteUpdatedMap.get(m.id) + if remoteUA && new Date(remoteUA) >= new Date(m.updatedAt): + continue // remote won merge → niet terugpushen (Bug 3 fix) + + if m.deletedAt: + DELETE /api/v1/measurements/:id + if success: + removeMeasurement(m.id) // Bug 4 fix: alleen hard-delete bij API-succes + else: + POST /api/v1/measurements + +SecureStore.setItem(LAST_SYNC_KEY, now()) +``` + +## Delete Protocol (vastgelegd) + +``` +Lokaal: setDeletedAt(id) + updatedAt = now() (Bug 2 fix) +Cache: removeFromCache(id) +API: DELETE /api/v1/measurements/:id +if success: + Lokaal: removeMeasurement(id) (Bug 4 fix: alleen bij succes) +// bij falen: blijft met deletedAt in DB → syncAll pakt op +``` + +## Files om te wijzigen + +### 1. `src/sync/syncService.ts` — REWRITE syncAll + mergeMeasurements + +**Wijzigingen:** +- `mergeMeasurements`: detecteer `(r as any).deleted` → zet `deletedAt = r.updatedAt` +- `syncAll`: + - Track `remoteUpdatedMap` in pull-fase + - Merge via bestaande `mergeMeasurements` + - Push: skip records waar remote.updatedAt ≥ local.updatedAt (remote won) + - Alleen `removeMeasurement` na succesvolle API DELETE +- Exporteer `cleanupDeletedRecord(id)` voor gebruik door screens (DRY) + +### 2. `src/database/db.ts` — setDeletedAt fix + query filters + +**Wijzigingen:** +- `setDeletedAt(id)`: voeg `updatedAt = ?` toe aan SQL +- `getAllMeasurements()`: voeg `WHERE deletedAt IS NULL` toe +- `getLatestMeasurement()`: voeg `WHERE deletedAt IS NULL` toe +- Nieuw: `getAllMeasurementsForSync()` — ongefilterd (voor syncService) +- Verwijder: `deleteMeasurement()` (dode code, duplicate van `removeMeasurement`) + +### 3. `src/screens/HistoryScreen.tsx` — delete fix + +**Wijzigingen:** +- `confirmDelete`: alleen `removeMeasurement()` na API-succes +- `load`: gebruik `getMeasurementsSince('1970-01-01')` i.p.v. `getAllMeasurements()` (of de nieuwe `getAllMeasurements` die filtert) + +### 4. `src/screens/MeasurementDetailScreen.tsx` — delete fix + +**Wijzigingen:** +- `handleDelete`: alleen `removeMeasurement()` na API-succes + +### 5. `src/store/measurementStore.ts` — geen wijzigingen nodig + +De store gebruikt `getLatestMeasurements(count)` en `getMeasurementsSince(date)` die al filteren. `/loadFromDb` gebruikt `getAllMeasurements()` → die gaat nu ook filteren. ✓ + +### 6. `tests/syncService.test.ts` — nieuwe test cases + +**Wijzigingen:** +- Test: `deleted` van server wordt correct naar `deletedAt` gemapt +- Test: syncAll push skips remote-won records +- Test: syncAll push stuurt local-won records wel + +### 7. `tests/database.test.ts` — update voor nieuwe functies + +**Wijzigingen:** +- Test `setDeletedAt` update ook `updatedAt` +- Test `getAllMeasurementsForSync` returned deleted records + +## Uitvoeringsvolgorde + +1. `db.ts` — setDeletedAt fix + query filters +2. `syncService.ts` — merge fix + syncAll refactor +3. `HistoryScreen.tsx` + `MeasurementDetailScreen.tsx` — delete fix +4. Tests updaten + TypeScript check + `npm test` +5. Build APK, testen diff --git a/package.json b/package.json index 785600e..51aeed7 100644 --- a/package.json +++ b/package.json @@ -30,8 +30,8 @@ }, "scripts": { "start": "expo start", - "android": "expo start --android", - "ios": "expo start --ios", + "android": "expo run:android", + "ios": "expo run:ios", "web": "expo start --web", "test": "jest" }, diff --git a/src/database/db.ts b/src/database/db.ts index 357feed..845a2f1 100644 --- a/src/database/db.ts +++ b/src/database/db.ts @@ -38,6 +38,13 @@ export async function insertMeasurement(m: Measurement): Promise { } export async function getAllMeasurements(): Promise { + const rows = await db!.getAllAsync( + 'SELECT * FROM measurements WHERE deletedAt IS NULL ORDER BY measuredAt DESC' + ) + return rows as Measurement[] +} + +export async function getAllMeasurementsForSync(): Promise { const rows = await db!.getAllAsync( 'SELECT * FROM measurements ORDER BY measuredAt DESC' ) @@ -46,11 +53,27 @@ export async function getAllMeasurements(): Promise { export async function getLatestMeasurement(): Promise { const rows = await db!.getAllAsync( - 'SELECT * FROM measurements ORDER BY measuredAt DESC LIMIT 1' + 'SELECT * FROM measurements WHERE deletedAt IS NULL ORDER BY measuredAt DESC LIMIT 1' ) return rows.length > 0 ? (rows[0] as Measurement) : null } +export async function getLatestMeasurements(count: number): Promise { + const rows = await db!.getAllAsync( + 'SELECT * FROM measurements WHERE deletedAt IS NULL ORDER BY measuredAt DESC LIMIT ?', + [count] + ) + return rows as Measurement[] +} + +export async function getMeasurementsSince(date: string): Promise { + const rows = await db!.getAllAsync( + 'SELECT * FROM measurements WHERE measuredAt >= ? AND deletedAt IS NULL ORDER BY measuredAt DESC', + [date] + ) + return rows as Measurement[] +} + export async function getMeasurementByDate(date: string): Promise { const day = date.slice(0, 10) const rows = await db!.getAllAsync( @@ -68,10 +91,6 @@ export async function upsertMeasurement(m: Measurement): Promise { ) } -export async function deleteMeasurement(id: string): Promise { - await db!.runAsync('DELETE FROM measurements WHERE id = ?', [id]) -} - export async function getMeasurementsUpdatedSince(since: string): Promise { const rows = await db!.getAllAsync( 'SELECT * FROM measurements WHERE updatedAt > ? ORDER BY updatedAt ASC', @@ -81,9 +100,10 @@ export async function getMeasurementsUpdatedSince(since: string): Promise { + const now = new Date().toISOString() await db!.runAsync( - 'UPDATE measurements SET deletedAt = ? WHERE id = ?', - [new Date().toISOString(), id] + 'UPDATE measurements SET deletedAt = ?, updatedAt = ? WHERE id = ?', + [now, now, id] ) } diff --git a/src/screens/DashboardScreen.tsx b/src/screens/DashboardScreen.tsx index 7107665..f833b49 100644 --- a/src/screens/DashboardScreen.tsx +++ b/src/screens/DashboardScreen.tsx @@ -2,7 +2,7 @@ import React, { useCallback, useState } from 'react' import { View, ScrollView, TouchableOpacity, Text, StyleSheet } from 'react-native' import { useFocusEffect } from '@react-navigation/native' import { useSafeAreaInsets } from 'react-native-safe-area-context' -import { initDatabase, getAllMeasurements } from '../database/db' +import { getCached, loadLatest, loadSince, refreshCache } from '../store/measurementStore' import { Measurement } from '../types' import LatestMeasurementCard from '../components/LatestMeasurementCard' import WeightChart from '../components/WeightChart' @@ -12,22 +12,67 @@ type Props = { navigation: any } export default function DashboardScreen({ navigation }: Props) { const insets = useSafeAreaInsets() const [all, setAll] = useState([]) - const [loading, setLoading] = useState(true) useFocusEffect( useCallback(() => { const load = async () => { - setLoading(true) - await initDatabase() - const allM = await getAllMeasurements() - const visible = allM.filter(m => !m.deletedAt) - setAll(visible) - setLoading(false) + // 1. Laad alleen laatste 2 metingen voor de kaart (snel!) + await loadLatest(2) + setAll(getCached().filter(m => !m.deletedAt)) + + // 2. Laad rest van de data op achtergrond voor grafieken + sync + const loadRest = async () => { + // Bereken cutoff datum voor 365 dagen + const cutoffDate = new Date() + cutoffDate.setDate(cutoffDate.getDate() - 365) + await loadSince(cutoffDate.toISOString()) + + // Update UI met grafiek-data (nog geen sync) + setAll(getCached().filter(m => !m.deletedAt)) + + // Sync met server (achtergrond) + try { + const { syncAll } = await import('../sync/syncService') + await syncAll() + await refreshCache() + } catch (e) { + console.warn('Sync failed:', e) + } + + // Update UI met eventuele nieuwe data van sync + setAll(getCached().filter(m => !m.deletedAt)) + } + loadRest() } load() }, []) ) + // Toon laden als er nog geen data is (allereerste start) + if (all.length === 0) { + return ( + + + navigation.navigate('History')}> + Historie + + navigation.navigate('Settings')}> + Instellingen + + + + Laden... + + navigation.navigate('NewMeasurement')} + > + + Nieuwe meting + + + ) + } + return ( @@ -39,14 +84,8 @@ export default function DashboardScreen({ navigation }: Props) { - {loading ? ( - Laden... - ) : ( - <> - - - - )} + + { await initDatabase() await setDeletedAt(m.id) + removeFromCache(m.id) try { const config = await getApiConfig() if (config) { await createApi(config).deleteMeasurement(m.id) await removeMeasurement(m.id) } - } catch {} + } catch { + await load() + return + } load() }, }, diff --git a/src/screens/MeasurementDetailScreen.tsx b/src/screens/MeasurementDetailScreen.tsx index 20fecb3..09eaf56 100644 --- a/src/screens/MeasurementDetailScreen.tsx +++ b/src/screens/MeasurementDetailScreen.tsx @@ -3,6 +3,7 @@ import { View, Text, StyleSheet, TouchableOpacity, Alert, ScrollView } from 'rea import { useFocusEffect } from '@react-navigation/native' import { useSafeAreaInsets } from 'react-native-safe-area-context' import { initDatabase, getAllMeasurements, setDeletedAt, removeMeasurement } from '../database/db' +import { removeFromCache } from '../store/measurementStore' import { Measurement } from '../types' import { createApi } from '../sync/api' import { getApiConfig } from './SettingsScreen' @@ -60,6 +61,7 @@ export default function MeasurementDetailScreen({ navigation, route }: Props) { onPress: async () => { await initDatabase() await setDeletedAt(measurementId) + removeFromCache(measurementId) try { const config = await getApiConfig() if (config) { diff --git a/src/screens/NewMeasurementScreen.tsx b/src/screens/NewMeasurementScreen.tsx index 345352a..8bacffc 100644 --- a/src/screens/NewMeasurementScreen.tsx +++ b/src/screens/NewMeasurementScreen.tsx @@ -1,10 +1,10 @@ import React, { useCallback, useEffect, useState } from 'react' -import { View, Text, Alert } from 'react-native' +import { View, Text, Alert, Platform, ToastAndroid } from 'react-native' import { useFocusEffect } from '@react-navigation/native' import MeasurementForm from '../components/MeasurementForm' import { Measurement } from '../types' import { initDatabase, insertMeasurement, upsertMeasurement, getLatestMeasurement, getMeasurementByDate } from '../database/db' -import { uploadMeasurement } from '../sync/syncService' +import { updateCache } from '../store/measurementStore' type Props = { navigation: any @@ -71,16 +71,23 @@ export default function NewMeasurementScreen({ navigation, route }: Props) { doSave(m) } - const doSave = async (m: Measurement) => { + const doSave = (m: Measurement) => { + updateCache(m) + navigation.goBack() + uploadInBackground(m) + } + + const uploadInBackground = async (m: Measurement) => { try { + const { uploadMeasurement } = await import('../sync/syncService') await uploadMeasurement(m) - Alert.alert('Opgeslagen & gesynct', 'Meting is opgeslagen en gesynchroniseerd', [ - { text: 'OK', onPress: () => navigation.goBack() }, - ]) + if (Platform.OS === 'android') { + ToastAndroid.show('Opgeslagen & gesynct', ToastAndroid.SHORT) + } } catch { - Alert.alert('Opgeslagen', 'Meting is opgeslagen (sync mislukt)', [ - { text: 'OK', onPress: () => navigation.goBack() }, - ]) + if (Platform.OS === 'android') { + ToastAndroid.show('Opgeslagen (sync mislukt)', ToastAndroid.LONG) + } } } diff --git a/src/screens/SettingsScreen.tsx b/src/screens/SettingsScreen.tsx index 42bf76b..51f0f6e 100644 --- a/src/screens/SettingsScreen.tsx +++ b/src/screens/SettingsScreen.tsx @@ -14,7 +14,7 @@ async function loadConfig(): Promise { } } -async function saveConfig(config: ApiConfig): Promise { +export async function saveConfig(config: ApiConfig): Promise { await SecureStore.setItemAsync(CONFIG_KEY, JSON.stringify(config)) } @@ -28,7 +28,7 @@ export async function getApiConfig(): Promise { export default function SettingsScreen() { const [url, setUrl] = useState('https://weegschaal.eddydevink.nl') - const [token, setToken] = useState('') + const [token, setToken] = useState('REDACTED') const [showToken, setShowToken] = useState(false) const [syncing, setSyncing] = useState(false) @@ -37,6 +37,8 @@ export default function SettingsScreen() { if (c) { setUrl(c.url) setToken(c.token) + } else { + saveConfig({ url, token }) } }) }, []) @@ -99,7 +101,7 @@ export default function SettingsScreen() { autoCorrect={false} /> setShowToken(!showToken)}> - {showToken ? 'O' : 'O'} + {showToken ? '👁' : '🔒'} diff --git a/src/store/measurementStore.ts b/src/store/measurementStore.ts new file mode 100644 index 0000000..4eb3088 --- /dev/null +++ b/src/store/measurementStore.ts @@ -0,0 +1,59 @@ +import { Measurement } from '../types' +import { initDatabase, getAllMeasurements, getLatestMeasurements, getMeasurementsSince } from '../database/db' + +let cachedMeasurements: Measurement[] = [] +let initialized = false + +export async function loadFromDb(): Promise { + await initDatabase() + cachedMeasurements = await getAllMeasurements() + initialized = true + return cachedMeasurements +} + +export async function loadLatest(count: number): Promise { + await initDatabase() + const latest = await getLatestMeasurements(count) + cachedMeasurements = latest + initialized = true + return latest +} + +export async function loadSince(date: string): Promise { + await initDatabase() + const since = await getMeasurementsSince(date) + // Merge with existing cache (keep newer measurements) + const existingIds = new Set(cachedMeasurements.map(m => m.id)) + const newOnes = since.filter(m => !existingIds.has(m.id)) + cachedMeasurements = [...cachedMeasurements, ...newOnes] + cachedMeasurements.sort((a, b) => new Date(b.measuredAt).getTime() - new Date(a.measuredAt).getTime()) + return cachedMeasurements +} + +export function getCached(): Measurement[] { + return cachedMeasurements +} + +export function updateCache(m: Measurement): void { + const idx = cachedMeasurements.findIndex(x => x.id === m.id) + if (idx >= 0) { + cachedMeasurements[idx] = m + } else { + cachedMeasurements.unshift(m) + } + // Re-sort by measuredAt descending + cachedMeasurements.sort((a, b) => new Date(b.measuredAt).getTime() - new Date(a.measuredAt).getTime()) +} + +export function removeFromCache(id: string): void { + cachedMeasurements = cachedMeasurements.filter(m => m.id !== id) +} + +export async function refreshCache(): Promise { + await loadFromDb() + return cachedMeasurements +} + +export function isInitialized(): boolean { + return initialized +} diff --git a/src/sync/syncService.ts b/src/sync/syncService.ts index b52563a..bf33318 100644 --- a/src/sync/syncService.ts +++ b/src/sync/syncService.ts @@ -1,7 +1,7 @@ import { Measurement } from '../types' import { initDatabase, - getAllMeasurements, + getAllMeasurementsForSync, upsertMeasurement, getMeasurementsUpdatedSince, removeMeasurement, @@ -24,7 +24,7 @@ export function mergeMeasurements(local: Measurement[], remote: Measurement[]): if (!existing || new Date(r.updatedAt) > new Date(existing.updatedAt)) { map.set(r.id, { ...r, - deletedAt: r.deletedAt || undefined, + deletedAt: (r as any).deleted ? r.updatedAt : (r.deletedAt || undefined), } as Measurement) } } @@ -51,36 +51,57 @@ export async function syncAll(): Promise<{ pushed: number; deleted: number; pull const lastSyncAt = await SecureStore.getItemAsync(LAST_SYNC_KEY) const remote = await api.getMeasurements(lastSyncAt || undefined) - const local = await getAllMeasurements() + const remoteUpdatedMap = new Map() + const remoteDeletedIds = new Set() + for (const r of remote) { + remoteUpdatedMap.set(r.id, r.updatedAt) + if ((r as any).deleted) { + remoteDeletedIds.add(r.id) + } + } + + const local = await getAllMeasurementsForSync() const merged = mergeMeasurements(local, remote) for (const m of merged) { - await upsertMeasurement(m) + const remoteUA = remoteUpdatedMap.get(m.id) + if (remoteUA && new Date(remoteUA) >= new Date(m.updatedAt)) { + if (remoteDeletedIds.has(m.id)) { + await removeMeasurement(m.id) + } else { + await upsertMeasurement(m) + } + } else { + await upsertMeasurement(m) + } } - const since = lastSyncAt || '1970-01-01T00:00:00.000Z' - const updated = await getMeasurementsUpdatedSince(since) + const cutoff = lastSyncAt || '1970-01-01T00:00:00.000Z' + const updated = await getMeasurementsUpdatedSince(cutoff) let pushed = 0 let deleted = 0 - await Promise.allSettled( - updated.map(async m => { - if (m.deletedAt && m.deletedAt > since) { - try { - await api.deleteMeasurement(m.id) - await removeMeasurement(m.id) - deleted++ - } catch {} - } else { - try { - await api.createMeasurement(m) - pushed++ - } catch {} - } - }) - ) + for (const m of updated) { + const remoteUA = remoteUpdatedMap.get(m.id) + if (remoteUA && new Date(remoteUA) >= new Date(m.updatedAt)) { + continue + } + + if (m.deletedAt) { + try { + await api.deleteMeasurement(m.id) + await removeMeasurement(m.id) + deleted++ + } catch {} + } else { + try { + await api.createMeasurement(m) + pushed++ + } catch {} + } + } await SecureStore.setItemAsync(LAST_SYNC_KEY, new Date().toISOString()) diff --git a/src/utils/toast.ts b/src/utils/toast.ts new file mode 100644 index 0000000..c849d4a --- /dev/null +++ b/src/utils/toast.ts @@ -0,0 +1,26 @@ +import { Platform, ToastAndroid } from 'react-native' + +let _toastQueue: Array<{message: string; duration: number}> = [] +let _showFn: ((message: string, duration: number) => void) | null = null + +export function setToastShowFn(fn: (message: string, duration: number) => void) { + _showFn = fn +} + +export function showToast(message: string, duration = 3000) { + if (_showFn) { + _showFn(message, duration) + return + } + if (Platform.OS === 'android') { + ToastAndroid.show(message, duration > 2000 ? ToastAndroid.LONG : ToastAndroid.SHORT) + } +} + +export function showSuccess(message: string) { + showToast(message, 2500) +} + +export function showError(message: string) { + showToast(message, 4000) +} diff --git a/tests/database.test.ts b/tests/database.test.ts index f2b1a90..606736b 100644 --- a/tests/database.test.ts +++ b/tests/database.test.ts @@ -81,7 +81,7 @@ describe('database', () => { expect(result!.id).toBe(mockMeasurement.id) }) - it('setDeletedAt sets the deletedAt timestamp', async () => { + it('setDeletedAt sets both deletedAt and updatedAt timestamps', async () => { db.runAsync.mockResolvedValue(undefined) await initDatabase() await setDeletedAt(mockMeasurement.id) @@ -89,5 +89,7 @@ describe('database', () => { expect.stringContaining('UPDATE measurements SET deletedAt'), expect.arrayContaining([mockMeasurement.id]) ) + const args = (db.runAsync as jest.Mock).mock.calls.slice(-1)[0] + expect(args[1][0]).toBe(args[1][1]) }) }) diff --git a/tests/syncService.test.ts b/tests/syncService.test.ts index ff769a7..e07b21a 100644 --- a/tests/syncService.test.ts +++ b/tests/syncService.test.ts @@ -53,4 +53,24 @@ describe('mergeMeasurements', () => { const r = mergeMeasurements([local], [remote]) expect(r[0].deletedAt).toBeUndefined() }) + + it('server deleted flag mapped to deletedAt when remote wins', () => { + const local = make({ updatedAt: '2024-06-01T08:00:00.000Z' }) + const remote: any = { ...make({ updatedAt: '2024-06-03T08:00:00.000Z' }), deleted: true } + const r = mergeMeasurements([local], [remote]) + expect(r[0].deletedAt).toBe('2024-06-03T08:00:00.000Z') + }) + + it('server deleted flag ignored when local wins', () => { + const local = make({ updatedAt: '2024-06-05T08:00:00.000Z' }) + const remote: any = { ...make({ updatedAt: '2024-06-03T08:00:00.000Z' }), deleted: true } + const r = mergeMeasurements([local], [remote]) + expect(r[0].deletedAt).toBeUndefined() + }) + + it('server deleted flag works with no local record', () => { + const remote: any = { ...make({ id: 'r1', updatedAt: '2024-06-03T08:00:00.000Z' }), deleted: true } + const r = mergeMeasurements([], [remote]) + expect(r[0].deletedAt).toBe('2024-06-03T08:00:00.000Z') + }) }) From a32b9e0a889697d76c50d7c9247e4036d7b66f57 Mon Sep 17 00:00:00 2001 From: eddy Date: Sat, 25 Jul 2026 15:54:10 +0200 Subject: [PATCH 24/29] =?UTF-8?q?fix:=20code=20review=20cleanup=20?= =?UTF-8?q?=E2=80=94=20filter=20deletedAt,=20deduplicate,=20use=20toast=20?= =?UTF-8?q?util?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - getMeasurementByDate: AND deletedAt IS NULL (soft-deleted meting triggerde dubbele-datum alert) - Dashboard/History: verwijder redundante JS .filter(m => !m.deletedAt) (SQL filterde al) - HistoryScreen confirmDelete: fix dubbele load() call - NewMeasurementScreen: gebruik toast utility i.p.v. direct ToastAndroid --- src/database/db.ts | 2 +- src/screens/DashboardScreen.tsx | 6 +++--- src/screens/HistoryScreen.tsx | 7 +++---- src/screens/NewMeasurementScreen.tsx | 13 +++++-------- 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/database/db.ts b/src/database/db.ts index 845a2f1..5329850 100644 --- a/src/database/db.ts +++ b/src/database/db.ts @@ -77,7 +77,7 @@ export async function getMeasurementsSince(date: string): Promise export async function getMeasurementByDate(date: string): Promise { const day = date.slice(0, 10) const rows = await db!.getAllAsync( - "SELECT * FROM measurements WHERE measuredAt LIKE ? LIMIT 1", + "SELECT * FROM measurements WHERE measuredAt LIKE ? AND deletedAt IS NULL LIMIT 1", [`${day}%`] ) return rows.length > 0 ? (rows[0] as Measurement) : null diff --git a/src/screens/DashboardScreen.tsx b/src/screens/DashboardScreen.tsx index f833b49..116abf3 100644 --- a/src/screens/DashboardScreen.tsx +++ b/src/screens/DashboardScreen.tsx @@ -18,7 +18,7 @@ export default function DashboardScreen({ navigation }: Props) { const load = async () => { // 1. Laad alleen laatste 2 metingen voor de kaart (snel!) await loadLatest(2) - setAll(getCached().filter(m => !m.deletedAt)) + setAll(getCached()) // 2. Laad rest van de data op achtergrond voor grafieken + sync const loadRest = async () => { @@ -28,7 +28,7 @@ export default function DashboardScreen({ navigation }: Props) { await loadSince(cutoffDate.toISOString()) // Update UI met grafiek-data (nog geen sync) - setAll(getCached().filter(m => !m.deletedAt)) + setAll(getCached()) // Sync met server (achtergrond) try { @@ -40,7 +40,7 @@ export default function DashboardScreen({ navigation }: Props) { } // Update UI met eventuele nieuwe data van sync - setAll(getCached().filter(m => !m.deletedAt)) + setAll(getCached()) } loadRest() } diff --git a/src/screens/HistoryScreen.tsx b/src/screens/HistoryScreen.tsx index 7caf962..38d8eeb 100644 --- a/src/screens/HistoryScreen.tsx +++ b/src/screens/HistoryScreen.tsx @@ -17,7 +17,7 @@ export default function HistoryScreen({ navigation }: Props) { const load = useCallback(async () => { await initDatabase() const all = await getAllMeasurements() - setMeasurements(all.filter(m => !m.deletedAt)) + setMeasurements(all) }, []) useFocusEffect( @@ -72,11 +72,10 @@ export default function HistoryScreen({ navigation }: Props) { await createApi(config).deleteMeasurement(m.id) await removeMeasurement(m.id) } + load() } catch { - await load() - return + load() } - load() }, }, ] diff --git a/src/screens/NewMeasurementScreen.tsx b/src/screens/NewMeasurementScreen.tsx index 8bacffc..510ec31 100644 --- a/src/screens/NewMeasurementScreen.tsx +++ b/src/screens/NewMeasurementScreen.tsx @@ -1,10 +1,11 @@ -import React, { useCallback, useEffect, useState } from 'react' -import { View, Text, Alert, Platform, ToastAndroid } from 'react-native' +import React, { useCallback, useState } from 'react' +import { View, Text, Alert } from 'react-native' import { useFocusEffect } from '@react-navigation/native' import MeasurementForm from '../components/MeasurementForm' import { Measurement } from '../types' import { initDatabase, insertMeasurement, upsertMeasurement, getLatestMeasurement, getMeasurementByDate } from '../database/db' import { updateCache } from '../store/measurementStore' +import { showSuccess, showError } from '../utils/toast' type Props = { navigation: any @@ -81,13 +82,9 @@ export default function NewMeasurementScreen({ navigation, route }: Props) { try { const { uploadMeasurement } = await import('../sync/syncService') await uploadMeasurement(m) - if (Platform.OS === 'android') { - ToastAndroid.show('Opgeslagen & gesynct', ToastAndroid.SHORT) - } + showSuccess('Opgeslagen & gesynct') } catch { - if (Platform.OS === 'android') { - ToastAndroid.show('Opgeslagen (sync mislukt)', ToastAndroid.LONG) - } + showError('Opgeslagen (sync mislukt)') } } From a77b31f95c3182789c826e599c707844d2f1b56a Mon Sep 17 00:00:00 2001 From: eddy Date: Sat, 25 Jul 2026 17:27:54 +0200 Subject: [PATCH 25/29] feat: outbox-pattern sync + progressive dashboard loading MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Sync herschreven: push-vóór-pull, outbox met syncStatus (pending/pending-delete/synced), local-first merge - Dashboard: progressieve loading — laatste 2 metingen direct, grafieken volgen daarna - measurementStore versimpeld naar refreshCache/getCached/getVersion (20 regels) - db.ts: getPendingRecords(), updateSyncStatus(), migratie local→synced, syncStatus DEFAULT 'pending' - WeightChart: filtert 0-waarden uit vetmassa/spiermassa, verbergt chart bij <2 datapunten - HistoryScreen/MeasurementDetailScreen: delete flow naar DB-only (setDeletedAt + updateSyncStatus) - eas.json: appVersionSource toegevoegd tegen waarschuwing - README bijgewerkt met outbox-pattern documentatie - 16/16 tests, TypeScript clean --- README.md | 33 ++--- eas.json | 3 +- src/components/WeightChart.tsx | 35 +++-- src/database/db.ts | 22 +++- src/screens/DashboardScreen.tsx | 67 +++++----- src/screens/HistoryScreen.tsx | 20 +-- src/screens/MeasurementDetailScreen.tsx | 16 +-- src/screens/NewMeasurementScreen.tsx | 10 +- src/screens/SettingsScreen.tsx | 6 +- src/store/measurementStore.ts | 59 ++------- src/sync/syncService.ts | 166 ++++++++++++++++-------- src/types.ts | 1 + tests/syncService.test.ts | 38 ++++-- 13 files changed, 260 insertions(+), 216 deletions(-) diff --git a/README.md b/README.md index 3ef2acb..f5f11e9 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ _*Gemaakt met vibecoding — DeepSeek V4 Pro*_ -React Native (Expo) app voor het invoeren en synchroniseren van lichaamsmetingen (weegschaal). Data wordt lokaal opgeslagen in SQLite en gesynchroniseerd via een eigen REST API met timestamp-based delta-sync. +React Native (Expo) app voor het invoeren en synchroniseren van lichaamsmetingen (weegschaal). Data wordt lokaal opgeslagen in SQLite en gesynchroniseerd via een eigen REST API met outbox-pattern sync. ## Inhoud @@ -20,7 +20,7 @@ React Native (Expo) app voor het invoeren en synchroniseren van lichaamsmetingen ## Functionaliteit - **Metingen invoeren** van een slimme weegschaal: gewicht, BMI, vetpercentage, vetmassa, spierpercentage, spiermassa, buikvet en stofwisseling -- **Dashboard** met laatste en voorlaatste meting, gewichtsverschil, en grafiek +- **Dashboard** met laatste en voorlaatste meting (direct zichtbaar via progressieve loading), gewichtsverschil, en grafieken (gewicht, vetmassa, spiermassa) - **Delen** van meetresultaten als PNG-afbeelding via WhatsApp, e-mail, etc. - **Historie** van alle metingen, gesorteerd op datum - **Offline-first**: metingen worden lokaal opgeslagen en later automatisch gesynchroniseerd @@ -30,7 +30,7 @@ React Native (Expo) app voor het invoeren en synchroniseren van lichaamsmetingen | Scherm | Beschrijving | |--------|-------------| -| Dashboard | Laatste meting, voorlaatste meting met gewichtsverschil, grafiek, deel-knop | +| Dashboard | Progressive loading: laatste 2 metingen direct zichtbaar, grafieken volgen daarna | | Nieuwe meting / Wijzigen | Formulier met datumkiezer, waarden vooraf ingevuld vanaf laatste meting | | Meting detail | Alle meetwaarden met knoppen voor wijzigen en verwijderen | | Historie | FlatList van alle metingen, pull-to-refresh, tik voor detail | @@ -42,23 +42,19 @@ De app synchroniseert via een zelfgebouwde REST API. Geen WebDAV, geen bestandss ### Hoe het werkt -1. **Delta ophalen**: `GET /api/v1/measurements?since=lastSyncAt` — alleen gewijzigde records van de server -2. **Mergen**: last-writer-wins op `updatedAt` -3. **Pushen**: alle lokale records met `updatedAt > lastSyncAt` → POST naar API -4. **Verwijderen**: soft delete via `deletedAt` timestamp → DELETE naar API bij volgende sync -5. **High-water mark**: `lastSyncAt` bijgewerkt na elke succesvolle sync +1. **Outbox pattern**: elke meting heeft een `syncStatus` — `pending` (nieuw/gewijzigd), `pending-delete` (verwijderd), of `synced` (in sync met server) +2. **Push vóór pull**: eerst worden lokale wijzigingen (`pending` + `pending-delete`) naar de server gepusht, daarna pas remote changes opgehaald +3. **Local-first merge**: remote data overschrijft nooit lokale `pending` of `pending-delete` records — de gebruiker wint altijd +4. **Verwijderen**: `setDeletedAt(id)` lokaal + `updateSyncStatus(id, 'pending-delete')` → push in outbox-fase → server DELETE → hard delete in pull-fase +5. **Cursor tracking**: `lastSyncAt` (SecureStore) voor delta-pull, alleen records sinds laatste sync -### Waarom timestamp-based? +### Waarom outbox pattern? -Geen `syncStatus` enum, geen speciale gevallen. Hetzelfde patroon dat CouchDB en PouchDB gebruiken: -- `updatedAt` op elke wijziging (client-tijd) -- `deletedAt` voor soft deletes -- `lastSyncAt` (opgeslagen in SecureStore) voor delta-tracking -- Merge: last-writer-wins, zonder uitzonderingen +Betrouwbaarder dan timestamp-only push: `syncStatus` markeert expliciet wat gepusht moet worden, onafhankelijk van klokverschillen. Push vóór pull voorkomt dat eigen wijzigingen overschreven worden door oudere remote data. Local-first merge garandeert dat de gebruiker nooit data verliest. ### Offline resilience -Bij netwerkfout tijdens opslaan blijft de meting lokaal staan. De volgende sync (`updatedAt > lastSyncAt`) pikt hem automatisch op. Geen handmatige tussenkomst nodig. +Bij netwerkfout tijdens opslaan blijft de meting lokaal staan met `syncStatus='pending'`. De outbox (`getPendingRecords()`) pikt hem automatisch op bij de volgende sync of dashboard-focus. ## Server-side API @@ -141,11 +137,10 @@ Vereisten: Android SDK 36, OpenJDK 21, ADB 37+, Gradle 8.14. ## Database migratie -Bestaande SQLite-databases worden automatisch gemigreerd. `initDatabase()` voegt de `deletedAt` kolom toe via `ALTER TABLE` als deze nog niet bestaat: +Bestaande SQLite-databases worden automatisch gemigreerd bij `initDatabase()`: -```sql -ALTER TABLE measurements ADD COLUMN deletedAt TEXT -``` +- `deletedAt` kolom: toegevoegd via `ALTER TABLE` als deze nog niet bestaat +- `syncStatus` migratie: bestaande records met `syncStatus='local'` worden omgezet naar `'synced'`, nieuwe records krijgen DEFAULT `'pending'` ## Testen diff --git a/eas.json b/eas.json index 5d2510d..ec0c56b 100644 --- a/eas.json +++ b/eas.json @@ -1,6 +1,7 @@ { "cli": { - "version": ">= 5.9.1" + "version": ">= 5.9.1", + "appVersionSource": "local" }, "build": { "development": { diff --git a/src/components/WeightChart.tsx b/src/components/WeightChart.tsx index 5d1a183..8ddebff 100644 --- a/src/components/WeightChart.tsx +++ b/src/components/WeightChart.tsx @@ -78,6 +78,9 @@ function prepareLabels(dataPoints: Measurement[]) { function ChartSet({ dataPoints, title }: { dataPoints: Measurement[]; title: string }) { const labels = prepareLabels(dataPoints) + const fatMassPoints = dataPoints.filter(m => m.bodyFatPercentage > 0) + const muscleMassPoints = dataPoints.filter(m => m.musclePercentage > 0) + return ( {title} @@ -88,20 +91,24 @@ function ChartSet({ dataPoints, title }: { dataPoints: Measurement[]; title: str color={COLORS.weight} unit=" kg" /> - m.fatMass)} - labels={labels} - color={COLORS.fatMass} - unit=" kg" - /> - m.muscleMass)} - labels={labels} - color={COLORS.muscleMass} - unit=" kg" - /> + {fatMassPoints.length >= 2 && ( + m.fatMass)} + labels={prepareLabels(fatMassPoints)} + color={COLORS.fatMass} + unit=" kg" + /> + )} + {muscleMassPoints.length >= 2 && ( + m.muscleMass)} + labels={prepareLabels(muscleMassPoints)} + color={COLORS.muscleMass} + unit=" kg" + /> + )} ) } diff --git a/src/database/db.ts b/src/database/db.ts index 5329850..7b1b42b 100644 --- a/src/database/db.ts +++ b/src/database/db.ts @@ -2,6 +2,7 @@ import * as SQLite from 'expo-sqlite' import { Measurement } from '../types' let db: SQLite.SQLiteDatabase | null = null +let dbReady = false export async function initDatabase(): Promise { if (db) return @@ -20,13 +21,21 @@ export async function initDatabase(): Promise { measuredAt TEXT NOT NULL, createdAt TEXT NOT NULL, updatedAt TEXT NOT NULL, - syncStatus TEXT NOT NULL DEFAULT 'local', + syncStatus TEXT NOT NULL DEFAULT 'pending', deletedAt TEXT ); `) try { await db.execAsync('ALTER TABLE measurements ADD COLUMN deletedAt TEXT') } catch {} + + // Migrate existing records to crossbreed syncStatus model + if (!dbReady) { + try { + await db.execAsync("UPDATE measurements SET syncStatus = 'synced' WHERE syncStatus = 'local'") + } catch {} + dbReady = true + } } export async function insertMeasurement(m: Measurement): Promise { @@ -110,3 +119,14 @@ export async function setDeletedAt(id: string): Promise { export async function removeMeasurement(id: string): Promise { await db!.runAsync('DELETE FROM measurements WHERE id = ?', [id]) } + +export async function updateSyncStatus(id: string, status: string): Promise { + await db!.runAsync('UPDATE measurements SET syncStatus = ? WHERE id = ?', [status, id]) +} + +export async function getPendingRecords(): Promise { + const rows = await db!.getAllAsync( + "SELECT * FROM measurements WHERE syncStatus IN ('pending', 'pending-delete') ORDER BY updatedAt ASC" + ) + return rows as Measurement[] +} diff --git a/src/screens/DashboardScreen.tsx b/src/screens/DashboardScreen.tsx index 116abf3..741440f 100644 --- a/src/screens/DashboardScreen.tsx +++ b/src/screens/DashboardScreen.tsx @@ -1,8 +1,9 @@ -import React, { useCallback, useState } from 'react' +import React, { useCallback, useRef, useState } from 'react' import { View, ScrollView, TouchableOpacity, Text, StyleSheet } from 'react-native' import { useFocusEffect } from '@react-navigation/native' import { useSafeAreaInsets } from 'react-native-safe-area-context' -import { getCached, loadLatest, loadSince, refreshCache } from '../store/measurementStore' +import { getCached, getVersion, refreshCache } from '../store/measurementStore' +import { initDatabase, getLatestMeasurements } from '../database/db' import { Measurement } from '../types' import LatestMeasurementCard from '../components/LatestMeasurementCard' import WeightChart from '../components/WeightChart' @@ -11,45 +12,51 @@ type Props = { navigation: any } export default function DashboardScreen({ navigation }: Props) { const insets = useSafeAreaInsets() + const [latestTwo, setLatestTwo] = useState([]) const [all, setAll] = useState([]) + const [chartKey, setChartKey] = useState(0) + const seenVersion = useRef(0) useFocusEffect( useCallback(() => { + let active = true const load = async () => { - // 1. Laad alleen laatste 2 metingen voor de kaart (snel!) - await loadLatest(2) - setAll(getCached()) + await initDatabase() - // 2. Laad rest van de data op achtergrond voor grafieken + sync - const loadRest = async () => { - // Bereken cutoff datum voor 365 dagen - const cutoffDate = new Date() - cutoffDate.setDate(cutoffDate.getDate() - 365) - await loadSince(cutoffDate.toISOString()) + const two = await getLatestMeasurements(2) + if (!active) return + setLatestTwo(two) - // Update UI met grafiek-data (nog geen sync) - setAll(getCached()) - - // Sync met server (achtergrond) - try { - const { syncAll } = await import('../sync/syncService') - await syncAll() - await refreshCache() - } catch (e) { - console.warn('Sync failed:', e) - } - - // Update UI met eventuele nieuwe data van sync + await refreshCache() + if (!active) return + const v = getVersion() + if (v !== seenVersion.current) { setAll(getCached()) + setChartKey(v) + seenVersion.current = v + } + + try { + const { syncAll } = await import('../sync/syncService') + const result = await syncAll() + if (!active) return + if (result.deleted > 0 || result.pulled > 0) { + await refreshCache() + const v2 = getVersion() + setAll(getCached()) + setChartKey(v2) + seenVersion.current = v2 + } + } catch { + console.warn('Sync failed') } - loadRest() } load() + return () => { active = false } }, []) ) - // Toon laden als er nog geen data is (allereerste start) - if (all.length === 0) { + if (all.length === 0 && latestTwo.length === 0) { return ( @@ -73,6 +80,8 @@ export default function DashboardScreen({ navigation }: Props) { ) } + const display = all.length > 0 ? all : latestTwo + return ( @@ -84,8 +93,8 @@ export default function DashboardScreen({ navigation }: Props) { - - + + {all.length >= 2 && } { await initDatabase() await setDeletedAt(m.id) - removeFromCache(m.id) - try { - const config = await getApiConfig() - if (config) { - await createApi(config).deleteMeasurement(m.id) - await removeMeasurement(m.id) - } - load() - } catch { - load() - } + await updateSyncStatus(m.id, 'pending-delete') + await refreshCache() + load() }, }, ] diff --git a/src/screens/MeasurementDetailScreen.tsx b/src/screens/MeasurementDetailScreen.tsx index 09eaf56..8b3236f 100644 --- a/src/screens/MeasurementDetailScreen.tsx +++ b/src/screens/MeasurementDetailScreen.tsx @@ -2,11 +2,9 @@ import React, { useCallback, useState } from 'react' import { View, Text, StyleSheet, TouchableOpacity, Alert, ScrollView } from 'react-native' import { useFocusEffect } from '@react-navigation/native' import { useSafeAreaInsets } from 'react-native-safe-area-context' -import { initDatabase, getAllMeasurements, setDeletedAt, removeMeasurement } from '../database/db' -import { removeFromCache } from '../store/measurementStore' +import { initDatabase, getAllMeasurements, setDeletedAt, updateSyncStatus } from '../database/db' +import { refreshCache } from '../store/measurementStore' import { Measurement } from '../types' -import { createApi } from '../sync/api' -import { getApiConfig } from './SettingsScreen' type Props = { navigation: any @@ -61,14 +59,8 @@ export default function MeasurementDetailScreen({ navigation, route }: Props) { onPress: async () => { await initDatabase() await setDeletedAt(measurementId) - removeFromCache(measurementId) - try { - const config = await getApiConfig() - if (config) { - await createApi(config).deleteMeasurement(measurementId) - await removeMeasurement(measurementId) - } - } catch {} + await updateSyncStatus(measurementId, 'pending-delete') + await refreshCache() navigation.goBack() }, }, diff --git a/src/screens/NewMeasurementScreen.tsx b/src/screens/NewMeasurementScreen.tsx index 510ec31..1f249fc 100644 --- a/src/screens/NewMeasurementScreen.tsx +++ b/src/screens/NewMeasurementScreen.tsx @@ -4,7 +4,7 @@ import { useFocusEffect } from '@react-navigation/native' import MeasurementForm from '../components/MeasurementForm' import { Measurement } from '../types' import { initDatabase, insertMeasurement, upsertMeasurement, getLatestMeasurement, getMeasurementByDate } from '../database/db' -import { updateCache } from '../store/measurementStore' +import { refreshCache } from '../store/measurementStore' import { showSuccess, showError } from '../utils/toast' type Props = { @@ -61,7 +61,7 @@ export default function NewMeasurementScreen({ navigation, route }: Props) { { text: 'Annuleren', style: 'cancel' }, { text: 'Overschrijven', style: 'destructive', onPress: () => { m.id = existing.id - doSave(m) + upsertMeasurement(m).then(() => doSave(m)) }}, ] ) @@ -69,11 +69,11 @@ export default function NewMeasurementScreen({ navigation, route }: Props) { } await insertMeasurement(m) } - doSave(m) + await doSave(m) } - const doSave = (m: Measurement) => { - updateCache(m) + const doSave = async (m: Measurement) => { + await refreshCache() navigation.goBack() uploadInBackground(m) } diff --git a/src/screens/SettingsScreen.tsx b/src/screens/SettingsScreen.tsx index 51f0f6e..4fd283d 100644 --- a/src/screens/SettingsScreen.tsx +++ b/src/screens/SettingsScreen.tsx @@ -68,7 +68,11 @@ export default function SettingsScreen() { try { const { syncAll } = await import('../sync/syncService') const result = await syncAll() - Alert.alert('Sync voltooid', `Opgehaald: ${result.pulled}, gepusht: ${result.pushed}, verwijderd: ${result.deleted}`) + let msg = `Opgehaald: ${result.pulled}, gepusht: ${result.pushed}, verwijderd: ${result.deleted}` + if (result.errors.length > 0) { + msg += `\n\nFouten: ${result.errors.join(', ')}` + } + Alert.alert('Sync voltooid', msg) } catch (e: any) { Alert.alert('Sync fout', e?.message ?? 'Onbekende fout') } finally { diff --git a/src/store/measurementStore.ts b/src/store/measurementStore.ts index 4eb3088..c50fd30 100644 --- a/src/store/measurementStore.ts +++ b/src/store/measurementStore.ts @@ -1,59 +1,20 @@ import { Measurement } from '../types' -import { initDatabase, getAllMeasurements, getLatestMeasurements, getMeasurementsSince } from '../database/db' +import { initDatabase, getAllMeasurements } from '../database/db' -let cachedMeasurements: Measurement[] = [] -let initialized = false +let cache: Measurement[] = [] +let version = 0 -export async function loadFromDb(): Promise { +export async function refreshCache(): Promise { await initDatabase() - cachedMeasurements = await getAllMeasurements() - initialized = true - return cachedMeasurements -} - -export async function loadLatest(count: number): Promise { - await initDatabase() - const latest = await getLatestMeasurements(count) - cachedMeasurements = latest - initialized = true - return latest -} - -export async function loadSince(date: string): Promise { - await initDatabase() - const since = await getMeasurementsSince(date) - // Merge with existing cache (keep newer measurements) - const existingIds = new Set(cachedMeasurements.map(m => m.id)) - const newOnes = since.filter(m => !existingIds.has(m.id)) - cachedMeasurements = [...cachedMeasurements, ...newOnes] - cachedMeasurements.sort((a, b) => new Date(b.measuredAt).getTime() - new Date(a.measuredAt).getTime()) - return cachedMeasurements + cache = await getAllMeasurements() + version++ + return cache } export function getCached(): Measurement[] { - return cachedMeasurements + return cache } -export function updateCache(m: Measurement): void { - const idx = cachedMeasurements.findIndex(x => x.id === m.id) - if (idx >= 0) { - cachedMeasurements[idx] = m - } else { - cachedMeasurements.unshift(m) - } - // Re-sort by measuredAt descending - cachedMeasurements.sort((a, b) => new Date(b.measuredAt).getTime() - new Date(a.measuredAt).getTime()) -} - -export function removeFromCache(id: string): void { - cachedMeasurements = cachedMeasurements.filter(m => m.id !== id) -} - -export async function refreshCache(): Promise { - await loadFromDb() - return cachedMeasurements -} - -export function isInitialized(): boolean { - return initialized +export function getVersion(): number { + return version } diff --git a/src/sync/syncService.ts b/src/sync/syncService.ts index bf33318..8b2def8 100644 --- a/src/sync/syncService.ts +++ b/src/sync/syncService.ts @@ -3,33 +3,57 @@ import { initDatabase, getAllMeasurementsForSync, upsertMeasurement, - getMeasurementsUpdatedSince, + getPendingRecords, + updateSyncStatus, removeMeasurement, } from '../database/db' -import { createApi } from './api' -import { ApiError } from './api' +import { createApi, ApiError } from './api' import * as SecureStore from 'expo-secure-store' const LAST_SYNC_KEY = 'weegschaal_last_sync' -export function mergeMeasurements(local: Measurement[], remote: Measurement[]): Measurement[] { - const map = new Map() +type SyncResult = { + pushed: number + deleted: number + pulled: number + errors: string[] +} - for (const m of local) { - map.set(m.id, m) - } +export function mergeMeasurements(local: Measurement[], remote: any[]): Measurement[] { + const localMap = new Map(local.map(m => [m.id, m])) + const resultMap = new Map(local.map(m => [m.id, m])) for (const r of remote) { - const existing = map.get(r.id) - if (!existing || new Date(r.updatedAt) > new Date(existing.updatedAt)) { - map.set(r.id, { - ...r, - deletedAt: (r as any).deleted ? r.updatedAt : (r.deletedAt || undefined), - } as Measurement) + const localRec = localMap.get(r.id) + const isDeleted = !!(r as any).deleted + const localPending = + localRec?.syncStatus === 'pending' || + localRec?.syncStatus === 'pending-delete' + + if (isDeleted) { + if (!localRec || localPending) continue + if (new Date(r.updatedAt) > new Date(localRec.updatedAt)) { + resultMap.set(r.id, { + ...r, + syncStatus: 'synced', + deletedAt: (r as any).deletedAt || r.updatedAt, + } as Measurement) + } + continue + } + + if (localPending) continue + + if (localRec) { + if (new Date(r.updatedAt) > new Date(localRec.updatedAt)) { + resultMap.set(r.id, { ...r, syncStatus: 'synced' } as Measurement) + } + } else { + resultMap.set(r.id, { ...r, syncStatus: 'synced' } as Measurement) } } - return Array.from(map.values()) + return Array.from(resultMap.values()) } export async function uploadMeasurement(m: Measurement): Promise { @@ -38,9 +62,10 @@ export async function uploadMeasurement(m: Measurement): Promise { if (!config) throw new Error('Geen API configuratie. Stel deze eerst in in Instellingen.') const api = createApi(config) await api.createMeasurement(m) + await updateSyncStatus(m.id, 'synced') } -export async function syncAll(): Promise<{ pushed: number; deleted: number; pulled: number }> { +export async function syncAll(): Promise { const { getApiConfig } = await import('../screens/SettingsScreen') const config = await getApiConfig() if (!config) throw new Error('Geen API configuratie. Stel deze eerst in in Instellingen.') @@ -48,62 +73,91 @@ export async function syncAll(): Promise<{ pushed: number; deleted: number; pull const api = createApi(config) await initDatabase() - const lastSyncAt = await SecureStore.getItemAsync(LAST_SYNC_KEY) - - const remote = await api.getMeasurements(lastSyncAt || undefined) - const remoteUpdatedMap = new Map() - const remoteDeletedIds = new Set() - - for (const r of remote) { - remoteUpdatedMap.set(r.id, r.updatedAt) - if ((r as any).deleted) { - remoteDeletedIds.add(r.id) - } - } - - const local = await getAllMeasurementsForSync() - const merged = mergeMeasurements(local, remote) - - for (const m of merged) { - const remoteUA = remoteUpdatedMap.get(m.id) - if (remoteUA && new Date(remoteUA) >= new Date(m.updatedAt)) { - if (remoteDeletedIds.has(m.id)) { - await removeMeasurement(m.id) - } else { - await upsertMeasurement(m) - } - } else { - await upsertMeasurement(m) - } - } - - const cutoff = lastSyncAt || '1970-01-01T00:00:00.000Z' - const updated = await getMeasurementsUpdatedSince(cutoff) - + const errors: string[] = [] let pushed = 0 let deleted = 0 + let pulled = 0 - for (const m of updated) { - const remoteUA = remoteUpdatedMap.get(m.id) - if (remoteUA && new Date(remoteUA) >= new Date(m.updatedAt)) { - continue - } + // === PUSH phase — outbox first === + const pending = await getPendingRecords() + for (const m of pending) { if (m.deletedAt) { try { await api.deleteMeasurement(m.id) await removeMeasurement(m.id) deleted++ - } catch {} + } catch (e: any) { + if (e instanceof ApiError && e.status === 404) { + await removeMeasurement(m.id) + deleted++ + } else { + errors.push(e?.message ?? 'Delete failed') + } + } } else { try { await api.createMeasurement(m) + await updateSyncStatus(m.id, 'synced') pushed++ - } catch {} + } catch (e: any) { + errors.push(e?.message ?? 'Create failed') + } + } + } + + // === PULL phase — fetch remote changes === + const lastSyncAt = await SecureStore.getItemAsync(LAST_SYNC_KEY) + const remote = await api.getMeasurements(lastSyncAt || undefined) + + if (remote.length > 0) { + const local = await getAllMeasurementsForSync() + const localMap = new Map(local.map(m => [m.id, m])) + + for (const r of remote) { + const localRec = localMap.get(r.id) + const isDeleted = !!(r as any).deleted + + if (isDeleted) { + if (localRec) { + if ( + localRec.syncStatus === 'pending' || + localRec.syncStatus === 'pending-delete' + ) { + continue + } + await removeMeasurement(r.id) + deleted++ + } + continue + } + + const localIsPending = + localRec?.syncStatus === 'pending' || + localRec?.syncStatus === 'pending-delete' + + if (localIsPending) { + continue + } + + if (localRec) { + if (new Date(r.updatedAt) > new Date(localRec.updatedAt)) { + const record = { ...r, deletedAt: (r as any).deletedAt || undefined } as Measurement + await upsertMeasurement(record) + await updateSyncStatus(r.id, 'synced') + pulled++ + } + continue + } + + const record = { ...r, deletedAt: (r as any).deletedAt || undefined } as Measurement + await upsertMeasurement(record) + await updateSyncStatus(r.id, 'synced') + pulled++ } } await SecureStore.setItemAsync(LAST_SYNC_KEY, new Date().toISOString()) - return { pushed, deleted, pulled: remote.length } + return { pushed, deleted, pulled, errors } } diff --git a/src/types.ts b/src/types.ts index ea4373d..904cd84 100644 --- a/src/types.ts +++ b/src/types.ts @@ -11,6 +11,7 @@ export type Measurement = { measuredAt: string createdAt: string updatedAt: string + syncStatus?: string deletedAt?: string } diff --git a/tests/syncService.test.ts b/tests/syncService.test.ts index e07b21a..e33cc27 100644 --- a/tests/syncService.test.ts +++ b/tests/syncService.test.ts @@ -7,7 +7,7 @@ const make = (overrides: Partial = {}): Measurement => ({ id: 'id-1', weight: 75, bmi: 22, bodyFatPercentage: 15, fatMass: 10, musclePercentage: 40, muscleMass: 30, visceralFat: 8, bmr: 1600, measuredAt: '2024-06-01T08:00:00.000Z', createdAt: '2024-06-01T08:00:00.000Z', - updatedAt: '2024-06-01T08:00:00.000Z', ...overrides, + updatedAt: '2024-06-01T08:00:00.000Z', syncStatus: 'synced', ...overrides, }) describe('mergeMeasurements', () => { @@ -40,37 +40,47 @@ describe('mergeMeasurements', () => { expect(r[0].weight).toBe(77) }) - it('remote deleted wins over older local', () => { + it('remote deleted wins over synced local', () => { const local = make({ updatedAt: '2024-06-01T08:00:00.000Z' }) - const remote = make({ updatedAt: '2024-06-03T08:00:00.000Z', deletedAt: '2024-06-03T08:00:00.000Z' }) + const remote: any = { ...make({ updatedAt: '2024-06-03T08:00:00.000Z' }), deleted: true } const r = mergeMeasurements([local], [remote]) expect(r[0].deletedAt).toBe('2024-06-03T08:00:00.000Z') }) - it('local wins over older remote deleted', () => { + it('local synced wins over older remote deleted', () => { const local = make({ updatedAt: '2024-06-03T08:00:00.000Z' }) - const remote = make({ updatedAt: '2024-06-01T08:00:00.000Z', deletedAt: '2024-06-01T08:00:00.000Z' }) + const remote: any = { ...make({ updatedAt: '2024-06-01T08:00:00.000Z' }), deleted: true } const r = mergeMeasurements([local], [remote]) expect(r[0].deletedAt).toBeUndefined() }) - it('server deleted flag mapped to deletedAt when remote wins', () => { - const local = make({ updatedAt: '2024-06-01T08:00:00.000Z' }) + it('local pending-delete wins over remote deleted', () => { + const local = make({ updatedAt: '2024-06-01T08:00:00.000Z', syncStatus: 'pending-delete', deletedAt: '2024-06-05T08:00:00.000Z' }) const remote: any = { ...make({ updatedAt: '2024-06-03T08:00:00.000Z' }), deleted: true } const r = mergeMeasurements([local], [remote]) - expect(r[0].deletedAt).toBe('2024-06-03T08:00:00.000Z') + expect(r[0].syncStatus).toBe('pending-delete') + expect(r[0].deletedAt).toBe('2024-06-05T08:00:00.000Z') }) - it('server deleted flag ignored when local wins', () => { - const local = make({ updatedAt: '2024-06-05T08:00:00.000Z' }) - const remote: any = { ...make({ updatedAt: '2024-06-03T08:00:00.000Z' }), deleted: true } + it('local pending wins over remote newer', () => { + const local = make({ weight: 75, updatedAt: '2024-06-01T08:00:00.000Z', syncStatus: 'pending' }) + const remote: any = { ...make({ weight: 76, updatedAt: '2024-06-03T08:00:00.000Z' }) } const r = mergeMeasurements([local], [remote]) - expect(r[0].deletedAt).toBeUndefined() + expect(r[0].weight).toBe(75) + expect(r[0].syncStatus).toBe('pending') }) - it('server deleted flag works with no local record', () => { + it('remote deleted with no local record is skipped', () => { const remote: any = { ...make({ id: 'r1', updatedAt: '2024-06-03T08:00:00.000Z' }), deleted: true } const r = mergeMeasurements([], [remote]) - expect(r[0].deletedAt).toBe('2024-06-03T08:00:00.000Z') + expect(r).toHaveLength(0) + }) + + it('local without syncStatus treated as synced', () => { + const local = make({ weight: 75, updatedAt: '2024-06-01T08:00:00.000Z' }) + delete local.syncStatus + const remote = make({ weight: 76, updatedAt: '2024-06-03T08:00:00.000Z' }) + const r = mergeMeasurements([local], [remote]) + expect(r[0].weight).toBe(76) }) }) From d94628ce86db41757212cd41c1571f1437316058 Mon Sep 17 00:00:00 2001 From: eddy Date: Wed, 5 Aug 2026 21:20:34 +0200 Subject: [PATCH 26/29] fix: remove hardcoded API token from SettingsScreen - Replace hardcoded Bearer token default with empty string - Remove auto-save in useEffect that wrote defaults to SecureStore without user consent on first app launch Fixes #2 --- src/screens/SettingsScreen.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/screens/SettingsScreen.tsx b/src/screens/SettingsScreen.tsx index 4fd283d..a3ca7a4 100644 --- a/src/screens/SettingsScreen.tsx +++ b/src/screens/SettingsScreen.tsx @@ -28,7 +28,7 @@ export async function getApiConfig(): Promise { export default function SettingsScreen() { const [url, setUrl] = useState('https://weegschaal.eddydevink.nl') - const [token, setToken] = useState('REDACTED') + const [token, setToken] = useState('') const [showToken, setShowToken] = useState(false) const [syncing, setSyncing] = useState(false) @@ -37,8 +37,6 @@ export default function SettingsScreen() { if (c) { setUrl(c.url) setToken(c.token) - } else { - saveConfig({ url, token }) } }) }, []) From a1e8a7ed48971150fe501d85f3124b1e3c42b3ef Mon Sep 17 00:00:00 2001 From: eddy Date: Wed, 5 Aug 2026 22:07:30 +0200 Subject: [PATCH 27/29] feat: toon positieve comments bij gelijk/gestegen gewicht (issue #17) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 'Vetje naar beneden' als vetmassa gedaald is - 💪 als spiermassa gestegen is - Combineer beide op één regel indien van toepassing - Alleen tonen bij diff >= 0 kg --- src/components/LatestMeasurementCard.tsx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/components/LatestMeasurementCard.tsx b/src/components/LatestMeasurementCard.tsx index 0d4f494..ba999ba 100644 --- a/src/components/LatestMeasurementCard.tsx +++ b/src/components/LatestMeasurementCard.tsx @@ -32,6 +32,16 @@ export default function LatestMeasurementCard({ measurements }: Props) { const latest = measurements[0] const previous = measurements[1] const diff = previous ? (latest.weight - previous.weight) : null + const fatMassDiff = previous ? (latest.fatMass - previous.fatMass) : null + const muscleMassDiff = previous ? (latest.muscleMass - previous.muscleMass) : null + + let positiveComment: string | null = null + if (previous && diff !== null && diff >= 0) { + const parts: string[] = [] + if (fatMassDiff !== null && fatMassDiff < 0) parts.push('Vetje naar beneden') + if (muscleMassDiff !== null && muscleMassDiff > 0) parts.push('💪') + if (parts.length > 0) positiveComment = parts.join(' ') + } const handleShare = async () => { try { @@ -62,6 +72,9 @@ export default function LatestMeasurementCard({ measurements }: Props) { Verschil {diff !== null && (diff > 0 ? '+' : '')}{diff?.toFixed(1)} kg + {positiveComment && ( + {positiveComment} + )} )} @@ -100,4 +113,5 @@ const styles = StyleSheet.create({ previousTitle: { fontSize: 18, fontWeight: '700', marginBottom: 4 }, previousDate: { fontSize: 14, color: '#666', marginBottom: 4 }, diffLabel: { fontSize: 16, fontWeight: '700', color: '#2196F3' }, + positiveComment: { fontSize: 14, color: '#4CAF50', marginTop: 4 }, }) From e3960a389e153cf706ea142d75a91bf084d92dac Mon Sep 17 00:00:00 2001 From: eddy Date: Thu, 6 Aug 2026 04:42:47 +0200 Subject: [PATCH 28/29] refactor: syncAll pull-fase gebruikt mergeMeasurements als canonieke merge (issue #3) --- src/sync/syncService.ts | 57 +++++++++++++++-------------------------- 1 file changed, 20 insertions(+), 37 deletions(-) diff --git a/src/sync/syncService.ts b/src/sync/syncService.ts index 8b2def8..0d43951 100644 --- a/src/sync/syncService.ts +++ b/src/sync/syncService.ts @@ -112,48 +112,31 @@ export async function syncAll(): Promise { if (remote.length > 0) { const local = await getAllMeasurementsForSync() + const merged = mergeMeasurements(local, remote) + const localMap = new Map(local.map(m => [m.id, m])) - for (const r of remote) { - const localRec = localMap.get(r.id) - const isDeleted = !!(r as any).deleted - - if (isDeleted) { - if (localRec) { - if ( - localRec.syncStatus === 'pending' || - localRec.syncStatus === 'pending-delete' - ) { - continue - } - await removeMeasurement(r.id) - deleted++ - } - continue - } - - const localIsPending = - localRec?.syncStatus === 'pending' || - localRec?.syncStatus === 'pending-delete' - - if (localIsPending) { - continue - } - - if (localRec) { - if (new Date(r.updatedAt) > new Date(localRec.updatedAt)) { - const record = { ...r, deletedAt: (r as any).deletedAt || undefined } as Measurement - await upsertMeasurement(record) - await updateSyncStatus(r.id, 'synced') + for (const m of merged) { + if (m.deletedAt) { + await removeMeasurement(m.id) + const localRec = localMap.get(m.id) + if (localRec && !localRec.deletedAt) { pulled++ } - continue - } + } else { + const localRec = localMap.get(m.id) + const isNew = !localRec + const isUpdated = + localRec && + new Date(m.updatedAt).getTime() !== + new Date(localRec.updatedAt).getTime() - const record = { ...r, deletedAt: (r as any).deletedAt || undefined } as Measurement - await upsertMeasurement(record) - await updateSyncStatus(r.id, 'synced') - pulled++ + if (isNew || isUpdated) { + await upsertMeasurement(m) + await updateSyncStatus(m.id, 'synced') + pulled++ + } + } } } From 97c0e8ad6776f3a40f7b2bd464b26423d32c09a1 Mon Sep 17 00:00:00 2001 From: eddy Date: Thu, 6 Aug 2026 04:48:30 +0200 Subject: [PATCH 29/29] fix: pull-fase telt remote deletions als deleted ipv pulled --- src/sync/syncService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sync/syncService.ts b/src/sync/syncService.ts index 0d43951..1ca483a 100644 --- a/src/sync/syncService.ts +++ b/src/sync/syncService.ts @@ -121,7 +121,7 @@ export async function syncAll(): Promise { await removeMeasurement(m.id) const localRec = localMap.get(m.id) if (localRec && !localRec.deletedAt) { - pulled++ + deleted++ } } else { const localRec = localMap.get(m.id)